查看原文
其他

如何理解一个区块链中做出的所有权衡和决定?永远不要停止问为什么

PolkaWorld PolkaWorld 2023-08-21

加入 PolkaWorld 社区,共建 Web 3.0!

Gavin 近期在哥本哈根 Polkadot Decoded 介绍 Polkadot 2.0 的时候说过一次话,视角转换对于那些真正想要理解世界的人特别重要,甚至比单纯的见多识广还要重要。如果你真的想理解 Polkadot 是什么,视角的转换就很重要。本文为 Parity 开发者负责人 Shawn 在 ETHDenver 2023 的一次主题演讲。他从亚马逊的杰夫·贝佐斯所提出的决策思想的角度,换一个视角,来介绍 Polkadot 中的所有决策,以及这个决策背后所做的权衡和思考。


上篇中我们介绍了 Polkadot 哲学、目标和部分一级决策(也叫类型 1 决策),包括 Wasm、分片、应用链、互操作性、共享安全。本文为下篇,主要分享了 Polkadot 中的一级决策、二级决策和理解一个区块链所有决策的思考框架。以下是全文。



混合共识


我们在 Polkadot 中还做出的一个关键的一级决策是混合共识。我们决定将我们的区块生产和终结性(finality)分开。这允许链在可能出现终结性停滞的时候继续生产区块。虽然终结性停滞不常见,但是比如当网络出现问题,或者亚洲和北美之间的网络出现中断,这是我们无法控制的,这是空间中的物理问题,但我们的区块链如何应对这些问题是非常重要的。所以我们决定将这两个不同的过程分开,这样我们的区块链可以继续创建区块,向前发展,这可能需要更长的时间来实现终结性,这是可以的,因为这个过程是分开的,我们允许区块生产可以创建许多区块,许多分叉,我们最终会得到一个终结性的结果,即 Polkadot 的实际规范链。




轻客户端


另一个关键的一级决策是轻客户端优先的思维方式,我们在 Polkadot 中做出了许多决策,这些决策不断地强调轻客户端作为 Web3 未来的重要组成部分。这又是一个很重要的问题,如果你的区块链在最初没有设计以轻客户端为中心,那么这在之后再进行添加将会非常非常困难。如果你像我一样相信无需信任的系统,或者更真实的系统,你肯定想要通过轻客户端与区块链交互。你不想要连接到一些中心化的节点,并假设他们告诉你的是正确的。你希望能拥有自己的移动应用,并希望能证明我正在执行和操作的事情。我可以验证我正在采取的行动以及提供给我的信息,这是轻客户端的一个关键功能。



我们做出的决策使得 Polkadot 在某种程度上可能被认为更慢或更复杂,因为需要某些类型的数据结构,比如 Merkle 树,但这也使得像轻客户端这样的事物得以存在。我要告诉你的是,我们现在已经有一个轻客户端。对于很多其他的协议来说,他们的轻客户端可能还在他们的两三年规划中。如果他们还没有在他们的系统中设计这个,他们就已经输了


轻客户端是一级决策。我们今天已经有它在工作了,因为我们从第一天就设计了它。你可以去我们的网站,它会开始在你的手机上同步 Polkadot,不需要安装任何东西,只需要一个网络浏览器,这都得益于 Wasm 和我们的轻客户端优先的设计。



无分叉升级


我们继续谈谈链上升级,无分叉升级。这是另一个非常关键的决策。再次,我们回到 Wasm,在 Polkadot 中,区块链的逻辑不依赖于特定的客户端二进制文件,而是存储在链上的 Wasm 二进制文件。这意味着,Polkadot 可以通过读取存储在链上的这个 Wasm 文件来执行其逻辑,就像它会读取并处理账户余额或其他信息一样。这种设计使得 Polkadot 协议可以进行无分叉升级,从而在保持网络一致性的同时,允许区块链的进化和发展。



Polkadot,Acala,Moonbeam,Astar,以及你能想到的所有其他区块链的主要区别不在于客户端的实现,而在于使用的 Wasm(WebAssembly)代码块。只要替换掉链上存储的特定 Wasm 代码,任何一个区块链都可以转变成另一个区块链。这意味着 Polkadot 或 XSubstrate 二进制文件实质上只是一个 Wasm 执行器。在这个执行器中,存储了链上的 Wasm 二进制文件,这就允许我们拥有一个链上的运行环境,可以无需分叉地升级链。



