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

Tracking stacker-signer participation in block signing #4241

Closed
kantai opened this issue Jan 12, 2024 · 1 comment
Closed

Tracking stacker-signer participation in block signing #4241

kantai opened this issue Jan 12, 2024 · 1 comment

Comments

@kantai
Copy link
Member

kantai commented Jan 12, 2024

Per SIP-021: Signer Liveness Enforcement, the stacks-node must have a way to validate which stackers signed a block.

The rough design discussed for this involved a bitvector in the block header which would be included in the hash that stackers sign (but not the miner, because the miner cannot know which stackers will participate when the miner signs the block).

But there's several elements that need to implemented (beyond figuring out who to include or not include in the bitvector, and what the punishment for non-participation is):

  1. Construction of the bitvector itself: the order and length of this bitvector is consensus-critical, and so it must be a deterministic function of the stacker set (e.g., the lexicographically sorted list of stacker keys).
  2. Inclusion of the bitvector in the signer's signature
  3. Inclusion of the bitvector in the Nakamoto block header and the stacker signature verification routine
  4. Code in the signer-binary operating as the coordinator which constructs the bitvector at the start of a signing round
  5. Code in the signer-binary operating as a signer which only signs if the bitvector includes themselves (note: what if a coordinator consistently doesn't include a signer -- does the signer have any recourse?)
@kantai
Copy link
Member Author

kantai commented Jan 12, 2024

Tagging @jcnelson, @xoloki, and @jferrant because I think this is pretty relevant to the workstreams you are on.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Archived in project
Development

No branches or pull requests

2 participants