recover_typed_message
通过结构化消息数据和签名还原出签署者的账户地址。
方法定义
@staticmethod
def recover_typed_message(domain_data: dict, message_types: dict, message_data: dict, signature: HexBytes) -> Optional[SignedMessageData]
参数说明
参数
类型
说明
domain_data
dict
域数据
message_types
dict
消息类型定义
message_data
dict
消息数据
signature
HexBytes
签名
返回值
返回 SignedMessageData 对象,包含以下字段:
字段
类型
说明
message_hash
HexBytes
消息哈希
message
str
原始消息
signer
ChecksumAddress
签名者地址
signature_data
SignatureData
签名数据
示例代码
# 恢复 EIP-712 结构化数据签名者
domain_data = {
"name": "MyDApp",
"version": "1",
"chainId": 1,
"verifyingContract": "0x..."
}
message_types = {
"Person": [
{"name": "name", "type": "string"},
{"name": "wallet", "type": "address"}
]
}
message_data = {
"name": "Bob",
"wallet": "0x..."
}
signature = HexBytes("0x...") # 65 字节的签名
signed_data = Utils.recover_typed_message(domain_data, message_types, message_data, signature)
if signed_data:
print(f"Signer: {signed_data.signer}")
最后更新于
这有帮助吗?