Vasil硬分叉--从dApp构建者的角度来看

简介
像其他区块链一样,Cardano也在不断发展,而链上的进化往往是通过硬分叉来实现新的或更新的功能。

在Cardano上,这些事件每年发生几次,并且通常以重要人物命名。下一次的硬分叉被命名为 “Vasil硬分叉”,就快到了,许多人都在热切期待。这一重要步骤引入了一系列的新功能,将提高Cardano的性能、吞吐量和可扩展性。反过来,与区块链互动–或建立在区块链之上的交易所和DApps也将受到影响,因为一些变化将不会向后兼容。

这篇文章的结构分为四个部分:关于硬分叉的背景信息(和硬分叉组合器,Cardano在硬分叉事件中使用的独特技术),Vasil更新中包括什么,开发人员和其他链应该期待什么,以及Vasil实施后SundaeSwap社区的选择。

硬分叉
有许多定义漂浮在那里,但最简单的是:硬分叉是对区块链协议的彻底改变,通常(但不总是)导致创建两个分支(“分叉”),基本上是两个区块链。在硬分叉事件中,一些在分叉前有效的交易可能在升级后的分叉中变得无效。正因为如此,硬分叉要求所有网络节点升级到新的协议规则。这些变化可能是激进的,但硬分叉是比较常见的。

一个区块链可以经历多次硬分叉。例如,比特币已经有四个主要的硬分叉事件。Segregated Witness(SegWit),比特币经典,比特币现金和比特币黄金(2015年的SegWit,2016年的经典,2017年的现金和黄金),加上无数其他的小分叉。

同时,以太坊也经历了多次硬分叉。值得注意的是,以太坊的主要分叉事件之一是由现在臭名昭著的2016年DAO黑客事件引发的,导致网络分裂。这次分叉是为了将被盗的以太坊(全部6000万美元)归还给它的所有者,这多少有些争议。这是通过回滚以太坊链来实现的,这有效地创造了一个新的分叉:以太坊经典。那些拒绝接受硬分叉(以及将资金归还其所有者)的人坚持使用经典版。其他人都转到了以太坊链,至今仍是主要的加密货币玩家之一。

Cardano的硬分叉组合
硬分叉事件通常被认为是 “创伤性的”,因为它们会对链上的活动造成重大干扰。有时,网络必须完全停止一段时间以实施新的代码库。没有迅速升级的节点会拒绝新的规则;DApps可能会出现意外的行为或完全停止工作;等等。不管是什么触发了分叉,不管它是有计划的(如Vasil),还是发生在对敌对行为的反应(如DAO黑客),硬分叉都不是一件小事。它们需要非常仔细的规划、测试和实施。

Cardano的开发者所持有的一个核心原则是 "平稳 "的代码更新的重要性。因此,他们想出了一个巧妙的方法来 "软化 "硬分叉对其链的影响,并消除与这些链上事件相关的 “创伤”:硬分叉组合器(HFC)。这项技术的作用正如它所描述的那样:它将两个协议合并为一个单一协议。Cardano的工程师将此称为 “顺序组合”。在实践中,在分叉事件之后,链上的人在切换到更新的协议之前会先运行一段时间的原始协议。

这就是HFC的独特之处。由于区块生产没有停止,所以链上没有中断,导致了协议之间的平稳和优雅的过渡。作为一个比喻,把Cardano区块链的演变看作是一场接力赛,每一次硬分叉都代表着一个跑者把接力棒交给下一个跑者的时刻。而在几个时刻,两者都是完全同步运行,以确保接力棒交接的顺利进行。然后,接力跑者起飞。在Cardano,这些活动每年都会发生几次,因此经常被赋予特定的名称。下一个即将发生的事件是 "Vasil "硬分叉。

瓦西尔的更新带来了什么
Vasil从7月4日20:20 UTC开始在测试网上运行。测试网的部署实现了两件事:监控链上代码行为,并为最终的整合过程做准备。它让项目开发者、股权池运营商(SPO)和交易所有时间在7月29日计划的主网部署之前,在新的分叉上测试他们的代码。

Vasil代表了Cardano的一个非常重要的更新。根据官方博客文章,这次更新将通过几个机制为Cardano带来更多的功能、性能、可扩展性和互操作性,包括扩散管道和四个Cardano改进提案(CIPs),CIP-31、CIP-32、CIP-33和CIP-40。我们将在下文中逐一解释。

扩散管道改善了区块传播的时间,从而实现了更高的吞吐量。从本质上讲,流水线简化了块的验证和传播方式–目标是在块创建后的五秒内将其传播到整个网络。管道化通过允许在完全验证之前传播一个块来实现这一目标。

参考输入(CIP-31)–基准点只是一个信息。在Cardano使用的扩展未用交易输出(eEUTXO)模型中,交易的每个输出都带有(哈希值)一些数据。在Vasil之前,这意味着一个脚本要 "看到 "一个数据,它必须作为交易的输入之一被花费。这反过来又只允许一个交易在同一时间使用该数据集。整个过程的效率非常低。

参考输入功能可以查看未使用的输出中所包含的信息,而不必实际使用它。这使得许多交易可以并行地读取和利用这些数据。

这也简化了一些交易,因为dApp不必担心在每个交易中正确地 "重新创建 "数据集。

内联数据集(CIP-32)–内联数据集功能允许数据集的内容直接存储在输出上,而不只是哈希值。这大大简化了链外代码的工作,因为它不再需要独立地存储正确哈希到它需要花费的输出的基准。

