personal_signTypedData - 类型数据签名
使用personal_signTypedData
调用计算有类型结构化数据的哈希和签名。
调用参数
- Object - EIP-712 compliant data structure to be signed
- primaryType:基础类型名,字符串
- domain:EIP712Domain对象,结构如下
- primaryType:基础类型,字符串
- domain:EIP721域对象,结构如下:
- name:签名域名,字符串
- verifyingContract:签名消息验证合约的地址
- chainId:签名有效的链ID,用于对抗链重放攻击,整数
- version:签名域的当前住版本。不同版本的签名不兼容,整数
- salt:混淆数据
- message:要签名的结构化消息
- types:EIP712Domain类型定义对象
- 签名账户地址,20字节长,16进制字符串
- 签名账户解锁密码
返回值
personal_signTypedData
调用返回签名数据。
示例代码
请求:
~$ curl --data '{
"method":"personal_signTypedData",
"params":[
{
"types":{
"EIP712Domain":[
{
"name":"name",
"type":"string"
},
{
"name":"version",
"type":"string"
},
{
"name":"chainId",
"type":"uint256"
},
{
"name":"verifyingContract",
"type":"address"
}
],
"Person":[
{
"name":"name",
"type":"string"
},
{
"name":"wallet",
"type":"address"
}
],
"Mail":[
{
"name":"from",
"type":"Person"
},
{
"name":"to",
"type":"Person"
},
{
"name":"contents",
"type":"string"
}
]
},
"primaryType":"Mail",
"domain":{
"name":"Ether Mail",
"version":"1",
"chainId":1,
"verifyingContract":"0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC"
},
"message":{
"from":{
"name":"Cow",
"wallet":"0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826"
},
"to":{
"name":"Bob",
"wallet":"0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB"
},
"contents":"Hello, Bob!"
}
},
"0xb60e8dd61c5d32be8058bb8eb970870f07233155",
"password"
],
"id":1,
"jsonrpc":"2.0"
}' -H "Content-Type: application/json" -X POST localhost:8545
响应结果:
{
"id": 1,
"jsonrpc": "2.0",
"result": "0xe7225f986f192f859a9bf84e34b2b7001dfa11aeb5c7164f81a2bee0d79943e2587be1faa11502eba0f803bb0ee071a082b6fe40fba025f3309263a1eef52c711c"
}