COOPENOMICS  v1
Кооперативная Экономика
eosio.bios.hpp
См. документацию.
1#pragma once
2
3// /**
4// \defgroup public_bios Контракт BIOS
5
6// * Минималистичный системный контракт, предоставляющий только критические действия для загрузки блокчейна.
7// */
8
9// /**
10// \defgroup public_bios_processes Процессы
11// \ingroup public_bios
12// */
13
14// /**
15// \defgroup public_bios_actions Действия
16// \ingroup public_bios
17// */
18
19// /**
20// \defgroup public_bios_tables Таблицы
21// \ingroup public_bios
22// */
23
24// /**
25// \defgroup public_bios_consts Константы
26// \ingroup public_bios
27// */
28
29#include <eosio/action.hpp>
30#include <eosio/crypto.hpp>
31#include <eosio/eosio.hpp>
32#include <eosio/fixed_bytes.hpp>
33#include <eosio/privileged.hpp>
34#include <eosio/producer_schedule.hpp>
35
36namespace eosiobios {
37
38 using eosio::action_wrapper;
39 using eosio::check;
40 using eosio::checksum256;
41 using eosio::ignore;
42 using eosio::name;
44 using eosio::public_key;
45
48 uint16_t weight;
49
50 // explicit serialization macro is not necessary, used here only to improve compilation time
51 EOSLIB_SERIALIZE( permission_level_weight, (permission)(weight) )
52 };
53
54 struct key_weight {
55 eosio::public_key key;
56 uint16_t weight;
57
58 // explicit serialization macro is not necessary, used here only to improve compilation time
59 EOSLIB_SERIALIZE( key_weight, (key)(weight) )
60 };
61
62 struct wait_weight {
63 uint32_t wait_sec;
64 uint16_t weight;
65
66 // explicit serialization macro is not necessary, used here only to improve compilation time
67 EOSLIB_SERIALIZE( wait_weight, (wait_sec)(weight) )
68 };
69
70 struct authority {
71 uint32_t threshold = 0;
72 std::vector<key_weight> keys;
73 std::vector<permission_level_weight> accounts;
74 std::vector<wait_weight> waits;
75
76 // explicit serialization macro is not necessary, used here only to improve compilation time
77 EOSLIB_SERIALIZE( authority, (threshold)(keys)(accounts)(waits) )
78 };
79
80 struct block_header {
81 uint32_t timestamp;
83 uint16_t confirmed = 0;
84 checksum256 previous;
85 checksum256 transaction_mroot;
86 checksum256 action_mroot;
87 uint32_t schedule_version = 0;
88 std::optional<eosio::producer_schedule> new_producers;
89
90 // explicit serialization macro is not necessary, used here only to improve compilation time
93 };
94
101 public:
102 using contract::contract;
115 [[eosio::action]]
116 void newaccount( name creator,
117 name name,
118 ignore<authority> owner,
119 ignore<authority> active){}
128 [[eosio::action]]
129 void updateauth( ignore<name> account,
130 ignore<name> permission,
131 ignore<name> parent,
132 ignore<authority> auth ) {}
133
140 [[eosio::action]]
141 void deleteauth( ignore<name> account,
142 ignore<name> permission ) {}
143
159 [[eosio::action]]
160 void linkauth( ignore<name> account,
161 ignore<name> code,
162 ignore<name> type,
163 ignore<name> requirement ) {}
164
172 [[eosio::action]]
173 void unlinkauth( ignore<name> account,
174 ignore<name> code,
175 ignore<name> type ) {}
176
183 [[eosio::action]]
184 void canceldelay( ignore<permission_level> canceling_auth, ignore<checksum256> trx_id ) {}
185
194 [[eosio::action]]
195 void setcode( name account, uint8_t vmtype, uint8_t vmversion, const std::vector<char>& code ) {}
196
205 [[eosio::action]]
206 void setabi( name account, const std::vector<char>& abi );
207
216 [[eosio::action]]
217 void onerror( ignore<uint128_t> sender_id, ignore<std::vector<char>> sent_trx );
218
224 [[eosio::action]]
225 void setpriv( name account, uint8_t is_priv );
226
235 [[eosio::action]]
236 void setalimits( name account, int64_t ram_bytes, int64_t net_weight, int64_t cpu_weight );
237
246 [[eosio::action]]
247 void setprods( const std::vector<eosio::producer_authority>& schedule );
248
254 [[eosio::action]]
255 void setparams( const eosio::blockchain_parameters& params );
256
263 [[eosio::action]]
264 void reqauth( name from );
265
271 [[eosio::action]]
272 void activate( const eosio::checksum256& feature_digest );
273
279 [[eosio::action]]
280 void reqactivated( const eosio::checksum256& feature_digest );
281
290 struct [[eosio::table]] abi_hash {
291 name owner;
292 checksum256 hash;
293 uint64_t primary_key()const { return owner.value; }
294
295 EOSLIB_SERIALIZE( abi_hash, (owner)(hash) )
296 };
297
298 typedef eosio::multi_index< "abihash"_n, abi_hash > abi_hash_table;
299
300 using newaccount_action = action_wrapper<"newaccount"_n, &bios::newaccount>;
301 using updateauth_action = action_wrapper<"updateauth"_n, &bios::updateauth>;
302 using deleteauth_action = action_wrapper<"deleteauth"_n, &bios::deleteauth>;
303 using linkauth_action = action_wrapper<"linkauth"_n, &bios::linkauth>;
304 using unlinkauth_action = action_wrapper<"unlinkauth"_n, &bios::unlinkauth>;
305 using canceldelay_action = action_wrapper<"canceldelay"_n, &bios::canceldelay>;
306 using setcode_action = action_wrapper<"setcode"_n, &bios::setcode>;
307 using setabi_action = action_wrapper<"setabi"_n, &bios::setabi>;
308 using setpriv_action = action_wrapper<"setpriv"_n, &bios::setpriv>;
309 using setalimits_action = action_wrapper<"setalimits"_n, &bios::setalimits>;
310 using setprods_action = action_wrapper<"setprods"_n, &bios::setprods>;
311 using setparams_action = action_wrapper<"setparams"_n, &bios::setparams>;
312 using reqauth_action = action_wrapper<"reqauth"_n, &bios::reqauth>;
313 using activate_action = action_wrapper<"activate"_n, &bios::activate>;
314 using reqactivated_action = action_wrapper<"reqactivated"_n, &bios::reqactivated>;
315 };
316}
Definition: eosio.bios.hpp:100
void setabi(name account, const std::vector< char > &abi)
Устанавливает ABI для аккаунта. Сохраняет хеш ABI в таблице для указанного аккаунта.
Definition: eosio.bios.cpp:15
action_wrapper<"deleteauth"_n, &bios::deleteauth > deleteauth_action
Definition: eosio.bios.hpp:302
void newaccount(name creator, name name, ignore< authority > owner, ignore< authority > active)
Definition: eosio.bios.hpp:116
eosio::multi_index< "abihash"_n, abi_hash > abi_hash_table
Definition: eosio.bios.hpp:298
action_wrapper<"setcode"_n, &bios::setcode > setcode_action
Definition: eosio.bios.hpp:306
action_wrapper<"setpriv"_n, &bios::setpriv > setpriv_action
Definition: eosio.bios.hpp:308
void reqactivated(const eosio::checksum256 &feature_digest)
Проверяет активацию протокольной функции. Утверждает, что протокольная функция была активирована.
Definition: eosio.bios.cpp:138
void deleteauth(ignore< name > account, ignore< name > permission)
Definition: eosio.bios.hpp:141
action_wrapper<"updateauth"_n, &bios::updateauth > updateauth_action
Definition: eosio.bios.hpp:301
action_wrapper<"setprods"_n, &bios::setprods > setprods_action
Definition: eosio.bios.hpp:310
void updateauth(ignore< name > account, ignore< name > permission, ignore< name > parent, ignore< authority > auth)
Definition: eosio.bios.hpp:129
void unlinkauth(ignore< name > account, ignore< name > code, ignore< name > type)
Definition: eosio.bios.hpp:173
void canceldelay(ignore< permission_level > canceling_auth, ignore< checksum256 > trx_id)
Definition: eosio.bios.hpp:184
action_wrapper<"setalimits"_n, &bios::setalimits > setalimits_action
Definition: eosio.bios.hpp:309
action_wrapper<"setparams"_n, &bios::setparams > setparams_action
Definition: eosio.bios.hpp:311
action_wrapper<"linkauth"_n, &bios::linkauth > linkauth_action
Definition: eosio.bios.hpp:303
void setprods(const std::vector< eosio::producer_authority > &schedule)
Устанавливает новый список активных продюсеров. Устанавливает новый список активных продюсеров,...
Definition: eosio.bios.cpp:75
action_wrapper<"reqauth"_n, &bios::reqauth > reqauth_action
Definition: eosio.bios.hpp:312
action_wrapper<"activate"_n, &bios::activate > activate_action
Definition: eosio.bios.hpp:313
void reqauth(name from)
Проверяет авторизацию аккаунта. Проверяет, имеет ли аккаунт from авторизацию для доступа к текущему д...
Definition: eosio.bios.cpp:112
action_wrapper<"newaccount"_n, &bios::newaccount > newaccount_action
Definition: eosio.bios.hpp:300
void setalimits(name account, int64_t ram_bytes, int64_t net_weight, int64_t cpu_weight)
Устанавливает лимиты ресурсов для аккаунта. Устанавливает лимиты RAM, сети и CPU для указанного аккау...
Definition: eosio.bios.cpp:61
void linkauth(ignore< name > account, ignore< name > code, ignore< name > type, ignore< name > requirement)
Definition: eosio.bios.hpp:160
action_wrapper<"canceldelay"_n, &bios::canceldelay > canceldelay_action
Definition: eosio.bios.hpp:305
void setparams(const eosio::blockchain_parameters &params)
Устанавливает параметры блокчейна. Устанавливает параметры блокчейна для настройки различных степеней...
Definition: eosio.bios.cpp:89
void activate(const eosio::checksum256 &feature_digest)
Активирует протокольную функцию. Активирует протокольную функцию по хешу.
Definition: eosio.bios.cpp:125
action_wrapper<"setabi"_n, &bios::setabi > setabi_action
Definition: eosio.bios.hpp:307
void setpriv(name account, uint8_t is_priv)
Устанавливает привилегированный статус для аккаунта. Включает или выключает привилегированный статус ...
Definition: eosio.bios.cpp:44
action_wrapper<"reqactivated"_n, &bios::reqactivated > reqactivated_action
Definition: eosio.bios.hpp:314
void setcode(name account, uint8_t vmtype, uint8_t vmversion, const std::vector< char > &code)
Definition: eosio.bios.hpp:195
action_wrapper<"unlinkauth"_n, &bios::unlinkauth > unlinkauth_action
Definition: eosio.bios.hpp:304
const auto active
Definition: eosio.limitauth_tests.cpp:17
const auto owner
Definition: eosio.limitauth_tests.cpp:16
contract
Definition: eosio.msig_tests.cpp:977
permission_level
Definition: eosio.msig_tests.cpp:896
Definition: eosio.msig.hpp:34
Definition: eosio.bios.hpp:36
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: accounts.hpp:60
Definition: eosio.bios.hpp:70
std::vector< permission_level_weight > accounts
Definition: eosio.bios.hpp:73
uint32_t threshold
Definition: eosio.bios.hpp:71
std::vector< wait_weight > waits
Definition: eosio.bios.hpp:74
std::vector< key_weight > keys
Definition: eosio.bios.hpp:72
Таблица хешей ABI хранит хеши ABI для аккаунтов.
Definition: eosio.bios.hpp:290
name owner
Владелец ABI.
Definition: eosio.bios.hpp:291
checksum256 hash
Хеш ABI.
Definition: eosio.bios.hpp:292
uint64_t primary_key() const
Первичный ключ (1)
Definition: eosio.bios.hpp:293
Definition: eosio.bios.hpp:80
name producer
Definition: eosio.bios.hpp:82
std::optional< eosio::producer_schedule > new_producers
Definition: eosio.bios.hpp:88
checksum256 previous
Definition: eosio.bios.hpp:84
uint32_t timestamp
Definition: eosio.bios.hpp:81
uint16_t confirmed
Definition: eosio.bios.hpp:83
checksum256 transaction_mroot
Definition: eosio.bios.hpp:85
checksum256 action_mroot
Definition: eosio.bios.hpp:86
uint32_t schedule_version
Definition: eosio.bios.hpp:87
Definition: eosio.bios.hpp:54
uint16_t weight
Definition: eosio.bios.hpp:56
eosio::public_key key
Definition: eosio.bios.hpp:55
Definition: eosio.bios.hpp:46
permission_level permission
Definition: eosio.bios.hpp:47
uint16_t weight
Definition: eosio.bios.hpp:48
Definition: eosio.bios.hpp:62
uint16_t weight
Definition: eosio.bios.hpp:64
uint32_t wait_sec
Definition: eosio.bios.hpp:63