Bitcoin Encrypted Communication (BIP151) Overhaul

On of the pros of Bitcoin since its birth is that it’s a public ledger, anyone is allowed to send and receive payments and data on the Blockchain. However, Bitcoin’s network does not provide a way of encrypting communication between nodes, which allows manipulation of data, mass surveillance and analysis of its users.

Although encrypted communication is currently a possibility with VPNs, TOR or other mechanisms, it is not easy for the average user to setup such a connection. There is BIP draft called BIP151 that aims to add encrypted communication to Bitcoin’s network and which currently seems implemented only by Armory.

Jonas Schnelli presented an overhauled version for BIP 151 with some major changes:

  • the encryption handshake no longer requires the v1 protocol, it’s a pure 32bytes-per-side „pseudorandom” key exchange that happens before anything else.
  • the multi message envelope has been removed.
  • a new NODE_ENCRYPTED service bit
  • the key derivation and what communication direction uses what key is now more specific
  • the length of a packet uses now a 3-byte integer with 23 available bits
  • introduction of short-command-ID (ex.: uint8_t 13 == INV, etc.) which result in some v2 messages require less bandwidth then v1
  • rekeying doesn’t require a message and can be signaled in the most significant bit in the packet-size field

While this BIP is backwards compatible, peers supporting encrypted communication will have to signal NODE_ENCRYPTED to use it.


Support us and the authors of this article by donating to the following address:


Comments powered by Talkyard.