COOPENOMICS  v1
Кооперативная Экономика
eosio.token.hpp
См. документацию.
1#pragma once
2
29#include <eosio/asset.hpp>
30#include <eosio/eosio.hpp>
31
32#include <string>
33
34namespace eosiosystem {
35 class system_contract;
36}
37
38namespace eosio {
39
40 using std::string;
41
51 class [[eosio::contract("eosio.token")]] token : public contract {
52 public:
54
67 void create( const name& issuer,
68 const asset& maximum_supply);
77 void issue( const name& to, const asset& quantity, const string& memo );
78
87 void retire( const asset& quantity, const string& memo );
88
99 void transfer( const name& from,
100 const name& to,
101 const asset& quantity,
102 const string& memo );
114 [[eosio::action]]
115 void open( const name& owner, const symbol& symbol, const name& ram_payer );
116
127 [[eosio::action]]
128 void close( const name& owner, const symbol& symbol );
129
130 static asset get_supply( const name& token_contract_account, const symbol_code& sym_code )
131 {
132 stats statstable( token_contract_account, sym_code.raw() );
133 const auto& st = statstable.get( sym_code.raw(), "invalid supply symbol code" );
134 return st.supply;
135 }
136
137 static asset get_balance( const name& token_contract_account, const name& owner, const symbol_code& sym_code )
138 {
139 accounts accountstable( token_contract_account, owner.value );
140 const auto& ac = accountstable.get( sym_code.raw(), "no balance with specified symbol" );
141 return ac.balance;
142 }
143
144 using create_action = eosio::action_wrapper<"create"_n, &token::create>;
145 using issue_action = eosio::action_wrapper<"issue"_n, &token::issue>;
146 using retire_action = eosio::action_wrapper<"retire"_n, &token::retire>;
147 using transfer_action = eosio::action_wrapper<"transfer"_n, &token::transfer>;
148 using open_action = eosio::action_wrapper<"open"_n, &token::open>;
149 using close_action = eosio::action_wrapper<"close"_n, &token::close>;
150 private:
159 struct [[eosio::table]] account {
160 asset balance;
161
162 uint64_t primary_key()const { return balance.symbol.code().raw(); }
163 };
164
173 struct [[eosio::table]] currency_stats {
174 asset supply;
176 name issuer;
177
178 uint64_t primary_key()const { return supply.symbol.code().raw(); }
179 };
180
181 typedef eosio::multi_index< "accounts"_n, account > accounts;
182 typedef eosio::multi_index< "stat"_n, currency_stats > stats;
183
184 void sub_balance( const name& owner, const asset& value );
185 void add_balance( const name& owner, const asset& value, const name& ram_payer );
186 void is_can_transfer(const name& from, const name& to);
187
188 };
189
190}
Definition: eosio.token.hpp:51
eosio::action_wrapper<"issue"_n, &token::issue > issue_action
Definition: eosio.token.hpp:145
eosio::action_wrapper<"close"_n, &token::close > close_action
Definition: eosio.token.hpp:149
eosio::action_wrapper<"transfer"_n, &token::transfer > transfer_action
Definition: eosio.token.hpp:147
static asset get_balance(const name &token_contract_account, const name &owner, const symbol_code &sym_code)
Definition: eosio.token.hpp:137
eosio::multi_index< "stat"_n, currency_stats > stats
Definition: eosio.token.hpp:182
eosio::action_wrapper<"create"_n, &token::create > create_action
Definition: eosio.token.hpp:144
eosio::action_wrapper<"retire"_n, &token::retire > retire_action
Definition: eosio.token.hpp:146
eosio::action_wrapper<"open"_n, &token::open > open_action
Definition: eosio.token.hpp:148
eosio::multi_index< "accounts"_n, account > accounts
Definition: eosio.token.hpp:181
static asset get_supply(const name &token_contract_account, const symbol_code &sym_code)
Definition: eosio.token.hpp:130
const auto owner
Definition: eosio.limitauth_tests.cpp:16
contract
Definition: eosio.msig_tests.cpp:977
issue(config::system_account_name, core_sym::from_string("1000000000.0000"))
balance
Definition: eosio.token_tests.cpp:226
transfer("alice"_n, "bob"_n, asset::from_string("300 CERO"), "hola")
supply
Definition: eosio.token_tests.cpp:150
void issue(const name &to, const asset &quantity, const string &memo)
Выпускает токены указанному аккаунту. Позволяет эмитенту выпустить определенное количество токенов на...
Definition: eosio.token.cpp:63
void retire(const asset &quantity, const string &memo)
Изымает токены из обращения. Позволяет эмитенту изъять определенное количество токенов из общего пред...
Definition: eosio.token.cpp:101
void open(const name &owner, const symbol &symbol, const name &ram_payer)
Открывает аккаунт для указанного токена. Позволяет ram_payer создать аккаунт owner с нулевым балансом...
Definition: eosio.token.cpp:202
void create(const name &issuer, const asset &maximum_supply)
Создает новый токен с указанным максимальным предложением. Позволяет эмитенту создать токен с заданны...
Definition: eosio.token.cpp:16
void close(const name &owner, const symbol &symbol)
Закрывает аккаунт для указанного токена. Позволяет владельцу закрыть аккаунт для указанного токена,...
Definition: eosio.token.cpp:232
void transfer(const name &from, const name &to, const asset &quantity, const string &memo)
Переводит токены между аккаунтами. Позволяет отправителю перевести определенное количество токенов по...
Definition: eosio.token.cpp:137
Definition: eosio.msig.hpp:34
Definition: rammarket.hpp:7
action(permission_level{ _gateway, "active"_n}, _gateway, "adduser"_n, std::make_tuple(coopname, deposit->username, to_spread, to_circulation, eosio::current_time_point(), true)).send()
Таблица аккаунтов хранит балансы токенов для каждого аккаунта.
Definition: eosio.token.hpp:159
uint64_t primary_key() const
Первичный ключ (1)
Definition: eosio.token.hpp:162
asset balance
Баланс токенов
Definition: eosio.token.hpp:160
Таблица статистики валют хранит информацию о токенах.
Definition: eosio.token.hpp:173
name issuer
Аккаунт-эмитент токенов
Definition: eosio.token.hpp:176
asset supply
Текущее предложение токенов
Definition: eosio.token.hpp:174
asset max_supply
Максимальное предложение токенов
Definition: eosio.token.hpp:175
uint64_t primary_key() const
Первичный ключ (1)
Definition: eosio.token.hpp:178