朋友問我說他有沒有辦法去追蹤一些錢包動態,關於在 TRC20 上面關於 USDT 操作
第一步,他先問我有沒有辦法抓到全部的錢包,我後來上網找一下,好像可以抓到目前基於某 Contract
抓取他的 holders ,這次當然直接實驗目標就是我們的 USDT Contract : TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t

查了一下,發現其實 trongrid 是有這 API 的,就趁這機會測試一下
文件位置 : https://docs.tronscan.org/api-endpoints/tokens
不難按照文件去寫可以可以拿到答案,只是要花點時間去看一下結構,不過比較麻煩的是他最多一次只能拿 50 個,然後最多只能拿到 Top 10,000
這點比較麻煩,不過就筆記一下,之後要去抓夠多細節的東西,我們後面有機會在繼續研究
// USDT TRC20 合约地址
string contractAddress = "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t";
// Tronscan API URL
var i = 1;
try
{
Console.WriteLine("--- Top 10,000 資料---");
for (var count = 50; count <= 10_000; count+=50)
{
var apiUrl = $"https://apilist.tronscanapi.com/api/token_trc20/holders?start={count-50}&limit={count}&contract_address={contractAddress}&holder_address=";
var client = new RestClient(apiUrl);
var request = new RestRequest("", Method.Get);
var response = client.Execute(request);
if (response.IsSuccessful)
{
JObject parsedJson = JObject.Parse(response.Content);
var tokens = parsedJson["trc20_tokens"];
foreach (var token in tokens)
{
Console.WriteLine("TOP "+i + "-" + "錢包位置:" + token["holder_address"].ToString() + ", USDT: " + (((decimal)token["balance"]) / 1_000_000).ToString());
i++;
}
}
else
{
Console.WriteLine($"{response.StatusCode}, Error: {response.Content}");
}
}
}
catch (Exception ex)
{
Console.WriteLine($"Error: {ex.Message}");
}
Result:

大概就先筆記到這看之後有遇到啥我在繼續記錄..