使用 Amazon Managed Bl

使用 Amazon Managed Blockchain Query 和 Amazon QuickSight 可视化以太坊 ERC20 代币数据

作者:Everton Fraga 和 Varsha Narmat,发布日期:2023年10月16日
在本篇文章中,我们将探讨如何通过 Amazon Managed Blockchain (AMB) Query 和 来分析以太坊代币数据,帮助企业迅速识别代币的常见指标。

关键要点

  • 代币分析 :企业利用 AMB Query 和 QuickSight 可轻松分析 ERC20 代币数据,包括活跃用户、交易量等关键指标。
  • 优越性 :AMB Query 提供不断更新的已定稿数据,减少企业在区块链数据操作上的成本。
  • 可视化工具 :通过 QuickSight 创建美观的仪表盘,自动化报告,快速获取关键信息。

许多企业(如 )需要识别诸如持有人、活跃用户、交易量和最近转账等代币指标。借助 AmazonManaged Blockchain Query 和 Amazon QuickSight,企业可以轻松地分析以太坊代币数据,并实现图形化显示。

结合 QuickSight,您可以快速制作美观的仪表盘,自动生成报告,并轻松获取 ERC20 代币的关键信息。本文接下来将介绍如何利用 AMB Query及 AWS 数据服务(如 、 和 QuickSight)生成数据可视化,以帮助分析 ERC20代币相关信息。

![QuickSight 仪表盘显示 ERC20删除)

QuickSight 仪表盘显示 ERC20 代币指标。

AMB Query 如何助力代币可视化

在本节中,我们将讨论 AMB Query 在以太坊上的关键特性以及为何其是获取所需公共区块链数据、实现 ERC20 代币指标可视化的理想选择。

实时更新的已定稿数据

在代币可视化仪表盘中,我们希望捕获的关键数据包括每日活跃用户、交易量、最新转账和代币用户使用的顶级以太坊 DeFi平台。为了展示这些信息,我们需要能够捕获代币操作的机制,因此可以利用 AMB Query 的 ListTransactionsListTransactionEvents API。

ListTransactions API 可返回以太坊外部拥有账户(EOA)或 ERC20 代币的智能合约地址的所有交易清单。例如,PayPal发行的稳定币 PYUSD 可以利用 ListTransactions 获取所有 PYUSD 的交易记录。然后,可以使用每个交易哈希调用 ListTransactionEvents 查询该地址的所有转账记录,包括代币(ERC20、ERC1155、ERC721)或本地币(BTC、ETH)的转账情况。通过交易与余额数据,您可以识别 PYUSD 交易量最高的 DeFi 平台。

历史数据

另一个重要的数据点是持有人和持有总量。使用 ListTokenBalances API,我们可以获得由智能合约铸造的所有代币列表。此外,AMBQuery 提供的 REST API 将提供历史数据,而无须专门的索引基础设施和提取、转换和加载(ETL)流程获取。

成本效益

在处理区块链数据时,成本往往很高,特别是当您需要手动运行 ETL 以处理区块链数据并以多种方式建立索引时。然而,AMB Query允许您摆脱区块链数据基础设施操作的繁琐和成本,选择按需查询所需的数据,且采用按使用量计费的模型。这不仅为成本节约创造了机会,还使 API调用的复杂性或资源使用可预测,从而轻松判断特定工作负载下的费用。

解决方案概述

在探讨了为什么需要代币可视化以及 AMB Query 适合创建这些可视化的原因后,我们将讨论如何实施此方案。以下图展示了 AMB Query集成的架构,有助于创建代币可视化仪表盘。

![Amazon Managed Blockchain Query、AWS Glue、Amazon S3、Amazon Athena、AmazonQuickSight删除)

