This repository has been archived by the owner on Aug 2, 2022. It is now read-only.
Weighted-Threshold-Multi-Signature (WTMsig) Block Production #7403
Labels
CONSENSUS
Introduces a change that may modify consensus protocol rules on an existing blockchain.
Background
Block producers should provide high availability for their core service of extending the blockchain (aka producing blocks). In order to achieve this they need support for redundant infrastructure in a way that safely maintains the other invariants that are expected of them.
For instance, not double signing blocks. This is the first of many features that attempt to enable a safer paradigm for highly available block production.
Goals
Consensus upgrade feature
In service of the above goals, the
WTMSIG_BLOCK_SIGNATURES
feature will transition theblock_header
andsigned_block
such that they allow for the declaration and use of a full key-only weighted-threshold multi-signature authority that is similar to the one used in account permissions.We have discussed alternatives, such as 1-of-N multisig or M-of-N multisig. We felt that 1-of-N did not actually achieve goals (1) and (2) as each of the keys represents a valuable target for forging blocks ( violating (2) ) and any system that would attempt to mitigate this would effectively require sharing private key data ( violating (1) ). M-of-N was sufficient, but as our authority structure for validating transaction signatures is based on WTMSig and WTMSig is a super set of the functionality of M-of-N, we felt that the incremental reduction in technical complexity did not outweigh the additional cognitive complexity for users who must now understand multiple schemes for multisig.
In this scheme, a Block Producer can define a threshold and a set of weighted public keys, signing a block with as many signatures as necessary to satisfy the threshold with the sum of associated weights.
Implementation Details
Upon activation:
new_producers
field inblock_header
MUST be empty for all new blocks regardless of source.block_header_extension
will be introduced that is used to announce new producer * schedules based on the newproducer_authority
type.set_proposed_producers_ex
will be valid and linkableproducer_authority
set_proposed_producers
intrinsic will remain valid and only support the legacy format (which will be upgraded to a fullproducer_authority
schedule automatically)The text was updated successfully, but these errors were encountered: