作者:Everton Fraga 和 Varsha Narmat,发布日期:2023年10月16日在本篇文章中,我们将探讨如何通过 Amazon Managed Blockchain (AMB) Query 和 Amazon QuickSight 来分析以太坊代币数据,帮助企业迅速识别代币的常见指标。
许多企业如 Paxos需要识别诸如持有人、活跃用户、交易量和最近转账等代币指标。借助 Amazon Managed Blockchain Query 和 Amazon QuickSight,企业可以轻松地分析以太坊代币数据,并实现图形化显示。
结合 QuickSight,您可以快速制作美观的仪表盘,自动生成报告,并轻松获取 ERC20 代币的关键信息。本文接下来将介绍如何利用 AMB Query 及 AWS 数据服务如 AWS Glue、Amazon Athena 和 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,我们可以获得由智能合约铸造的所有代币列表。此外,AMB Query 提供的 REST API 将提供历史数据,而无须专门的索引基础设施和提取、转换和加载ETL流程获取。
在处理区块链数据时,成本往往很高,特别是当您需要手动运行 ETL 以处理区块链数据并以多种方式建立索引时。然而,AMB Query 允许您摆脱区块链数据基础设施操作的繁琐和成本,选择按需查询所需的数据,且采用按使用量计费的模型。这不仅为成本节约创造了机会,还使 API 调用的复杂性或资源使用可预测,从而轻松判断特定工作负载下的费用。
在探讨了为什么需要代币可视化以及 AMB Query 适合创建这些可视化的原因后,我们将讨论如何实施此方案。以下图展示了 AMB Query 集成的架构,有助于创建代币可视化仪表盘。
迅猛兔加速器官网入口接下来,我们将讨论配置集成和创建可视化的步骤。
您首先需要建立一个 AWS 账户,并正确配置 AWS 身份与访问管理 (IAM) 权限。有关更多信息,请参阅 更改 IAM 用户的权限。
Amazon S3 为 AWS 提供的对象存储服务,您可以随时从任何地方存储和检索任意量的数据。在这个场景中,我们将存储来自 AWS Glue 脚本的数据,即代币的历史和实时已定稿数据。您只需创建一个 S3 存储桶,因为上传将由您从 GitHub 复制并粘贴的 AWS Glue 脚本处理。随后,Athena 将读取您的数据。创建 S3 存储桶的详细步骤请参见 创建您的第一个 S3 存储桶。
AMB Query 提供无服务器访问标准化的多区块链数据集以及简化构建区块链应用的开发者友好 API,包括与代币余额、交易详情和链上事件相关的查询。
在我们的解决方案中,我们将使用 ListTransactions 和 ListTransactionEvents 获取所选代币的所有转账操作信息,使用 ListTokenBalances 输出在特定时间的所有代币持有者快照。
AMB Query 提供的 交互式查询编辑器,允许开发人员查询区块链数据。以下屏幕截图展示输入参数的查询结果:
区块链网络:ETHEREUMMAINNET查询类型:ListTransactionsPYUSD 代币以太坊地址:0x6c3ea9036406852006290770BEdFcAbA0e23A0e8起始日期:2023/03/26结束日期:2023/09/26在此步骤中,您需要创建两个 AWS Glue 作业,访问 GitHub 仓库,复制 tokensnapshotpy 和 tokentransferspy 文件中的代码,并输入到作业代码编辑器中。
tokentransferspy 负责捕获该代币的所有转账操作,从而确保您获得持续更新的已定稿数据。使用 tokensnapshotspy,您可以将代币地址作为作业参数传递。数据将保存到 Amazon S3。
为捕获代币转账,您需要创建一个名为 tokentransfers 的 AWS Glue 作业,完成以下步骤:
在 AWS Glue 控制台上,选择导航窗格中的 Visual ETL。选择 Python Shell script editor。选择 Create a new script with boiler plate code。选择 Create。将默认标题更改为 tokentransfers。从 tokendashboards 代码库 复制 tokentransferspy 文件中的代码,并将其输入到代码编辑器中。选择 Job details 和 Advanced properties。在 Job parameters 下,设置键 token 为 PYUSD 的代币合约地址:0x6c3ea9036406852006290770BEdFcAbA0e23A0e8。通过 s3bucketname 作为键传递先前创建的 S3 存储桶名称。运行作业。若要创建定期作业,请选择导航窗格中的 Schedules。选择 Create schedule。在 Name 中输入调度名称本文中我们使用 tokentransfersschedule。在 Frequency 中选择 Hourly。在 Minute of the hour 中保持为 0。这样可以使您的脚本每小时运行一次,以便随时保持每日活跃用户、每日交易量和最新转账的更新。选择 Create schedule。接下来,您需要创建一个名为 tokensnapshot 的 AWS Glue 作业,负责收集所有代币持有者的余额,并将其存储在 Amazon S3 以便后续分析。
按照之前相同的步骤创建 tokensnapshot 脚本,从 tokendashboards GitHub 仓库 复制 tokensnapshotpy 文件中的代码,并输入到代码编辑器中。选择 Job details 和 Advanced properties。在 Job parameters 下,将键 token 设置为值 0x6c3ea9036406852006290770BEdFcAbA0e23A0e8。通过 s3bucketname 作为键传递先前创建的 S3 存储桶名称。运行作业。若要创建定期作业,请选择导航窗格中的 Schedules。选择 Create schedule。在 Name 中输入调度名称本文中我们使用 tokensnapshotschedule。在 Frequency 中选择 Daily。在 Minute of the hour 中保持为 0。这样可以使您的脚本每天运行一次,以便获取最新的所有代币的快照。选择 Create schedule。您现在已经创建了两个计划运行的 AWS Glue 作业,持续获取所选 ERC20 代币的以太坊数据。数据将流入 Amazon S3,Athena 将读取这些数据。
Athena 是一个无服务器、高度可扩展且流式的分析服务,能够满足数据需求。在我们的解决方案中,AWS Glue 将数据保存到 Amazon S3,Athena 则作为 QuickSight 的数据仓库。
在 Athena 中为您刚刚创建的 tokentransfers 脚本运行以下 SQL 脚本:sqlCREATE EXTERNAL TABLE events( contractaddress string COMMENT from deserializer eventtype string COMMENT from deserializer from string COMMENT from deserializer to string COMMENT from deserializer value string COMMENT from deserializer transactionhash string COMMENT from deserializer transactiontimestamp string COMMENT from deserializer)ROW FORMAT SERDE orgapachehadoophiveserde2OpenCSVSerdeWITH SERDEPROPERTIES ( escapeChar= quoteChar= separatorChar=)STORED AS INPUTFORMAT orgapachehadoopmapredTextInputFormatOUTPUTFORMAT orgapachehadoophiveqlioHiveIgnoreKeyTextOutputFormatLOCATION s3//BUCKETNAME/TOKENADDRESS/eventsTBLPROPERTIES (classification=csv skipheaderlinecount=1)
接着,在 Athena 为您的 tokensnapshot 脚本运行以下 SQL 脚本:sqlCREATE EXTERNAL TABLE tokensnapshot( address string COMMENT from deserializer balance string COMMENT from deserializer)COMMENT Creating a snapshot table from AthenaROW FORMAT SERDE orgapachehadoophiveserde2OpenCSVSerdeWITH SERDEPROPERTIES (escapeChar= quoteChar= separatorChar=)STORED AS INPUTFORMAT orgapachehadoopmapredTextInputFormatOUTPUTFORMAT orgapachehadoophiveqlioHiveIgnoreKeyTextOutputFormatLOCATION s3//BUCKETNAME/TOKENADDRESS/snapshotTBLPROPERTIES (classification=csv skipheaderlinecount=1)
现在,您应该有两个表,tokensnapshot 和 tokenevents,从 Amazon S3 中提取出 AMB Query 的数据。

