-
Notifications
You must be signed in to change notification settings - Fork 46
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
Add multisig contract #100
Comments
Look at https://github.com/cosmos/cosmos-sdk/tree/v0.8.0/modules/roles for an implementation I wrote a year ago. You can use for inspiration. I will add more info soon. |
The general idea for me is that you can create a "contract", which possesses a fixed address and can be used as a source or recipient in various other contracts, just like a normal signature (which is why I designed Condition as it is). Maybe this example from ethereum will help: https://blog.zeppelin.solutions/gnosis-multisig-wallet-audit-d702ff0e2b1e Lifecycle is this:
Note that all controllers of a multisig are addresses, so it is conceivable in another issue eg. #101, that the controllers of a multisig are also multisig contracts... But we leave that complication out for now. The multisig contract can do anything a normal signature can do if the app supports it. eg. send/receive tokens. participate in an escrow. own an nft. etc. |
I hope this clears things up, please add any more questions to the issue |
A contract must have a list of N addresses, a threshold to assume permission (1 <= threshold <= N) and a threshold to modify members (threshold <= adminThreshold).
This needs a handler to create and update the content of a mutlisig contract.
Each contract has a unique Condition/Address and can control a wallet. Add a middleware package and a field to the tx so the user can explicitly ask to assume authorization of the multisig for the rest of the request. THis will check all current authorizations against the requirements of the contract and either fail or add another Condition to the authorization.
Up to this point, we can use either 0 or 1 multisig in a transaction
The text was updated successfully, but these errors were encountered: