TronWeb官方文档:https://tronweb.network/
额外帮助:https://developers.tron.network/docs/tronlink-integration 里面有监听事件
你有TronLink插件钱包,TronLink会向浏览器注入tronWeb,在TronLink App 也会兼容
没有TronLink的话,你可以下载tronWeb插件
npm install tronweb
yarn add tronWeb
第一步
// 检查浏览器是否有tronWeb
if (typeof window !== "undefined" && (window as any).tronWeb) {
} else {
// 如果浏览器没有tronWeb,则提示用户安装TronLink
window.open("https://www.tronlink.org/");
}
第二步
// 等待tronWeb加载完成
const tronWeb = (window as any).tronWeb;
// 连接TronLink
if (tronWeb.ready) {
// 获取Tron钱包的地址,
const tronAddress = await tronWeb.defaultAddress.base58;
/*
tronWeb.ready 当你获取到TronWeb的时候他是true
*/
第三步
// 发送交易TRX
const transaction = await tronWeb.transactionBuilder.sendTrx(
"", // 接收地址
1000000, // TRX币数量 1 TRX = 1,000,000 SUN 这里的单位是SUN 故当前是发送1TRX
tronAddress // 用户地址,也是发送者地址
);
// 签名交易
const signedTransaction = await tronWeb.trx.sign(transaction);
const result = await tronWeb.trx.sendRawTransaction(
signedTransaction
);
if (result.result) {
console.log("交易成功:", result.transaction.txID);
} else {
console.error("交易失败:", result);
}
// 发送交易 TRC-20 代币
// 目标地址(接收代币的地址)
const recipientAddress = "";
// 代币合约地址(TRC-20 Token 合约地址)
const tokenContractAddress = "";
// 发送代币数量(注意代币的精度,例如 18 位小数)
const amount = "1000000000000000000"; // 1 Token (assuming 18 decimals)
// 获取合约实例
const contract = await tronWeb.contract().at(tokenContractAddress);
// 调用合约的 transfer 方法并获取交易 ID
const transactionID = await contract.transfer(recipientAddress, amount)
.send({
feeLimit: 10000, // 设置交易费用上限
});
console.log("交易已发送,交易 ID:", transactionID);
// 查询交易状态
const transactionInfo = await tronWeb.trx.getTransaction(
transactionID
);
console.log(transactionInfo.ret[0].contractRet);
额外
// 监听浏览器的消息事件,处理TronLink插件发送的数据
window.addEventListener("message", function (e) {
// setNode 为切换节点
if (e.data.message && e.data.message.action === "setNode") {
const chainId = Number(
e.data.message.data.node.chainId.endsWith("n")
? e.data.message.data.node.chainId.slice(0, -1)
: e.data.message.data.node.chainId
);
// setAccount 为切换地址
if (e.data.message && e.data.message.action === "setAccount") {}
});
还有TronWeb官方文档上面写的