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

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

[[396104]]

本文转载自微信公众号「区块链研究实验室」,作者链三丰。转载本文请联系区块链研究实验室公众号。

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

在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_time             <dttm> 2021-03-31 19:22:57 
#> $ tx_id                    <chr> "074ce32ed2ca89c69e54e4ac4f... 
#> $ block_number             <chr> "28941541" 
#> $ timestamp                <dttm> 2021-03-31 19:19:06 
#> $ contract_result          <chr> "SUCCESS" 
#> $ confirmed                <lgl> TRUE 
#> $ confirmations_count      <int> 71 
#> $ sr_confirm_list          <list> [<tbl_df[19 x 3]>] 
#> $ contract_type            <chr> "TriggerSmartContract" 
#> $ from_address             <chr> "TSrS5zMUgzHe688XcZ4PnN5Y3c... 
#> $ to_address               <chr> "TDxYAUHTw7Tk9NQfDJk9wmcsb2... 
#> $ is_contract_from_address <lgl> FALSE 
#> $ is_contract_to_address   <lgl> TRUE 
#> $ costs                    <list> [<tbl_df[1 x 8]>] 
#> $ trx_transfer             <dbl> 9.906872 
#> $ trc10_transfer           <lgl> NA 
#> $ trc20_transfer           <list> [<tbl_df[1 x 9]>] 
#> $ internal_tx              <list> [<tbl_df[3 x 12]>] 
#> $ info                     <lgl> NA 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.

如果将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_time             <dttm> 2021-03-31 19:28:23 
#> $ tx_id                    <chr> "074ce32ed2ca89c69e54e4ac4f... 
#> $ block_number             <chr> "28941541" 
#> $ timestamp                <dttm> 2021-03-31 19:19:06 
#> $ contract_result          <chr> "SUCCESS" 
#> $ confirmed                <lgl> TRUE 
#> $ confirmations_count      <int> 180 
#> $ sr_confirm_list          <list> [<tbl_df[19 x 3]>] 
#> $ contract_type            <chr> "TriggerSmartContract" 
#> $ from_address             <chr> "TSrS5zMUgzHe688XcZ4PnN5Y3c... 
#> $ to_address               <chr> "TDxYAUHTw7Tk9NQfDJk9wmcsb2... 
#> $ is_contract_from_address <lgl> FALSE 
#> $ is_contract_to_address   <lgl> TRUE 
#> $ costs                    <list> [<tbl_df[1 x 8]>] 
#> $ trx_transfer             <dbl> 9.906872 
#> $ trc10_transfer           <lgl> NA 
#> $ trc20_transfer           <list> [<tbl_df[1 x 9]>] 
#> $ internal_tx              <list> [<tbl_df[3 x 12]>] 
#> $ info                     <lgl> NA 
#> $ contract_data            <list> [["422f1043000000000000000... 
r2$contract_data[[1]] 
#> $data 
#> [1]"422f1043000000000000000000000000000000000000000000000000... 
#> 
#> $owner_address 
#> [1] "TSrS5zMUgzHe688XcZ4PnN5Y3cHQA3euWt" 
#>  
#> $contract_address 
#> [1] "TDxYAUHTw7Tk9NQfDJk9wmcsb26S8kHbdF" 
#> $call_value 
#> [1] 9906872 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.

