lightning-dev

[BOLT Draft] Onion Routing Spec

[BOLT Draft] Onion Routing Spec

Original Postby Rusty Russell

Posted on: September 5, 2016 02:25 UTC

In a discussion about the onion routing protocol, Christian Decker mentions that most of the spec is agreed upon, with some issues to be deferred till later.

One of these issues is key-rotation policies. Rusty Russell responds with his thoughts on the costs of key-rotation. He makes some assumptions about using a single pubkey for a node's ID and a medium-scale public network with 250,000 nodes and 1 million channels, where every node knows the entire public network. He calculates that each node would have to keep 22.25MB of data, which includes 33 bytes for each node ID and another 8 bytes per channel to associate channels with IDs. In addition, he says that proofs are larger and require merkle proofs, pubkeys, and signatures of the ID using those pubkeys. This would take up an additional 800M per node for it to completely validate. To address this issue, Rusty suggests using a "comms" key for each node instead of its ID, and having nodes send out a new comms key signed by their ID. This would take up another 33 bytes per node or 8.25MB. To rotate a comms key, they would need the new key, a signature from the ID, and probably a timestamp. Rusty estimates this would take up 25.25MB, which he thinks is not too bad if they rotate daily but possibly problematic if done hourly.