跳到主要内容

签署

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);
}
}