This page outlines the lifecycle of proposals in the context of the Anchor Update Proposal. It describes the process from proposing an anchor update to submitting a signed proposal.
How proposals are signed
The below sequence diagram illustrates the steps required to successfully submit an Anchor Update Proposal for signature.
- Propose: Proposers submit an anchor update proposal.
- Vote: Proposers cast their votes to either reject or acknowledge the proposal.
- Rejection: If the majority votes to reject, the execution is canceled, and a proposal rejection event is emitted.
- Approval: If the majority votes in favor of the proposal, the execution to have that proposal signed begins.
- Queue: The proposal is inserted into an Unsigned Proposal Queue.
- Fetch: The DKG-gadget, an offchain service worker, fetches the unsigned proposal from the queue.
- Send: The DKG-gadget sends messages to all connected peers requesting their signatures in the current or next round.
- Sign: Upon the completion of the round, the now signed proposals are processed and stored in offchain storage.
- Retrieve: The Proposal-Handlers offchain worker fetches the signed proposals.
- Validate: The proposal signatures are validated and inserted into pallet storage.
- Event: A ProposalSigned event is emitted, indicating a successfully submitted proposal.
The current DKG implementation manages the following proposals, each specify a unique change to the system that must be signed in order for any of these requested updates to be considered valid.
|Refresh||Proposal to refresh a contract’s governor|
|AnchorUpdate||Proposal to update merkle roots|
|SetVerifierProposal||Proposal to set a verifier address|
|TokenAdd||Proposal to add token to a set|
|TokenRemove||Proposal to remove token from a set|
|WrappingFeeUpdate||Proposal to update fee parameter|
|RescueToken||Proposal to move tokens from a Treasury|
|MaxDepositLimitUpdate||Proposal to update a maximum deposit limit parameter|
|MinWithdrawalLimitUpdate||Proposal to update a minimum withdrawal limit parameter|
|FeeRecipientUpdateProposal||Proposal to update a fee recipient account|
|SetTreasuryHandlerProposal||Proposal to set a treasury handler address|
|ResourceIdUpdate||Proposal to add/update a resource ID|
|ProposalSetUpdate||Proposal to update the latest proposer set state|