|
| 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, то по этому типу решения должна быть включена автоматизация.
| 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, поэтому чужим ключом подписать нельзя даже при включённой автоматизации.