Polkadot 是用于可扩展的去中心化计算和互操作性的区块链。在本文中,我们将研究网络的主要部分之一:平行链。
今天的区块链以非常标准的形式出现,包括两个部分。第一部分是共识算法,它提供了安全性。第二部分是状态机,它提供了链的某些方面,链通过它获取安全性。以太坊、比特币、Zcash 等都受到工作量证明共识(PoW)或其变体的保护,但是它们处理的交易和帐户的种类(组成其独特状态机的事物)却完全不同。想象一下一个开发人员,他提出了一个关于新区块链的好主意,该区块链可以提供有效的隐私或财富分配或其他令人兴奋的功能。在开发人员致力于实现该唯一状态机的同时,他们还必须实现某种共识算法,并且在启动其链时,它必须与其他人竞争安全资源。这给开发新的区块链项目带来了一定的开销和不安全性。
让我介绍一下平行链。平行链(可平行运行的链)是区块链的一种简单形式,它附加到 “中继链” 提供的安全性上,而不提供其自身的安全性。之所以称为中继链,是因为它不仅为接入的平行链提供了安全性,而且还保证了它们之间安全的消息传递。平行链的一个关键特征是它们执行的计算本质上是独立的。图灵完备的智能合约的全面通用系统在确定哪些交易将彼此 “冲突” 时会遇到问题,这意味着可能并行化的交易通常按顺序运行,从而浪费了宝贵的计算时间。在平行链之间划清界限意味着我们可以一次执行所有这些链,而不必担心发生冲突 —— 如果我们有 10 条平行链,我们可以使用相同的安全源来执行 10 倍的工作。
高度专业化的平行链还有另一个目的:它们可以针对其专业领域,以最有效的方式实现数据存储和交易操作,而不会陷入特定于区块链的脚本语言或虚拟机中。像比特币脚本和 EVM 之类的模型,在设计时就在其核心中考虑到了互操作性的目标,但是使用这些模型的系统为所有的实现部分支付了日益增加的执行成本,而不仅仅是那些来自同一网络上运行的其他系统可以访问的部分。相比之下,Polkadot 平行链通过异步消息传递相互通信,因此仅在平行链相交的边界处支付数据一致性的代价。
请注意,你仍然可以创建一条为完全通用和图灵完备的智能合约提供框架的平行链。一个简单的例子就是由 EVM 驱动的平行链。出于上述原因,该平行链上执行的合约在受益于以太坊智能合约的通用性和互操作性时,也会遭受其带来的不便。主要区别在于它是完全选择加入的。我们认为 Polkadot 能够集成重点解决方案,同时保留使用极其通用的框架的可选性,这是其最强大的功能之一。
平行链最有趣的用例之一是作为可扩展性的工具。你可以创建具有自己的平行链的平行链,依此类推。这将创建一个树状结构,可用于执行高度分布式的计算,而不会减少根中继链本身的总体负担。主要问题是确保数据可用性 —— 平行链区块应随附有效性验证证明,任何人都可以至少在一定时间段内使用。验证人负责确保其验证的块的证明仍然可用。不幸的是,如果不在链上移动消息的话,就不可能(或者至少很难)证明原本应该发送的消息并没有发送。我们可以通过信誉保证来避免此问题:当相对受信任的各方将验证人作为隐瞒数据时,会受到惩罚。这也可以推广到代币投票系统或多层法院。为了降低恶意和虚假报告的有效性和实用性,每项举报不当都应伴有不可退款的资金消耗。当有足够多的人正在观看计算时,例如在第一级平行链的情况下,通常会有必要的数据。缓解风险的另一种策略是,在设计平行链时就规定好,当链停滞或受到攻击时,便可以收回储存的价值,尽管当该链执行智能合约来自动锁定资金或自行管理自己的费用时,这很难实现。
也许更有趣的可伸缩性方法是使用零知识(ZK)证明。像 ZK-SNARKs 或 ZK-STARKs 这样的现代非交互式 ZK 证明,让我们能够检查一项证明,来了解带有某些已知和未知输入的已知程序是否已正确执行,并了解该程序的输出是什么,而且不会泄漏任何有关私人输入的信息。最常见的是,像这样的 ZK 证明被称为保护隐私的工具,但它们也可以用于提高性能:令人惊讶的是,无论程序自身的复杂程度如何,检查这种零知识证明的时间大多是恒定的,验证证明的时间会少于相应程序的执行时间!这意味着即使是非常复杂的交易(可能要花费数小时的处理时间)也可以在短时间内通过链的验证人来验证。不幸的是,创建 ZK 证明的计算和内存成本仍然高于普通用户可接受的成本。在这些成本降低之前,在实践中使用 ZK 证明也只是美好的设想。
但是,平行链的伟大之处在于它们非常地通用。通过允许每个平行链定义其自身有效性的概念,我们可以从当前的庞大证明无缝过渡到将来的更轻、更高级的证明。随着分片研究的发展,可以轻松添加使用最新技术的平行链。最终,这就是 Polkadot 的价值主张:它处于正确的抽象层次,可以在现在和将来使用,而没有任何不必要的开销。该系统的设计不仅可以适应任意演变,而且还具有可扩展性,可以毫不费力地集成最新技术成果。