本文是关于容器化和分散基础设施的未来两篇系列文章中的第二篇。关于第一篇,请参阅此处

容器和SKALE-EVM:在SKALE网络中创建链

验证者节点由一个节点核心和128个虚拟化子节点组成。每个子节点都是一个Docker容器。在SKALE网络中,新的弹性侧链是通过对网络调用API创建的,API调用指定了链的大小、各种配置选项以及SKALE代币的存放,以允许供应网络资源。每个侧链的默认数量为16个节点。

SKALE侧链可以是小链、中链或大链。小链配有1/128的节点资源,中链的节点资源为1/8,大链则是完整节点(节点核心除外)。有效时间可以是6个月、12个月或24个月。

可配置选项包括网络规格、交易吞吐量、存储容量和增强的安全特性

代币存入网络创建新链时,SKALE管理器会从可用节点池中随机选择16个节点,其容量完全可以满足新链操作。同时相关合约会向每个节点发送信息,为新链创建适当的子节点。

其工作方式是SKALE管理器与节点内的SKALE管理插件连接,后者反过来通知Docker引擎启动SKALE EVM镜像并为链分配适当数量的资源。

类似于去中心化酒店预订系统

了解这一过程的方式与通过连锁酒店预订系统在多个地点预订一套房间没什么不同。预订系统在网络上显示房间可用性的全局视图,这样可以确定每个位置的可用性。他们可以看到哪些位置能够满足客户的要求 - 无论是单人房、小房间还是整个酒店。一旦确定了可用性,它就会发送一个请求来预订每家酒店的一个或多个房间。每家酒店都有责任确保在入住时房间是可用的,并且配套齐全。

其不同的地方在于,分配和选择都是通过以太坊主网上运行的智能合约在整个节点池中随机执行的。另外,子节点的选择是通过调用每个节点(通过SKALE 管理)创建子节点容器并配以适当的大小来完成的。

SCALE EVM镜像

虚拟化子节点本质上是由SKALE以太坊虚拟机(EVM)组成的,节点资源是根据节点大小(小-1/128、中-1/8或大-1/1)分配的。SKALE网络使用的EVM工具是ETH1 EVM版本(Github)(原cpp以太坊项目)。它是以太坊C++库和工具的集合,包括以太坊客户端“ethereum/aleth”。

SKALE-EVM与标准ETH1-EVM之间唯一区别在于,标准EVM中的共识算法已从工作量证明算法改为基于ABBA的权益证明算法(ABBA支持异步二进制拜占庭协议)。

值得注意的是,共识算法是与EVM中的其他元素松散结合的,所以可以替换不同的算法(这种情况下选择的是一个性能更高的权益证明算法),但所有保证以太坊网络成为可信网络的安全和加密措施仍会保留。(注意,SKALE在设计上也可以使用其他共识算法,但它们必须满足某些特性,使SKALE链在该领域具备前所未有的灵活性和适应性。)

SKALE网络使用了基于容器的方法,所以能够轻松、安全地支持EVM可用新版本。EVM虽然更新并不是那么频繁,但是需要更新时,主网也会要求能够相对快速地完成转换。注意,Solidity语言会编译到EVM中,所以对Solidity的任何更改通常都会反映在EVM的下一次升级中。

虽然dApps使用最EVM新版本好处很多,但通过Docker和容器在SKALE网络中也可以使用EVM旧版本。(有关操作方法问题,请咨询SKALE网络支持团队。)

随机节点选择和频繁节点轮换下的网络安全

传统的侧链通过使用较少的验证者节点来提高性能和缩短交易时间,但对交易的完整性却不能保证(较小的节点集更容易造成串通和行贿事件)。SKALE网络会通过使用池验证模型来消除这种安全风险。该模型会利用大量验证者节点通过将随机节点分配与验证者集之间频繁节点轮换相结合方法来保证安全势。所以每个独立的侧链都会受到整个网络资源的保护。

验证者节点通过由以太坊主网合约规定的随机选择功能分配给弹性侧链。链共识的安全性是通过频繁的节点轮换来保证的。添加新节点前,旧节点会从一个或多个非确定性计划的链中去除。

使用容器对节点轮换的方式作用很大。节点是在侧链运行过程中轮换的,所以虽然它可能不像在飞行过程中更换飞机喷气式发动机那样复杂,但轮换时确实需要遵循当前子节点和新子节点之间的规划和合作。

SKALE链中的节点会规律性和随机性地轮换,从而代表每个链利用整个网络的安全池

一个新节点一旦由SKALE管理器完成分配,就会被设置成子节点(即SKALE EVM容器)。当前子节点的Linux btrfs快照会保存在子卷存储中,然后再传到新子节点上。由于链仍然在运行,新区块也在创建,所以需要一些捕获过程来完全同步节点。操作完成后,新子节点会取代验证者集中的旧子节点,而交易也会被发送到新节点而不是旧节点。

类似于在曲棍球比赛中替换球员

在SKALE网络侧链中查看验证者轮换的方法与曲棍球比赛中替换曲棍球运动员的方式类似。在比赛过程中一个球员停止滑行,另一个球员则接替其继续滑行,不需要暂停比赛。不同的是,新子节点是旧子节点的精确克隆。新子节点在可用节点池中可以随机选择。

容器(和虚拟子节点)的使用效果明显

考虑到云计算和传统虚拟化系统的发展和效果,使用容器作为创建弹性和虚拟化子节点结构的决定并不令人惊讶。令人惊讶的是容器在去中心化网络中展现出来的优势和未来的潜能。

SKALE网络开发和网络支持团队是非常了解这些优势的,因为他们已经推出了越来越多的侧链,并且了解了可组合性、灵活性和适应性在构建、开发和使用弹性侧链中所起到的积极作用。容器的使用解决了SKALE网络首次面市时会遇到的严重短板,帮助核心团队提高了快速开发和创新以及增加新功能的能力。

然而同样重要的是,容器的使用使SKALE网络能够保持甚至超过网络所建立的服务保证。启动了数千个侧链,生成并轮换了几万个虚拟化子节点之后,使用容器的效果就非常明显了。这是一项关键的赋能技术,是SKALE网络的基础要素。它会成为目前创建高效安全网络的一种手段,让网络未来几年和几十年内的能力和功能得到进一步地提高。