Struct spl_governance::state::governance::GovernanceV2
source · pub struct GovernanceV2 {
pub account_type: GovernanceAccountType,
pub realm: Pubkey,
pub governed_account: Pubkey,
pub reserved1: u32,
pub config: GovernanceConfig,
pub reserved_v2: Reserved119,
pub required_signatories_count: u8,
pub active_proposal_count: u64,
}
Expand description
Governance Account
Fields§
§account_type: GovernanceAccountType
Account type. It can be Uninitialized, Governance, ProgramGovernance, TokenGovernance or MintGovernance
realm: Pubkey
Governance Realm
governed_account: Pubkey
Account governed by this Governance and/or PDA identity seed It can be Program account, Mint account, Token account or any other account
Note: The account doesn’t have to exist. In that case the field is only a PDA seed
Note: Setting governed_account doesn’t give any authority over the governed account The relevant authorities for specific account types must still be transferred to the Governance PDA Ex: mint_authority/ freeze_authority for a Mint account or upgrade_authority for a Program account should be transferred to the Governance PDA
reserved1: u32
Reserved space for future versions
config: GovernanceConfig
Governance config
reserved_v2: Reserved119
Reserved space for versions v2 and onwards Note 1: V1 accounts must be resized before using this space Note 2: The reserved space should be used from the end to also allow the config to grow if needed
required_signatories_count: u8
The number of required signatories for proposals in the Governance
active_proposal_count: u64
The number of active proposals where active means Draft, SigningOff or Voting state
Note: The counter was introduced in program V3 and didn’t exist in program V1 & V2 If the program is upgraded from program V1 or V2 while there are any outstanding active proposals the counter won’t be accurate until all proposals are transitioned to an inactive final state and the counter reset
Implementations§
source§impl GovernanceV2
impl GovernanceV2
sourcepub fn get_governance_address_seeds(&self) -> Result<[&[u8]; 3], ProgramError>
pub fn get_governance_address_seeds(&self) -> Result<[&[u8]; 3], ProgramError>
Returns Governance PDA seeds
sourcepub fn serialize<W: Write>(self, writer: W) -> Result<(), ProgramError>
pub fn serialize<W: Write>(self, writer: W) -> Result<(), ProgramError>
Serializes account into the target buffer
sourcepub fn serialize_as_governance_v2<'a>(
self,
governance_info: &AccountInfo<'a>,
payer_info: &AccountInfo<'a>,
system_info: &AccountInfo<'a>,
rent: &Rent
) -> Result<(), ProgramError>
pub fn serialize_as_governance_v2<'a>( self, governance_info: &AccountInfo<'a>, payer_info: &AccountInfo<'a>, system_info: &AccountInfo<'a>, rent: &Rent ) -> Result<(), ProgramError>
Serializes Governance accounts as GovernanceV2 If the account is GovernanceV1 then it changes its type to GovernanceV2 and resizes account data Note: It supports all the specialized Governance account types (Governance, ProgramGovernance, MintGovernance and TokenGovernance)
sourcepub fn assert_governing_token_mint_can_vote(
&self,
realm_data: &RealmV2,
vote_governing_token_mint: &Pubkey,
vote_kind: &VoteKind
) -> Result<(), ProgramError>
pub fn assert_governing_token_mint_can_vote( &self, realm_data: &RealmV2, vote_governing_token_mint: &Pubkey, vote_kind: &VoteKind ) -> Result<(), ProgramError>
Asserts the provided voting population represented by the given governing_token_mint can cast the given vote type on proposals for the Governance
sourcepub fn resolve_vote_threshold(
&self,
realm_data: &RealmV2,
vote_governing_token_mint: &Pubkey,
vote_kind: &VoteKind
) -> Result<VoteThreshold, ProgramError>
pub fn resolve_vote_threshold( &self, realm_data: &RealmV2, vote_governing_token_mint: &Pubkey, vote_kind: &VoteKind ) -> Result<VoteThreshold, ProgramError>
Resolves VoteThreshold for the given realm, governing token and Vote kind
sourcepub fn get_vote_tipping(
&self,
realm_data: &RealmV2,
governing_token_mint: &Pubkey
) -> Result<&VoteTipping, ProgramError>
pub fn get_vote_tipping( &self, realm_data: &RealmV2, governing_token_mint: &Pubkey ) -> Result<&VoteTipping, ProgramError>
Returns VoteTipping for the given governing_token_mint
sourcepub fn get_proposal_deposit_amount(&self) -> u64
pub fn get_proposal_deposit_amount(&self) -> u64
Returns the required deposit amount for creating Nth Proposal based on the number of active proposals where N equals to active_proposal_count - deposit_exempt_proposal_count The deposit is not payed unless there are more active Proposal than the exempt amount
Note: The exact deposit payed for Nth Proposal is N*SECURITY_DEPOSIT_BASE_LAMPORTS + min_rent_for(ProposalDeposit)
Note: Although the deposit amount payed for Nth proposal is linear the total deposit amount required to create N proposals is sum of arithmetic series Dn = Nr + dN*(N+1)/2
Trait Implementations§
source§impl AccountMaxSize for GovernanceV2
impl AccountMaxSize for GovernanceV2
source§fn get_max_size(&self) -> Option<usize>
fn get_max_size(&self) -> Option<usize>
source§impl BorshDeserialize for GovernanceV2
impl BorshDeserialize for GovernanceV2
fn deserialize_reader<R: Read>(reader: &mut R) -> Result<Self, Error>
source§fn deserialize(buf: &mut &[u8]) -> Result<Self, Error>
fn deserialize(buf: &mut &[u8]) -> Result<Self, Error>
source§fn try_from_slice(v: &[u8]) -> Result<Self, Error>
fn try_from_slice(v: &[u8]) -> Result<Self, Error>
fn try_from_reader<R>(reader: &mut R) -> Result<Self, Error>where
R: Read,
source§impl BorshSchema for GovernanceV2
impl BorshSchema for GovernanceV2
source§fn declaration() -> Declaration
fn declaration() -> Declaration
source§fn add_definitions_recursively(
definitions: &mut HashMap<Declaration, Definition>
)
fn add_definitions_recursively( definitions: &mut HashMap<Declaration, Definition> )
source§fn add_definition(
declaration: String,
definition: Definition,
definitions: &mut HashMap<String, Definition>
)
fn add_definition( declaration: String, definition: Definition, definitions: &mut HashMap<String, Definition> )
fn schema_container() -> BorshSchemaContainer
source§impl BorshSerialize for GovernanceV2
impl BorshSerialize for GovernanceV2
source§impl Clone for GovernanceV2
impl Clone for GovernanceV2
source§fn clone(&self) -> GovernanceV2
fn clone(&self) -> GovernanceV2
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for GovernanceV2
impl Debug for GovernanceV2
source§impl IsInitialized for GovernanceV2
impl IsInitialized for GovernanceV2
source§fn is_initialized(&self) -> bool
fn is_initialized(&self) -> bool
source§impl PartialEq for GovernanceV2
impl PartialEq for GovernanceV2
source§fn eq(&self, other: &GovernanceV2) -> bool
fn eq(&self, other: &GovernanceV2) -> bool
self
and other
values to be equal, and is used
by ==
.