Coinbase的区块链基础设施

Coinbase的基础架构团队的目标是使公司的任何工程师能够快速安全地访问和部署复杂的基础架构。这项工作始于我们的安全部署管道Codeflow,由我们的编纂工具扩展GeoEngineer,并由我们的区块链基础设施项目Snapchain使用。

最近在AWS re:Invent 2018上,我们讨论了如何使用Snapchain构建区块链基础设施(上面的视频)。这篇文章讲述了我们为什么以及如何构建Snapchain。

Coinbase具有一些独特的安全性和基础架构要求。其中一个要求是我们基础架构中的每个服务器都是短暂的(
<30天)和不可变的。大多数应用程序的部署过程相当简单:12个因素应用程序在负载均衡器后面部署蓝色/绿色。在考虑区块链节点时,这个过程变得更具挑战性。

区块链节点通过网络检测,验证和中继状态更新 – 它们是我们的眼睛&amp;进入我们支持的各种加密货币网络。当有人向Coinbase发送资金时,我们通过收听节点来检测该交易,当有人从Coinbase发送资金时,我们通过其中一个节点广播该交易。因此,能够有效管理区块链节点对我们的核心业务运营至关重要。

高级别区块链部署的解剖结构如下。

我们从一个EC2实例开始。一旦实例启动并准备就绪,我们就可以启动节点二进制文件。




在EC2上清空(新)节点旋转。

节点启动后,它会联系到网络上的其他节点。




新节点到达网络并找到要与之对等的其他节点。

网络上的其他节点具有完全同步的链副本,并将开始向网络发送块。




这些节点上有特定链的副本,假设它们完全同步,将开始沿着线路发送块。

传输第一个块,新节点验证它。




新节点获取一个块并验证它。

进一步的块被发送到新节点。




然后节点获得另一个块,因此。

所有块都被传输,验证,现在完全同步。




直到所有块都已传输,验证并完全同步。

完整节点通常在磁盘上维护区块链的完整副本。通常,这相当于需要通过网络同步的数百GB。根据特定的链和实现,可以采用完全同步!考虑到加密货币生态系统的发展速度,我们基础设施的安全性和可靠性限制,以及偶尔的节点升级紧迫性,每次部署时网络的完全同步对我们来说不是一个可行的解决方案,我们能够安全地移动很快。因此,我们设计了一个名为Snapchain的新区块链节点备份和部署系统。




EC2上geth节点上的磁盘使用率显示952GB的使用率。

Snapchain启动两种类型的区块链节点 –快照节点完全同步链并以EBS卷的形式生成副本长寿命节点使用这些EBS卷在几分钟而不是几天内完成部署。 Snapchain使我们能够灵活地按照我们喜欢的方式快速部署区块链节点,以响应版本升级,网络中的事件或针对新类型的配置进行开发。

如果您对这两种配置如何工作的一些细节感兴趣,您可以观看视频(开始22:08)。

AWS上的Snapchain部署使我们能够扩展以满足我们的工程师使用网络负载均衡器(NLB)的需求。这些NLB使我们能够拥有静态IP,扩展以满足需求,并执行蓝/绿部署。

从一个版本到另一个版本的典型部署(示例显示:1.0.01.1.0)工作原理如下。

一个节点位于NLB后面,带有链的二进制,我们的API用于与节点连接,以及一个带有同步链的数据卷。




当前活动部署,单个节点位于NLB后面。

实际上,通过将节点放置在多个可用区(AZ)中,可能有多个节点用于冗余。




当前活动部署,其中有多个节点位于NLB后面。

启动新实例并遵循先前在区块链的解剖结构中描述的流程。




启动了新实例并进行了同步。

一旦新实例准备就绪并且健康,它就会被添加到NLB中。




新实例现在位于NLB之后。

一旦一组检查通过,新版本就可以切换,使用NLB可以轻松实现。




支票通过,NLB被切换到新版本。

最终的部署状态就像我们开始时的实例一样在NLB背后。




显示新版本的最终部署状态。

此外,Snapchain是与区块链无关的基础设施。主要设计目标之一是最小化区块链特定代码和基础架构的数量。这样做可以让我们更快地添加新的区块链节点。




显示比特币在13分钟内部署。

您是否有兴趣使用Snapchain和类似的产品?我们像疯了一样招聘!无论您是对加密货币感兴趣还是经验丰富的区块链开发人员,请查看coinbase.com/careers看看是否有东西引起你的兴趣。我们有几个空缺,包括一个职位高级基建工程师。我们只是触及了数字货币可以做什么的表面。来帮助我们建立一个开放的金融体系。

除非另有说明,否则本文提供的所有图像均为Coinbase。

发表评论