You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用TronWeb创建TRC-20钱包及交易遇解构错误求助

解决TronWeb解构错误+TRC-20钱包创建/交易实操

先搞定依赖和初始化的核心问题

你遇到的两个解构错误,本质是TronWeb的Protobuf依赖没加载到位,不管是正式版还是beta版都可能踩这个坑,按下面步骤来:

1. 清掉旧依赖,装稳定版

别折腾beta版了,先切到经过验证的5.3.0稳定版:

rm -rf node_modules package-lock.json yarn.lock
npm install tronweb@5.3.0

2. 手动挂载TronWebProto

在代码最开头加这段,直接把Protobuf挂载到全局,避免globalThis.TronWebProto未定义:

const TronWeb = require('tronweb');
const protobuf = require('protobufjs');

// 手动加载Tron的proto文件并挂载到全局
const protoRoot = protobuf.loadSync('./node_modules/tronweb/lib/commonjs/protos/tron.proto');
globalThis.TronWebProto = protoRoot.nested.protocol;

完整TRC-20钱包创建代码

const TronWeb = require('tronweb');

// 初始化TronWeb节点(主网/测试网二选一)
const tronWeb = new TronWeb({
    fullHost: 'https://api.trongrid.io', // 主网节点
    // fullHost: 'https://api.shasta.trongrid.io', // 测试网节点
    headers: { "TRON-PRO-API-KEY": "你的Trongrid API密钥" }, // 去Trongrid官网申请免费密钥
    privateKey: '' // 创建钱包后再填私钥
});

// 创建新钱包
async function createTRC20Wallet() {
    try {
        const newAccount = tronWeb.createAccount();
        console.log('钱包地址(Base58):', newAccount.address.base58);
        console.log('私钥:', newAccount.privateKey);
        // *务必把私钥存到安全地方,丢了找不回*
        return newAccount;
    } catch (err) {
        console.error('创建钱包失败:', err);
    }
}

// 执行创建
createTRC20Wallet();

TRC-20代币转账实操(以USDT为例)

async function sendTRC20Token(fromPrivateKey, toAddress, amount) {
    try {
        // 设置发送方私钥
        tronWeb.setPrivateKey(fromPrivateKey);
        
        // USDT主网合约地址,测试网换对应的合约地址
        const usdtContractAddr = 'TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t';
        const tokenContract = await tronWeb.contract().at(usdtContractAddr);
        
        // 转换金额到最小单位(USDT是6位小数,所以乘10^6)
        const transferAmount = tronWeb.toBigNumber(amount).shiftedBy(6).toFixed();
        
        // 发起转账交易
        const txHash = await tokenContract.transfer(toAddress, transferAmount).send({
            feeLimit: 100000000, // 手续费上限,单位sun(1TRX=1e6 sun)
            callValue: 0
        });
        
        console.log('交易哈希:', txHash);
        console.log('交易状态:', await tronWeb.getTransaction(txHash));
    } catch (err) {
        console.error('转账失败:', err);
    }
}

// 调用示例:转1.5 USDT
// sendTRC20Token('你的私钥', '接收方Base58地址', '1.5');

避坑提醒

  • Node.js版本必须16.x及以上,低版本会有模块兼容问题
  • 测试网操作前,先领测试TRX(通过Trongrid的测试币分发工具)
  • 如果用ES模块(import语法),要把package.json里加上"type": "module",导入改成import TronWeb from 'tronweb'

内容的提问来源于stack exchange,提问作者Ubong James

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 03:22:18