Token

Struct Token 

Source
pub struct Token {
    pub id: Uuid,
    pub name: String,
    pub symbol: String,
    pub total_supply: Decimal,
    pub current_supply: Decimal,
    pub initial_supply_percentage: Decimal,
    pub inflation_rate: Option<Decimal>,
    pub burn_rate: Option<Decimal>,
    pub initial_price: Decimal,
    pub airdrop_percentage: Option<Decimal>,
    pub unlock_schedule: Option<Vec<UnlockEvent>>,
}
Expand description

Token.

Fields§

§id: Uuid

ID for the token.

§name: String

Name of the token. The name is a human-readable identifier for the token.

§symbol: String

Symbol of the token. The symbol is a short identifier for the token, usually 3-4 characters long.

§total_supply: Decimal

Total supply of the token. The total supply is the maximum number of tokens that can ever exist.

§current_supply: Decimal

Current supply of the token. The current supply is the number of tokens that have been minted or airdropped.

§initial_supply_percentage: Decimal

Initial supply of the token, in percentage of total supply. The initial supply is the number of tokens that are minted at the start of the simulation.

§inflation_rate: Option<Decimal>

Annual percentage increase in supply, if supply is inflationary. The inflation rate is the percentage by which the total supply increases each year.

§burn_rate: Option<Decimal>

Percentage of tokens burned during each transaction, if deflationary. The burn rate is the percentage of tokens that are destroyed during each transaction.

§initial_price: Decimal

Initial price of the token in simulation. The initial price is the price of the token at the start of the simulation.

§airdrop_percentage: Option<Decimal>

Airdrop amount of the token, in percentage of total supply. The airdrop percentage is the percentage of the total supply that is airdropped at the start of the simulation.

§unlock_schedule: Option<Vec<UnlockEvent>>

Unlock schedule. The unlock schedule is a list of unlock events, each with a date and amount of tokens to unlock.

Implementations§

Source§

impl Token

Source

pub fn airdrop(&mut self, percentage: Decimal) -> Decimal

Perform an airdrop.

§Arguments
  • percentage - The percentage of the total supply to airdrop.
§Returns

The amount of tokens airdropped.

Source

pub fn add_unlock_event(&mut self, date: DateTime<Utc>, amount: Decimal)

Add an unlock event to the schedule. The unlock event will unlock a certain amount of tokens at a certain date.

§Arguments
  • date - The date and time of the unlock event.
  • amount - The amount of tokens to unlock.
Source

pub fn process_unlocks(&mut self, current_date: DateTime<Utc>)

Process unlock events up to the current date. Unlocks tokens and removes events that have already occurred.

§Arguments
  • current_date - The current date and time.
Source

pub fn initial_supply(&self) -> Decimal

Calculate the initial supply based on the initial supply percentage. The initial supply is the number of tokens that are minted at the start of the simulation.

§Returns

Initial supply of the token.

Trait Implementations§

Source§

impl Clone for Token

Source§

fn clone(&self) -> Token

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Token

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl PartialEq for Token

Source§

fn eq(&self, other: &Token) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl StructuralPartialEq for Token

Auto Trait Implementations§

§

impl Freeze for Token

§

impl RefUnwindSafe for Token

§

impl Send for Token

§

impl Sync for Token

§

impl Unpin for Token

§

impl UnwindSafe for Token

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V