code: function (rpc, id, opts) {
      if (!checkInterface(rpc, RPC_FUNCTIONS))
          throw new Error('the RPC interface is not fully defined');
      rpc.receive('ping', this._onPing.bind(this));
      rpc.receive('store', this._onStore.bind(this));
      rpc.receive('findNode', this._onFindNode.bind(this));
      rpc.receive('findValue', this._onFindValue.bind(this));
      Object.defineProperty(this, 'rpc', {value: rpc});
      this._cache = {};
      this._locals = {};
      this._routes = new RoutingTable(id, opts.bucketSize);
      this._opts = opts;
      this._pendingContact = null;
      this._lookupOpts = {
          size: opts.bucketSize,
          concurrency: opts.concurrency,
          findNode: this._findNode.bind(this)
      };
  }
docs: Store key/value pairs on a distributed network. `rpc` must provide the necessary Kademlia RPC methods for the local node of the DHT.