AWS Chainlink Quickstart正式发布,帮助数据提供商、企业和DevOps团队面向所有区块链销售数据

随着Chainlink节点网络不断扩张,我们很高兴与AWS合作,帮助数据提供商、企业和DevOps团队更轻松地面向区块链销售数据。节点运营商使用最新发布的AWS Chainlink Quickstart,可以一键式地在AWS上轻松部署Chainlink预言机节点,并面向各个区块链网络销售现实世界的数据。

数提供商可以通过AWS Chainlink Quickstart同时跨多个公链和私有链环境销售其数据和API接口,并且无需具备任何区块链经验。另外,DevOps团队、企业、电信公司、个人开发者和DAO也可以快速发布自己的Chainlink节点,为区块链应用提供预言机服务,或代表数据提供商客户端提供服务。AWS拥有独特的工作流程,可以为各个细分市场的数据提供商和节点运营商提供服务,让它们直接访问所有新兴的区块链网络,并轻松拓展市场。

本文将讨论数据提供商、企业和DevOps团队发布Chainlink节点的重要价值;详解通过AWS Chainlink Quickstart部署Chainlink节点的基础架构;并手把手教大家如何在几分钟内在AWS上发布一个Chainlink节点。如果你是数据提供商,并希望进一步了解如何通过AWS接入区块链,请查看以下文档:

https://aws-quickstart.github.io/quickstart-chainlinklabs-chainlink-node/

数据和API对区块链应用的重要价值

互联网从最初的电子邮件发展到了如今的万维网;而区块链共享的是后端计算和数据库基础架构,也同样正在从纯粹的去中心化货币系统转型至更加高效、可靠且防篡改的自动化多方业务流程。混合型智能合约是区块链应用发展的关键推动因素。混合型智能合约是在区块链上运行的由数据驱动的业务逻辑,合约可以接入区块链以外的数据提供商和传统系统,输入数据并输出结果。另外,合约还可以利用高级的链下计算能力,实现可扩展性并增强隐私保护。

几乎所有混合型智能合约应用都需要接入外部数据和API,以在现实世界中发挥价值。因此所有传统的数据和服务提供商都必须拥有能够支持混合型智能合约的基础架构。比如利用金融市场数据来触发DeFi智能合约;利用物联网数据来自动运行区块链供应链;或基于电竞比赛结果来结算去中心化的预测市场。现在数据提供商有越来越多的机会利用混合型智能合约经济将自己的API变现。

Chainlink是去中心化的预言机网络,也是防篡改的区块链中间件,可以在API接口和区块链网络之间传输数据。另外,Chainlink还是一个安全框架,可以确保API数据的可靠性,触发高价值应用自动执行。Chainlink是应用最广泛的区块链预言机解决方案,为高速发展的DeFi行业提供优质的金融市场数据。众多数据提供商已经集成了Chainlink,将数据卖给智能合约应用,比如为参数型农作物保险提供天气数据;为预测市场提供选举结果;为期权合约提供市场分析数据;以及为通证化的现实世界资产提供豪车对标数据。除此之外,越来越多的企业和DevOps团队也开始发布Chainlink节点,为链上智能合约提供现实世界的数据。

而AWS Chainlink Quickstart的发布进一步降低了进入混合型智能合约经济的门槛,并消除了所有技术壁垒。

接入所有区块链的统一网关

AWS Chainlink Quickstart拥有独特的流程,为数据提供商提供了面向未来的区块链战略,即:一键式访问所有新老区块链,包括所有公链和私有链。这个框架可以快速将所有数据提供商的API直接映射至Chainlink节点,节点可以对自己的数据进行加密签名,并广播至链上,直接销售给智能合约。因此,数据提供商可以轻松进入区块链生态,通过变现API接口获得额外收入,并且使用先进的数据签名工具,毫无争议地证明数据直接来自某个API,因此提高数据的可靠性。

AWS Chainlink Quickstart gateway to all blockchains
AWS Chainlink Quickstart为数据提供商提供了接入所有区块链的统一网关。

AWS Chainlink Quickstart可以覆盖Chainlink的现有节点运营商以及新加入Chainlink生态的传统企业和DevOps团队,快速搭建服务,执行新的预言机任务。这对于接入AWS中API的节点运营商来说尤其有价值,因为这其中包括了许多付费数据提供商和API服务。降低Chainlink节点接入新API的门槛,可以吸引更多付费数据提供商进入Chainlink生态。它们可以发布自己的Chainlink节点,也可以接入现有节点运营商。

AWS Chainlink Quickstart的基础架构

AWS Quick Starts是可供参考的自动化部署流程,利用AWS CloudFormation模板,基于AWS最佳实践,在AWS上部署关键技术。AWS Chainlink Quickstart参考基础架构基于这个框架开发而成,目的是减少部署Chainlink节点实例中的手动操作,只需几步就能完成。因此,可以保障Chainlink节点环境的可用性和安全性,只需几分钟就可以搭建完成。

