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

如何获取TRC20/ERC20生态下非单钱包绑定的USDT交易哈希与金额

如何获取ERC20/TRC20体系下全网络USDT交易的哈希与金额

ERC20(以太坊链)实现步骤

以太坊链上USDT的固定合约地址为 0xdAC17F958D2ee523a2206206994597C13D831ec7,所有USDT转账都会触发合约的Transfer事件,我们可以通过QuickNode的eth_getLogs接口过滤该事件,直接提取交易哈希和金额。

核心逻辑

  1. 用Transfer事件签名过滤日志:签名为0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef(由Transfer(address indexed from, address indexed to, uint256 value)经Keccak256哈希取前4字节得到)
  2. 指定合约地址和最新区块范围,调用API获取日志
  3. 解析日志中的transactionHash(交易哈希)和data字段(金额数据,需转换为十进制并处理6位小数)

代码示例(JavaScript)

const fetch = require('node-fetch');

const QUICKNODE_ETH_URL = '你的QuickNode以太坊端点URL';
const USDT_ERC20_ADDRESS = '0xdAC17F958D2ee523a2206206994597C13D831ec7';
const TRANSFER_EVENT_SIGNATURE = '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef';

async function getLatestERC20USDTTransactions() {
  const payload = {
    jsonrpc: '2.0',
    method: 'eth_getLogs',
    params: [
      {
        fromBlock: 'latest',
        toBlock: 'latest',
        address: USDT_ERC20_ADDRESS,
        topics: [TRANSFER_EVENT_SIGNATURE]
      }
    ],
    id: 1
  };

  const response = await fetch(QUICKNODE_ETH_URL, {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify(payload)
  });

  const data = await response.json();
  const transactions = data.result.map(log => {
    // 解析金额:去掉0x前缀后转十进制,再除以1e6(USDT为6位小数)
    const amountHex = log.data.slice(2);
    const amountDecimal = parseInt(amountHex, 16) / 1e6;
    return {
      txHash: log.transactionHash,
      amount: amountDecimal.toFixed(6)
    };
  });

  console.log('最新ERC20 USDT交易:', transactions);
}

getLatestERC20USDTTransactions();

TRC20(波场链)实现步骤

波场链上USDT的合约地址为 TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t,可通过QuickNode的TRX API获取区块内的Transfer事件,直接提取交易哈希和金额。

核心逻辑

  1. 获取最新区块号,调用geteventbyblocknum接口过滤该区块内USDT合约的Transfer事件
  2. 解析事件中的transaction_id(交易哈希)和value字段(金额数据,需除以1e6转换为实际USDT数量)

代码示例(JavaScript)

const fetch = require('node-fetch');

const QUICKNODE_TRX_URL = '你的QuickNode波场端点URL';
const USDT_TRC20_ADDRESS = 'TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t';

async function getLatestTRC20USDTTransactions() {
  // 获取最新区块号
  const blockNumRes = await fetch(QUICKNODE_TRX_URL, {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({
      jsonrpc: '2.0',
      method: 'getnowblock',
      params: [],
      id: 1
    })
  });
  const blockData = await blockNumRes.json();
  const latestBlockNum = blockData.result.block_header.raw_data.number;

  // 提取该区块内的USDT Transfer事件
  const eventPayload = {
    jsonrpc: '2.0',
    method: 'geteventbyblocknum',
    params: [latestBlockNum, latestBlockNum, USDT_TRC20_ADDRESS, 'Transfer'],
    id: 1
  };

  const eventRes = await fetch(QUICKNODE_TRX_URL, {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify(eventPayload)
  });

  const eventData = await eventRes.json();
  const transactions = eventData.result.map(event => {
    const amountDecimal = parseInt(event.result.value) / 1e6;
    return {
      txHash: event.transaction_id,
      amount: amountDecimal.toFixed(6)
    };
  });

  console.log('最新TRC20 USDT交易:', transactions);
}

getLatestTRC20USDTTransactions();

注意事项

  • 若要获取历史区块交易,修改fromBlock(以太坊)或区块号范围(波场)参数即可
  • USDT固定为6位小数,所有金额计算需除以1e6
  • 代码中的QuickNode端点需替换为你自己创建的对应链的节点URL

内容的提问来源于stack exchange,提问作者Poratui Maksym

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 12:37:47