Как получить транзакции TRC20 на адрес

Я использую tron ​​web для запроса транзакций адреса, но он не возвращает транзакции, отправленные на тот адрес, по которому передан токен TRC20.

Это не работает. Я хочу получать транзакции по адресу и получать транзакции TRX, trc10 и trc20.

Что я делаю не так или как это сделать?

Вот мой блок кода:

  tronWeb.setDefaultBlock("latest");
  var result = await tronGrid.account.getTransactions(address, {
    only_confirmed: true,
    only_to: true,
    limit: 10
  });
  console.log(JSON.stringify(result));
})();

3 ответа

Решение

После долгих исследований я обнаружил, что можно легко запрашивать события контракта через определенные промежутки времени, чтобы получать транзакции по этому адресу контракта, а затем вы можете фильтровать его по адресу, который вы смотрите, поскольку вы не можете получить веб-перехватчик или веб-узел с вашей реализацией trongrid / tronweb.

Вот образец файла, который я использовал для этого, и он отлично подходит для мониторинга многих адресов даже с разными адресами контрактов.

Примечание. В моей собственной реализации этот файл узла вызывается из другого файла, а другая логистика обрабатывается в другом файле, но ниже вы видите, как я запрашивал события передачи, генерируемые указанным контрактом.

const TronWeb = require("tronweb");
const TronGrid = require("trongrid");

const tronWeb = new TronWeb({
  fullHost: "https://api.trongrid.io"
});
const tronGrid = new TronGrid(tronWeb);
const argv = require("minimist")(process.argv.slice(2));
var contractAddress = argv.address;
var min_timestamp = Number(argv.last_timestamp) + 1; //this is stored for the last time i ran the query
(async function() {
  tronWeb.setDefaultBlock("latest");
  tronWeb.setAddress("ANY TRON ADDRESS"); // maybe being the one making the query not necessarily the addresses for which you need the transactions

  var result = await tronGrid.contract.getEvents(contractAddress, {
    only_confirmed: true,
    event_name: "Transfer",
    limit: 100,
    min_timestamp: min_timestamp,
    order_by: "timestamp,asc"
  });
  result.data = result.data.map(tx => {
    tx.result.to_address = tronWeb.address.fromHex(tx.result.to); // this makes it easy for me to check the address at the other end
    return tx;
  });
  console.log(JSON.stringify(result));
})();

Вы можете настроить данные конфигурации, передаваемые в tronGrid.contract.getEventsметод. В зависимости от того, как часто происходят транзакции по контракту, который вы отслеживаете, вам следует DYOR знать, через какой интервал вам лучше всего подходит и какое предельное значение вы должны пройти.

Подробности см. На https://developers.tron.network/docs/trongridjs.

Я надеюсь, что это помогает кому-то

      var request = require('request');
var contract = "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t"; //usdt
var wallet = "TQiC7LJUtnagUcwzcc6ULRmXiHipf4Tbou"; //publicKey
var url = "https://api.trongrid.io/v1/accounts/" + wallet + "/transactions/trc20?limit=100&contract_address=" + contract;
request({
    headers: {
        "TRON-PRO-API-KEY": '63d4cba8-xxx-ab8d4c91834e'
    },
    uri: url,
    method: 'GET'
}, function (err, res, body) {
        var transcol = JSON.parse(body).data;//list of last 100 wallet usdt transactions
        var sentArray = transcol.filter(function (el) {
            return el.to == wallet
        });//list of last recived usdt transactions in to wallet

        var lastReciveValue = (parseInt(sentArray[0].value) / 1000000);
        var lastReciveTransid = sentArray[0].transaction_id;

        console.log('last transaction: ' + lastReciveValue + ' USDT');
        console.log("https://tronscan.org/#/transaction/" + lastReciveTransid);
});
  • transcol : список последних 100 транзакций в долларах США , связанных с кошельком.
  • sendArray : список последних полученных транзакций USDT в кошелек.
  • limit=100 : вы можете удалить это значение, чтобы получить все связанные транзакции в кошельке , или изменить его на собственное значение.
  • Contract_address= : вы можете удалить его, чтобы получать транзакции во всех типах валют.
  • LastReciveValue : последнее значение USDT, отправленное в кошелек.
  • LastReciveTransid : идентификатор последней транзакции, которая отправила usdt в кошелек .

образец возвращаемого объекта json:

      "transaction_id":"b02049daa9a0de0e10187dfa4d1ce560c3e8dd23625e92d2adfcf242e1af5891",
"token_info":{
"symbol":"USDT",
"address":"TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t",
"decimals":6,
"name":"Tether USD"
},
"block_timestamp":1689029211000,
"from":"TQiC7LJUtnagUcwzcc6ULRmXiHipf4Tbou",
"to":"TAiZ8qT2ggJDCRf6xutDKSnEjiCnFDm22K",
"type":"Transfer",
"value":"5000000"
}

Я нашел API, который может принимать транзакции TRC20, но не нашел реализации в webtron.

      https://api.shasta.trongrid.io/v1/accounts/address/transactions

Связанный документ:https://developers.tron.network/reference#transaction-information-by-account-address

Другие вопросы по тегам