Nesta página, você encontra exemplos de consultas de análise de blockchain para o Tron.
Consulte a documentação do BigQuery para instruções sobre como usar o BigQuery.
Transferências de Tether com os maiores valores em um mês
Essa consulta retorna as três maiores transferências de USDT em março de 2023.
No console do Google Cloud , acesse a página BigQuery.
A seguinte consulta é carregada no campo Editor:
CREATE TEMP FUNCTION hexToTron(address STRING)
RETURNS STRING
LANGUAGE js
OPTIONS (library=["gs://blockchain-etl-bigquery/ethers.js"])
AS r"""
function encode58(buffer) {
const ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';
const digits = [0];
for (let i = 0; i < buffer.length; i++) {
for (let j = 0; j < digits.length; j++) digits[j] <<= 8;
digits[0] += buffer[i];
let carry = 0;
for (let j = 0; j < digits.length; ++j) {
digits[j] += carry;
carry = (digits[j] / 58) | 0;
digits[j] %= 58;
}
while (carry) {
digits.push(carry % 58);
carry = (carry / 58) | 0;
}
}
for (let i = 0; buffer[i] === 0 && i < buffer.length - 1; i++) digits.push(0);
return digits.reverse().map((digit) => ALPHABET[digit]).join("");
}
function sha256(msgBytes) {
const msgHex = ethers.utils.hexlify(msgBytes);
const hashHex = ethers.utils.sha256(msgHex);
return ethers.utils.arrayify(hashHex);
}
addressBytes = ethers.utils.arrayify('0x' + address.replace(/^0x/, '41'))
checkSum = sha256(sha256(addressBytes)).slice(0, 4);
return encode58(new Uint8Array([...addressBytes, ...checkSum]));
""";
WITH transfers AS (
SELECT
block_number,
hexToTron(CONCAT('0x', SUBSTR(topics[1], 27))) AS from_address,
hexToTron(CONCAT('0x', SUBSTR(topics[2], 27))) AS to_address,
CAST(data AS INT64) / 1000000 AS amount
FROM
`bigquery-public-data.goog_blockchain_tron_mainnet_us.logs` l
WHERE
address = '0xa614f803b6fd780986a42c78ec9c7f77e6ded13c' -- USDT contract
AND ARRAY_LENGTH(topics) = 3
AND topics[0] = '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef' -- Transfer events
AND DATE(block_timestamp) BETWEEN "2023-03-01" AND "2023-03-31"
)
SELECT * FROM transfers ORDER BY amount DESC LIMIT 3;
Confira um exemplo de resultado:
| Exemplo de resultado | ||||
|---|---|---|---|---|
| block_number | from_address | to_address | amount | |
| 49606052 | TV6MuMXfmLbBqPZvBHdwFsDnQeVfnmiuSi | TWd4WrZ9wn84f5x1hZhL4DHvk738ns5jwb | 2173544428.073 | |
| 49076870 | TWd4WrZ9wn84f5x1hZhL4DHvk738ns5jwb | TV6MuMXfmLbBqPZvBHdwFsDnQeVfnmiuSi | 2005126503.6518 | |
| 49665517 | T9yD14Nj9j7xAB4dbGeiX9h8unkKHxuWwb | TBPxhVAsuzoFnKyXtc1o2UySEydPHgATto | 1000000000.0 | |