Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

New node registration transaction #32

Merged
merged 24 commits into from
Feb 4, 2025

Conversation

tarakby
Copy link

@tarakby tarakby commented Jan 14, 2025

Checklist

  • App update process has been followed
  • Target branch is develop
  • Application version has been bumped

Changes

  • add a new transaction SCO.17 to the app. All existing transactions are unchanged (supported transactions are listed in the manifest file)
  • the flow-app source only tracks the Merkle root of all supported transactions. The root is updated to reflect the newly added transaction.
  • python and js tests are adjusted - in particular Merkle proofs of the supported transactions are updated.
  • new snapshots of all Ledger devices are generated because of slight SDK changes.

More on the new transaction

The new transaction SCO.17 registers a node to the network using a new extra parameter: the proof of possession of a staking private key.

The PR keeps the old version of the node registration transaction SCO.03 (without the extra parameter) for backward compatibility of the Ledger wallet. The clients would call SCO.17 or SCO.03 depending on the transaction version supported by the chain.
Currently, only SCO.03 is supported. In the near future, only the new transaction version SCO.17 will be supported through an on-chain contract upgrade. The version SCO.03 will become obsolete and can be removed from the flow ledger app in a future update.

What is the proof of possession of the private key:

Flow protocol uses BLS signature to authenticate participating nodes in the protocol, including the proof of stake consensus algorithm. BLS signature aggregation requires a mechanism to prevent rogue key attacks. The mechanism chosen in the Flow protocol is called the proof of possession (PoP) of the private key. This requires the nodes to present a public proof of knowing the staking private key corresponding to the staking public key they submit to the network. The new registration transaction SCO.17 is the transaction that node operators use to submit their public info to the network, including the PoP of the staking private key.

@fvalette-ledger fvalette-ledger self-requested a review February 4, 2025 09:20
@fvalette-ledger fvalette-ledger merged commit ee2a840 into LedgerHQ:develop Feb 4, 2025
48 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants