作者:Everton Fraga 和 Varsha Narmat,发布日期:2023年10月16日
在本篇文章中,我们将探讨如何通过 Amazon Managed Blockchain (AMB)
Query
和
来分析以太坊代币数据,帮助企业迅速识别代币的常见指标。
许多企业(如 )需要识别诸如持有人、活跃用户、交易量和最近转账等代币指标。借助 AmazonManaged Blockchain Query 和 Amazon QuickSight,企业可以轻松地分析以太坊代币数据,并实现图形化显示。
结合 QuickSight,您可以快速制作美观的仪表盘,自动生成报告,并轻松获取 ERC20 代币的关键信息。本文接下来将介绍如何利用 AMB Query及 AWS 数据服务(如 、 和 QuickSight)生成数据可视化,以帮助分析 ERC20代币相关信息。
![QuickSight 仪表盘显示 ERC20删除)
QuickSight 仪表盘显示 ERC20 代币指标。
在本节中,我们将讨论 AMB Query 在以太坊上的关键特性以及为何其是获取所需公共区块链数据、实现 ERC20 代币指标可视化的理想选择。
在代币可视化仪表盘中,我们希望捕获的关键数据包括每日活跃用户、交易量、最新转账和代币用户使用的顶级以太坊 DeFi平台。为了展示这些信息,我们需要能够捕获代币操作的机制,因此可以利用 AMB Query 的 ListTransactions
和
ListTransactionEvents
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删除)
ListTransactions
、ListTransactionEvents
和 ListTokenBalances
API,您可以收集关于 ERC20 代币的历史与最新数据。接下来,我们将讨论配置集成和创建可视化的步骤。
您首先需要建立一个 AWS 账户,并正确配置 AWS 身份与访问管理 (IAM) 权限。有关更多信息,请参阅 。
Amazon S3 为 AWS 提供的对象存储服务,您可以随时从任何地方存储和检索任意量的数据。在这个场景中,我们将存储来自 AWS Glue脚本的数据,即代币的历史和实时已定稿数据。您只需创建一个 S3 存储桶,因为上传将由您从 GitHub 复制并粘贴的 AWS Glue脚本处理。随后,Athena 将读取您的数据。创建 S3 存储桶的详细步骤请参见 。
AMB Query 提供无服务器访问标准化的多区块链数据集以及简化构建区块链应用的开发者友好 API,包括与代币余额、交易详情和链上事件相关的查询。
在我们的解决方案中,我们将使用 ListTransactions
和 ListTransactionEvents
获取所选代币的所有转账操作信息,使用 ListTokenBalances
输出在特定时间的所有代币持有者快照。
AMB Query 提供的 ,允许开发人员查询区块链数据。以下屏幕截图展示输入参数的查询结果:
ETHEREUM_MAINNET
ListTransactions
0x6c3ea9036406852006290770BEdFcAbA0e23A0e8
![AWS 控制台显示 Amazon Managed Blockchain Query 的 ListTransactions删除)
在此步骤中,您需要创建两个 AWS Glue 作业,访问 ,复制 token-snapshot.py
和 token- transfers.py
文件中的代码,并输入到作业代码编辑器中。
token-transfers.py
负责捕获该代币的所有转账操作,从而确保您获得持续更新的已定稿数据。使用 token- snapshots.py
,您可以将代币地址作为作业参数传递。数据将保存到 Amazon S3。
为捕获代币转账,您需要创建一个名为 token-transfers
的 AWS Glue 作业,完成以下步骤:
token-transfers
。token-transfers.py
文件中的代码,并将其输入到代码编辑器中。--token
为 PYUSD 的代币合约地址:0x6c3ea9036406852006290770BEdFcAbA0e23A0e8
。--s3_bucket_name
作为键传递先前创建的 S3 存储桶名称。token-transfers-schedule
)。接下来,您需要创建一个名为 token-snapshot
的 AWS Glue 作业,负责收集所有代币持有者的余额,并将其存储在 Amazon S3以便后续分析。
token-snapshot
脚本,从 复制 token-snapshot.py
文件中的代码,并输入到代码编辑器中。--token
设置为值 0x6c3ea9036406852006290770BEdFcAbA0e23A0e8
。--s3_bucket_name
作为键传递先前创建的 S3 存储桶名称。token_snapshot_schedule
)。![AWS Glue删除)
您现在已经创建了两个计划运行的 AWS Glue 作业,持续获取所选 ERC20 代币的以太坊数据。数据将流入 Amazon S3,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删除)
现在您已经成功运行 AWS Glue Python 脚本并正确配置了 Athena,可以将代币数据加载到 S3 存储桶中,查询数据,并加载到 QuickSight 进行可视化。
要导入数据,请完成以下步骤:
Leave a Reply