solana-program-library/governance/NOTES.md

28 lines
2.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Developers Notes
## On pub enum GovernanceAccountType
### Asset-specific governances are deprecated
The asset specific governances `ProgramGovernance, MintGovernance and TokenGovernance` are legacy and come from the time when they were top level primitives (Realms didnt exist) and hence we wanted stronger guarantees to create governances for the relevant assets. They are deprecated now.
The recommendation is to use the generic governance account (`governanceV2`) to manage all kinds of assets.
### DAO Wallet
Every Governance account (which holds the governance rules) has an associated native SOL treasury (we call it DAO wallet). The relationship is always 1:1. Since the Governance account is a PDA with data it cant be used as transaction payer and to store SOL in general. **To control programs, the recommended way is to always use the associated SOL address (DAO wallet) for authority over assets**
A DAO wallet is 1) PDA with no data, 2) derived from its governance account and 3) owned by System program. This way it behaves like any other wallet.
If the intention is to manage a program, you should use the DAO wallet as the admin auth in your program
*Note: as of 2022-90-17 the UI is not up-to-date and it is sill allowing users to create the deprecated asset specific governances.*
### Signing transactions: Use the DAO Wallet
Right now both PDAs (DAO Wallet and governance account) can sign Txs. However some protocols assume the singer is also a payer or beneficiary and then only the DAO wallet can be used. For that reason its always better to use the DAO wallet as the authority because it behaves like any other wallet and works for all scenarios. The objective is to standardize on DAO Wallet as signer to eliminate confusion.
### Wallet assets
We have the concept of wallet assets. An asset can be anything a DAO wallet can own (have authority over). This way you could define your programs as assets and show them in the wallet with your contextual actions.