1.eosio.token.hpp
3386 ワード
eosio.token.hpp
1.全体評注
EOSのトークン知能契約eosio.tokenは、トークン関連のすべての操作に使用されます.新しいトークンの作成、トークンの解放、トークンの転送などが含まれます.
インテリジェント契約の開発はeosio.cdtの関連コードに大きく依存しています.eosiolibの頭ファイルを通じて引用します.最新版はeosioからすべてのヘッダファイルを引用します.
契約eosio.tokenの中で二つの重要なデータ構造を作成しました.account、currency_スター.内訳:accountはアカウントの現在の残高を記述しています.currency_スターはトークンの基礎情報を述べました.例えば、issuer、supply、max_supployなど
契約eosio.tokenで二つの記憶構造を作成しました.accounts、stats.その中:accountsはすべてのaccount情報を記憶しています.statsは全てのcurrency_を記憶しています.スター情報.これらのデータ構造はすべてブートに基づいています.indexデータ構造は、記憶およびインデックスのために行われる.
2.ソースコードとコメントhttps://github.com/EOSIO/eosio.contracts Conttributor Windartamp、https://github.com/windstamp
1.全体評注
EOSのトークン知能契約eosio.tokenは、トークン関連のすべての操作に使用されます.新しいトークンの作成、トークンの解放、トークンの転送などが含まれます.
インテリジェント契約の開発はeosio.cdtの関連コードに大きく依存しています.eosiolibの頭ファイルを通じて引用します.最新版はeosioからすべてのヘッダファイルを引用します.
契約eosio.tokenの中で二つの重要なデータ構造を作成しました.account、currency_スター.内訳:accountはアカウントの現在の残高を記述しています.currency_スターはトークンの基礎情報を述べました.例えば、issuer、supply、max_supployなど
契約eosio.tokenで二つの記憶構造を作成しました.accounts、stats.その中:accountsはすべてのaccount情報を記憶しています.statsは全てのcurrency_を記憶しています.スター情報.これらのデータ構造はすべてブートに基づいています.indexデータ構造は、記憶およびインデックスのために行われる.
2.ソースコードとコメント
/**
* @file
* @copyright defined in eos/LICENSE.txt
*/
#pragma once
#include
#include
#include
namespace eosiosystem {
class system_contract;
}
namespace eosio {
using std::string;
class [[eosio::contract("eosio.token")]] token : public contract {
public:
using contract::contract;
[[eosio::action]]
void create( name issuer,
asset maximum_supply);
[[eosio::action]]
void issue( name to, asset quantity, string memo );
[[eosio::action]]
void retire( asset quantity, string memo );
[[eosio::action]]
void transfer( name from,
name to,
asset quantity,
string memo );
[[eosio::action]]
void open( name owner, const symbol& symbol, name ram_payer );
[[eosio::action]]
void close( name owner, const symbol& symbol );
static asset get_supply( name token_contract_account, symbol_code sym_code )
{
stats statstable( token_contract_account, sym_code.raw() );
const auto& st = statstable.get( sym_code.raw() );
return st.supply;
}
static asset get_balance( name token_contract_account, name owner, symbol_code sym_code )
{
accounts accountstable( token_contract_account, owner.value );
const auto& ac = accountstable.get( sym_code.raw() );
return ac.balance;
}
using create_action = eosio::action_wrapper;
using issue_action = eosio::action_wrapper;
using retire_action = eosio::action_wrapper;
using transfer_action = eosio::action_wrapper;
using open_action = eosio::action_wrapper;
using close_action = eosio::action_wrapper;
private:
struct [[eosio::table]] account {
asset balance;
uint64_t primary_key()const { return balance.symbol.code().raw(); }
};
struct [[eosio::table]] currency_stats {
asset supply;
asset max_supply;
name issuer;
uint64_t primary_key()const { return supply.symbol.code().raw(); }
};
typedef eosio::multi_index< "accounts"_n, account > accounts;
typedef eosio::multi_index< "stat"_n, currency_stats > stats;
void sub_balance( name owner, asset value );
void add_balance( name owner, asset value, name ram_payer );
};
} /// namespace eosio
Reference