mm-services-kademlia
DHT to store connection information for remote peers and act as generic key/value store
works with MicroMinion platform
Initialization
var MicroMinionPlatform = var Kademlia = var kadfs = var path = var storageDir = './data' var platform = storage: var kademlia = platform: platform storage: seeds: null //Extra seeds
Messaging API
Data structures
nodeInfo: Javascript object with node information
- boxId: base64 encoded public encryption key used by nacl
- signId: base64 encoded public signature key used by nacl
- connectionInfo: javascript dictionary with 1tp connection information
Published messages
self.transports.nodeInfo
Publishes connection information for remote node
var MicroMinionPlatform = var Kademlia = var kadfs = var path = var storageDir = './data' var platform = storage: var kademlia = platform: platform storage: seeds: null //Extra seeds platformmessaging
self.transports.requestBootstrapNodeInfo
Requests bootstrap nodes in order to start DHT (in addition to potential seed nodes)
var MicroMinionPlatform = var Kademlia = var kadfs = var path = var storageDir = './data' var platform = storage: var kademlia = platform: platform storage: seeds: null //Extra seeds //local nodeInfo. This method is used for sending remote nodeInfovar nodeInfo = boxId: platformdirectoryidentity signId: platformdirectoryidentity connectionInfo: platformdirectory_connectionInfo platformmessaging
self.directory.getReply
Reply to previously received get message
var MicroMinionPlatform = var Kademlia = var kadfs = var path = var storageDir = './data' var platform = storage: var kademlia = platform: platform storage: seeds: null //Extra seeds platformmessaging platformmessaging
Subscribed messages
self.transports.myNodeInfo
Uses our own node information to add to DHT
You'll never need to send this message since this is triggered from the platform object
var MicroMinionPlatform = var Kademlia = var kadfs = var path = var storageDir = './data' var platform = storage: var kademlia = platform: platform storage: seeds: null //Extra seeds var nodeInfo = boxId: platformdirectoryidentity signId: platformdirectoryidentity connectionInfo: platformdirectory_connectionInfo platformmessaging
self.transports.nodeInfoBootstrap
Bootstrap messages with nodeInfo (to allow DHT to function even if not connected to the Internet by using e.g., other nodes on local network to form DHT).
var MicroMinionPlatform = var Kademlia = var kadfs = var path = var storageDir = './data' var platform = storage: var kademlia = platform: platform storage: seeds: null //Extra seeds //local nodeInfo. This method is used for sending remote nodeInfovar nodeInfo = boxId: platformdirectoryidentity signId: platformdirectoryidentity connectionInfo: platformdirectory_connectionInfo platformmessaging
self.transports.requestNodeInfo
Requests node info from directory services (like DHT)
var MicroMinionPlatform = var Kademlia = var kadfs = var path = var storageDir = './data' var platform = storage: var kademlia = platform: platform storage: seeds: null //Extra seeds platformmessaging var signId = 'NeedToImplement' //signId (base64 encoded) for node where we want to get full nodeInfo platformmessaging
self.directory.get
get key/value pair from DHT
var MicroMinionPlatform = var Kademlia = var kadfs = var path = var storageDir = './data' var platform = storage: var kademlia = platform: platform storage: seeds: null //Extra seeds platformmessaging platformmessaging
self.directory.put
add key/value pair to DHT
var MicroMinionPlatform = var Kademlia = var kadfs = var path = var storageDir = './data' var platform = storage: var kademlia = platform: platform storage: seeds: null //Extra seeds platformmessaging