2021-02-25 02:40 | 出处: Nervos
有时候人们会很疑惑,为什么在 Nervos 网站上找不到名字华丽的里程碑,而只有一个「2020 年路线图」?于是怀疑 Nervos 是不是真的有长远的计划,甚至怀疑在 2020 年后团队是不是会「把项目还给社区」?事实恰恰相反。我们相信 2019 年 Nervos 主网上线只是一个漫长旅程的开始,我们已经做好了充足的准备。
想出一些很酷的里程碑名字很容易,但是如果这些里程碑在几年后仍然有意义的话,那么要跟上它们的步伐就很难了。提前计划好一切,朝着一个固定的目标努力(软件工程中所谓的瀑布模型),在不断变化的环境中是行不通的。而在加密领域中,这是 200% 的真理。每天我们都能看到新想法的出现,新项目的推出,每天我们都会互相学习,任何计划在 3 个月后就会过时(也许我夸张了一点,可能是 6 个月)。那么,今天为 2077 年设立里程碑的目的又是什么呢?有人说过:「模糊的正确胜过精确的错误。」
所以我们用了另外一种方式,我们称之为 Nervos 之道。Nervos 是一个运行在许多协议之上的网络,它不是一个单一的区块链。我们对使用区块链技术后的世界有一个大致的想法,我们希望确保 Nervos 协议栈能够支持这一愿景。我们把最重要的东西保留在 Layer 1,使它成为稳定和安全的最小基础,把其他的东西留给 Layer 2 或更高的层。这种分层为 Nervos 带来了极大的灵活性,因为在 Layer 2 上更容易尝试各种想法和探索不同的方向。这意味着,随着我们对未来了解的越来越多,Nervos 可以与整个行业一起发展。
我们一个大致的长期目标是在 2024 年之前能够完成 Nervos 协议栈的全部设计和实现。根据我们的估计,Layer 1 和 Layer 2 的设计空间很有可能会在 2024 年之前稳定化,我们可以确信自己在 Nervos 协议中不会遗漏任何东西;2024 年也是 CKB 第一个四年减半后的第一年,与之相匹配的感觉很好。2024 年的目标虽然雄心勃勃,但如果我们足够大胆地享受「四年冲刺」,这还是可以实现的。在 2024 年之前,在我们专注于短期任务的同时,我们会不断地去看别人的做法,并从新的事物中学习,相应地调整我们的计划。每年年初,我们都会根据去年的经验来规划下一年的计划,并向 2024 年的目标前进。通过这种方式,我们可以让自己和 Nervos 保持灵活,更能适应不断变化的未来。
接下来,是时候规划 Nervos 2021 的技术路线图了。
Layer 1:CKB
第一个硬分叉
进化意味着变化,有时甚至是彻底的改变。硬分叉是给 Layer 1 带来突破性改变的一种直接方式,我们计划在 2021 年对 CKB 进行第一次硬分叉,包括 Nervos RFC(https://github.com/nervosnetwork/rfcs) 提出的升级。这些建议可以让我们能够以很多不同的方式改进 CKB:
CKB VM 变化背后的一个主要原因(除了 Bug 修复)是减少开销。CKB VM 已经是本地 CPU 上的一个薄抽象层。有了硬分叉,我们确实想把抽象层做得更薄:RISC-V B 扩展让我们可以直接将 RISC-V 指令映射到 x86-64 cpu 提供的本地指令上,而 macro-op fusion 则更深入地利用了我们 CPU 中的现代微架构。所有的这些努力都是为了让加密算法能够更有效地在 CKB VM 上运行,从而解锁更多 Nervos CKB 的潜在用例。
协调硬分叉从来都不是一件容易的事情。我们会尽最大努力与社区进行充分沟通,确保稳定而优雅的升级。
轻客户端
虽然我们花了很多精力来降低全节点运行的门槛,但同步整个链所需的时间、网络带宽和磁盘存储量还是会随着链的长度而线性增长。全节点为我们提供了一个无需信任的选择,但是这种安全级别对一些用户来说可能太高了。如果能有一个更平衡的选择来满足日常使用,那就再好不过了。轻客户端正是为这样的需求创建的。轻客户端可以让用户用最少的带宽和存储与 CKB 进行交互,它还可以帮助 Nervos dApp 在更多的平台上运行,比如移动设备。
去年我们已经测试了一个基础的轻客户端协议设计。2021 年,我们会完成这项工作,并发布版本。我们会构建工具并与 Neuron 整合。基础轻协议仍然会下载所有的区块头,如果我们成功地将 Flyclient 添加到硬分叉中,并切换到更高级的轻协议里,这可能会大大减少同步时间、网络带宽和磁盘存储量。
Layer 2
Godwoken & Polyjuice
Godwoken 是一个基于 Nervos CKB 的 Layer 2 Rollup 框架。它为 CKB 提供了扩展能力,以及基于账户的编程模型。
搭配着 Godwoken,Polyjuice 在 Nervos CKB 上提供了一个 Ethereum 兼容层。它利用 Godwoken 提供的账户模型以及可扩展性,然后集成 evmone(https://github.com/ethereum/evmone/)作为运行 Ethereum 智能合约的 EVM 引擎。Polyjuice 的目标是 100% 兼容 EVM,这意味着我们计划支持以太坊最新硬分叉版本所支持的所有智能合约。
Godwoken 与 Polyjuice 都已经部署到 Nervos CKB 的测试网环境中。2021 年,在 Godwoken/Polyjuice 通过审计之后,我们会将它们部署到 Nervos CKB 主网中。除此之外,我们还将引入更多的增强功能到 Godwoken 中:
Axon
Axon 是一个基于链的 Layer 2 协议。它不是 Rollup,因为它没有使用 CKB 作为数据可用性层。在 Axon 中数据可能不可用,我们希望用不同的假设和设计来解决这个问题。我们之前也做过几轮 Axon 协议设计,但直到去年才有了令人满意的结果。经过了 2019 年和 2020 年,我们从合作伙伴那里了解到了更多的真实需求和痛点,我们相信这些经验会帮助我们做出正确的取舍,并为 Axon 带来更好的安全模型、治理模型和代币经济学。目前,我们仍然还在研究协议。希望我们可以在 2021 年完成设计并将其转译成代码。
支付通道网络
通道网络是 Layer 2 原生代币的另一面(与基于链的协议相比)。2020 年,我们从通用的支付通道(GPC)开始研究,探讨了 HTLC 的通道同步(https://talk.nervos.org/t/a-discussion-on-lock-time-of-multi-hop-payment-in-payment-channel-network/5124)、UDT 的支持(https://talk.nervos.org/t/idea-about-the-composability-of-assets-in-ckb/4855)、监视塔(watch towers)、付款的路由问题和拆分付款等话题。我们建立了一个原型来测试这些想法,并在去年进行了多次设计迭代。原型和讨论表明,CKB 上的支付通道网络不仅是可能的,而且比比特币和以太坊上的支付通道网络更加强大。通用支付通道的可组合性意味着可以在 CKB 上毫不费力地对 UDT 进行「通道化」!UDT 不仅是 Layer 1 上作为「一等公民」的资产,也是 Layer 2 上的「一等公民」资产,因为它们可以在各层之间流入和流出,且无需进行任何修改。这就给支付通道网络带来了最大的流动性,因为 Layer 1 的所有资产都可以毫无摩擦地加入 Layer 2 的资金池中。
我相信,一个支持 UDT 的支付通道网络将创造出前所未有的新应用案例。伴随其巨大潜力的是通道网络的高度复杂性,希望我们能在 2021 年完成初步的设计,并在主网上建立起一个小型但可用的支付通道网络。
xUDT
如果说 sUDT 是「Nervos 上的 ERC 20 代币」,那么 xUDT 将会是没有同类竞品的东西,因为它具有强大的可扩展性。xUDT(可扩展的 UDT)扩展了 sUDT(https://github.com/nervosnetwork/rfcs/blob/master/rfcs/0025-simple-udt/0025-simple-udt.md),为 UDT 可能需要的额外行为提供了空间,例如合规性要求和治理。xUDT 更像是可扩展的框架,就像 Chrome 浏览器一样,我们可以为其创建各类扩展。xUDT 本身并未指定或实现任何具体的 UDT 行为。当你想创建一个新的 UDT 时,这些扩展可以以一种灵活的方式组合和使用。与 sUDT 一样,我们将提供一个 xUDT RFC,审核通过后默认部署在主网和测试网上。
工具
CKB 与现有的智能合约区块链有着根本性的不同,因此它遇到了每个新平台都会遇到的共同问题:缺乏工具。这也是为什么我们在 2020 年初致力于开发工具,并日以继夜地进行工作的原因。随着各类 CKB SDK、ckb-indexer、ckb-x64-simulator、lumos、Capsule、animagus、mandrake 等一系列工具的发布,开发应用的门槛降低了很多,我们可以看到有很多开发者已经开始使用这些工具在 Nervos 上搭建应用了。2021 年,我们会继续改进现有的工具,并给大家带来一些新的工具。
Tippy
Tippy 是 Nervos CKB 上一套完整的 dApp 开发套件。它旨在提供所有在 CKB dApp 开发中能派上用场的工具。Tippy 的功能列表,包括:
Tippy 的第一个稳定版本计划于 2021 年第一季度末发布。2021 年,我们将继续完善 Tippy,为开发者提供更好的体验。
aML
aML 是一种新的编程语言,用于编写 Nervos CKB 的智能合约。aML 这个名字是「aML is a ML」的递归缩写。尽管 aML 提供了一种现代编程语言,具有许多便捷功能(静态类型、模式匹配、垃圾收集器以简化内存管理),但其中有一个功能在智能合约的编程中特别有用——形式验证:不仅该语言在设计时内置了一流的、最先进的、源代码级的形式验证,而且从 aML 到 CKB VM 中使用的 RISC-V 汇编的整个编译器也是经过形式验证的。这种独特的设计让 aML 从我们今天所使用的大多数其他编程语言中脱颖而出,包括 C、Rust、JavaScript 等。我们希望这个完全经过形式验证的语言,包括经过形式验证的编译器,能够帮助并确保 CKB 智能合约的最大安全性。
我们计划在 2021 年发布 aML 的初始版本供大家使用。
密码学原语
CKB VM 有别于其他区块链虚拟机的一个独特之处,就是能够提供灵活的密码学原语支持。截至 2021 年 1 月,我们还没有看到第二个能以智能合约的形式、支持灵活的密码学原语的区块链虚拟机。2021 年,我们将继续在这方面努力,希望将更多的密码学原语带入 CKB 的世界中:
互操作性 2.0
Force Bridge
Force bridge 是一个通用的跨链框架,促进区块链之间的资产转移。在这个框架之上搭建的第一个桥是 CKB-ETH 桥,它支持 CKByte、ETH、sUDT 和 ERC-20 资产在 CKB 和以太坊之间的转移。最新版本部署在 Aggron 和 Rinkby 测试网上,并提供了一个 GliaDEX 演示,展示了互操作性 2.0 的能力。
2021 年,我们将在主网上审核并部署 CKB-ETH 桥。之后有两个方向可以走:
在 CKB 和 Ethereum 上完成 SPV 头验证智能合约,让 CKB-ETH 桥更加去中心化。
在 CKB 和其他区块链之间搭建新的桥梁。
我们会先选择第二个方向,因为半无需信任的桥对于目前大多数用例来说已经足够安全了,而新的桥会为 Nervos dApp 和用户带来更多的资产。我们也希望在硬分叉后保持第一个方向,这样如果区块头结构发生改变,我们就不会浪费精力。最初的计划是为比特币、EOS、TRON 和 Polkadot 建立新的桥梁。