Supersig — like multisig, but with superpowers 💥
Introducing to the substrate ecosystem, Supersig, a tool that enables web3 organising.
Status: Milestone 1, 2, 3 complete
Multisig is a rather powerful and pervasively used tool across the Substrate ecosystem. Almost every chain has the pallet. It allows a group of people to take decisions together over a shared balances and/or virtually any other type of call within the blockchain. Though, there are a few limitations, so we looked at something great and aimed to make it better.
Supersig, also allows a group of people to make decisions about an account, but they can also add and remove members with the same fixed address, as well as the ability to have simpleMajority instead of a fixed threshold (such as ⅔ or n/t). Though we named this product very similar to multsig it actually required a completely different implementation.
Multisig vs Supersig Key differences
Variable members
- multisig once created has fixed members;
- supersig you can add and remove members.
Enums for voting
- multisig has fixed threshold such as 2/3 or 3/5, etc.
- But supersig has an enumerated threshold such as simpleMajority.
Fixed Address
- Multisig addresses are usually made as a composite of the individual addresses that make it plus its threshold paramter, this is done in a deterministic way, that means the address can be created offline. This is the due to the magic of cryptographic hashing.
- For Supersig to have varying members, but the same address, we have create a native pallet. You can’t create a supersig offline, this is one of the trade-offs to using a Supersig. (In future versions we have plans to create a deterministic multisig backup).
Extra Features:
Master (Superuser) vs Standard user
New members have to be voted in by the current set of members with a simple majority. A supersig member can have a “Master” status, which has much more power than Standard status. Standard user counts for 1 vote, but when a Master votes, their vote counts for 50% of the entire vote. Therefore, they only need one more vote from someone else in order to get a simpleMajority regardless of how many members in the supersig.
You can have more than one Master member. In a some use cases, even everyone can be a Master, which means any two members can successfully pass something regardless of how many members there are of the supersig.
The use case for Master
The clear use case for master is if funds are really intended for 1 person, but there are other users there to sign the transaction for security, then 1 Masteruser with various signers, allows for convenience without giving up on security risk of trusted members becoming adversarial.
Supersig will first be launched on the Kabocha parachain.
Safeguards
Because we are not using BoundedVec.
DepositPerByte: When you create a supersig account, a deposit is transferred from your account to the supersig account, and it is reserved. When you add a member more funds will be reserved to the supersig,
When you are submitting a call you are going to have some funds that are reserved in your account. And if the call is accepted then the reserve is taken.
Useful Links:
Add supersig to your own setup
Docs (Supersig on Kabocha wiki)
pallet_supersig’s home
substrate-supersig-template
kabocha-network
Credits
Supersig was developed by Decentration, made up of creative engineers and product managers.
Nathan Erudyx: Substrate Engineer
Timothee Debrouille: Rusty Crewmates, Code review, Engineering Support, RPC
Robin: RPC (Rest in peace)
Ramsey Ajram: Product manager, engineer.
Funders
Primary: Web 3 Foundation Grant
Secondary: Edgeware Grant (as part of the Edgeware X Web3 Joint Funding Programme)