flow-go
flow-go copied to clipboard
[Epic] Proof of Possession for Staking Keys
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