Community Broadcasters

RAILGUN Broadcasters are key actors in ensuring anonymity

Community Broadcasters are public 0x wallets that send interactions and submit gas to the underlying blockchain on RAILGUN privacy users’ behalf. Private interactions thus publicly appear to originate from Broadcaster addresses. As they are simply a cryptocurrency wallet, anyone can theoretically be a Broadcaster. Broadcasters run a micro Node.Js that broadcasts gas to Broadcaster Clients (i.e. wallets equipped with RAILGUN). Broadcasters also automatically process interactions when received.

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

NOTE: At no point do Broadcasters custodially hold users’ tokens nor do they confirm interactions themselves, they merely transfer encrypted information for confirmation by the underlying blockchain infrastructure. Broadcasters are also unable to decrypt details about the interactions, nor can they change the details of an interaction 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 an interaction 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 gas supplies and inform Broadcasters that they wish to have an interaction broadcasted.

Transaction Broadcasts

All interactions 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 gas submission is included in the transaction, the Broadcaster signs and submits the transaction for consensus by the underlying blockchain.

Interaction 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