Перейти к содержимому
ecdsa.com

ERC-1271 (проверка подписей в контрактах)

Стандарт Ethereum, по которому аккаунты на смарт-контрактах проверяют подписи: проверяющая сторона вызывает isValidSignature(bytes32 hash, bytes signature) и считает подпись действительной, если вернулось значение 0x1626ba7e.
Другие написанияERC-1271EIP-1271isValidSignatureERC-6492

Смарт-аккаунты (Safe, кошельки ERC-4337, аккаунты с делегированием по EIP-7702) не могут создать обычную подпись ECDSA для собственного адреса, поэтому решение принимает контракт: Safe проверяет, хватает ли подписей владельцев, кошелёк на ключах доступа проверяет подпись P-256, кошелёк с сессионными ключами — свою политику. Магическое значение — это селектор функции, bytes4(keccak256("isValidSignature(bytes32,bytes)")).

Проверяющей стороне следует пробовать ERC-1271, если по адресу уже есть код, и ERC-6492, если кода ещё нет: ERC-6492 оборачивает подпись вместе с вызовом фабрики, нужным для развёртывания аккаунта, и завершается 32-байтным магическим суффиксом 0x6492…6492. Средства библиотек, например verifyMessage в viem и SignatureChecker в OpenZeppelin, обрабатывают все три случая. Результат проверки может со временем измениться, потому что владельцы и политики контракта могут меняться.

Стандарты и ссылки

Все термины