Community Broadcasters

RAILGUN Broadcasters are key actors in ensuring anonymity

Community Broadcasters are public 0x wallets that send transactions and pay gas to the underlying blockchain on RAILGUN privacy users’ behalves. As they are simply a cryptocurrency wallet, anyone can theoretically be a Broadcaster. Broadcasters run a micro Node.Js that broadcasts fees to Broadcaster Clients (i.e. wallets equipped with RAILGUN). Broadcasters also automatically process transactions when received.

When users send a transaction in RAILGUN, they select an appropriate Broadcaster, typically based on low fees and availability. The transaction is encrypted in transit, and its contents cannot be read by the Broadcaster, except for a fee which is packaged to pay for the Broadcaster’s services. Upon receipt of a transaction, the selected Broadcaster will validate its packaged fee and submit the transaction to the underlying blockchain network. Through submitting the transaction, the Broadcaster obfuscates the sender, amount, receiver and token details. This anonymizes transactions so they cannot be associated with the sender’s 0x public address.

NOTE: At no point do Broadcasters custodially hold users funds nor do they confirm transactions themselves, they merely transfer encrypted information for confirmation by the underlying blockchain infrastructure. Broadcasters are also unable to decrypt details about the transactions, nor can they change the details of a transaction as changing any information would lead to an invalid hash and be rejected by the system as an incorrect cryptographic proof.

The Broadcaster network is robust from a game theory perspective. If a user’s chosen Broadcaster refuses to pass on a transaction for whatever reason, then they can send it to another cooperative Broadcaster. All that it takes is for at least 1 cooperative Broadcaster to submit the data on-chain for the underlying blockchain’s ledger to update.

Waku Network

Broadcasters communicate with users through the Waku peer-to-peer private communication network. Waku is a decentralized messaging protocol with strong privacy preservation such as sender anonymity, metadata protection, and hidden personally identifiable information.

How Does RAILGUN use Waku?

Waku connects Broadcasters with users to broadcast fees and inform Broadcasters that they wish to have a transaction broadcast.

Transaction Broadcasts

All transactions that require a Broadcaster generate an additional note addressed to the selected Broadcaster using the Broadcaster's public key. Transaction data is then encrypted and broadcast to the Broadcaster network through the transact() function. The user's client then encrypts their transaction data with a shared key derived from the Broadcaster's public key and a randomly generated private key.

Broadcasters then attempt to decrypt every message on the chain's where they are listening for messages. Any messages that can be decrypted by a Broadcaster are thus addressed to them. If such a note is found and can be decrypted by the Broadcaster, they verify that the value and token of the note match a previously advertised rate * the estimated gas of the transaction.

Once an acceptable fee is included in the transaction, the Broadcaster signs and submits the transaction for consensus by the underlying blockchain.

Transaction Response

The Broadcaster then broadcasts the success/failure status of the transaction in an encrypted message over Waku through the transact-response.json file. This status message is encrypted using the shared key derived in the earlier transaction broadcast stage.

The client listens to the transact-response.json content topic for any message they can decrypt using the previously randomly generated private key.

In the event of failure, the transaction sender can retry with the same Broadcaster or select a new Broadcaster.

Last updated