主要服务

  1. **** :提供无服务器访问标准化、多区块链数据集的开发者友好 API。利用 AMB Query 的 ListTransactionsListTransactionEventsListTokenBalances API,您可以收集关于 ERC20 代币的历史与最新数据。
  2. **** :简化 ETL 过程的无服务器数据集成服务。通过在 AWS Glue 中运行简单的 Python 脚本,可以调用 AMB Query 中的相关 API。
  3. **Amazon Simple Storage Service (S3) ** :对象存储服务,用于在每次 AWS Glue 作业运行后存储所有代币信息。
  4. **** :无服务器的交互分析服务,便于查询所需数据并在 QuickSight 仪表盘上显示。
  5. **** :业务分析服务,用于显示 ERC20 代币数据。

接下来,我们将讨论配置集成和创建可视化的步骤。

先决条件

您首先需要建立一个 AWS 账户,并正确配置 AWS 身份与访问管理 (IAM) 权限。有关更多信息,请参阅 。

创建 S3 存储桶

Amazon S3 为 AWS 提供的对象存储服务,您可以随时从任何地方存储和检索任意量的数据。在这个场景中,我们将存储来自 AWS Glue脚本的数据,即代币的历史和实时已定稿数据。您只需创建一个 S3 存储桶,因为上传将由您从 GitHub 复制并粘贴的 AWS Glue脚本处理。随后,Athena 将读取您的数据。创建 S3 存储桶的详细步骤请参见 。

使用 AMB Query 查询数据

AMB Query 提供无服务器访问标准化的多区块链数据集以及简化构建区块链应用的开发者友好 API,包括与代币余额、交易详情和链上事件相关的查询。

在我们的解决方案中,我们将使用 ListTransactionsListTransactionEvents 获取所选代币的所有转账操作信息,使用 ListTokenBalances 输出在特定时间的所有代币持有者快照。

AMB Query 提供的 ,允许开发人员查询区块链数据。以下屏幕截图展示输入参数的查询结果:

  • 区块链网络:ETHEREUM_MAINNET
  • 查询类型:ListTransactions
  • PYUSD 代币以太坊地址:0x6c3ea9036406852006290770BEdFcAbA0e23A0e8
  • 起始日期:2023/03/26
  • 结束日期:2023/09/26

![AWS 控制台显示 Amazon Managed Blockchain Query 的 ListTransactions删除)

创建 AWS Glue 作业

在此步骤中,您需要创建两个 AWS Glue 作业,访问 ,复制 token-snapshot.pytoken- transfers.py 文件中的代码,并输入到作业代码编辑器中。

token-transfers.py 负责捕获该代币的所有转账操作,从而确保您获得持续更新的已定稿数据。使用 token- snapshots.py,您可以将代币地址作为作业参数传递。数据将保存到 Amazon S3。

捕获所有代币转账

为捕获代币转账,您需要创建一个名为 token-transfers 的 AWS Glue 作业,完成以下步骤:

  1. 在 AWS Glue 控制台上,选择导航窗格中的 Visual ETL
  2. 选择 Python Shell script editor
  3. 选择 Create a new script with boiler plate code
  4. 选择 Create
    ![创建 Glue删除)
  5. 将默认标题更改为 token-transfers
  6. 从 复制 token-transfers.py 文件中的代码,并将其输入到代码编辑器中。
  7. 选择 Job detailsAdvanced properties
  8. Job parameters 下,设置键 --token 为 PYUSD 的代币合约地址:0x6c3ea9036406852006290770BEdFcAbA0e23A0e8
  9. 通过 --s3_bucket_name 作为键传递先前创建的 S3 存储桶名称。
    ![Glue 作业详细 > 删除)
  10. 运行作业。
  11. 若要创建定期作业,请选择导航窗格中的 Schedules
  12. 选择 Create schedule
  13. Name 中输入调度名称(本文中我们使用 token-transfers-schedule)。
  14. Frequency 中选择 Hourly
  15. Minute of the hour 中保持为 0。这样可以使您的脚本每小时运行一次,以便随时保持每日活跃用户、每日交易量和最新转账的更新。
  16. 选择 Create schedule

索引所有代币持有者

