COOPENOMICS  v1
Кооперативная Экономика
eosio.msig.hpp
См. документацию.
1#pragma once
2
29#include <eosio/binary_extension.hpp>
30#include <eosio/eosio.hpp>
31#include <eosio/ignore.hpp>
32#include <eosio/transaction.hpp>
33
34namespace eosio {
44 class [[eosio::contract("eosio.msig")]] multisig : public contract {
45 public:
47
65 void propose(name proposer, name proposal_name,
66 std::vector<permission_level> requested, ignore<transaction> trx);
80 void approve( name proposer, name proposal_name, permission_level level,
81 const eosio::binary_extension<eosio::checksum256>& proposal_hash );
92 void unapprove( name proposer, name proposal_name, permission_level level );
104 [[eosio::action]]
105 void cancel( name proposer, name proposal_name, name canceler );
123 [[eosio::action]]
124 void exec( name proposer, name proposal_name, name executer );
131 [[eosio::action]]
132 void invalidate( name account );
133
134 using propose_action = eosio::action_wrapper<"propose"_n, &multisig::propose>;
135 using approve_action = eosio::action_wrapper<"approve"_n, &multisig::approve>;
136 using unapprove_action = eosio::action_wrapper<"unapprove"_n, &multisig::unapprove>;
137 using cancel_action = eosio::action_wrapper<"cancel"_n, &multisig::cancel>;
138 using exec_action = eosio::action_wrapper<"exec"_n, &multisig::exec>;
139 using invalidate_action = eosio::action_wrapper<"invalidate"_n, &multisig::invalidate>;
140
149 struct [[eosio::table, eosio::contract("eosio.msig")]] proposal {
151 std::vector<char> packed_transaction;
152 eosio::binary_extension< std::optional<time_point> > earliest_exec_time;
153
154 uint64_t primary_key()const { return proposal_name.value; }
155 };
156 typedef eosio::multi_index< "proposal"_n, proposal > proposals;
157
166 struct [[eosio::table, eosio::contract("eosio.msig")]] old_approvals_info {
168 std::vector<permission_level> requested_approvals;
169 std::vector<permission_level> provided_approvals;
170 uint64_t primary_key()const { return proposal_name.value; }
171 };
172 typedef eosio::multi_index< "approvals"_n, old_approvals_info > old_approvals;
173 struct approval {
176 };
177
186 struct [[eosio::table, eosio::contract("eosio.msig")]] approvals_info {
187 uint8_t version = 1;
189 //requested approval doesn't need to contain time, but we want requested approval
190 //to be of exactly the same size as provided approval, in this case approve/unapprove
191 //doesn't change serialized data size. So, we use the same type.
192 std::vector<approval> requested_approvals;
193 std::vector<approval> provided_approvals;
194 uint64_t primary_key()const { return proposal_name.value; }
195 };
196 typedef eosio::multi_index< "approvals2"_n, approvals_info > approvals;
197
206 struct [[eosio::table, eosio::contract("eosio.msig")]] invalidation {
207 name account;
209
210 uint64_t primary_key() const { return account.value; }
211 };
212
213 typedef eosio::multi_index< "invals"_n, invalidation > invalidations;
214 };
215}
Definition: eosio.msig.hpp:44
eosio::action_wrapper<"exec"_n, &multisig::exec > exec_action
Definition: eosio.msig.hpp:138
eosio::multi_index< "approvals"_n, old_approvals_info > old_approvals
Definition: eosio.msig.hpp:172
eosio::multi_index< "invals"_n, invalidation > invalidations
Definition: eosio.msig.hpp:213
eosio::action_wrapper<"unapprove"_n, &multisig::unapprove > unapprove_action
Definition: eosio.msig.hpp:136
eosio::multi_index< "proposal"_n, proposal > proposals
Definition: eosio.msig.hpp:156
eosio::multi_index< "approvals2"_n, approvals_info > approvals
Definition: eosio.msig.hpp:196
eosio::action_wrapper<"propose"_n, &multisig::propose > propose_action
Definition: eosio.msig.hpp:134
eosio::action_wrapper<"approve"_n, &multisig::approve > approve_action
Definition: eosio.msig.hpp:135
eosio::action_wrapper<"cancel"_n, &multisig::cancel > cancel_action
Definition: eosio.msig.hpp:137
eosio::action_wrapper<"invalidate"_n, &multisig::invalidate > invalidate_action
Definition: eosio.msig.hpp:139
contract
Definition: eosio.msig_tests.cpp:977
transaction trx
Definition: eosio.msig_tests.cpp:367
proposer
Definition: eosio.msig_tests.cpp:260
permission_level
Definition: eosio.msig_tests.cpp:896
approve("carol"_n, "first"_n, "alice"_n)
propose("carol"_n, "first"_n, { {"alice"_n, "active"_n}, {"prod1"_n, "active"_n}, {"prod2"_n, "active"_n}, {"prod3"_n, "active"_n}, {"prod4"_n, "active"_n}, {"prod5"_n, "active"_n} }, wrap_trx)
unapprove("carol"_n, "first"_n, "prod1"_n)
void cancel(name proposer, name proposal_name, name canceler)
Отменяет существующее предложение. Позволяет аккаунту canceler отменить предложение proposal_name,...
Definition: eosio.msig.cpp:230
void invalidate(name account)
Инвалидирует аккаунт. Позволяет аккаунту инвалидировать себя, добавляя свое имя в таблицу инвалидаций...
Definition: eosio.msig.cpp:306
void approve(name proposer, name proposal_name, permission_level level, const eosio::binary_extension< eosio::checksum256 > &proposal_hash)
Одобряет существующее предложение. Позволяет аккаунту, владельцу level разрешения,...
Definition: eosio.msig.cpp:116
void unapprove(name proposer, name proposal_name, permission_level level)
Отзывает одобрение существующего предложения. Позволяет аккаунту отозвать свое одобрение предложения,...
Definition: eosio.msig.cpp:178
void exec(name proposer, name proposal_name, name executer)
Выполняет предложение. Позволяет аккаунту executer выполнить предложение, если все условия выполнены.
Definition: eosio.msig.cpp:265
void propose(name proposer, name proposal_name, std::vector< permission_level > requested, ignore< transaction > trx)
Создает предложение транзакции. Позволяет аккаунту proposer создать предложение proposal_name с требу...
Definition: eosio.msig.cpp:54
Definition: eosio.msig.hpp:34
eosio::time_point time_point
Definition: blockinfo_tester.hpp:30
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.msig.hpp:173
time_point time
Definition: eosio.msig.hpp:175
permission_level level
Definition: eosio.msig.hpp:174
Таблица информации об одобрениях хранит информацию об одобрениях предложений.
Definition: eosio.msig.hpp:186
std::vector< approval > provided_approvals
Предоставленные одобрения
Definition: eosio.msig.hpp:193
name proposal_name
Имя предложения
Definition: eosio.msig.hpp:188
uint64_t primary_key() const
Первичный ключ (1)
Definition: eosio.msig.hpp:194
std::vector< approval > requested_approvals
Запрошенные одобрения
Definition: eosio.msig.hpp:192
Таблица инвалидаций хранит информацию об инвалидированных аккаунтах.
Definition: eosio.msig.hpp:206
time_point last_invalidation_time
Время последней инвалидации
Definition: eosio.msig.hpp:208
uint64_t primary_key() const
Первичный ключ (1)
Definition: eosio.msig.hpp:210
name account
Аккаунт
Definition: eosio.msig.hpp:207
Таблица старых одобрений хранит информацию об одобрениях предложений (устаревшая версия).
Definition: eosio.msig.hpp:166
std::vector< permission_level > provided_approvals
Предоставленные одобрения
Definition: eosio.msig.hpp:169
uint64_t primary_key() const
Первичный ключ (1)
Definition: eosio.msig.hpp:170
name proposal_name
Имя предложения
Definition: eosio.msig.hpp:167
std::vector< permission_level > requested_approvals
Запрошенные одобрения
Definition: eosio.msig.hpp:168
Таблица предложений хранит информацию о предложенных транзакциях.
Definition: eosio.msig.hpp:149
name proposal_name
Имя предложения
Definition: eosio.msig.hpp:150
eosio::binary_extension< std::optional< time_point > > earliest_exec_time
Самое раннее время выполнения
Definition: eosio.msig.hpp:152
uint64_t primary_key() const
Первичный ключ (1)
Definition: eosio.msig.hpp:154
std::vector< char > packed_transaction
Упакованная транзакция
Definition: eosio.msig.hpp:151