参考脚本(CIP-33)–脚本的大小带来了某些问题。在每个交易里面传递整个脚本,会消耗dApp开发者必须遵守的已经很紧张的预算的很大一部分,用冗余的数据膨胀链,痛苦地限制整体链的吞吐量,并产生更高的(同样不必要的)交易费用。交易的大小可以被限制以保护链,但这限制了dApp开发者可以实现的目标,并影响Cardano终端用户的体验。

参考脚本通过将一个脚本直接附加到一个输出(很像一个基准点),并从一个单独的交易中参考该脚本来解决这些问题。这使交易能够在验证期间查找(或 “参考”)这些脚本,而不是让交易一次又一次地传递整个脚本。

image

包含参考脚本意味着使用参考脚本的交易携带的数据更少,这使得这些交易更小。这反过来意味着dApp开发者可以实现更多的功能,交易的处理速度更快,从而更便宜。这大大降低了用户的交易费用。

参考脚本将允许dDApps支付一次链上存储成本并重复使用。

抵押品产出(CIP-40)–提交Plutus交易需要抵押品(设定为交易费的150%),以避免可能的分布式拒绝服务(DDoS)攻击。在Vasil之前,如果一个恶意的或有漏洞的DApp或钱包提交的交易没有通过第二阶段的验证(更多关于第一阶段与第二阶段的验证,请参阅这篇伟大的文章),用户将失去所有存储在抵押品UTXO的资金。这些资金将用于 “费用罐”,以补偿SPO和委托人在检查无效交易时浪费的资源。

在Vasil之后,开发者将能够指定一个地址来接收抵押品的变更,因此,即使交易没有通过验证,也只有抵押品的金额被拿走,而剩余的资金将被发送到指定的变更地址。

可验证的随机函数(VRF)过程增强–在Vasil之前,块验证需要每个网络跳的两个VRF函数。更新后,区块验证只需要一个VRF函数,这将导致更快的验证。

Plutus V2。在Vasil中引入的对Plutus V1的更新
Vasil的更新包括对Plutus V1脚本的三个具体改进,为了简洁起见,我们在这里只简要地列出。

Plutus评估器的速度改进
更新了成本模型参数
其他输入的基准和赎回者
Vasil更新后的预期效果
Vasil–为纪念2021年去世的Cardano大使Vasil St. Dabov而命名–对Cardano来说是一件大事,因为所引入的新功能和升级的范围和影响都很大。用IOG的话说,Vasil是自通过Shelley部署钉子以来最重要的网络升级。

更新之后,Cardano将变得更加可扩展和灵活,以便开发者创建更新更好的DApps,以适应更多的使用情况。

一个常见的问题是,硬分叉和它带来的新功能将如何影响已经部署的DApps。简单的答案是,不会:Cardano区块链仍然向后兼容,仍然可以像以前一样执行这些交易。

当然,更细微的答案也是更有趣的。首先,虽然现有的合同将继续工作,但它们将无法利用新的功能:例如,任何使用参考脚本或内联数据的交易,必须只包括由Plutus V2脚本锁定的资金。这意味着这些新功能没有改变旧合同的安全保障的风险,但也意味着dApp开发者将不得不改变他们的合同以从中受益。我们预计,这很可能需要一个新的审计,例如。

此外,虽然链上代码不受影响,但许多dApps与 "链下 "系统携手合作。这些系统会做一些事情,如构建交易,或对dApp的全球状态进行统计。dApp的链外代码需要更新,以识别和正确解释新的硬分叉后交易格式。根据dApp的情况,这可能很简单,也可能非常复杂,而且往往有多个组织需要协调。在SundaeSwap,我们一直在努力工作,并认为概述其中的一些工作可能是有趣的,并让人们看到每个dApp开发者和生态系统建设者可能在做什么。

Vasil是如何影响SundaeSwap的
如上所述,链上合约(dApp中最安全敏感的区域)不受影响。下面是一些需要更新的链外系统的样本。我们已经不得不

  • 更新 “Ogmigo”,我们用于从Ogmios读取数据的Go客户端库,以识别新增加的字段。
  • 更新我们的交易结构,以创建有效的后Vasil交易,而不影响脚本的编译和改变脚本的哈希值
  • 更新Scooper软件,以解决Cardano-node在查询UTXO方面的性能下降的问题。
  • 更新许多我们查询交易输入值的地方,这些地方现在可能指向一个附带的输出
  • 对所有与统计滚动和收益耕作有关的代码进行全面审查,以确定我们的假设现在可能被违反的地方。
  • 彻底测试所有这些变化

此外,虽然目前部署的合同不能利用节约和可扩展性的改进,但我们已经在研究新版本的合同。这仍然是早期阶段,但这项工作包括一些戏剧性的改进和我们自推出以来发现的新想法,并且旨在一旦完成、完全审计和发布,就充分利用Vasil的功能。当我们在开发周期中进一步发展时,我们会有更多的细节。

Vasil硬分叉将为我们新生的生态系统带来一系列不同的改进。这将是第一个与不同的DeFi合作伙伴合作进行的Cardano硬分叉,因此是展示Cardano独特的发展和创新能力的一个关键里程碑。我们很高兴能成为其中的一部分,并为能成为反映我们共同的Cardano精神的谨慎、有条不紊的方法的一部分而感到自豪。