使用TronWeb连接TronLink发送交易

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官方文档上面写的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值