接下来,您需要创建一个名为 token-snapshot 的 AWS Glue 作业,负责收集所有代币持有者的余额,并将其存储在 Amazon S3以便后续分析。

  1. 按照之前相同的步骤创建 token-snapshot 脚本,从 复制 token-snapshot.py 文件中的代码,并输入到代码编辑器中。
  2. 选择 Job detailsAdvanced properties
  3. Job parameters 下,将键 --token 设置为值 0x6c3ea9036406852006290770BEdFcAbA0e23A0e8
  4. 通过 --s3_bucket_name 作为键传递先前创建的 S3 存储桶名称。
    ![Glue 作业详细 > 删除)
  5. 运行作业。
  6. 若要创建定期作业,请选择导航窗格中的 Schedules
  7. 选择 Create schedule
  8. Name 中输入调度名称(本文中我们使用 token_snapshot_schedule)。
  9. Frequency 中选择 Daily
  10. Minute of the hour 中保持为 0。这样可以使您的脚本每天运行一次,以便获取最新的所有代币的快照。
  11. 选择 Create schedule

![AWS Glue删除)

您现在已经创建了两个计划运行的 AWS Glue 作业,持续获取所选 ERC20 代币的以太坊数据。数据将流入 Amazon S3,Athena将读取这些数据。

在 Athena 查询数据

Athena 是一个无服务器、高度可扩展且流式的分析服务,能够满足数据需求。在我们的解决方案中,AWS Glue 将数据保存到 AmazonS3,Athena 则作为 QuickSight 的数据仓库。

在 Athena 中为您刚刚创建的 token-transfers 脚本运行以下 SQL 脚本: sql CREATE EXTERNAL TABLEevents( contractaddress string COMMENT 'from deserializer', eventtype stringCOMMENT 'from deserializer', from string COMMENT 'from deserializer', tostring COMMENT 'from deserializer', value string COMMENT 'from deserializer', transactionhash string COMMENT 'from deserializer', transactiontimestampstring COMMENT 'from deserializer' ) ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde' WITH SERDEPROPERTIES ( 'escapeChar'='\\', 'quoteChar'='\"', 'separatorChar'=',' ) STORED ASINPUTFORMAT 'org.apache.hadoop.mapred.TextInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' LOCATION 's3://BUCKET-NAME/TOKEN-ADDRESS/events' TBLPROPERTIES ('classification'='csv', 'skip.header.line.count'='1')

接着,在 Athena 为您的 token-snapshot 脚本运行以下 SQL 脚本: sql CREATE EXTERNAL TABLE token_snapshot( addressstring COMMENT 'from deserializer',balance string COMMENT 'from deserializer' ) COMMENT 'Creating a snapshot table fromAthena.' ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde' WITHSERDEPROPERTIES ('escapeChar'='\\', 'quoteChar'='\"', 'separatorChar'=',') STORED AS INPUTFORMAT 'org.apache.hadoop.mapred.TextInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' LOCATION 's3://BUCKET-NAME/TOKEN-ADDRESS/snapshot' TBLPROPERTIES ('classification'='csv', 'skip.header.line.count'='1')

现在,您应该有两个表,token-snapshot 和 token-events,从 Amazon S3 中提取出 AMB Query 的数据。

![在 Amazon Athena删除)

在 QuickSight 中创建可视化

现在您已经成功运行 AWS Glue Python 脚本并正确配置了 Athena,可以将代币数据加载到 S3 存储桶中,查询数据,并加载到 QuickSight 进行可视化。

导入数据

要导入数据,请完成以下步骤:

  1. 在 QuickSight 控制台中,选择导航窗格中的 Analyses
  2. 选择 New analysis
    删除)
  3. 选择 New dataset
    删除)
  4. 选择 Athena
    删除)
  5. 在弹出的窗口中,在 Data source name 中输入 AwsDataCatalog ,并将 Athena workgroup 保持为 primary
  6. 选择 Create data source
    ![创建数据源](https://

Leave a Reply

Required fields are marked *