使用默认参数部署AWS Chainlink Quickstart,可以在AWS Cloud上搭建以下Chainlink节点环境:

  • 可用性极高的基础架构,覆盖两个可用区(Availability Zones)。
  • 使用公共和私有子网配置的亚马逊虚拟私有云(VPC)。
  • 在公共子网中可以实现:
    • 互联网网关,可以接入互联网。
    • 托管网络地址转换(NAT)网关,允许私有子网中的Chainlink节点实例访问外部互联网。
    • Auto Scaling组中的Linux 堡垒机,允许内部使用Secure Shell(SSH)访问公共和私有子网中的Amazon Elastic Compute Cloud(EC2)实例。
  • 在私有子网中可以实现:
    • 两个Chainlink节点在一个Auto Scaling组中。
    • 一个Amazon关系型数据库服务(Amazon RDS)PostgreSQL 托管数据库实例。
  • 安全组,用于严格管理内部权限
  • 弹性负载均衡(Elastic Load Balancing,简称ELB),用于访问Chainlink节点的web GUI。
  • Amazon CloudWatch,用于记录Chainlink节点活动。
  • AWS密钥管理服务(KMS),用于AWS托管密钥以及用户自行托管密钥。
  • AWS Secrets Manager, 用户储存并保护Chainlink节点的身份认证。
  • Amazon DevOps Guru,使用机器学习追踪Chainlink节点技术栈。
AWS Chainlink Quickstart
AWS Chainlink Quickstart基础架构概览 

配置要求

在发布AWS Chainlink Quickstart之前,先使用AWS身份和权限管理(IAM)许可登录AWS管理主控台。确保你的AWS账户配置正确,并有权限访问上文列出的所需资源。IAM中的AdministratorAccess托管策略可以提供充足权限,但你所在的组织也可以采用更严格的自定义策略。

接下来,使用你想要搭建节点的AWS地区的Amazon Certificate Manager,创建一个密钥对和公有证书。运行区块链客户端,或使用你希望你的Chainlink节点接入的区块链网络的第三方客户端。如果是使用第三方以太坊客户端,你可以使用来自Infura或Fiews的websocket接口。如果是其他以太坊客户端,请查看《运行以太坊客户端》文档。

AWS Chainlink Quickstart为团队提供了两个部署方案,团队可以将Chainlink节点部署至新的VPC,也可以部署至现有VPC。

  • 将Chainlink节点部署至新的VPC。这个方案要搭建一个新的AWS环境,其中包含VPC、子网、NAT网关、安全组、堡垒机以及其他基础架构组建。然后就可以将Chainlink节点部署到新的VPC中。
  • 将Chainlink节点部署至现有VPC。这个方案是将Chainlink节点部署到现有的AWS基础架构中。要确保你的VPC在不同的可用区都搭建了两个私有子网。这些子网路由表中的NAT网关都需要允许实例与其他Chainlink节点展开通信,并且不接入互联网。

AWS Chainlink Quickstart为这两种方案提供了不同的模板。你还可以配置无类别域间路由(CIDR)区块、实例类型以及Chainlink节点设置。完成了所有这些步骤后,你就可以开始部署流程了。

部署操作步骤

登录你的AWS账户,并用导航条中的地区选择器选择你想要部署Chainlink节点的AWS地区。这个模板默认是us-east-1地区,但是这个参数也改成任何其他地区。接下来,选择以下方案中的任意一个来发布AWS CloudFormation模板。

将Chainlink节点部署至AWS上的新VPC。

将Chainlink节点部署至AWS上的现有VPC。

在创建堆栈集页面上,保留模板链接的默认设置,然后点击下一步。在指定堆栈集详细信息页面上,如有需要可以更改堆栈名称;查看模板的参数;并为需要数据输入的参数提供数值。查看所有其他参数的默认设置,如有需要可以自定义。除非你要为自己的部署项目自定义Quickstart的模板,否则请不要修改Quick Start S3 bucket nameQuick Start S3 bucket Region以及Quick Start S3 key prefix这些参数的默认设置。完成查看并自定义参数后,请点击下一步。

在配置堆栈集选项页面上,可以为你堆栈中的资源指定标签(key-value对),并设置高级选项,然后点击下一步。在查看页面上,查看并确认模板设置。在功能选项中,构选两个选项,表示知晓该模板会生成IAM资源,并且可能需要自动扩展宏。最后,选择创建堆栈集,部署堆栈并监控其状态。当状态变成“CREATE_COMPLETE”时,表示Chainlink节点部署已完成。要查看所创建的资源,可以在Outputs tab中查看堆栈数值。

部署后的操作步骤

AWS Chainlink Quickstart部署完成后,你就可以用以下两种方式,通过web GUI访问你的Chainlink节点:

  1. 如果你使用域名和AWS Certificate Manager创建的SSL证书,那么就可以通过应用负载均衡器接口,或通过在你域名的DNS记录中添加负载均衡器接口,来访问Chainlink节点的web GUI。
  2. 你可以在bastion host上启动TCP端口转发功能,就可以将Chainlink节点的web GUI端口转发到你的设备上。由于Chainlink节点可以通过bastion访问,因此建议大家使用SSH代理转发。然后将bastion接入SSH代理和TCP端口转发。你可以使用下方命令,在http://localhost:6688/上访问Chainlink节点的web GUI:
