Я пытаюсь восстановить лицо, подписавшее hexstr, которое было подписано с использованием метода web3.eth.sign()
(web3.py).Если я выполню следующий скрипт, recovered_address != web3_instance.personal.listAccounts[0]
.
from web3 import Web3
provider = Web3.HTTPProvider("http://127.0.0.1:8545")
web3_instance = Web3(provider)
message_hex = "0xa9581c281f0835317701b60d9a79893d691da5a00623836210181cc2319deb10"
signature = web3_instance.eth.sign(web3_instance.personal.listAccounts[0], hexstr=message_hex).hex()
recovered_address = web3_instance.eth.account.recoverHash(message_hex,signature).hex()
Я понимаю, что метод eth.sign()
добавляет префикс '\x19Ethereum Signed Message:\n{len(message)}'
к hexstr перед подписанием, но я не могу воссоздать это поведение,
TL; DR: Как вы можете восстановить адрес подписавшего, используя подпись, возвращенную из web3.eth.sign()
, и сообщение hexstr (web3.py)?Заранее спасибо.