链上治理


链上治理可能看起来并不像是一级决策,但它确实是。一旦协议的决策方式被确定,就很难改变。例如,我们来看看以太坊的工作方式,以太坊没有链上治理系统,它有一种类似于软性的、面对面的治理系统,像是开发者电话会议,人们参加这个电话会议,他们有想法,他们制定 EIPs,然后你有一组声音,谁的声音最大,技术就向哪个方向发展。



另一方面,链上治理在区块链本身上建立了一套明确、定义清晰的规则,规定了决策是如何做出的。非常重要的一点是,因为我们有像链上 runtime 这样的东西 —— 你的区块链逻辑存在于区块链上,你可以让链上治理改变并影响你的区块链逻辑。这为你的区块链随时间的演变和变化提供了一个明确、定义清晰的过程,因为在链上发生的投票实际上会改变你的区块链中的事物,它实际上会改变你的区块链的代码。而其他的链下治理系统,例如,你有一个电话会议,他们在某个提议上达成了一致,然后你实际上开始开发,谁知道人们说他们想做什么和实际实施的是不是保持一致的?但是链上治理会说:“ 嘿,我有一个新的代码片段,你可以运行它,你可以测试它,你可以看到它的源代码,我想升级链到这个状态。” 当投票通过时,链实际上就升级了,它在链上发生了变化。这是一个非常关键的部分。这是一些如果今天的链没有实施,就不会发生的事情。再次强调,要启用真正有用的链上治理,你需要做出像拥有链上 runtime 这样的决策。



国库


最后一个是链上国库。我提到了很多链上的事情,我们正试图把事情移到区块链上。区块链是有韧性的系统,它们是推动共识的系统,是不应轻易被攻击的系统,不应被中心化的组织所控制。因此,我们可以将更多东西移到链上,这些区块链系统就可以更具韧性。另一种确保 Polkadot 长期持久的方式就是拥有链上国库,有一种在我们的协议中为开发者提供资金的方式,使他们能够继续在协议本身上进行构建和开发。



观察其他区块链,它们在最初发行代币时,可能有一些中心化的基金会控制着大量资金,将资金分发给开发者,以推动区块链的发展。但是这种方式可能会产生各种问题。例如,基金会可能偏爱它们的朋友,把资金过多地分发给他们;或者代币在开始时价值不高,所以基金会一开始就使用了大量资金,但当代币价值上涨时,基金会可能没有更多的资金可以使用;或者他们如何获得更多的资金来支持项目的发展,这些都是需要在每个生态系统中考虑的问题。


相对于这种模式,Polkadot 将 70% 的所有交易费用和低效质押的通胀放入了一个公共的国库中,这个国库的资金不断被用于赞助开发者进行更多的开发,以此持续推动 Polkadot 的发展。这就使得 Polkadot 变成了一个能够自我维持和自我发展的协议。重要的是,这是内置在 Polkadot 的设计中的,这是一级决策。



二级决策



NPoS


接下来我要讲的是二级决策,其中我想特别提到的是名为"提名权益证明"(Nominated Proof of Stake,NPoS)的机制。作为一个提供共享安全的平台,Polkadot 的权益证明系统的安全对整个生态系统至关重要。基于这个考虑,我们选择了一个更复杂的权益证明系统。你可能看到的大多数权益证明系统可能是委托权益证明(Delegated Proof of Stake,DPoS)系统,这些系统更简单,也更适合扩展,但在资本的分配效率上并不高。因此,我们设计了一个可能是目前最复杂的权益证明系统,以确保资本能够被最大限度地利用。在这个系统中,你可以选择一个验证人,也可以提名最多 16 个验证人。我们在 Polkadot 的算法中确定了如何分配这些提名人的资金,以便提名人的资金可以被尽可能多地用于支持多个区块验证人,这保证了我们生态系统的最大安全性。诚然,这个系统要复杂得多,它并不那么可扩展,但是对于我们的需求来说,这是我们做出的一个关键决策。




其他二级决策


