personal_sign191 - 计算EIP191兼容签名
计算EIP-191兼容的签名,根据指定版本的不同支持对不同的数据格式进行签名计算。
调用参数
- EIP-191版本标识,字符串,含义如下:
- 0x00 - 预签名交易
- 0x01 - 结构化数据(EIP712)
- 0x45 - 个人消息
- 要签名的数据,根据EIP-191版本标识不同有不同的格式,例如与签名交易、EIP712结构化数据或普通消息
- EIP712结构化数据,对应版本标识0x01,结构如下:
- primaryType:基础类型,字符串
- domain:EIP721域对象,结构如下:
- name:签名域名,字符串
- verifyingContract:签名消息验证合约的地址
- chainId:签名有效的链ID,用于对抗链重放攻击,整数
- version:签名域的当前住版本。不同版本的签名不兼容,整数
- salt:混淆数据
- message:要签名的结构化消息
- types:EIP712Domain类型定义对象
- 要签名的哈希消息,对应版本标识0x45
- 预签名交易对象,对应版本标识00x00
- data: Data - Presigned Transaction data
- validator: Address - address of the contract that validates the presigned transaction
- EIP712结构化数据,对应版本标识0x01,结构如下:
- 签名账户地址,20字节长,16进制字符串
- 签名账户解锁密码
返回值
personal_sign191
调用返回签名后的数据。
示例代码
下面的代码使用personal_sign191
调用签名一个预签名交易:
~$ curl --data '{
"method":"personal_sign191",
"params":[
"0x00",
{
"validator":"0xb60e8dd61c5d32be8058bb8eb970870f07233155",
"data":"0xe7225f986f192f859a9bf84e34b2b7001dfa11aeb5c7164f81a2bee0d79943e2587be1faa11502eba0f803bb0ee071a082b6fe40fba025f3309263a1eef52c711c"
},
"0xb60e8dd61c5d32be8058bb8eb970870f07233155",
"password"
],
"id":1,
"jsonrpc":"2.0"
}' -H "Content-Type: application/json" -X POST localhost:8545
响应结果:
{
"id": 1,
"jsonrpc": "2.0",
"result": "0xe7225f986f192f859a9bf84e34b2b7001dfa11aeb5c7164f81a2bee0d79943e2587be1faa11502eba0f803bb0ee071a082b6fe40fba025f3309263a1eef52c711c"
}