(web3.py)从使用eth.sign()签名的hexstr中恢复签名者的地址

时间:2018-12-13 00:35:32

标签: python ethereum sign web3

我正在尝试恢复使用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)恢复签名人的地址?提前致谢。

0 个答案:

没有答案