请注意,在返回的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_time             <dttm> 2021-03-31 19:45:21, 2... 
#> $ tx_id                    <chr> "5f131118e7e24725906a72... 
#> $ block_number             <chr> "15860581""15860581",... 
#> $ timestamp                <dttm> 2020-01-01, 2020-01-01... 
#> $ contract_result          <chr> "SUCCESS""SUCCESS", "... 
#> $ confirmed                <lgl> TRUETRUETRUETRUE,... 
#> $ confirmations_count      <int> 13081480, 13081480, 130... 
#> $ sr_confirm_list          <list> [<tbl_df[19 x 3]>, <tb... 
#> $ contract_type            <chr> "TransferAssetContract"... 
#> $ from_address             <chr> "TXmUfpBfxRTdbZXhzuqEJK... 
#> $ to_address               <chr> "TCQBxaNNQ2h1HbrWxWSg7A... 
#> $ is_contract_from_address <lgl> FALSEFALSEFALSE, FA... 
#> $ is_contract_to_address   <lgl> FALSETRUETRUETRUE... 
#> $ costs                    <list> [<tbl_df[1 x 8]>, <tbl... 
#> $ trx_transfer             <dbl> 0.000, 200.000, 0.000, ... 
#> $ trc10_transfer           <list> [<tbl_df[1 x 5]>, NULL... 
#> $ trc20_transfer           <lgl> NA, NA, NA, NA, NA, NA,... 
#> $ internal_tx              <list> [NULLNULL, <tbl_df[1... 
#> $ info                     <lgl> NA, NA, NA, NA, NA, NA,... 
#> $ contract_data            <list> [[10000000, "1002830",... 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.

请注意,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_time             <dttm> 2021-03-31 19:55:31, 2... 
#> $ address                  <chr> "TAUN6FwrnwwmaEqYcckffC... 
#> $ tx_id                    <chr> "36ec18062510f22a469bfb... 
#> $ block_number             <chr> "15860591""15860591",... 
#> $ timestamp                <dttm> 2020-01-01 00:00:36, 2... 
#> $ contract_result          <chr> "SUCCESS""SUCCESS", "... 
#> $ confirmed                <lgl> TRUETRUETRUETRUE,... 
#> $ confirmations_count      <int> 13081672, 13081672, 130... 
#> $ sr_confirm_list          <list> [<tbl_df[19 x 3]>, <tb... 
#> $ contract_type            <chr> "TransferContract", "Tr... 
#> $ from_address             <chr> "TAUN6FwrnwwmaEqYcckffC... 
#> $ to_address               <chr> "TDn2MK7n5SqVksSZtQDAhD... 
#> $ is_contract_from_address <lgl> FALSEFALSEFALSE, FA... 
#> $ is_contract_to_address   <lgl> FALSEFALSEFALSE, FA... 
#> $ costs                    <list> [<tbl_df[1 x 8]>, <tbl... 
#> $ trx_transfer             <dbl> 664296.00000, 925.55360... 
#> $ trc10_transfer           <list> [NULLNULLNULL, NUL... 
#> $ trc20_transfer           <lgl> NA, NA, NA, NA, NA, NA,... 
#> $ internal_tx              <lgl> NA, NA, NA, NA, NA, NA,... 
#> $ info                     <lgl> NA, NA, NA, NA, NA, NA,... 
#> $ contract_data            <list> [[6.64296e+11, "TAUN6F... 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.

现在,我们成功的使用R包在TRON区块链查询交易数据,如有任何想法和疑问,欢迎在留言区留言。

 

责任编辑:武晓燕 来源: 区块链研究实验室
相关推荐

2018-03-15 11:06:51

区块链钻石加密

2022-04-01 14:14:07

区块链技术金融

2021-05-17 14:51:23

链码区块链网络

2021-10-29 22:48:07

区块链房地产安全

2022-01-20 11:47:58

区块链房产技术

2022-01-12 10:37:09

区块链技术金融

2021-11-12 15:26:41

区块链游戏技术

2024-04-22 15:25:50

IOTA物联网IoT

2021-12-24 13:24:16

区块链教育加密货币

2018-03-09 15:37:30

2022-10-11 09:05:58

IPFS区块链存储

2019-02-27 15:32:59

电子证据司法互联网

2021-11-07 15:01:16

区块链金融技术

2018-10-23 16:13:18

2021-09-23 22:40:10

区块链比特币技术

2021-09-30 22:42:03

区块链开发供应链

2024-04-01 07:00:00

区块链深度伪造

2018-03-27 09:52:30

区块链数字货币比特币

2021-05-10 15:09:47

区块链互联网金融

2021-10-04 15:52:14

区块链食品产品质量
点赞
收藏

51CTO技术栈公众号