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

区块链研究实验室 阅读 115 2021-4-27 08:33
分享至
微信扫一扫,打开网页后点击屏幕右上角分享按钮

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

乙锁链交易是两个或多个地址之间交互的记录。

在TRON区块链上,通常有两个交互地址,并且它们之间的交互可以采用许多不同的形式(例如,创建新帐户或资产,触发智能合约,资产转移等)。

每个事务都可以通过其哈希ID(包含64个字母数字字符)来唯一识别。

获取有关交易或一组交易的信息是区块链数据分析的核心。

本文演示了如何使用R包tronr(用于探索TRON网络的工具箱)收集此类信息。

查询个人交易

tronr程序包中的几个功能允许查询事务数据。关键功能之一是get_tx_info_by_id(),它根据交易的ID(以嵌套tibble的形式)返回交易的属性。这样的ID可以利用其他几种可以获得tronr的功能,例如get_block_info(),get_blocks_for_time_range(),get_tx_for_time_range()等。这里是一个例子:

require(tronr)require(dplyr)require(tidyr)#> R toolbox to explore the TRON blockchain#> Developed by Next Game Solutions (http://nextgamesolutions.com)# Get transactions of the latest block:latest_block <- get_block_info(latest = TRUE)# Pick an example transaction:tx_id <- latest_block$tx[[1]]$tx_id[1]tx_id# "074ce32ed2ca89c69e54e4ac4ff5ee825df33f6cf087d869c44dc3456f349855"# Retrieve transaction attributes (see documentation for their # definitions):r1 <- get_tx_info_by_id(tx_id = tx_id, add_contract_data = FALSE)glimpse(r1)#> Rows: 1#> Columns: 19#> $ request_time2021-03-31 19:22:57#> $ tx_id"074ce32ed2ca89c69e54e4ac4f...#> $ block_number"28941541"#> $ timestamp2021-03-31 19:19:06#> $ contract_result"SUCCESS"#> $ confirmedTRUE#> $ confirmations_count71#> $ sr_confirm_list[]#> $ contract_type"TriggerSmartContract"#> $ from_address"TSrS5zMUgzHe688XcZ4PnN5Y3c...#> $ to_address"TDxYAUHTw7Tk9NQfDJk9wmcsb2...#> $ is_contract_from_addressFALSE#> $ is_contract_to_addressTRUE#> $ costs[]#> $ 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-31 19:28:23#> $ tx_id"074ce32ed2ca89c69e54e4ac4f...#> $ block_number"28941541"#> $ timestamp2021-03-31 19:19:06#> $ contract_result"SUCCESS"#> $ confirmedTRUE#> $ confirmations_count180#> $ sr_confirm_list[]#> $ contract_type"TriggerSmartContract"#> $ from_address"TSrS5zMUgzHe688XcZ4PnN5Y3c...#> $ to_address"TDxYAUHTw7Tk9NQfDJk9wmcsb2...#> $ is_contract_from_addressFALSE#> $ is_contract_to_addressTRUE#> $ 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-31 19:45:21, 2...#> $ tx_id"5f131118e7e24725906a72...#> $ block_number"15860581", "15860581",...#> $ timestamp2020-01-01, 2020-01-01...#> $ contract_result"SUCCESS", "SUCCESS", "...#> $ confirmedTRUE, TRUE, TRUE, TRUE,...#> $ confirmations_count13081480, 13081480, 130...#> $ sr_confirm_list[,<tb...#> $ contract_type"TransferAssetContract"...#> $ from_address"TXmUfpBfxRTdbZXhzuqEJK...#> $ to_address"TCQBxaNNQ2h1HbrWxWSg7A...#> $ is_contract_from_addressFALSE, FALSE, FALSE, FA...#> $ is_contract_to_addressFALSE, TRUE, TRUE, TRUE...#> $ costs[,<tbl...#> $ trx_transfer0.000, 200.000, 0.000, ...#> $ trc10_transfer[, NULL...#> $ trc20_transferNA, NA, NA, NA, NA, NA,...#> $ internal_tx[NULL, NULL,<tbl_df[1...#> $ infoNA, NA, NA, NA, NA, NA,...#> $ contract_data[[10000000, "1002830",...

请注意,get_tx_for_time_range()在后台进行了多个Tronscan API调用。

作为上发生的TRON blockchain交易的数量是非常大的,用户因此宜选择min_timestamp和max_timestamp是明智之举。如果请求的时间范围太大,则基础Tronscan API返回的最大事务数将被限制为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_acc)#> Rows: 18#> Columns: 21#> $ request_time2021-03-31 19:55:31, 2...#> $ address"TAUN6FwrnwwmaEqYcckffC...#> $ tx_id"36ec18062510f22a469bfb...#> $ block_number"15860591", "15860591",...#> $ timestamp2020-01-01 00:00:36, 2...#> $ contract_result"SUCCESS", "SUCCESS", "...#> $ confirmedTRUE, TRUE, TRUE, TRUE,...#> $ confirmations_count13081672, 13081672, 130...#> $ sr_confirm_list[,<tb...#> $ 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[,<tbl...#> $ 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包在TRON区块链查询交易数据,如有任何想法和疑问,欢迎在留言区留言。

btcfans公众号

微信扫描关注公众号,及时掌握新动向

来源链接
免责声明:
2.本文版权归属原作所有,仅代表作者本人观点,不代表比特范的观点或立场
2.本文版权归属原作所有,仅代表作者本人观点,不代表比特范的观点或立场
上一篇:如何使用Python提高比特币的回报率 下一篇:如何使用Azure Key Vault管理以太坊钱包

相关资讯