我正在尝试恢复使用web3.eth.sign()
方法(web3.py)签名的hexstr的签名者。如果执行以下脚本,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)恢复签名人的地址?提前致谢。