Polkadot 区块链系统中有一些一级决策和一些具体要去实施的二级决策。一级决策包括像实施链上治理和拥有国库这样的核心原则然而,具体如何实施这些原则(例如链上治理如何运作,如何使用国库的资金)被视为二级决策这些决策可以随着时间的推移进行调整和改进。例如,最近在 Polkadot 上升级的新的链上治理系统 OpenGov,这个新系统就在实施链上治理的一级决策的基础上,改变了具体的运作方式。



其他二级决策还包括 NPoS 系统的改进、集成多重签名、代理和批处理功能,以及对存储的处理和跨链消息传递格式的决定等。所有这些都是在一级决策的基础上,根据实际需要和情况做出的具体决策或策略,这些都可能随着时间和环境的变化进行相应的调整。


对于区块链项目来说,它们在设计初期就必须做出一些一级决策和权衡,这些决策和权衡会对项目的长期发展产生深远影响。虽然这些决策的具体实现可以随着时间的推移进行调整,但是基本原则是在项目开始时就已经确定的。


对于任何一个新的区块链项目或者新的共识算法,应该深入地探讨和理解它们所做的这些一级决策是什么,为什么做出这样的决策,以及这些决策背后的权衡。例如,一个项目可能为了提高系统的性能和可扩展性,而牺牲了一定程度的去中心化特性。他们可能推动使用更高性能的硬件,或者设计他们的系统假设每一个节点都是一个超级计算机,但是这样的决策也意味着他们的系统可能不能被资源更为有限的用户或地区所使用。



讨论决策的框架



再次回到讨论决策的方式。如果有人说他们构建了一个很棒的链、新的共识算法。那我们要去思考他们在这个链上做了什么决策?他们在做那个决策时需要考虑什么?它是一级决策还是二级决策?他们选择了什么权衡使得那个决策出现?区块链领域的其他人为什么没有做出那个决策?我们还需要在哪些地方发展和演变?这个决策未来会变化吗?他们是否正在为决策演变做好准备?


还有权衡,你可以去问每一个区块链协议,他们在不可能三角中做了什么权衡?是否牺牲了去中心化换取可扩展性?例如,如果你在你的链上推广更快的硬件或者设计你的链要求每个节点都需要有超级计算机级别的性能,那么你的系统可能会有更好的可扩展性,因为这样的系统可以处理更多的交易。但是,这样做的代价可能是牺牲了去中心化。原因是,只有能够承担得起高性能计算机的人才能参与你的区块链系统,这限制了参与者的范围。例如,非洲的一些城镇可能无法负担这样的硬件,普通的消费者或者非云服务提供商也可能无法访问这些设备。因此,这样的系统实际上在牺牲中心化,让参与者变得更加集中,而不是广泛分散。


另一个是共识。如果一个共识系统有数百或数千的参与者(比如验证者和提名者),这种情况通常被视为较高程度的去中心化,因为决策的分散在更广泛的网络节点中。然而,如果你的系统只有 10 或 12 个保障节点,虽然可以使系统运行更加高效,但实际上,这样的系统是中心化的。



你在为了可扩展性而牺牲安全性吗?你是否正在做诸如乐观计算、乐观并行化、没有分片的这样的事情?那些系统是否真的有用或者它们会真的安全运行吗?我觉得可能不,但是他们正在牺牲他们的网络安全,以获得某种乐观的、最佳情况下的可扩展性。


区块选择。有很多协议在做这样的事情。他们有一个系统,你可以知道接下来的一天,每一个人都会按照什么顺序产生一个区块。攻击这样的系统,通常不需要攻击所有的验证者,只需要攻击接下来的 10 个区块生产者。就会使他们的区块链在接下来的一分钟半,两分钟内停滞,或者你想要的任何多久的时间。当在 Polkadot 上选择区块时,实际上使用了一个随机选择的方式,你不知道下一个区块生产者会是谁,但他们能够提交一个证明说,“ 嘿,我是新的下一个区块生产者。” 这不会让你攻击网络。它增加了安全性,当然这也是一个解决起来更复杂的问题。


