A Multisig can be made a secondary key with custom permissions (if called by the primary key).
A Multisig can add/remove multiple singers in a single proposal now with multisig.add_multisig_signers and multisig.remove_multisig_signers.
modified external API
Refactor the ProposalDetail storage into two storage items ProposalVoteCounts and ProposalStates. ProposalVoteCounts only stores the approval/rejection vote counts. ProposalStates only store the state and expirey.
Change the key hasher of the Proposal value in double map MultiSig.ProposalIds from Blake2_128Concat to Blake2_128.
multisig.make_multisig_secondary take an optional set of permissions. Only the creator's primary key can set custom permissions.
multisig.add_multisig_signer has been replaced with multisig.add_multisig_signers to allow adding multiple signers.
multisig.remove_multisig_signer has been replaced with multisig.remove_multisig_signers to allow removing multiple signers.
Use BoundedVec<AccountId, T::MaxSigners> for signers list when creating/adding/removing multisig signers. Multisigs can still have more than T::MaxSigners, the limit is just used for a single call.
Added an multisig proposal execution reentry guard to prevent nested proposal executions.
modified events
The multisig events now use struct variants instead of tuple variants.
MultiSig.ProposalExecuted event is now emitted for both successful and failed executions. The result field is used to see if the execution failed and get the error.
MultiSig.ProposalFailedToExecute has been removed, since the error is available in the ProposalExecuted event.
Renamed MultiSigSignerAuthorized to MultiSigSignersAuthorized and change the signer field to signers as a bounded vec. Now only one event is emitted when adding multiple signers.
Renamed MultiSigSignerRemoved to MultiSigSignersRemoved and change the signer field to signers as a bounded vec. Now only one event is emitted when removing multiple signers.
new events
Add MultiSig.ProposalApprovalVote event to signal an approval vote instead of event ProposalApproved. The ProposalApproved event is now only emitted when the proposal has received enough votes to be executed.
data migration
Migration to remove old MultiSig.ProposalDetail storage.
changelog
new features
multisig.add_multisig_signers
andmultisig.remove_multisig_signers
.modified external API
ProposalDetail
storage into two storage itemsProposalVoteCounts
andProposalStates
.ProposalVoteCounts
only stores the approval/rejection vote counts.ProposalStates
only store the state and expirey.Proposal
value in double mapMultiSig.ProposalIds
fromBlake2_128Concat
toBlake2_128
.multisig.make_multisig_secondary
take an optional set of permissions. Only the creator's primary key can set custom permissions.multisig.add_multisig_signer
has been replaced withmultisig.add_multisig_signers
to allow adding multiple signers.multisig.remove_multisig_signer
has been replaced withmultisig.remove_multisig_signers
to allow removing multiple signers.BoundedVec<AccountId, T::MaxSigners>
for signers list when creating/adding/removing multisig signers. Multisigs can still have more thanT::MaxSigners
, the limit is just used for a single call.modified events
MultiSig.ProposalExecuted
event is now emitted for both successful and failed executions. Theresult
field is used to see if the execution failed and get the error.MultiSig.ProposalFailedToExecute
has been removed, since the error is available in theProposalExecuted
event.MultiSigSignerAuthorized
toMultiSigSignersAuthorized
and change thesigner
field tosigners
as a bounded vec. Now only one event is emitted when adding multiple signers.MultiSigSignerRemoved
toMultiSigSignersRemoved
and change thesigner
field tosigners
as a bounded vec. Now only one event is emitted when removing multiple signers.new events
MultiSig.ProposalApprovalVote
event to signal an approval vote instead of eventProposalApproved
. TheProposalApproved
event is now only emitted when the proposal has received enough votes to be executed.data migration
MultiSig.ProposalDetail
storage.