Flow Community Rewards are here. Earn points for engaging in the ecosystem, spend points on prizes. Learn more.
开发者生态
2023年1月19日
Flow现在更具有性能、可扩展性、弹性和可访问性
维沙尔-昌格拉尼
Flow现在更具有性能、可扩展性、弹性和可访问性

Flow是一个开放的、去中心化的平台,提供区块链技术主流所需的速度、可扩展性、可持续性和安全性。 

Flow的愿景是在Web3上搭载数十亿的消费者。 要实现这样的目标,需要在节点软件层面、基础设施层面和治理层面打下坚实的基础。最近的Flow更新是朝着实现这一目标迈出的一大步。它引入了几个新功能,以改善网络的可扩展性、性能、弹性和可访问性,同时使其更加安全,并在NCC、CoinbaseCloud、BlueSign等Flow社区成员的帮助下,历时数月。

让我们逐一探讨这些重大变化,看看它们如何使福禄更接近于实现愿景。

交易完成的速度提高20%。

在包括区块链在内的任何高度分布式系统中,就共享状态达成一致是一项基本挑战。在Flow的情况下,产生协议(又称共识)的责任由共识节点承担,它们目前通过运行被称为HotStuff的共识协议来完成这一任务。虽然目前的实现方式为Flow提供了良好的服务,但它在性能和处理网络中某些共识节点故障的能力方面存在一些缺陷。

在这个spork中,Flow转而使用Jolteon协议,它是HotStuff(见)的一个大幅改进的衍生物。这个新的共识协议将使共识节点达成协议的速度提高33%,换句话说,最终确定区块的速度提高33%。Jolteon通过在快乐路径上只用两个子块(又称2链终结规则)来终结区块(而在最初的HotStuff中需要3个子块来终结,又称3链终结规则)来实现这个速度,直接导致区块终结速度提高33%。

对于一个交易被包含在一个最终的区块中,衡量为一个交易的最终时间,有一些额外的延迟,因为它必须首先由访问节点提交给收集节点,被收集节点包含在一个收集中,然后最后收集需要由共识节点使用共识协议包含在一个区块中。因此,新的实施方案将使交易的最终完成时间提高约20%。在一个交易被最终确定后,它仍然需要由执行节点执行,结果需要由验证节点验证,然后共识节点需要密封区块,其中包括交易。更快的最终确定意味着交易在管道中的移动速度更快,并将改善密封交易的时间。

新的实施方案目前也在testnet上上线,从下图可以看出,最终完成的时间有了很大的改善。

新的实现也将导致更少的孤儿区块,这应该会减少交易需要异常长的时间才能被纳入最终区块的情况。此外,Jolteon改善了Flow的审查弹性,即恶意节点试图将他们不喜欢的交易内容的区块变成孤儿(详见3链最终确定规则的"链质量 "分析,2链最终确定规则改善了这一点)。

提高区块链生产的复原力

新的共识实现也将对网络中的共识节点失效(离线)有更大的弹性,这在一个去中心化的分布式系统中是不可避免的。Hotstuff和Jolteon都是基于回合的算法,在每一轮中,有一个共识节点被指定为领导者,提出一个区块。如果领导者提出了一个有效的区块,那么其他共识节点就会对其进行投票;如果投票通过,该区块就会被接受为链的暂定扩展,下一轮就会有一个新的领导者。然而,如果一个回合中的领导者是离线的(或恶意的),其他节点只是等待领导者提出一个区块,浪费时间,直到他们超时并意识到领导者节点已经停机。新的实现引入了所谓的主动起搏器,帮助节点之间积极协调,并决定他们是否要放弃一个领导者,而无需大量的等待。这使得区块生产对共识节点的故障有更大的弹性。

这也有助于加快spork的进程。在过去,即使大多数共识节点在分叉后启动,它们也是不同步的,因为它们不是同时启动的,因此无法达成共识,导致链上没有区块产生,直到它们最终都同步起来。这导致了spork完成的延迟。有了主动起搏器的实现,即使节点不按顺序上线,它们也会更快地同步起来,因为它们可以更好地协调。

