2.1 這邊我規劃一隻 function 直接呼叫 getblockbynum 並且,直接轉成 BlockNumResponse 物件
var blockInfo = GetTrc20BlockByNum("64991111");
foreach (var transaction in blockInfo.transactions)
{
var owner_address = ConvertHexToBase58Check(transaction.raw_data.contract[0].parameter.value.owner_address);
Console.WriteLine("txid:" + transaction.txID + ", from:" + owner_address);
}
Console.WriteLine("Block Data Count:" + blockInfo.transactions.Count);
///
/// Block num
///
///
///
private static BlockNumResponse GetTrc20BlockByNum(string blockNumber)
{
var client = new RestClient("https://api.trongrid.io/walletsolidity/getblockbynum");
var request = new RestRequest("?num=" + blockNumber, Method.Get);
var response = client.Execute(request).Content;
var result = JsonConvert.DeserializeObject(response);
return result;
}
2.2 BlockNumResponse 物件
public class BlockNumResponse
{
public string blockID { get; set; }
public BlockHeader block_header { get; set; }
public List transactions { get; set; }
public class BlockHeader
{
public RawData raw_data { get; set; }
public string witness_signature { get; set; }
}
public class Transaction
{
public List ret { get; set; }
public List signature { get; set; }
public string txID { get; set; }
public class Ret
{
public string contractRet { get; set; }
}
public RawData raw_data { get; set; }
public string raw_data_hex { get; set; }
}
public class RawData
{
public int number { get; set; }
public string txTrieRoot { get; set; }
public string witness_address { get; set; }
public string parentHash { get; set; }
public int version { get; set; }
public long timestamp { get; set; }
public List contract { get; set; }
public string ref_block_bytes { get; set; }
public string ref_block_hash { get; set; }
public object expiration { get; set; }
public int? fee_limit { get; set; }
public class Contract
{
public Parameter parameter { get; set; }
public string type { get; set; }
public int Permission_id { get; set; }
public class Parameter
{
public Value value { get; set; }
public string type_url { get; set; }
public class Value
{
public object balance { get; set; }
public string resource { get; set; }
public string receiver_address { get; set; }
public string owner_address { get; set; }
public string data { get; set; }
public string contract_address { get; set; }
public long? amount { get; set; }
public string to_address { get; set; }
public string asset_name { get; set; }
public int? call_value { get; set; }
}
}
}
}
}