21inline checksum256
vote_digest(eosio::name
action, eosio::name coopname, uint64_t decision_id, eosio::time_point_sec signed_at) {
22 std::string payload =
action.to_string() +
":" + coopname.to_string() +
":" + std::to_string(decision_id) +
":" +
23 std::to_string(signed_at.sec_since_epoch());
24 return eosio::sha256(payload.data(), payload.size());
40inline void verify_member_signature(eosio::name coopname, eosio::name member, eosio::name permission, eosio::name decision_type,
41 Kind kind,
const checksum256& signed_hash,
const eosio::signature& signature,
42 const eosio::public_key& public_key) {
43 eosio::check(permission !=
""_n,
"Не указано разрешение, которым подписан голос");
45 if (permission !=
"active"_n) {
47 auto by_member =
automator.get_index<
"bymember"_n>();
48 auto autom = by_member.find(member.value);
50 eosio::check(autom != by_member.end(),
"Автоматизация решений для члена совета не включена");
51 eosio::check(autom->permission_name == permission,
"Разрешение не совпадает с разрешением робота в реестре автоматизаций");
52 eosio::check(!autom->is_expired(),
"Срок действия автоматизации истёк");
55 eosio::check(autom->allows_vote(decision_type),
"Голосование по этому типу решения роботу не делегировано");
57 eosio::check(autom->allows_authorize(decision_type),
"Подпись протокола по этому типу решения роботу не делегирована");
61 eosio::assert_recover_key_account(signed_hash, signature, public_key, member, permission);
static constexpr eosio::name _soviet
Definition: consts.hpp:177
Definition: automation.hpp:12
void verify_member_signature(eosio::name coopname, eosio::name member, eosio::name permission, eosio::name decision_type, Kind kind, const checksum256 &signed_hash, const eosio::signature &signature, const eosio::public_key &public_key)
Проверка, что подпись сделана ключом указанного разрешения аккаунта члена совета
Definition: automation.hpp:40
Kind
Definition: automation.hpp:28
checksum256 vote_digest(eosio::name action, eosio::name coopname, uint64_t decision_id, eosio::time_point_sec signed_at)
Хэш, который подписывает член совета при голосовании
Definition: automation.hpp:21
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()
eosio::multi_index< "automator"_n, automator, eosio::indexed_by<"bymember"_n, eosio::const_mem_fun< automator, uint64_t, &automator::by_member > > > automator_index
Definition: soviet.hpp:356
Реестр автоматизаций робота решений совета
Definition: soviet.hpp:319