Development 卡尔达诺研发重要里程碑 Cardano 1.5

huangwenwei · 2019年03月23日 · 488 次阅读
本帖已被设为精华帖!

这篇文章发布的时间点处于雪莱 (Shelley) 版本在主链过渡阶段的工作开展之初,Cardano 首席技术架构师 Duncan Coutts, PhD 对上一版本拜伦 (Bryon) 的总结。

Cardano 1.5 的发版标志着项目开发进度正式从拜伦切换到雪莱版本,借此契机披露雪莱版本接下来的开发安排以及主网正式升级过渡期间必要事项。

大约在六个月前我们把重心切换到雪莱版本 code base的研发并取得了巨大的成果。Cardano 1.4 版本已经实现拜伦 code base 最后一项重要的工作,1.5 的更新主要是实现主网平稳升级到雪莱的依赖的中间阶段。

雪莱到 code base 基本是一个全新的重构代码,不仅是拜伦版本的扩展。着手雪莱版本开发过程中,我们对 code base 模块进行解耦和整个系统重建,包括新的 staking 和 delegation 功能。具备完整的系统功能之后,我们对拜伦阶段的“半正式软件研发模式”遗留的系统架构设计的完整补充,其实这也是我们项目管理规划时设计系统迭代开发模式。

值得强调的是,我们已经完成拜伦和雪莱版本验证区块链账本的学术论文,并在接下来的四月份的 IOHK 峰会上具体披露。一旦研发工作完成,我们就有依据验证代码和理论是否相符。这种方式对区块链系统实现质量的高规格把关是业界首例。

无缝升级

因为不仅在协议规则层面有重大改变,且 code base 也有较大的更改,主网从拜伦到雪莱的升级必须要非常谨慎。我们必须竭尽全力确保主网升级过程尽可能平滑稳定。

也许社区期望一次硬分叉就可以完成雪莱的更新,事实上更新到雪莱版本过程中我们预先设定将会有两次硬分叉。需要强调的是虽然这是技术上的两次硬分叉,但这又区别于以往其他公链的硬分叉,主网上线雪莱之前的两次硬分叉不会导致主链的生态遭到破坏 (It is worth emphasizing that while these are technically hard forks, they will not be disruptive in the way hard forks often are),比如出现 Bitcoin core 和 Bitcoin Cash 的硬分叉。这些改变是我们预先已经设计的更新流程,并不存在破坏性。对于 Daedalus 钱包用户来说,这跟以往的软件更新没有区别。

在两次的硬分叉中我们将进行一次更新,部署雪莱版本几周之后将会激活的规则。这种方式避免了硬分叉带来的破坏:节点更新在硬分叉之前,硬分叉时控制不容许有软件更新,一旦所有节点都准备好,我们才会稳定地激活新规则。

常规更新和硬分叉的唯一区别在于:软件更新发版和账本的规则是否强制绑定同时激活。对于 Daedalus 钱包用户而言,提示新版本发布时及时更新电脑上的 Daedalus 钱包即可,交易所和第三方钱包开发在接下来几周的时间窗口必须手动更新。

为什么需要两次硬分叉?

从技术角度分析,如果我们设定一个中间过渡阶段,主网从拜伦到雪莱的迁移会更顺利。第一次硬分叉会把主网切换到过渡阶段,第二次硬分叉从中间阶段切换到正式的雪莱主网。拜伦阶段使用 Ouroboros Classic 共识协议,雪莱阶段使用 Ouroboros Genesis 共识协议 (Ouroboros Praos 协议的扩展)。这些协议都非常复杂。全节点的实现要准确地维护分叉前后账本就必须要实现分叉前后的不同协议规则。如果省略我们设定的中间迁移版本,主网直接从拜伦更新到雪莱,全节点必须做到同时识别 Ouroboros Classic 协议和 Ouroboros Genesis 协议,同时还要兼容账本的其他协议规则,我们评估过这其实是一种异常复杂的实现。

不仅于此,拜伦版本一部分复杂 Ouroboros Classic 共识协议模块需要复制到最终的共识协议中,确保共识算法的完整性。因而在中间过渡阶段,我们实现了 Ouroboros BFT 共识协议,一种简单版本的 Ouroboros 协议。这就意味着拜伦的code base只需确保 Ouroboros Classic 和 Ouroboros BFT 协议互通,且雪莱code base只需确保 Ouroboros BFT 和 Ouroboros Genesis 共识协议互通。这就意味着拜伦的code base和雪莱的code base不需要相互识别各自的共识协议,同时也避免新的雪莱 code base 对拜伦实现的 Ouroboros Classic 共识协议细节进行重复实现,从而真正地降低软件的复杂性——复杂性是研发的敌人。

过渡阶段

Cardano 1.5 的发布意味着拜伦的 code base 开始识别和兼容 Ouroboros BFT 共识协议,于此我们就具备了几周后顺利实现第一次硬分叉的条件。首次硬分叉完成后主网进入了使用 Ouroboros BFT 共识算的过渡阶段。过渡期间运行一段时间过程中我们继续部署新的 code base,这些代码将会在雪莱发布时被使用。

在过渡时期,测试网络启动 delegation 和 staking,测试网络首先会运行测试雪莱的部分协议规则,修复测试网络遇到的问题和雪莱剩余协议规则完整实现,最终测试网络会运行完整的雪莱版本协议规则。

一旦我们实现了雪莱版本的全部协议规则,然后我们就可以在主网上部署新的code base,稳定运行几周后激活第二次硬分叉,以此我们主网正式进入雪莱阶段。

总而言之,Cardano 1.5 实现了很多重要的新功能和 Daedalus 钱包得以改进。更让我们激动的是其标志着这是拜伦版本迭代的结束并启动雪莱版本更新前的过渡阶段。

翻译来源 https://iohk.io/blog/cardano-reaches-development-milestone/

共收到 0 条回复
1楼 已删除
2楼 已删除
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册