SYNOPSIS
An node.js implementation of ethereum's DHT.
EXAMPLE
For a basic example see example/dht
API
DHT
new DHT(options)
Create a New DHT with the following options
-options
secretKey
- a 32 byteBuffer
from which the pubic key is derivedtimeout
- an Interger specifing the wait period in milliseconds to wait for peers to respondport
- the port external port that this peer is listening to. If not specifed the port that is used inbound
will be usedaddress
- the external address that this peer is listening to. if not specifed the port that is used inbound
will be used
DHT
methods
dht.bind(port, address, [cb])
Binds the port
port
address
cb
the callback
dht.close([cb])
Unbinds the port
dht.bootstrap(introPeers, [cb])
Bootstraps the DHT given an array of peers to connect to.
introPeers
- anArray
of peers to try to connect to. They should be objects in following format.
{
address: String
port: Number
}
dht.refresh()
Refreshes the nodes and searches for new nodes
DHT
events
The DHT object inherits from Events.EventEmitter and emits the following events.
ping
- Fires when receiving a Ping. Provides a parsed ping packets and the peer it came frompong
- Fires when receiving a pong. Provides a parsed ping packets and the peer it came fromfindNode
- Fires when receiving a findNode. Provides a parsed ping packets and the peer it came fromneighbors
- Fires when receiving a neighbors. Provides a parsed ping packets and the peer it came fromerror
- Provides and error message
CONTRIBUTIONS
Patches welcome! Contributors are listed in the package.json
file.
Please run the tests before opening a pull request and make sure that you are
passing all of them.
If you would like to contribute, but don't know what to work on, check the issues list or ask on the forms or on IRC.
- issues
- task tracker
- forum
- #ethereum-dev on irc.freenode.net
BUGS
When you find issues, please report them:
You can also look for null_radix in #ethereum-dev on irc://irc.freenode.net.
LISCENCE
GPL3