内置函数
结构体
内置变量与常量
通用约定
交易所
能力矩阵
中心化交易所
去中心化交易所
预测市场
证券与期货
链上与自定义接入
通用协议
Web3
exchange.IO("abi", ...)
exchange.IO("api", blockChain, ...)
exchange.IO("encode", ...)
exchange.IO("encodePacked", ...)
exchange.IO("decode", ...)
exchange.IO("hash", ...)
exchange.IO("key", ...)
exchange.IO("sign", ...)
exchange.IO("signTypedData", ...)
exchange.IO("signMessage", ...)
exchange.IO("api", ...)
exchange.IO("call", ...)
exchange.IO("multicall", ...)
exchange.IO("logs", ...)
exchange.IO("waitReceipt", ...)
exchange.IO("nonce", ...)
exchange.IO("speedUp", ...)
exchange.IO("cancelTx", ...)
exchange.IO("toUnits", ...)
exchange.IO("fromUnits", ...)
exchange.IO("uniswapV3", ...)
exchange.IO("contracts", ...)
exchange.IO("address")
exchange.IO("base", ...)
exchange.IO("sendBase", ...)
exchange.IO("signMessage", ...)
按照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 | 返回签名对象,其字段与 |
参数
| 名称 | 类型 | 必填 | 描述 |
k | string | 是 | 固定为 |
message | string / object | 是 | 待签名的消息:传入字符串时,按UTF-8编码进行签名;需要对原始字节签名时,传入 |
key | string | 否 | 签名所使用的私钥,未传入该参数时,默认使用 |
参考