ssh-add <your_ssh_key>
ssh ec2-user@<bastion_host_public_ip> -A -L 6688:localhost:6688
ssh ec2-user@<chainlink_node_internal_ip> -L 6688:localhost:6688

如果Chainlink节点实例被停止,那么就需要创建新的 .env、.password以及 .api文件,以启动Chainlink节点。可以用以下命令创建.env文件:

cd /home/ec2-user/.chainlink/ && ./create-env.sh \
${chainNetwork} \
${blockchainNodeUrl} \
${psqlUser} \
$(aws secretsmanager get-secret-value --secret-id DBSecret --query "SecretString" --output text) \
${psqlHostname} \
${psqlPort} \
${psqlDb} 

可以用以下命令创建.password 文件:

cd /home/ec2-user/.chainlink/ && ./create-password.sh \
$(aws secretsmanager get-secret-value --secret-id WalletSecret --query "SecretString" --output text)

可以用以下命令生成.api文件:

cd /home/ec2-user/.chainlink/ && ./create-api.sh \
${apiUser} \
$(aws secretsmanager get-secret-value --secret-id ApiSecret --query "SecretString" --output text)

如果需要启动最新的Chainlink节点Docker实例,可以运行以下命令:

latestimage=$(curl -s -S "https://registry.hub.docker.com/v2/repositories/smartcontract/chainlink/tags/" | jq -r '."results"[]["name"]' | head -n 1)
cd /home/ec2-user/.chainlink && docker run -d \
--log-driver=awslogs \
--log-opt awslogs-group=ChainlinkLogs \
--restart unless-stopped \
--name chainlink \
-p 6688:6688 \
-v /home/ec2-user/.chainlink:/chainlink \
--env-file=/home/ec2-user/.chainlink/.env  smartcontract/chainlink:$latestimage local n \
-p /chainlink/.password \
-a /chainlink/.api

用这个Quick Start模板在AWS上部署了Chainlink节点后,务必要遵循最佳安全和可靠性实践,为智能合约提供可靠的外部数据资源。方案如下:

  • 故障转移:为了尽可能减少下线时间,Chainlink和区块链客户端都需要建立故障转移功能,万一有一个服务器出问题,仍然可以保障服务正常运行。亚马逊EC2 Auto Scaling组搭建了两个Chainlink节点:其中一个是活跃节点,一个是备用节点。来自Chainlink和区块链客户端的数据都储存在一个PostgreSQL数据库中,这个数据库需要保持高度的可用性。
  • 灾难恢复:为了应对突发状况,必须建立正确的流程,尽量避免系统下线。如果区块链节点被成功贿赂,并要求重新同步,就可能出现类似的情况。因此,建议执行:
    • 每日对Chainlink节点没有接入的另一个服务器上的区块链生成快照。
    • 建立区块链客户端启动流程,拉出区块链最新的模板,并同步至最新的区块高度。
  • 主动监控:必须要防患于未然,这就要求建立主动监控机制。建议监控的对象包括:
    • 节点钱包地址所要求的最低余额,余额用于支付链上交易费。
    • 运行出错的job。
    • 节点运营商的UI端口开放并且能够正常响应。(通常是6688)
    • 区块链http和websocket端口开放并且能够正常响应。(通常是8545和8546)
    • 区块链客户端硬盘、内存和CPU使用情况。
  • 配置文件:建议大家在成功运行Chainlink节点实例后立刻删除.env、.password和.api文件,以避免泄露敏感密码。

更多最佳实践,请查看Chainlink的《AWS上节点最佳实践》(Best Practices for Nodes on AWS)文档。

总结

Chainlink Labs很高兴能够与AWS合作,为数据提供商、传统企业和DevOps团队提供轻松可集成的节点基础架构。同时,我们还在探索其他与亚马逊托管区块链(Amazon Managed Blockchain)的集成,进一步降低Chainlink节点的部署和管理难度。这样可以让数据提供商将数据连通至高速增长的区块链市场,并提升数据价值,同时无需应对技术和专业知识方面的挑战。同样地,企业和DevOps团队也可以快速搭建新的Chainlink节点,并接入现有API,以面向多个区块链提供预言机服务。最终,各种有价值的数据将被传输到区块链上,并助力混合型智能合约应用的下一轮发展。

数据和API提供商可以利用Chainlink拓展其商业模式,并在去中心化的经济和社会体系中发挥关键作用。要了解更多关于AWS Chainlink Quickstart的内容,请查看下方文档: https://aws.amazon.com/quickstart/architecture/chainlink-node/

如果希望透过电话讨论集成事宜,请联系Chainlink专家。你还可以在Chainlink官方的Discord群提出技术问题,或关注我们的开发者文档,了解如何测试并运行Chainlink基础架构。详情请访问https://chain.link/

Need Integration Support?
Talk to an expert
Faucets
Get testnet tokens
Read the Docs
Technical documentation