Loading...
作者:Forrest Colyer 和 Ryan Canty 日期:2023年10月20日来源: 高级(300),亚马逊托管区块链,区块链
在近年来,诸如数字资产钱包提供者和各大银行等企业推出了数字资产产品,使最终用户能够购买、出售、交换并监控他们的数字资产,包括加密货币。无论最终用户是机构投资者还是个人投资者/爱好者,这些数字资产产品都需要提供易于访问的用户体验,显示与用户数字资产相关的重要数据。这些数据包括但不限于资产的当前和历史余额、历史交易列表、交易事件等,涵盖用户所交易和拥有的每个区块链网络。
要构建这样的用户界面以便最终用户在多个公共区块链上查看其数字资产余额,必须投资资源密集型的区块链索引基础设施和复杂的提取、转化和加载ETL管道,以便将数据提供给前端应用。然而,这些索引和 ETL 资源并没有显著差异化。自行构建这些功能会分散资源,增加成本,也不能使产品从竞争对手中脱颖而出。以比特币区块链为例,运营一整套公共区块链节点以处理请求流量,发送交易时也需要持续的运营成本,而选择 API 驱动的解决方案可以避免这些开支,只为实际请求支付费用。
随着亚马逊托管区块链访问和亚马逊托管区块链查询的发布,构建数字资产应用和用户体验的客户可以将区块链节点和数据操作的重担交易为按需付费的服务,满足相同的需求。这大大降低了实现相同功能所需的 AWS 服务的复杂性,并根据区块链数据查询和公共区块链上的 JSONRPC 请求的使用情况提供可预测的费用。
在本文中,您将学习如何使用亚马逊托管区块链查询和亚马逊托管区块链访问,以及其他一些 AWS 服务,快速部署一个 React 前端应用,展示比特币和以太坊区块链的数字资产数据。您可以参考公共代码库以使用这些 React 组件在自己的钱包、投资组合追踪器或其他数字资产应用中。
AMB 访问和查询大大降低了客户构建质量用户体验的障碍,尤其是涉及区块链数据。有关更多信息,请查看 AWS 解决方案库中有关构建钱包解决方案的指导。AWS 解决方案库
为了构建允许用户在多个区块链上查看其数字资产余额的应用,您需要托管一个公开可访问的 web 应用,并支持用户将他们的数字资产钱包连接到该应用。图 1 展示了构成数字资产投资组合追踪器示例应用的核心 AWS 服务和组件的架构图。
AWS Amplify,一个提供完整工具集以构建、交付和托管全栈应用的服务,通过托管 UI 提供 React web 应用。为了管理使用 Signature Version 4 的 AWS 服务如亚马逊托管区块链的身份验证,应用使用亚马逊 Cognito来提供身份存储工具,采用开放身份标准。一个亚马逊 Cognito 身份池被配置为访客访问未经身份验证的身份,以允许 web 应用的用户在未注册账户的情况下使用亚马逊托管区块链服务。通过使用亚马逊 Cognito 身份池基础经典身份验证流,web 应用向亚马逊 Cognito API 发送 GetId 和 GetOpenIdToken 请求,并为每个未经身份验证的身份接收一个 OAuth 20 令牌。该 web 应用将 OAuth 20 令牌交换为 AWS API 凭证,通过向AWS 安全令牌服务 (STS) API 发起 AssumeRoleWithWebIdentity API 请求,并提供授予访问亚马逊托管区块链权限的 AWS IAM 角色的 ARN。请注意,通过启用亚马逊 Cognito 身份池的访客访问,您实际上将亚马逊托管区块链服务开放给公众。您也可以选择在应用中构建身份验证,要求用户创建账户并使用亚马逊 Cognito 用户池登录应用。此 Web 应用向亚马逊托管区块链查询发送请求,以获取公共区块链如比特币和以太坊的代币余额和交易历史。数字资产投资组合追踪器用户界面组件中使用的大部分数据来自亚马逊托管区块链查询。亚马逊托管区块链查询 API 设计为根据您的需求进行扩展,允许您以适合工作负载的规模查询公共区块链数据,而无需管理底层区块链基础设施。本文提供的示例代码使用亚马逊托管区块链查询 JavaScript SDK通过以下端点向 API 发送请求:[BatchGetTokenBalance](https//docsawsamazoncom/managedblockchain/latest/AMBQAPIReference/APIBatchGetTokenBalancehtml) 用于获取多个地址的比特币余额ListTokenBalances 用于获取多个外部拥有帐号EOA的 ERC20 代币余额ListTransactions 用于获取比特币和以太坊交易哈希列表GetTransaction 用于获取比特币和以太坊的交易详情ListTransactionEvents 用于获取比特币和以太坊的交易事件亚马逊托管区块链查询 API 结果可以与第三方 API 配对,以获取代币价格和其他元数据。本文提供的示例代码利用了CoinGecko 公共 API对于需要访问区块链节点的特殊请求,web 应用可以向专用以太坊全节点或亚马逊托管区块链访问的无服务器比特币 JSONRPC API 端点发送 JSONRPC 请求,以与智能合约交互,检索附加交易元数据,广播交易等。亚马逊托管区块链访问未包含在本文提供的示例代码中,但可以进行扩展。可选地,web 应用可以请求承载在网络和/或星际文件系统 (IPFS)上的非同质化代币 (NFT) 元数据例如 JSON 属性、图片、视频,使用 IPFS 节点集群。IPFS 是一种在分布式网络节点中存储和路由文件的协议。如果您希望部署自己的 IPFS 集群,可以参考 AWS 解决方案库指导,学习如何在 AWS 上部署无服务器 IPFS 集群。本文提供的示例代码中未包含 NFT 功能,但可以进行扩展。要部署此架构,除了亚马逊托管区块链访问和 IPFS 集群外,可以使用 AWS Cloud Development Kit (CDK)。CDK 是一种基础设施即代码工具,允许您以代码方式建模并自动将其部署至 AWS。在下一部分,您将学习如何使用提供的 CDK 代码,通过 AWS Amplify 部署 web 应用程序,并创建亚马逊 Cognito 身份池和 AWS IAM 角色,以实现对亚马逊托管区块链查询的访客访问。
确保满足所有前置条件后,您可以切换到代码库的基础设施目录,安装依赖项,启动 CDK 环境,并运行部署命令:
bashcd infrastructurenpm installnpx cdk bootstrapnpx cdk deploy all
该命令将部署以下 AWS 资源:
AWS CodeCommit 代码库,以托管源代码并作为 AWS Amplify 应用的源。亚马逊 Cognito 身份池和 AWS IAM 角色,以提供匿名访客对亚马逊托管区块链查询的访问。AWS Amplify 应用程序,用于构建、部署和托管静态 React 单页应用。AWS CodeCommit 代码库被设置为应用源,以便在主分支提交时自动部署应用。在部署期间,CDK 将要求您确认 IAM 语句更改。请检查更改并选择 y 以继续,如下图所示:
此过程还将在控制台中打印一系列变量值,包括在未来步骤中所需的值如下图红色标识:
此 URL 是您的应用代码将被提交的位置:
免费海外加速器推荐
此 URL 是您的前端应用将被托管的位置:
在部署核心 AWS 资源后,您必须使用 AWS Amplify 构建和部署 web 应用。之前步骤中部署的 CDK 应用已配置 Amplify 应用,以自动构建、部署并托管我们的 web 应用,具体如下:
使用 AWS CodeCommit 对本地 git 仓库进行身份验证:最简单的方法是在 IAM 控制台中为您的 IAM 用户生成 CodeCommit 的 Git 凭证,然后使用这些凭证通过 HTTPS 连接到 CodeCommit。请务必保存凭证,因为在下一步推送到 CodeCommit 时需要这些凭证。如果您希望通过另一种机制如联合访问或临时凭证与 CodeCommit 进行身份验证,请参考CodeCommit 文档。将您的仓库的远程 URL 设置为 cdk deploy 命令输出的 CodeCommit HTTPS 克隆 URL:bash git remote seturl origin ltCodeCommit HTTPS Clone URLgt
您应该会被提示输入在本节第 1 步生成的仓库的用户名和密码。根据您本地计算机的配置,该提示可能源于操作系统的凭证管理系统、您 Git 版本的凭证管理实用程序例如包含在 Git for Windows 中的 Git 凭证管理器、您的 IDE 或 Git 本身。输入为 Git 凭证生成的用户名和密码。成功身份验证后,仓库将被推送到 AWS CodeCommit,并将启动 Amplify 应用构建与部署。可以在 AWS Amplify 控制台中监控部署进度。Amplify 部署完成后,web 应用将在 cdk deploy 命令输出最后返回的 Amplify 应用 URL 上运行。一旦部署完成,您的投资组合追踪器 web 应用将在第一个步骤中 CDK 部署返回的 URL 上在线。这看起来像是用户输入比特币和/或以太坊地址后的样子:
为了避免对 AWS 服务产生不必要的费用,完成后,您可以使用堆栈删除命令删除所有由 AWS CDK 部署的资源:
bashnpx cdk destroy all
如果您为 IAM 用户生成了 Git 凭证,可以在 AWS IAM 控制台中将其删除:
在本文中,您学习了像亚马逊托管区块链等托管服务的价值,这些服务为区块链/数字资产应用中的常见重复性繁重工作提供抽象。通过减轻节点操作、区块链数据索引和 ETL 的负担,您可以集中精力开发能够促进采用的特定用例功能,例如卓越的用户体验和数据驱动的洞察。要体验亚马逊托管区块链查询的图形用户界面GUI以测试其 API,您可以使用AWS 管理控制台查询编辑器。
Forrest Colyer 负责管理 Web3/区块链专业解决方案架构团队
2026-01-27 14:59:24
2026-01-27 14:44:41
2026-01-27 14:29:58
2026-01-27 14:15:16
2026-01-27 14:00:33
2026-01-27 13:45:26
我是成熟的云采用者。现在该怎么办? 云企业战略博客
成熟的云计算采用者:接下来该怎么办?关键要点许多企业已经在云计算方面取得了显著进展,但他们如何在此基础上继续前进呢?文章提供了多种策略,包括财务管理、环境可持续性、弹性、可用性、上市时间和创新,帮助企...
让我们来设计架构吧!软件架构中的安全性 架构博客
软件架构中的安全性关键要点在构建软件产品和服务时,安全性至关重要。无论您是在后端还是数据与机器学习组件上工作,解决方案都应该以安全的方式构建。本文深入探讨了云工作负载的安全实践,介绍了“零信任”原则,...