public class ContractTransactionResponse
{
public List data { get; set; }
public bool success { get; set; }
public Meta meta { get; set; }
public class Datum
{
public List ret { get; set; }
public List signature { get; set; }
public string txID { get; set; }
public int net_usage { get; set; }
public string raw_data_hex { get; set; }
public int net_fee { get; set; }
public int energy_usage { get; set; }
public string block_timestamp { get; set; }
public string blockNumber { get; set; }
public int energy_fee { get; set; }
public int energy_usage_total { get; set; }
public RawData raw_data { get; set; }
public List
//call GetContractTransactionDataByTxId from USDT contract and find txid: 63958d9a93c206567123f8c5120742f0d024d5ffe45a6dc700f6cc169552b38b
var res = GetContractTransactionDataByTxId("TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t", "63958d9a93c206567123f8c5120742f0d024d5ffe45a6dc700f6cc169552b38b");
Console.Write(JsonConvert.SerializeObject(res));
/// <summary>
/// 在某合約中的交易查詢 尋找某 txid 交易資訊
/// </summary>
/// <param name="contractAddress">contract address</param>
/// <param name="targetTxId">target txid</param>
static ContractTransactionResponse.Datum GetContractTransactionDataByTxId(string contractAddress, string targetTxId)
{
var apiUri = "https://api.trongrid.io/v1/contracts/" + contractAddress + "/transactions";
var count = 0;
while (!string.IsNullOrEmpty(apiUri))
{
var client = new RestClient(apiUri);
var request = new RestRequest("", Method.Get);
request.AddHeader("accept", "application/json");
var response = client.Execute(request);
var contractTransObj = JsonConvert.DeserializeObject<ContractTransactionResponse>(response.Content);
foreach (var t in contractTransObj.data)
{
var amount = BigInteger.Parse(t.raw_data.contract[0].parameter.value.data.Substring(t.raw_data.contract[0].parameter.value.data.Length - 64, 64),
NumberStyles.AllowHexSpecifier);
var to = ConvertHexToBase58Check("41" + t.raw_data.contract[0].parameter.value.data.Substring(32, 40));
var from = ConvertHexToBase58Check(t.raw_data.contract[0].parameter.value.owner_address);
Console.WriteLine($"Block: {t.blockNumber}, txid: {t.txID}, from: {from}, to: {to}, amount: {amount}");
if (t.txID == targetTxId)
{
Console.WriteLine("找到目標交易!");
Console.Write("搜尋過" + count + "筆資料");
return t;
break;
}
count++;
}
apiUri = contractTransObj.meta?.links?.next;
}
return null;
// Console.WriteLine(response.Content);
}