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

personal_sign

Метод кошелька в JSON-RPC Ethereum, который подписывает сообщение с префиксом EIP-191 версии 0x45 и возвращает 65-байтную подпись r‖s‖v; стандартный выбор для входа и простой подписи сообщений.
Другие написанияpersonal_signeth_sign

Форма вызова: personal_sign с параметрами [message, address], где сообщение — байты в шестнадцатеричной кодировке (большинство кошельков принимает и текст в UTF-8). Библиотеки повторяют этот вызов: signer.signMessage в ethers, signMessage в viem, encode_defunct в web3.py. Более старый eth_sign подписывал произвольный 32-байтный хеш без префикса, из-за чего децентрализованные приложения (dapps) могли обманом заставить пользователя подписать транзакцию; большинство кошельков отключает этот метод или предупреждает о нём.

При проверке хеш Keccak-256 с префиксом вычисляется заново и по подписи восстанавливается адрес, а для смарт-кошельков вызывается isValidSignature из ERC-1271 (для ещё не развёрнутых аккаунтов — в обёртке ERC-6492). Так подписываются сообщения Sign-In with Ethereum.

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

Все термины