Active Pacemaker还允许在未来更积极地调整共识,以保持性能,即使有明显的一部分共识节点离线。此外,它还释放了一个完全拜占庭--容错的Epoch切换。

为将网络超量扩展到链上存储的PB级奠定了基础

Flow将成为10亿用户的家,它将通过最终支持PB级的链上数据而无需分片来实现这一目标--这是任何Layer-1都无法实现的壮举。

这个spork包括对执行节点堆栈的更新,这些更新是为了实现链上存储PB级的目标,以及乐观的并发交易执行。

这为两个主要的未来目标奠定了基础。

  1. 对存储层进行重构,将数据卸载到磁盘上,以实现PB级的链上存储,同时降低实际运行一个执行节点的内存要求,使任何规模的节点运营商都能更容易地运行它。
  2. 在一个执行节点上平行执行事务,以提高网络吞吐量的几个数量级。

目前这组变化已经将执行节点的性能提高了20%,从而使平均吞吐量达到400TPS。

通过早期账户验证加强对垃圾邮件的保护

这个spork为网络增加了垃圾邮件的保护,防止账户发送他们无法支付的交易。早些时候,如果提交的交易没有足够的资金支付费用,它就会执行,然后在费用扣除过程中执行失败,浪费了资源。现在这种情况已经改变,在执行交易主体之前会检查付款人的余额,以保护链的有效性,防止此类垃圾邮件攻击,并帮助Flow接近99.99%的SLA目标。

支持无权限访问节点

无权限访问节点即将到来,它将使任何想要独家非共享访问节点的dApp开发者能够运行一个私人访问节点。这一举措标志着过去几个月来为更新节点软件的一些核心组件以支持无权限访问节点建设所做的广泛努力达到了高潮。

最核心的是,这些变化包括更新网络层,使其更具拜占庭容错性(BFT),这样,如果网络中存在一个BFT节点,其他节点将拒绝来自该节点的流量。然而,它还包括对网络层使用的一些开源库提交一些修改,以确保使用这些库不会引入漏洞。

更新后的节点软件还接受了领先的web3安全审计机构之一--NCC的审计,并解决了审计中发现的问题。

有了这个,节点软件现在对来自可能作为无权限访问节点加入的旁观者的网络层攻击具有极大的弹性。

Cadence v0.30: 动态合同导入和账户收件箱

这个spork将把主网上的Cadence版本更新到v0.30。这个新的Cadence版本引入了两个主要功能和12个性能改进的变化。

动态合同导入

这个功能可以从一个地址动态导入合同,使得在Cadence中使用Solidity开发者常用的模式成为可能。这是对静态导入合同的一种替代,并提高了弹性,因为导入失败可以被更优雅地处理。

⭐ 这是一个由社区驱动和社区实施的Bluesign的功能。

用于能力引导的API

一个新的功能,简化了与其他账户在单一签名交易中的共享能力,取代了需要发送方和接收方都签署交易共享能力的旧模式。

提高了网络的可用性,今后的网络升级速度更快、更少。

一个分叉确实需要一些网络停机时间。为了提高网络的可用性,已经尽可能地优化了分叉过程。这一次的spork在60分钟内完成,但今后不涉及状态迁移的spork应该在30分钟内完成。如果一个spork涉及到状态迁移,那么它应该在大约45分钟内完成,这取决于迁移的类型(状态迁移是将现有数据转换到新数据模型的过程)。

然而,为了确保创新的步伐不会放缓,将引入两种新的持续部署方式--滚动升级高度协调升级

滚动升级将允许节点操作员在没有任何网络停机的情况下更新节点软件。高度协调升级也需要更新节点软件,但变化将在特定的区块高度生效,需要重新启动执行节点,这可能导致交易执行暂停几分钟。

虽然我们尽量避免停机,但这些即将进行的网络升级将使Flow的性能更强、更安全、更可靠。我们期待着继续与您携手合作,实现Flow的全部潜力。

向前走,向上走!🚀

[开始你的旅程 在流的基础上建设]