输入/搜索内容
内置函数
结构体
内置变量与常量
通用约定
交易所
能力矩阵
中心化交易所
去中心化交易所
预测市场
证券与期货
链上与自定义接入

按照EIP-191标准(personal_sign)对消息进行签名,签名结果与ethers的signMessage、钱包的personal_sign一致,常用于DApp登录、链下鉴权等场景。

exchange.IO(k, message)
exchange.IO(k, message, key)

示例

对消息进行签名,并通过ecrecover预编译合约还原出签名地址。

javascript
function main() { // 文本按 UTF-8 编码签名(结果与 ethers signMessage、钱包 personal_sign 一致) var sig = exchange.IO("signMessage", "hello fmz") Log("digest:", sig.digest, "signature:", sig.signature) // 原始字节通过 {hex: ...} 传入 var sig2 = exchange.IO("signMessage", { hex: "0x68656c6c6f20666d7a" }) Log("与文本签名一致:", sig.signature === sig2.signature) // 使用 ecrecover 预编译合约还原签名地址,结果应与当前钱包地址一致 var ret = exchange.IO("call", "0x0000000000000000000000000000000000000001", "0x" + sig.digest.slice(2) + exchange.IO("encode", "uint8,bytes32,bytes32", sig.v, sig.r, sig.s)) Log("还原地址:", "0x" + String(ret).slice(-40), "钱包地址:", exchange.IO("address").toLowerCase()) }

返回值

类型描述

object

返回签名对象,其字段与exchange.IO("sign", ...)的返回值相同(r、s、v、signature、vs),此外还包含digest字段,表示EIP-191消息哈希。调用失败时返回空值。

参数

名称类型必填描述

k

string

是

固定为signMessage,用于对消息进行签名。

message

string / object

是

待签名的消息:传入字符串时,按UTF-8编码进行签名;需要对原始字节签名时,传入{hex: "0x..."}格式的对象。

key

string

否

签名所使用的私钥,未传入该参数时,默认使用exchange交易所对象配置的私钥。

参考