-
CDT v4.2.0 Stable
released this
2025-10-15 16:50:04 +00:00 | 432 commits to main since this releaseНовая функция:
assert_recover_key_accountМы добавили в CDT новую возможность проверки подписей с привязкой к конкретным аккаунтам. Теперь смарт-контракты могут не только проверить криптографическую корректность подписи, но и убедиться, что использованный ключ действительно принадлежит заявленному аккаунту.
Что изменилось
Было: Только проверка что подпись технически корректна
assert_recover_key(digest, signature, pubkey); // Только криптографияСтало: Проверка что подпись корректна И ключ принадлежит аккаунту с указанным разрешением
assert_recover_key_account(digest, signature, pubkey, account, permission);Как это работает
Функция выполняет три проверки последовательно:
- Криптографическая валидация - подпись корректна для данного хэша
- Совпадение ключа - восстановленный из подписи ключ совпадает с ожидаемым
- Принадлежность аккаунту - этот ключ находится в разрешениях указанного аккаунта
Если хотя бы одна проверка проваливается - контракт выбрасывает ошибку.
Пример использования
// Контракт для подписания документов class [[eosio::contract]] document_contract : public eosio::contract { public: [[eosio::action]] void sign_document(name username, checksum256 doc_hash, signature sig, public_key pubkey) { // Проверяем что подпись от активного ключа пользователя username eosio::assert_recover_key_account(doc_hash, sig, pubkey, username, "active"_n); } };Функция интегрирована в CDT, так что доступна во всех новых контрактах сразу после обновления инструментария.
Downloads