如何在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_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

假如将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

请注意,在回来的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> TRUE, TRUE, TRUE, TRUE,...#> $ 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> FALSE, FALSE, FALSE, FA...#> $ is_contract_to_address   <lgl> FALSE, TRUE, TRUE, TRUE...#> $ 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> [NULL, NULL, <tbl_df[1...#> $ info                     <lgl> NA, NA, NA, NA, NA, NA,...#> $ contract_data            <list> [[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_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> TRUE, TRUE, TRUE, TRUE,...#> $ 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> FALSE, FALSE, FALSE, FA...#> $ is_contract_to_address   <lgl> FALSE, FALSE, FALSE, FA...#> $ costs                    <list> [<tbl_df[1 x 8]>, <tbl...#> $ trx_transfer             <dbl> 664296.00000, 925.55360...#> $ trc10_transfer           <list> [NULL, NULL, NULL, 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...

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

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

需求参加区块链技术交流群吗,请扫描下方二维码,帮手将邀请您进群。

视野开拓

不管是过去,还是未来,赚取真正财富的唯一方式,仍然是天赋、勤俭、幸运,再加上艰苦的劳动。-《牛奶可乐经济学》

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注