19 class [[sysio::contract(
"sysio.msig")]]
multisig :
public contract {
21 using contract::contract;
40 void propose(ignore<name> proposer, ignore<name> proposal_name,
41 ignore<std::vector<permission_level>> requested, ignore<transaction> trx);
56 const sysio::binary_extension<sysio::checksum256>& proposal_hash );
80 void cancel(
name proposer,
name proposal_name,
name canceler );
99 void exec(
name proposer,
name proposal_name,
name executer );
107 void invalidate(
name account );
113 using exec_action = sysio::action_wrapper<
"exec"_n, &multisig::exec>;
117 struct [[sysio::table]] proposal {
121 uint64_t primary_key()
const {
return proposal_name.value; }
124 typedef sysio::multi_index<
"proposal"_n, proposal > proposals;
126 struct [[sysio::table]] old_approvals_info {
128 std::vector<permission_level> requested_approvals;
129 std::vector<permission_level> provided_approvals;
131 uint64_t primary_key()
const {
return proposal_name.value; }
133 typedef sysio::multi_index<
"approvals"_n, old_approvals_info > old_approvals;
136 permission_level
level;
140 struct [[sysio::table]] approvals_info {
146 std::vector<approval> requested_approvals;
147 std::vector<approval> provided_approvals;
149 uint64_t primary_key()
const {
return proposal_name.value; }
151 typedef sysio::multi_index<
"approvals2"_n, approvals_info > approvals;
153 struct [[sysio::table]] invalidation {
157 uint64_t primary_key()
const {
return account.value; }
160 typedef sysio::multi_index<
"invals"_n, invalidation > invalidations;