-
Notifications
You must be signed in to change notification settings - Fork 44
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
Governance - MultiSig #26
Comments
I created a branch at 0e1c2ed The code skeleton is at dao/program I think it can be a very simple design: We can have mainly one function: Suppose we want to add a validator, everything is done in the UI level. |
We discovered https://github.com/project-serum/multisig which appears to do exactly what we need. Some notes from playing around with it:
So far I haven’t been able to make the UI connect to my local testnet. I edited this line in
In the developer console. Investigating further ... |
@joncinque : ^ Any thoughts/opinion on using Serum Multisig for Lido Multisig Governance? |
This is probably related to how anchor fetches on-chain information. Anchor is the framework used to develop the multisig program, and I believe it includes publishing the instruction / state data on-chain. So if you've only published the new program for yourself, you may be missing this extra information. I'll have to look into anchor a bit more in general, but if you have specific questions about it, you can ask Armani in the Serum discord, since I believe he led the development on anchor. Until we release the governance program, this multisig will likely be the best option for Lido program governance. |
With the Rust client, I was able to create a multisig account on my local testnet. Now for testing the other features! I pushed this to the |
A bit more detail about how the Serum Multisig works. I am going to refer to the Multisig program as Multisig (with a capital M), and to a group of owners who vote on transactions as a multisig (lowercase) account. The Multisig program can facilitate many multisig accounts, and each multisig account can execute many transactions.
How we would use it:
How to interact with the Multisig program:
I’m just working my way through the Multisig functions, the next things to add are |
I just read the entire thread @ruuda : This is great progress, given the short timeline! :) Meanwhile - I will work on a couple of issues
These will focus on the governance related additions to be made to these programs. eg. functions to change fees params etc. One question : Will |
It will not require changes, everything is external to Lido. The initial deployer of Lido must set the upgrade authority to the multisig PDA.
|
What can be done when there's a malicious owner that keeps proposing an instruction to stagger the multisig? |
What does “stagger the multisig” mean?
The Multisig program has a function But I think that function is not even needed. What you could do instead is just create a new multisig with the updated owners, and then use the old multisig to change the upgrade authority of Solido to the new multisig. This is simpler, it has less moving parts. The only downside I can think of is if you use the multisig to manage many programs, you need to do this for all of them. |
If I'm a malicious member I can keep proposing some transaction ahead of everyone to "block" the contract, as it processes
I think you can upgrade the multisig with another address for the owners, in that way you don't need to change any of the programs it controls. |
As discussed offline, this is not an issue, because many proposed transactions can exist simultaneously; the proposer opens a new account, and the transaction and its status are stored in there. |
Status updateI now have the CLI working to the point where it can successfully upgrade a program whose upgrade authority is set to the multisig’s derived address. As discussed with @enriquefynn, I’ll also add a command to the CLI to change the owners of the multisig. It would be possible to create a new account with the new owners instead, but because multisig accounts cannot be closed at this time, it might be good to stick to a single account. |
It would also be nice to add an |
Status updateThe CLI can upgrade a program now, and it can also change its owners/threshold. I am still working on adding an automated test that calls all commands in sequence. If we want the multisig to also propose calls to Lido, that’s now easy to add — if we have a |
Next stepsThe
I’ll wait for the current code to be reviewed, and then I’ll organize it like this. After that I can continue adding management options to the CLI. Possibly we could even merge the Multisig and Lido CLI programs, so |
The text was updated successfully, but these errors were encountered: