COOPENOMICS  v1
Кооперативная Экономика
Пространство имен Automation

Перечисления

enum class  Kind { vote , authorize }
 

Функции

checksum256 vote_digest (eosio::name action, eosio::name coopname, uint64_t decision_id, eosio::time_point_sec signed_at)
 Хэш, который подписывает член совета при голосовании Подробнее...
 
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)
 Проверка, что подпись сделана ключом указанного разрешения аккаунта члена совета Подробнее...
 

Подробное описание

Вспомогательные функции робота решений совета.

Робот голосует и подписывает протоколы от имени членов совета ключом отдельного разрешения их аккаунта. Две проверки ниже держат это юридически чистым:

  • хэш голоса жёстко привязан к конкретному голосу, подпись нельзя переиспользовать;
  • ключ подписи обязан принадлежать заявленному разрешению аккаунта члена совета, и если это не active, то по этому типу решения должна быть включена автоматизация.

Перечисления

◆ Kind

enum class Automation::Kind
strong

Что именно подписывает член совета: голос или протокол.

Элементы перечислений
vote 
authorize 

Функции

◆ verify_member_signature()

void Automation::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 
)
inline

Проверка, что подпись сделана ключом указанного разрешения аккаунта члена совета

active — ручная подпись, ограничений нет. Любое другое разрешение — подпись робота: запись в реестре автоматизаций обязана существовать, совпадать по имени разрешения, не быть просроченной и содержать тип решения в нужном списке. Принадлежность ключа разрешению проверяет интринзик ноды assert_recover_key_account, поэтому чужим ключом подписать нельзя даже при включённой автоматизации.

◆ vote_digest()

checksum256 Automation::vote_digest ( eosio::name  action,
eosio::name  coopname,
uint64_t  decision_id,
eosio::time_point_sec  signed_at 
)
inline

Хэш, который подписывает член совета при голосовании

Строка «<действие>:<кооператив>:<номер решения>:<секунды подписи>». Подпись над ним нельзя переиспользовать для другого решения, другого кооператива или голоса противоположного знака. Тот же формат считает SDK (Classes.Vote).