可预测性意味着,开发者今天写好了代码,就知道它会一直生效,而且未来执行代码的成本还比现在低。
原文标题:《技术可扩展性如何创造社会可扩展性》
撰文:Kyle Samani,Multicoin Capital 管理合伙人
本文假设读者熟悉 Nick Szabo 的《社交网络的可扩展性(复制链接打开:https://unenumerated.blogspot.com/2017/02/money-blockchains-and-social-scalability.html)》、Vitalik Buterin 的《弱主观性(复制链接打开:https://blog.ethereum.org/2014/11/25/proof-stake-learned-love-weak-subjectivity/)》以及 Haseeb Qureshi 的《为什么去中心化并没有你想象中那么重要(复制链接打开:https://haseebq.com/why-decentralization-isnt-as-important-as-you-think/)》等几篇文章。
但本文并非为了反驳 Szabo 的文章与其立场。
Szabo 在其文章的结尾处将社交网络可扩展性定义为「牺牲计算效率和可扩展性——消耗更多廉价的计算资源——从而减少和更好地利用涉及现代机构(如市场、大型企业和政府)所需的巨大人力资源支出。」
现金(BCH)和比特币 SV (BSV)对比特币(BTC)的成功分叉无疑支持了这一理论。
然而,自从 Szabo 在 2017 年 2 月发表该雄文以后,加密生态已经取得了长足的进步。尽管他早在大约 20 年前就提出了智能合约的想法,但直到最近两年,业界才开始认识到智能合约最有用的应用:DeFi。
DeFi 的火爆改变了一切。
本文假设区块链最重要的功能不是非主权货币本身,而是 DeFi。
该体系主要功能的转变从严格的审查抵抗、非主权货币,到一个用于金融应用的高功能和可编程的开发环境,它牵涉到每一层技术堆栈,从网络层(如 gossip vs Turbine)到执行环境(如 EVM vs SeaLevel)。(关于 与的不同之处,请参阅本文附录)
因此,区块链首先应该作为 DeFi 开发平台进行设计和管理。
可预测性就是力量
人们经常会问我这样一个问题:「你觉得这个世界未来 10 年会有什么变化?」这个问题非常常见。但是我几乎从来没有被问过这样的问题:「在未来一个世纪,这个世界还有什么东西是保持不变的?」实际上我认为第二个问题更为重要,因为知道了它答案后,你就可以围绕那些不变的事物建立一个商业战略 …… 在零售行业,我们是能够确定顾客希望更低的价格,我也知道这一点会在 10 年后成为现实;他们也想让物流变得更快;他们想要更多的选择。你很难想象 10 年后某一天,有顾客跑来跟我说:「Jeff,我超喜欢亚马逊;我希望你们商品的价格能再高一点」,或者「我很喜欢亚马逊;我希望你们的物流速度慢一点」——这是根本不可能的。所以我们将功夫花在这些不变的事物、推动它们的发展,我们知道今天所付出的精力将会在 10 年后为亚马逊的客户带来回报。当你确定了某些事是正确的(即使很长远),就可以为之投入大量精力。
——亚马逊创始人兼 CEO Jeff Bezos
这里有一些数据: 当前注册用户约 5000 万,罗宾汉(Robinhood)的用户数量大致相当,大多数美国大型银行也是这个数量级。
假设 Coinbase 的战略重点是尽快将它的所有用户都迁移到 DeFi,同时监管环境也支持它。设想一下,Coinbase 能在以太坊上做到吗?
当然,这是一个目前无法回答的问题。在技术上,它不是不能实现,实际上可能性还挺大。但是没有谁或者某个机构可以回答这个问题。原因是什么?
因为没有人真正掌握以太坊未来将会怎么进行扩展。举个简单例子,Vitalik 曾经表示 optimistic rollup 可能是近期到中期最理想的扩展方案,而从长远来看,zk-rollups 则会占主导地位。但是问题来了:这个转折点会在什么时候,以什么方式发生?是否需要开发 / 重构什么基础设施?这些不同 rollup 之间的资金怎么流动,它对智能合约开发者、钱包、用户、流动性提供者、法币通道等方面有什么影响?
而且,似乎无论哪种扩容方案更加重要,它都不可能是一个整体的实例化(例如单个 rollup)。以太坊扩容的后果都是异构的。
从长远来看,这样对以太坊来说可能是一件好事。当前的扩容方案都有各自的取舍,并且也不清楚哪种取舍是最好的,或者扩容方案相互组合会更好。因此从长远来看,以太坊生态最好的选择是尝试多种扩容方案,并从中找出哪种方案最适合哪种应用,然后配置桥接、其他互操作性方案以及解决延迟问题。
另外,开发扩容方案的所有团队都获得了充足的资金,已经开始上线和面向用户。因此他们会持续进行开发。
那么,Coinbase 应该怎么将 5000 万多名用户引入 DeFi 呢?
在如此庞大的用户规模基础上,最重要的一个考虑因素是确定性。任何达到该规模的企业都非常需要现在以及未来的确定性。
大型企业绝对承担不了押注错误技术堆栈的后果,错误的机会成本以及后续迁移 / 桥接的代价非常巨大。
我认为,现在——或者在未来两年内——能够回应这个问题的唯一区块链协议是 Solana。
所有基于 rollup 的扩容方案(包括分片)都受制于上述困扰。尽管有不少优秀团队(如 Cosmos、Polkadot、Avalanche 等)筹集了数十亿资金进行研究开发,但实际上所有分片系统都没有扩展到大规模(大多数甚至无法正常运行)。即使它们以 PoC (proof-of-concept )共识工作,也需要处理许多新出现的问题(例如交叉分片交易处理失败,交易平台集成等等)。
这里需要明确一点,我并不是指分片和 rollup 无法进行扩容。实际上我对这两种方案持乐观态度。但是,它们在目前没有真正发挥作用,并且会产生许多无法避免的二阶和三阶问题。由于多个相互交织的组件对以太坊进行扩展,一个需要可扩展确定性的大型机构很难在未来两年内得到它想要的(确定性)。
碎片化的社交网络可扩展性成本
除了上述的不确定性,分散在各个分片和 rollup 之间的应用会产生明显的新型社会协调成本,而这在单分片系统中是不存在的。以下为几个例子:
- 目前,Layer 1 和各个 Layer 1 之间的区块时间和计算吞吐量有所不同。这一点直接关系到所有管理风险的 DeFi 协议(几乎包括除了 Uniswap/Sushiswap 之外的所有主要组件)的实现方式。其中,一些 DeFi 团队已经承诺在多个 Layer 1 和 Layer 2 部署合约。但是,每个执行环境都需要唯一的风险参数。这会增加每个协议社区所需的社会协调数量,减慢行业发展速度。
- 退出 optimistic rollups (ORU)需要较长时间。市场普遍认为做市商会在 rollup 和 Layer 1 之间提供流动性桥梁。但是,该操作的实现细节比较棘手。协议前端应该提供原生支持吗?如果是这样,他们是否应与特定做市商「签约」(例如参考 Citadel Securities 与 Robinhood 签订的 PFOF 合同)?还是把它留给前端用户自己去配置?如果用户想从一个 ORU 转移到另一个 ORU,该怎么办……用户如何传递信号给应用,从而操作 Connext 或 Thorchain 而不是退出到 Layer 1?
- 对于 Metamask 用户 (他们大部分是高级用户),用户自己管理这么复杂的操作可能比较合理。但是对于试图抽象出复杂性的小众钱包(如 Exodus 或 Argent),这些团队需要花费多少额外的开发时间来解决这些问题?又被迫放弃多少新功能?如果做市商出于某种原因停止在某个桥接 / 细分市场的流动性,那该怎么办?有哪些备份选项?
- 必须更新开发者工具来处理新的数据结构(如 ORU 的未处理事务,ZKR 的 zk 输出)。索引和查询层将需要进行重大升级,应用开发人员可能需要重新编写其子图以处理新的数据结构(例如,不可能将 EVM 子图映射到 Starkware 的 Cairo)。开发人员将被迫跨各种异构扩展方案重写大量应用。
随着分片和 Rollup 数量的激增,开发交易所将变得更具挑战性。这些问题都不棘手,但是它们会减慢开发速度,还会让不想面对这些问题的众多开发人员感到有心无力。
可预测,但又很无聊的扩展性
Solana 当前可支持每秒 50,000 笔交易, 全球 网络节点(复制链接打开:https://solanabeach.io/) 已经突破 600 个。最重要的一点在于,Solana 提供了无限扩展的可预测路径。由于它可以在 GPU 上并行执行事务,因此可以利用 GPU 并行性带来的巨大增益。
摩尔定律可能是过去 50 年中最重要的经济力量。但是今天它更多呈现出一种假象。
大约 10 到 15 年前,摩尔定律就不适应于单线程计算。因为热量的产生随着时钟速度超线性增加。这就是扇形设备(台式机和笔记本电脑)停滞在大约 3.5-4 GHz,而无风扇设备(电话和平板电脑)停滞在 1.5-2.0GHz 的原因。尽管过去十年来各种优化让单线程性能有所提高,但单线程性能并没有做到每 18-24 个月增加一倍。
在过去的十年,几乎所有的计算收益都来自芯片专业化(FPGA 和 ASIC)和并行计算。现代台式机图形卡通常有 4000 多个内核。上个年代,每张芯片的内核数量一直在按摩尔定律增长,并且这种趋势将持续下去,因为增加的内核数量所产生的热量几乎不影响时钟速度的提升。
Solana 是唯一一个通过 SeaLevel 运行时进行分片内并行计算的区块链 。SeaLevel 在 GPU 本地执行事务。如果 Nvidia 在未来一两年发布 8,000 内核的新型 GPU,Solana 网络的计算带宽将增加大约一倍。
在这个过程中,开发者不用了解,或者不用在乎,也无需更改任何一行代码。
这就是可预测性的定义:开发者今天写好了代码,就知道它会一直生效,而且未来执行代码的成本还比现在低。
这时候,扩展计算的主要物理限制是散热。在字面上,Solana 的扩展性能够做到物理上限。
量化去中心化以及弱主观性
从表面上看,许多人认为 Solana 协议不够去中心化。当然,他们并没有真正去量化这个说法,但却不断重申这一点。事实到底是怎么样呢?让我们做一些计算,来量化一下各个网络的去中心化程度。
首先我们来看一下硬件成本:
比特币可以在一个价值 25 美元的 Raspberry Pi 上运行,只需要微弱的互联网连接。
以太坊在一台 500 美元的笔记本电脑上运行(考虑到当前的 Gas 价格,这个价格不一定准确),需要宽带连接。
Solana 需要运行在一个 3500 美元左右的服务器,需要千兆网络连接。
下一个主要考虑因素是状态大小。在 50,000 TPS 和数十亿用户的情况下,Solana 的状态大小将会增大。这一点非常好,为什么?因为 1)假定 Solana 运行在可升级存储的服务器(而不是无法升级的笔记本电脑),2) NVMe SSD 通过 RAID 0 线性扩展读写性能,以及 3)多字节 NVMe SSD 不到 300 美元——扩展状态存储的成本和维护成本将会微不足道。
如果读到了这里并且理解了前面的所有内容,那么您使用价格超过 2,000 美元的 Macbook Pro 的可能性就很大了,这也是世界上 5000 万到 1 亿左右的开发者所钟爱的高端计算机。我怀疑对 500 到 1000 美元的硬件进行优化是最理想的做法。那么 500 到 1000 美元价位有什么特别之处呢?
我们来考虑一下硬件需求上限的合理价位。25,000 美元肯定太高,因为开发者没有这种硬件。现在换一种思路,我们不考虑任意的硬件成本,而是从需要多少个节点来实现足够的防审查能力。很明显,这里的「足够」一词本质上是主观的,但是如果您假设需要 100 万个节点,那么自然会产生一个问题:「这个世界上有没有足够多的,价值 3500 美元的服务器和千兆网络连接,让 100 万个节点看起来比较合理?」
考虑一下世界上所有高端硬件的游戏玩家、开发者和企业的数量,我们很难对这个问题进行否定。
所以不能孤立地考虑硬件成本问题,而必须在系统的设计目标范围内去进行考量。
此前我曾经认为区块链应该迎合 DeFi,而不是一味追求最大程度的审查抵抗性(即需要 1 亿甚至 10 亿个节点)。根本没有必要对 25 美元或者 500 美元的硬件进行优化,因为绝大多数人永远都不会运行一个节点。那么,为什么还要费心去优化硬件成本及其基础上的协议呢?
这个世界是弱主观性的
这就来到了弱主观性,同时承认去中心化并没有你想象中那么重要。
这个世界是弱主观性的。意味着什么呢?我们来看一下下面的例子。
回忆一下,你上一次走进一栋高楼的时候,是先对建筑结构进行检查,然后询问建造商,从而确保这栋高楼不会坍塌然后把你埋了?
坐飞机,开车或者在你家的时候,有没有这种想法?
所以说,这个世界的所有事物都基于某种程度的信任。如果每个人都要独立验证所有相关事物的结构完整性,那么这个世界就无法正常运转了。
反过来我们可以认为:世界之所以能够正常运转,是因为每个人都知道已经有许多其他人对系统进行了验证,系统安全的概率非常高。
这就是弱主观性的基本假设。这个理论应用到节点数量的时候,就变成了这个关键问题:在没有运行节点的情况下,用户自己是否可以合理地假设有足够其他参与者和机构运行着节点,从而可以信任该系统?
Solana 目前的节点数量约 600 个,在一年前只有 100 个左右。像其他区块链一样,随着生态的持续发展,节点数量还会随着时间推移而增长。类似于目前的主流区块链,随着时间流逝,越来越多用户采用,传递的价值越来越多,Solana 网络自然会越来越去中心化。
这也是 Qureshi 观点的正确性,并且去中心化并没有你想象中那么重要。很显然,去中心化对审查抵抗至关重要。但目前业界也没有一个清晰的阈值(也没有足够的反面例子可以得出一个结论),而且具体的数值本身并不重要——真正重要的是:1)风险-去中心化程度曲线实际上是反向的 S 曲线,以及 2)我们知道区块链随着时间的推移会变得更加去中心化,因此审查抵抗能力会随之提升。只要区块链去中心化的速度足够快——并且你相信它可以去中心化程度增加的速度——那么用户就能够维持他们所需的审查抵抗性。
图片来源:Haseeb Qureshi《为什么去中心化并没有你想象中那么重要》
结论
于是现在的基本问题变成了:如何分清「本末」?
从 2009 年比特币诞生以后的第一个十年,很显然审查抵抗性、非主权货币是「本」,而其他的应是「末」。
但这个情况正在改变。如今加密货币的使用者会认为,DeFi 会完全重塑金融。因此我觉得「本末」已经反转:如今 DeFi 是「本」,而非主权货币是「末」。
它们两者都需要一定程度的审查抵抗性,但是在技术受限的情况下,最大化 DeFi 效用与最大化系统审查抵抗性之间就出现了一个基本的取舍。
而当系统的基本设计目标发生变化的时候,相关的技术堆栈也需要随之变化。为了将 DeFi 扩展到数十亿用户的规模,每一层堆栈都必须遵从第一性原理,进行重新考量。
致谢:感谢 Hasu 对本文草稿的审核。
附录:以太坊与 Solana 的简单对比
比特币和以太坊在各自的设计中都进行许多假设,最明显的也许要数网络层和执行层。
网络层
在网络层,比特币和以太坊利用八卦协议(gossip protocol)。八卦协议也就是每个节点不加选择地将数据广播到其他每个节点。虽然这可以最大程度地提高审查抵抗性,但却以牺牲一部分性能为代价。按照定义,以高度冗余的方式重新广播数据效率不高,因此无法正确地针对高吞吐量 DeFi 应用进行优化。
另一方面,Solana 发明了一种新的名为涡轮(Turbine)的网络协议,它的灵感来自 BitTorrent 协议。涡轮对效率进行了大幅优化,其工作原理如下:我们来考虑一个 1MB 大小的区块。其中节点不是将整个区块传输给另一个节点,而是将 10KB (占区块大小的 1%)传输到节点 #2 和 #3,然后那些节点将这 10KB 区块重新广播到节点 #4 和 #5,依此类推。然后原始节点向节点#6 和#7 广播另一个不同的 10KB 数据包,随后这些节点将这 10KB 内容重新广播给节点 #8 和 #9,依此类推。此外,该模型的优点在于,随着节点数量的增加,延迟时间以及可用的绝对带宽保持不变。唯一降低的性能是,与大多数其他线性或超线性增加的系统相比,延迟增加了 log(n)(非常亚线性)。
执行层
在执行层,EVM 是单线程计算机。由于任何交易都可以修改全局状态的任何部分,因此为了支持并行性,系统需要某种方式来确保两笔交易不会尝试同时写入同一个状态。EVM 选举根本无法处理该问题,它只能简单地串行执行所有交易。
Solana 是唯一尝试处理分片内并发的协议。它是怎么做到的呢?Solana 的运行时 SeaLevel 要求交易标头指定交易所有的相关状态。借助此信息,SeaLevel 可以确定哪些交易可能发生冲突,并将对其进行序列化。所有不重复的交易都可以并行化,在数千个 GPU 内核中并行运行。
披露:Multicoin 已制定、维持和执行合理设计的书面政策和程序,以识别和有效管理与其投资活动有关的利益冲突。在公开发布后的三天内,Multicoin Capital 对本报告所列资产(「无交易期」)遵守「无交易政策」。Multicoin Capital 持有 SOL 和 ETH 的仓位。
来源链接:multicoin.capital(复制链接打开:https://multicoin.capital/zh/2021/05/25/technical-scalability-creates-social-scalability/)
内容搜集自网络,整理者:BTCover,如若侵权请联系站长,会尽快删除。