去中心化和安全性。像信标链或中继链这样的东西,可以说被认为是不那么去中心化的,但是,如果你看过我之前的演讲,你会知道这实际上增加了安全性,这是一种值得的权衡,因为虽然牺牲了一定的去中心化,但得到了更高的安全性。同样的道理适用于 NPoS(提名权益证明系统)。NPoS 增加了安全性,但它的可扩展性不高,很可能一个 NPoS 系统的验证者或提名者数量不会和 DPoS(委托权益证明系统)系统一样多。这是一种权衡,你愿意牺牲一定的可扩展性来增加安全性吗?这些决策都取决于设计者的优先级,以及他们认为什么对他们的特定应用来说最重要。



去中心化和不可阻挡性。当你在设计一个区块链系统时,你需要决定如何平衡中心化和去中心化来达到 unstoppable 的目的。这就是说,你需要决定系统应该有多少节点。一个完全去中心化的系统可能会有数百万个节点,包括验证者、提名者和投票者。然而,有时候,为了可扩展性或者其他考虑,可能只会有更少的节点,比如 10 个。这是一个权衡。当你听到一个区块链协议声称他们有 100 个节点时,你需要问的是,这是他们想要达到的节点数量,还是基于他们的可扩展性解决方案?一个区块链系统可能有数百个甚至数千个节点,但如果它有集中的故障点,那么它真的是无法被停止吗?这是在设计和评估一个区块链系统时需要考虑的问题。



独立链和分片网络的可扩展性。我们显然知道,像比特币、以太坊、Solana 这样的链是独立的链,他们在寻找很多可扩展性解决方案。Cosmos 试图创建具有共享通信协议的独立链,以太坊 2.0 是一个同构的分片网络的想法,Polkadot 是一个异构的分片网络。这些都是扩展这些链的不同方法。我们要去问他们为什么做出这样决定?


可升级性。像比特币,他们认为稳定性是协议的一部分,是比特币的价值所在,它不会改变。以太坊有一个离线决策过程,Polkadot 有一个链上决策的过程。这里有一些权衡,我并不是说所有的事情在链上就是更好,但是这是需要权衡的。我希望你知道,什么是一个不断发展、变化的平台所必需的实际东西。



质押。现在很多协议都在做质押,staking 质押很热门,因为是免费赚钱。你知道哪些协议实施了质押,但没有实施 slash 吗?问他们,为什么没有 slash?如果没有 slash,质押的价值是什么?这只是无中生有地印钱吗?你的质押过程产生了什么价值?你只是为了赚钱而进行质押,还是通过质押实际上积累了一些价值?你提供了哪些激励来影响参与者的行为?对于使用押金和非押金系统,你是如何选择的?



共识,这可能是最技术性的话题。你可以问他们,你们是在链上处理共识消息吗?这通常是一种不理想的实践,因为它可能会加重网络负担,并使其容易受到攻击。关于区块生产的选择,你们是使用工作证明、权威证明、还是权益证明?你们是随机选择区块生产者吗?你的区块链设计是否能抵抗审查?你的最终确定性选择是怎么样的?有些协议声称他们有即时的最终确定性,即时的最终确定性真的好吗?如果最终确定性停滞,你无法制造新的区块,这是做出的正确决定吗?



这就是所有我想分享的一个思考框架,一个理解一些区块链做出的权衡和决定的思考框架,他们做出的一级决策和二级决策是非常重要的!永远不要停止问为什么,用这个作为一个框架来启动你的想法。


原视频:https://www.youtube.com/watch?v=nmTH5s2ZA7E&t=1304s

编译:PolkaWorld




直播预告


7 月 20 日(本周四)晚 7 点,Acala 将来到波卡世界直播间,带来 Acala 的重磅最新进展。点击下方 “预约” 按钮,立即预约直播。




  • PolkaWorld Telegram 群:

    t.me/polkaworld

  • PolkaWorld Youtube 频道:

    https://www.youtube.com/c/PolkaWorld

  • PolkaWorld Twitter:

    @polkaworld_org


更多内容


Polkadot 二季度进展:原生 Web3 创新和企业采用齐头并进

波卡周报|Polkadot 发布季度总结,大型企业开始采用 Polkadot 技术或与 Polkadot 进行合作!

Messari 发布 Polkadot Q2 季度报告:实现两个关键里程碑,系统平行链、异步支持和平行线程即将实施!


关注 PolkaWorld

发现 Web 3.0 时代新机遇


点个 “在看” 再走吧!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存