Aptosコイン(従来の)
コインが提供する標準は、シンプルで型安全なフレームワーク、代替可能トークンとコインです。
ヒント
コインは 0x1::coin
へ補完されます。
構造物
再利用性
Moveでコインは以下の様に定義されます。
struct Coin<phantom CoinType> has store {
/// このアドレスが持っているコインの量
value: u64,
}
CoinはCoinType
を使い、個別のコインのコインフレームワークの再利用性をサポートします。例えばCoin<A>
とCoin<B>
は別のコインです。
グローバルストア
Coinはグローバルストアへコインを保存するリソースもサポートしています。
struct CoinStore<phantom CoinType> has key {
coin: Coin<CoinType>,
frozen: bool,
deposit_events: EventHandle<DepositEvent>,
withdraw_events: EventHandle<WithdrawEvent>,
}
コイン情報やメタデータはコイン作成者アカウント下のグローバルストアへ保存されます。
struct CoinInfo<phantom CoinType> has key {
name: string::String,
/// コインのシンボル、通常は名前の短縮系
/// 例えば、シンガポールドルはSGD
symbol: string::String,
/// ユーザー表現を取得するため使用される小数の数
/// 例えば`decimals`が`2`と等しい場合`505`コインの残高は
/// ユーザーへ`5.05` (`505 / 10 ** 2`)と表示されます。
decimals: u8,
/// このコインタイプの実在量
supply: Option<OptionalAggregator>,
}
プリミティブ
Coinはコインを作成・管理しているユーザーや、それを使用するユーザーへプリミティブを提供します。
作成者
Coinの作成者と管理者が出来るのは...
- コインの初期化とメタデータの設定をして供給の監視をする
- コインの価値のバーンとミント
CoinStore
からコインをバーンするCoinStore
へ出入りする流動性を凍結します
ユーザー
コインユーザーが出来るのは...
- 同じタイプの2つのCoin構造体を併合する。
- Coin構造体から新しいCoin構造体へ値を抽出する。
CoinStore
への入出金の機能と結果としてイベントの発行。- ユーザーが自分のアカウントの
CoinStore<CoinType>
を登録するのを許可して コインを処理する。