pub enum GoverningTokenType {
Liquid,
Membership,
Dormant,
}
Expand description
The type of the governing token defines:
- Who retains the authority over deposited tokens
- Which token instructions Deposit, Withdraw and Revoke (burn) are allowed
Variants§
Liquid
Liquid token is a token which is fully liquid and the token owner
retains full authority over it.
Deposit - Yes
Withdraw - Yes
Revoke - No, Realm authority cannot revoke liquid tokens
Membership
Membership token is a token controlled by Realm authority Deposit - Yes, membership tokens can be deposited to gain governance power. The membership tokens are conventionally minted into the holding account to keep them out of members possession. Withdraw - No, after membership tokens are deposited they are no longer transferable and can’t be withdrawn. Revoke - Yes, Realm authority can Revoke (burn) membership tokens.
Dormant
Dormant token is a token which is only a placeholder and its deposits are not accepted and not used for governance power within the Realm
The Dormant token type is used when only a single voting population is operational. For example a Multisig starter DAO uses Council only and sets Community as Dormant to indicate its not utilized for any governance power. Once the starter DAO decides to decentralise then it can change the Community token to Liquid
Note: When an external voter weight plugin which takes deposits of the token is used then the type should be set to Dormant to make the intention explicit
Deposit - No, dormant tokens can’t be deposited into the Realm Withdraw - Yes, tokens can still be withdrawn from Realm to support scenario where the config is changed while some tokens are still deposited. Revoke - No, Realm authority cannot revoke dormant tokens
Trait Implementations§
source§impl BorshDeserialize for GoverningTokenType
impl BorshDeserialize for GoverningTokenType
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 GoverningTokenType
impl BorshSchema for GoverningTokenType
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 GoverningTokenType
impl BorshSerialize for GoverningTokenType
source§impl Clone for GoverningTokenType
impl Clone for GoverningTokenType
source§fn clone(&self) -> GoverningTokenType
fn clone(&self) -> GoverningTokenType
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for GoverningTokenType
impl Debug for GoverningTokenType
source§impl Default for GoverningTokenType
impl Default for GoverningTokenType
source§impl EnumExt for GoverningTokenType
impl EnumExt for GoverningTokenType
source§impl PartialEq for GoverningTokenType
impl PartialEq for GoverningTokenType
source§fn eq(&self, other: &GoverningTokenType) -> bool
fn eq(&self, other: &GoverningTokenType) -> bool
self
and other
values to be equal, and is used
by ==
.