签署
TRON 消息签名适合登录验证、地址所有权证明和链下授权。签名前建议在消息中加入应用名称、nonce 和过期时间。
签名消息 V1(十六进制)
V1 接收十六进制编码后的消息:
const message = tronWeb.toHex("TRON sample message");
const signature = await provider.signMessage(message);
console.log("生成的签名:", signature);
签名消息 V2(UTF-8)
V2 可直接签名 UTF-8 文本,更适合用户阅读:
const message = "TRON sample message";
const signature = await provider.signMessageV2(message);
console.log("生成的签名:", signature);
验签
const message = "TRON sample message";
const signature = await provider.signMessageV2(message);
// 通过 TronWeb 验证
const address = await tronWeb.trx.verifyMessageV2(message, signature);
console.log("恢复出的签名者:", address);
处理异常
try {
const callResult = await provider.request({
method: "tron_requestAccounts",
});
if (callResult.code !== 200) {
throw new Error(callResult.message);
}
} catch (error) {
if (error.code === 4001) {
console.log("用户已拒绝本次请求");
} else {
console.error("执行报错:", error.message);
}
}