现在您已经成功运行 AWS Glue Python 脚本并正确配置了 Athena,可以将代币数据加载到 S3 存储桶中,查询数据,并加载到 QuickSight 进行可视化。
要导入数据,请完成以下步骤:
在 QuickSight 控制台中,选择导航窗格中的 Analyses。选择 New analysis。
选择 New dataset。
选择 Athena。
在弹出的窗口中,在 Data source name 中输入 AwsDataCatalog,并将 Athena workgroup 保持为 primary。
选择 Create data source。![创建数据源](https//01-27
自定义 IAM 访问分析器未使用访问分析的范围 安全博客
自定义IAM Access Analyzer未使用权限分析的范围关键要点AWS IAM Access Analyzer提供了未使用权限的分析功能,帮助组织实现最小权限原则。新增的配置能力允许用户自定义...
01-27
最佳实践:通过使用 AWS Signer 保障容器镜像构建流水线的安全 安全博客
利用 AWS Signer 加强容器镜像构建流水线的最佳实践关键要点文章介绍了 AWS Signer 在容器镜像构建流水线中的应用,增强软件安全性,确保代码来源可信。通过 AWS 服务如 CodePi...
01-27
开始您的云财务管理之旅:成本规划 云财务管理
开始云财务管理之旅:成本规划关键要点本文将指导您如何按照 AWS 的四个云财务管理原则观察、节省、规划和运行,成功构建财务管理计划。本篇为四部分系列中的第三篇,我们将重点讨论如何为未来做好规划并预测在...
01-27
使用 Amazon Managed Blockchain Query 和 Amazon QuickS
使用 Amazon Managed Blockchain Query 和 Amazon QuickSight 可视化以太坊 ERC20 代币数据作者:Everton Fraga 和 Varsha Na...