Hub for Byteball network
JavaScript Shell
Switch branches/tags
Nothing to show
Clone or download
Latest commit 416985c Jul 13, 2018
Failed to load latest commit information.
.editorconfig first commit Aug 14, 2016
.gitignore check and restart daemon Aug 27, 2016
LICENSE license Aug 14, 2017 push for android Apr 18, 2017
asset_metadata.js typo Jan 9, 2018
bots.sql steem Jul 12, 2018
check_daemon.js redirect stderr Nov 9, 2016
check_witnesses.js 30 mins Aug 23, 2017
conf.js 2.4.0 Jul 13, 2018
crontab.txt check witnesses Feb 20, 2017
exchange_price_feed.js send rates only after client logs in Jan 3, 2018
package.json clear Dec 28, 2017
push.js ignore duplicate Jun 10, 2017
start.js scan and update asset metadata Jan 7, 2018 testnetify Apr 2, 2017

Hub for Byteball network

This is a node for Byteball network that serves as relay, plus facilitates exchange of end-to-end encrypted messages among devices connected to Byteball network. The hub does not hold any private keys and cannot send payments itself.

The messages are used for the following purposes:

  • Convey private payment information from payer to payee.
  • Exchange partially signed transactions when sending from a multisig address. One of the devices initiates a transaction and signs it with its private key, then it sends the partially signed transaction to the other devices that participate on the multisig address, the user(s) confirm the transaction on the other devices, they sign and return the signatures to the initiator.
  • Multilateral signing, when several addresses sign the same unit, e.g. when exchanging one asset for another, or when signing a contract. The exchange of messages is similar to the multisig scenario above.
  • Plain text chat between users, in particular, users can send each other the newly generated addresses to receive payments to.
  • Plain text chat with bots that offer a service and can receive or send payments. Faucet is an example of such bot.

The hub helps deliver such messages when the recipient is temporarily offline or is behind NAT. If the recipient is connected, the message is delivered immediately, otherwise it is stored and delivered as soon as the recipient connects to the hub. As soon as delivered, the message is deleted from the hub.

Since all messages are encrypted with the recipient's key, the hub cannot read them.

Users set their hub address in their wallet settings. The default hub is wss:// but users can change it to your hub address.


Install node.js, clone the repository, then say

npm install

Set up a proxy, such as nginx, to forward all websocket connections on a specific path to your daemon running the hub code. See example configuration for nginx in byteballcore documentation.


node start.js > log &


If you want to change any defaults, refer to the documentation of byteballcore, the core Byteball library require()'d from here.

Push notifications for Android

To enable push notifications for the users of your hub you need to create a new project in Google Console and add Google Cloud Messaging API. In your hub's conf (conf.js or conf.json) add these two settings copied from the Google Console:

  • pushApiProjectNumber: get it from settings (under dots menu in the upper right)
  • pushApiKey: your API key