flow-go icon indicating copy to clipboard operation
flow-go copied to clipboard

[Epic] Proof of Possession for Staking Keys

Open vishalchangrani opened this issue 4 months ago • 1 comments

Why

This is required for permissionless node participation and is considered table stakes for network security.

How will we measure success

  • Ledger PR submitted
  • Announcing POP and explain what wallets, staking providers, (possibly) exchanges need to do, to support it

DACI (for Protocol scope of involvement)

D: @tarakby, @vishalchangrani A: @tarakby, @vishalchangrani C: @bthaile & @joshuahannan 2 days each) I: @AlexHentschel , @dete

Problem definition

Proof of possession of the staking private key is a baseline protection to prove that nodes own the private key corresponding to the staking public key they shared with the network. It is a required security mechanism against a malicious node that stakes using a forged public key to either attack BLS signature aggregation or the BLS-SPoCK scheme.

More details here - https://github.com/dapperlabs/flow-go/issues/6281

### Tasks
- [x] PoP in crypto lib ✅ 
- [x] export PoP to FVM ✅ 
- [x] export PoP to Cadence ✅ 
- [x] Update staking tx format   (draft PR ready ⏳ )
- [x] Update the staking contract  (draft PR ready - updated to Cadence 1.0 ⏳)
- [ ] Update flow-port
- [ ] Update Ledger (PR ready - needs updating)
- [x] Update staking docs (draft PR ready - needs another rebasing ⚠️  )
- [x] Update staking tools [3] (draft PR ready - flow-go - needs another rebasing ⚠️)
- [x] Update the bootsraping tools  (draft PR ready - flow-go - needs another rebasing ⚠️)
- [ ] Update the flow-management scripts for internal staking (draft PR ready flow-mgmt - needs another rebasing ⚠️)
- [x] PoP stored in the protocol state? No [1]
- [x] PoP of nodes currently participating in the network? No [2]
- [ ] comms for node operators about process updates/breaking change
- [ ] make sure target wallets and service providers are ready

vishalchangrani avatar Oct 04 '24 23:10 vishalchangrani