当前位置: 首页 > 科技观察

如何查询TRON区块链上的交易

时间:2023-03-15 09:01:06 科技观察

本文转载自微信公众号《区块链研究实验室》,作者连三丰。转载本文请联系区块链研究实验室公众号。区块链交易是两个或多个地址之间交互的记录。在TRON区块链上,通常有两个交互地址,它们之间的交互可以有多种不同的形式(例如,创建新账户或资产、触发智能合约、转移资产等)。每笔交易都可以通过其哈希ID(由64个字母数字字符组成)进行唯一标识。获取有关一笔交易或一组交易的信息是区块链数据分析的核心。本文演示了如何使用R包tronr收集此类信息,tronr是一个用于探索TRON网络的工具箱。查询单个交易tronr包中的几个函数允许查询交易数据。其中一个关键函数是get_tx_info_by_id(),它通过交易ID(以嵌套小标题的形式)返回交易的属性。这样的ID可以利用可以从tronr获得的其他几个函数,例如get_block_info()、get_blocks_for_time_range()、get_tx_for_time_range()等。这里是一个例子:require(tronr)require(dplyr)require(tidyr)#>RtoolboxtoexploretheTRONblockchain#>DevelopedbyNextGameSolutions(http://nextgamesolutions.com)#Gettransactionsofthelatestblock:latest_block<-get_block_info(latest=TRUE)#Pickanexampletransaction:tx_id<-latest_block$tx[[1]]$tx_id[1]tx_id#"074ce32ed2ca89c69e54e4ac4f??f5ee825df33f6cf087d869c44dc3456f349855"#Retrievetransactionattributes(seedocumentationfortheir#definitions):r1<-get_tx_info_by_id(tx_id=tx_id,add_contract_data=FALSE)glimpse(r1)#>Rows:1#>列:19#>$request_time2021-03-3119:22:57#>$tx_id"074ce32ed2ca89c69e54e4ac4f??...#>$block_number"28941541"#>$timestamp2021-03-3119:19:06#>$contract_result“成功”#>$confirmedTRUE#>$confirmations_count71#>$sr_confirm_list[]#>$contract_type"触发器martContract"#>$from_address"TSrS5zMUgzHe688XcZ4PnN5Y3c...#>$to_address"TDxYAUHTw7Tk9NQfDJk9wmcsb2...#>$is_contract_from_addressFALSE#>$is_contract_to_address真#>[co[1xbl_df]>]#>$trx_transfer9.906872#>$trc10_transferNA#>$trc20_transfer[]#>$internal_tx[]#>$infoNA如果add_contact_data参数设置为TRUE,则生成的子标题还将有一个名为contract_data的列,该列将包含一个包含原始数据的列表。该列表的实际内容取决于每笔交易的性质和各自的合约:r2<-get_tx_info_by_id(tx_id=tx_id,add_contract_data=TRUE)glimpse(r1)#>Rows:1#>Columns:20#>$request_time2021-03-3119:28:23#>$tx_id"074ce32ed2ca89c69e54e4ac4f??...#>$block_number"28941541"#>$timestamp2021-03-3119:19:06#>$contract_result"SUCCESS"#>$confirmedTRUE#>$confirmations_count180#>$sr_confirm_list[]#>$contract_type"TriggerSmartContract"#>$from_address"TSrS5zMUgzHe688XcZ4PnN5Y3c...#>$to_address"TDxYAUHTw7Tk9NQfDJk9wmcsb2...#>$is_contract_from_address假#>$is_contract_to_address$costs#>$trx_transfer9.906872#>$trc10_transferNA#>$trc20_transfer[]#>$internal_tx[]#>$infoNA#>$contract_data[["422f1043000000000000000...r2$contract_data[[1]]#>$data#>[1]"422f1043000000000000000000000000000000000000000000000000...#>#>$owner_address#>[1]"TSrS5zMUgzHe688XcZ4PnN5Y3cHQA3euWt"#>#>$contract_address#>[1]"TDxYAUHTw7Tk9NQfDJk9wmcsb26S8kHbdF"#>$call_value#>[1]9906872请注意,在返回的tibbles所有get_tx_info_by_id()(trx_transfer、trc10_transfer、trc20_transfer和internal_tx)使用的整数和小数部分表示,但如果add_contract_data=TRUE,则返回的原始合约数据“按原样”显示(即没有任何解析或其他处理),因此任何金额此数据中存在的令牌数量使用机器级精度表示。查询时间范围要检索特定时间段的交易列表及其属性,可以使用get_tx_for_time_range()函数。与get_tx_info_by_id()相比,此函数有两个额外的参数来定义感兴趣的时间范围-min_timestamp和max_timestamp。两个附加参数都需要Unix时间戳(包括毫秒):tx_df<-get_tx_for_time_range(min_timestamp="1577836800000",max_timestamp="1577836803000")glimpse(tx_df)#>Rows:41#>Columns:20#>$request_time2021-03-3119:45:21,2...#>$tx_id"5f131118e7e24725906a72...#>$block_number"15860581","15860581",...#>$时间戳2020-01-01,2020-01-01...#>$contract_result"SUCCESS","SUCCESS","...#>$confirmedTRUE,TRUE,TRUE,TRUE,...#>$confirmations_count13081480,13081480,130...#>$sr_confirm_list[,$contract_type"TransferAssetContract"...#>$from_address"TXmUfpBfxRTdbZXhzuqEJK...#>$to_address"TCQBxaNNQ2h1HbrWxWSg7A...#>$is_contract_from_addressFALSE,FALSE,FALSE,FA...#>$is_contract_to_addressFALSE,TRUE,真,真...#>$costs[,$trx_transfer0.000,200.000,0.000,...#>$trc10_transfer[,NULL...#>$trc20_transferNA,NA,NA,NA,NA,NA,...#>$internal_tx[NULL,NULL,$infoNA,NA,NA,NA,NA,NA,...#>$contract_data[[10000000,"1002830",...请注意get_tx_for_time_range()在后台会调用多个TronscanAPI,因为TRON区块链上发生的交易数量非常大,所以用户选择min_timestamp和max_timestamp是明智的。如果请求的时间范围过大,TronscanAPI底层返回的最大交易数将被限制为10000,处理时间可能会变得过长。在这种情况下,将感兴趣的时间范围划分为更小的时间段有助于避免数据出现间隙。查询特定账户的交易您还可以使用get_tx_info_by_account_address()函数来检索特定账户的交易数据。此外,这可以在特定时间范围内完成:tx_df_acc<-get_tx_info_by_account_address(address="TAUN6FwrnwwmaEqYcckffC7wYmbaS6cBiX",min_timestamp="1577836800000",max_timestamp="1577838600000")glimpse(tx_df_df_time>$request_time>$request_time>#8>2021-03-3119:55:31,2...#>$address"TAUN6FwrnwwmaEqYcckffC...#>$tx_id"36ec18062510f22a469bfb...#>$block_number"15860591","15860591",...#>$timestamp2020-01-0100:00:36,2...#>$contract_result"成功","成功","...#>$confirmedTRUE,TRUE,TRUE,TRUE,...#>$confirmations_count13081672,13081672,130...#>$sr_confirm_list[,$contract_type"TransferContract","Tr...#>$from_address"TAUN6FwrnwwmaEqYcckffC...#>$to_address"TDn2MK7n5SqVksSZtQDAhD...#>$is_contract_from_addressFALSE,FALSE,FALSE,FA...#>$is_contract_to_addressFALSE,FALSE,FALSE,FA...#>$costs<列表>[,$trx_transfer664296.00000,925.55360...#>$trc10_transfer[NULL,NULL,NULL,NUL...#>$trc20_transferNA,NA,NA,NA,NA,NA,...#>$internal_txNA,NA,NA,NA,NA,NA,...#>$infoNA,NA,NA,NA,NA,NA,...#>$contract_data[[6.64296e+11,"TAUN6F...现在,我们已经成功使用R包查询波场区块链中的交易数据,有什么想法吗以及问题,欢迎在留言区留言