过去一年里,先是各类 alt-layer1(可能是前年的事情了?),然后是 celestia 带来一波模块化概念,最后是几个 move 系公链短暂热炒了一波。行业里的每个人似乎都对公链拥有执念:airdropper(自创个词嘿嘿)与投机客喜欢新公链带来的抢滩机会;项目方忙着 fork 已被证实的协议;builder 希望能在新公链中实现理想范式;trader 则不喜欢 ETH 一家独大,因为确定性往往意味着机会更少。
当然,贯穿公链的永恒主题是不可能三角问题,这也是所有新公链做市场必须去突围的一道要塞。无论是跨栏还是迂回,一定要宣称自己 “某种程度上” 克服了这一障碍。与此同时,最前沿的技术思考几乎仍诞生于 ETH 社区,以太坊 maxi 高举 “公链终局” 大旗,见证着 NEAR、Solana 等一众后辈的起伏。
2022 也是我个人开始尝试深入了解公链的一年。大概有四个月,每周末固定数十小时,去学习一些基本原理;驱使我学习的动机也很简单,公链一直是整个生态的地基,下一个 “突破性” 的创新,大概率还需要是公链的架构与共识设计。
本篇总结,属于我个人的一些零碎思考,非专业人士,错误请务必指出,感谢🙏
还是回到不可能三角,去中心化、安全性、可扩展性,目前基本都是保二抓一的状态;被抓的基本也都是 “可扩展性”,也就是大家说的扩容。扩容早已有之,从直接扩容(大区块、高出块频率)到状态通道、链下计算等。每种思路均有其优势与局限性,例如状态通道,链上只存状态,同时还能实现很好的隐私性,可惜要求最好双方同时在线(皇上,臣妾做不到啊)。
目前扩容的主流基本是放在了 rollup、模块化之上,rollup 大家也都熟了,主流观点基本就是 op 生态进展更快,zk 是长远看更合适的方案,毕竟数学确保的安全性还是靠谱点。模块化则更进一步:除去执行与结算的分离,干脆将 DA 也分离出来得了。之所以分离 DA,主要是在状态膨胀的大背景下,全节点越来越不好干了,而轻节点没办法识别部分作恶行为(因为轻节点只检查区块头,这说明光看头是不可靠的,容易被骗),所谓 “数据可用性问题”。模块化后面再说。
目前 rollup 已经一大批了,各大 layer2 的 TVL 数据见这里 < https://l2beat.com/scaling/tvl/>,Arbitrum 和 Optimism 的 TVL 已远超很多 alt-layer1。作为 op rollup,二者皆早早进行了不少长期战略布局,Arbitrum 上也聚集了不少优质生态,GMX、Treasure DAO 等。
说说我自己思考的一些点。
**(1)rollup 并非灵丹妙药 **
layer2 便宜是因为分摊了主网 rollup 合约、calldata 调用等费用,但其本身还有额外的计算与存储费用;layer2 更快相当于堵车修高架,但高架只有出入口,并且想上高架还得先搬家。
以及:修高架就不堵了吗?堵车与否,需要看道路承载上限与日常交通流量的对比,也需要看对交通流量的规划(比如分级、分流);当前 rollup 费用基本是几十分之一,tps 提高几十上百倍,但与传统应用需求相比仍旧是不值一提。
直观来说,如果接着堵,就再套一层 layer3;非通用性需求例如供应链溯源、物流追踪,完全可以转移至 layer3。但 u1s1 这种套娃式扩容总莫名让我联想到金融乐高坍塌的场景…… 去中心化的初衷之一,就是数据中心化存储面临的诸多风险;可仔细一想,单点崩溃很难带来系统性风险。而面向全球的公链,是容不得任何一点差错出现的。(所以有时我在想,很多商业场景不见得要基于公链,它只需在自我的循环圈子中保证共识,再通过跨链通信与外界保持单向联系 —— 小圈子内的共识无法被外界取信,但小圈子却可以依托外界来做监督)
与大家所提 EVM 兼容等不同,我认为 rollup 最大的限制在于两点:1⃣️底层链的性能;2⃣️连接 rollup 的 “桥”。” 桥 “越多,最上层的链风险就越高。
关于 1⃣️,我觉得是个很有意思的讨论点。现在大家似乎都默认 rollup 直接宣告了公链终局,几乎忽略了 rollup 并非 ETH 专属,本质上只是在 layer1 上部署合约而已。当然,ETH 性能不咋(至少在未来的诸多升级前)但最安全(仅次于 Bitcoin),安全是 layer1 的基本条件。假设 rollup 会是终极之路,区块链的 mass adoption 之前,ETH 必须有足够大的升级,来稳固自己的地位。所以 ETH 祭出了 “-rge” 组合拳,反观大部分链,仍然还没找到竞争 / 抱大腿的重点……
关于 2⃣️,在跨链桥事故频出的今天,对 rollup 跨链的安全性集体忽略的现状,也是值得警惕的。尽管二者原理不同,但回归第一性来看,rollup 提交状态数据仍属于跨链通信的范畴。这方面我不了解,但想必不会很轻松就能做到安全承诺的。
**(2)sequencer 中心化问题 **
我如果说 rollup 的共识和 solana 很像,可能很多人会震惊。但实际上,当前 rollup 的 sequencer 基本都是集中并且由官方控制的,这比 solana 的轮换 leader 中心化多了。这让二层可以专心跑性能,毕竟二层作恶本身似乎是一个天然证伪的命题(如果 sequencer 自己作恶,那这个项目还搞个毛)。
先说下 sequencer 怎么作恶。和 DA 问题里的全节点一样,sequencer 可以隐藏合法交易,以及按自己意愿给交易排序(这也是 op 上 MEVA 市场的由来)。由于 layer2 的最终性依赖于 layer1,这就给了 sequencer 很大的权利。理论上,sequencer 只是没有激励作恶,而非不能。
那么让 sequencer 去中心化呢?悖论来了。如果 layer2 可以以某种机制实现更快更安全的共识,那我为什么不直接在 layer1 上应用这个机制呢?如果不能,layer2 反而拖累了交易速度。
或者直接把 rollup 背后的实体给 DAO 了?相比于现代公司制,当前的 DAO 显然还没有这个能力,直接 pass。
比较合适的一个方式,是加深一层与二层的捆绑,比如弄一个 ETH 官方 layer2,或者官方合作 layer2。这样很省事,但可能会直接终局,就不会有创新的潜力了。
**(3)layer2 间互操作与竞争格局 **
layer2 该是通用型还是专业型?林立的 layer2 之间缺乏可组合性、流动性也是相互割裂的,如果 layer2 的定位是专业链,这种匮乏或许可以被接受;但如果是通用型,这种割裂无疑让人很难受 —— 想想同一个 DeFi 协议,被 layer2 切割成十几份 TVL…… 因此,要么出现大一统或者三国鼎立的局面,要么出现 layer2 之间的 IBC 互操作协议。
如果套娃需求很强,基于通用 layer2 会诞生专业型 layer3。DeFi 协议会留在 layer2,甚至我会想,DeFi 留在 layer1,layer2 只是通过 vAMM 与跨链通信调用而已。游戏等对安全性要求较低的应用完全可以迁移至 layer3,专业型 layer3 说白了其实就是应用链,如果 ETH 的 rollup 生态发展顺利,cosmos 那边估计会出现更多抱大腿的。
至于 layer2 本身会不会直接专业型发展,得看套娃带来的扩容上限与实际需求的对比了。
**(4)一键发链与定制化 **
随着模块化与应用链的概念成为趋势,老牌公链皆推出了自己的 “招儿子” 计划:Polygon 的 Edge,BNB Chain 的 BAS,Avalanche 的子网…… 这些更便捷的发链服务,一方面是将自己推向模块化的趋势,扩大发展圈;另一方面,将有限的主网空间留给最核心的应用或许真的应该提早规划。
最早有 “模块化” 与 “应用链” 意思的其实是波卡和 cosmos,在 这篇文章 里我提到,相对还是更喜欢 cosmos 的设计哲学。其他链都想当爸爸,只有 cosmos 像在找兄弟。我现在有点慢慢明白 cosmos 这个名字的含义了:在,抑或是不在,我即是宇宙。
**(5)公链将越来越重运营 **
用户体验与生态发展是交替影响的。说说我自己体验到的各大公链,完全一个普通用户的视角:
1⃣️polygon:我在 polygon 上逗留了很久,因为 gas 便宜、生态完善,后来之所以走了,是因为有段时间三明治机器人卡交易,体验奇差。
2⃣️BSC:BSC 是直到现在我都没走的链,牛市的时候土狗和小项目特别多,玩的贼开心。当然,我说的没走是因为要么归零了要么项目方跑路了,跑不掉了,墓碑都刻好字了已经
3⃣️Avalanche:去的第一天刚好赶上拥堵,一笔交易一两刀 gas,心想共识设计这么复杂、吹的神乎其神貌似也没啥……
4⃣️Solana:刚去的时候已经是 Solana 被炒完一波后的荒凉期了,当时都流行说 “solana 狗都不玩”。但我立马爱上了,统一的 UI 设计,高速便捷的操作,以及基本可以忽略的 gas…… 后来就经常宕机,但我一直都没走,还说半年后宕机问题还得不到解决再走吧。然后爆炸头炸了……
5⃣️其他:基本没怎么用,要么体验差,要么没生态,要么人少。
以上论述,我尽量撇开任何专业知识,纯粹从普通用户视角写出来,想必能够清晰描绘出 “我所认同的公链应该是什么样子” 这个命题。tps、gas、生态、用户、运营,甚至 UI 设计都能够影响到用户的选择。
现在回想 crypto 发展早期的这些 native 群体,其实并非普通用户,要么是赌徒与投机客,要么多少懂点技术带点信仰。随着早期红利越来越少,区块链也应逐步走向 mass adoption,后面的大部分用户其实和早期群体间具有很大的行为差异。
用户是懒惰的,这也是传统行业存在 “获客成本” 这东西的原因;最早的时候,一些项目基本不需要市场营销,因为用户全是猎人;当然现在食大便了。猎人更加无情,相对而言,普通用户因为太懒,往往拥有不错的粘性。前者可以变成后者,但后者往往很难成为前者;或者,从伦理角度,后者也不应该成为前者,赌性与逐利心人人都有,但自控力与判断力却不是。
模块化把节点工作拆分,DA、共识、执行拆到不同的链,这样共识层就能使用更多轻节点,更多节点可以加入网络;更大规模的共识层给执行层带来更多空间,执行层的发展壮大又会反过来刺激更多节点加入,提升网络安全性。
模块化都被炒糊得了,我就小提一点,模块化区块链的经济可持续性。
考虑一个单片链,随着网络发展,维护节点的成本会逐渐增加,这意味着用户支付的交易费用也需要随之增加,于是要么补贴要么增发 token,这些都是不可持续的。而模块化,共识层验证者的成本并不会显著增加,同时网络规模的增加使得执行层总计支付更多费用,激励更多节点加入,形成正向循环。对于用户来说,支付更多费用执行更多交易,平均单次支付甚至可能更低……
综合看下来,模块化链似乎是完胜单片链。但我总觉得模块化链存在的问题和 rollup 类似(rollup 本身就可以理解为以 layer1 为共识与结算的执行层),即,几个模块之间的连接,怎么做到很安全、很迅速、同时又去中心化呢?这是上节内容里我所提的点 2⃣️,另一方面,与点 1⃣️类似,大家似乎都直接默认单片链和模块化是对立的两类,但实际上模块化链的组成不正是单片链吗?单片链完全可以加入模块化大军。
所以单纯因为某链当前是单片链就将其踢出竞争行列的行为无疑是十分愚蠢的;polygon 在技术战略上的敏锐转换印证了这一点。任何商业活动中,技术都并非绝对支配地位,最近看到的一个例子就是柔宇科技(不细说了,想了解可以去搜)。如何制定好长期战略与短期方向,如何更低成本、更有效率地去执行,如何找到自己在竞争中的优势,如何做好组织管理,如何应对用户流失、维持长期运营…… 这些都是和技术同等重要的问题。
总之,我并非 rollup 或者 modular 或者什么新公链的坚定信仰者,在我看来,所有公链都或多或少存在各自的问题。但目前,如果非让我选择一条,我会毫无疑问选择 ETH,我的理由很简单:
1⃣️ETH 是目前生态最完善、最去中心化、最具共识的链;
2⃣️同时有最多的天才们在建设它、最多的创新诞生地;
3⃣️ETH 当前最有可能有成为未来 mass adoption 底层;
但如果 Danksharding 后,如果 layer2 或者 layer3 一直没法提升用户体验(低交易成本、高交易速度),同时市场存在有更完美能做到这一点的竞争者,我应该会很墙头草地去评估竞争者的吸引力与可能性。
话说回来,这几个原因其实也是我当时看好 solana 的原因:①solana 是当时生态完善度前列、共识也还可以的链;②solana 在年初那段时间,开发者数据是稳居老二的(记不清了);③最重要的,低 gas 与高速度让我确信它大规模应用的潜力,尽管后来其连续宕机持续消磨我……
solana 我损失惨重,吸取 solana 的教训,如果更多是资本助推,嫖嫖就好了,千万不要上感情,FTX 暴雷的概率比 V 神暴雷概率还是高很多的……
分片其实才是我认为最有潜力的扩容方案。
最初的分片思路来源于数据库分片。将区块链网络划分为多个子网络,每个分片网络各自进行共识,全网交易可以划分到不同分片,以实现并行执行,以及吞吐量提升。 这种思路最严重的问题就是算力稀释,即子网的验证节点数越分越少,针对单分片的攻击更容易,整个网络的安全性急剧下降。
另一种分片思路即状态分片,比如 ETH 的 sharding 1.0,将账本拆给各个分片,通过信标链实现时间统一与 finality。
最新的分片思路可以被称为 “数据分片”,比如 ETH 的 Danksharding 和 NEAR 的 NightShade。直接拆单个区块,通过 DAS,验证者只需要验证单个碎片即可。
在数据分片出现之前,分片其实和 rollup 扩容类似,总归要面临链之间的通信问题,也就是我所担心的,“桥” 的脆弱性。(至于流动性割裂什么的都是小事了)但数据分片让我看到了一些新的可能,即区块真的可以轻盈地像蝴蝶一样,在蜿蜒曲折的链上生根发芽……(正好最近伍六七又更新了,想想魔刀千仞)ETH 的 Danksharding 如果能和 rollup 完美配合、各司其职,说不定就真的 “终局” 了。
只是 DAS 技术是否经得起考验,这个有没有大神给说说……
编程语言这块是真不懂,以下内容皆是鹦鹉学舌了属于是。
1⃣️目前区块链记账主要有两种形式,以 Bitcoin 为代表的 UTXO 模型,以及以 ETH 为代表的账户余额模型。后者其实和银行记账没区别,前者解释一下:Bitcoin 中,一笔交易可以拥有多个输入和输出指向不同地址,一个地址拥有的余额即是该地址所有 UTXO 求和。为了避免双花攻击,需要检查交易记录之间有无冲突,这一步就很拖;move 则定义 “资源” 这一新对象,交易是通过资源移动实现的。
2⃣️模块化合约。带来更简明灵活的函数、更安全的调用、更便捷的升级。
3⃣️更多安全考虑。比如静态调用、不支持循环调用、采用字节码语言等。
从开发者活动数据来看,move 系当前全职开发者已经与 Arb、op 等相当,增速极高(一年的数据没啥用,有月度数据或者明年再看才能看出端倪):
从代码提交来看,反而经历了较高的波动:
作为一门新语言,move 能多大程度上吸引开发者其实侧面反映了其潜力。开发者越多,语言的成长就会越健壮,生态应用也会更多,再加点资本的佐料……
aptos 与 sui 这两条链,虽然同为 move 系,但营销风格差异的确蛮大。aptos 满脸写着 “资本” 两个大字,操盘做市风格凌厉;sui 相对之下有点安静美男子的感觉,当然我去试用了下 UI 也不咋好看,体验上没什么特殊的记忆点。
从架构与共识角度,二者做得如何呢?
首先,aptos 的共识机制仍基于 BFT(称为 DiemBFT),BFT 用以应对拜占庭将军问题,指分布式系统如何通过消息交互正确地协同处理事务。BFT 要求 2/3 以上的诚实节点,通过三阶段协议(pre-prepare、prepare、commit)来达成共识。标准的 BFT 共识(pBFT),其瓶颈在于节点间通讯复杂度;其后的 Hotstuff、FBA、dBFT、Tendermint 等均从不同角度做出了改进;例如 Hotstuff,节点只需与轮换的 leader 通信即可。
DiemBFT 在 Hotstuff 基础上,将单区块经三阶段实现最终性的流程拆合为流水线作业,相当于区块 N 的 commit 和区块 N+1 的 prepare、区块 N+2 的 pre-prepare 同时进行(和 NEAR 的 DoomSlug 倒蛮像)。Aptos 同时通过 Block-STM 并行执行引擎动态管理事务处理,以及巴拉巴拉好吧这块基本是现学等我以后有时间去看白皮书 sui 也是……
(接下来是纯直觉时间
总结一下,在生态尚未雏形之时便能够通过资本手段推动如此风浪,至少在营销上,aptos 与 solana 是难分伯仲的。从资本角度,aptos 拥有比 solana 更豪华的支持阵容。甚至二者的技术方向对小白来说都是很相似的,优化 BFT、并行执行等。至于 aptos 的生态建设是啥路数,暂不清楚。
如前所述,我个人而言并不排除非 ETH 终局的可能性,也并不认为 solana、aptos 之类除了资本泡沫什么都不剩。aptos 能否吸取 solana 的教训,则只能拭目以待了。至于 sui 以及还有个被大家遗忘在角落里的 linera,等我稍微懂多点再来判断……
热闹的公链讨论背后,“区块空间” 似乎又是个被市场所忽略的名词。顾名思义,区块中用于存储数据的即是区块空间。我为什么觉得区块空间很重要?
首先需要明确的是,区块空间并非一个新名词,早已被提出被研究过;把区块空间看作一个商品,矿工是生产者,矿池是拍卖行,用户则根据需求投标竞价。用户将他们的交易记录在区块空间中,这是区块空间的第一个价值 —— 存储价值。
同时,由于单个块的大小有上限,给定时间内能够完成的事务数量也是有限的;一笔交易如果长期滞留,最终被执行时,可能会落在用户并不期望的价格之上,这也是用户愿意为即时的区块空间支付更高价格的原因,这是区块空间的第二个价值 —— 时间价值。
当然,区块空间的时间价值有我们更熟悉的一个词汇 ——MEV。
时间价值牵扯较为复杂,是供给与需求的动态平衡;相对来说,存储价值所指向的问题更为简单、明确 ——
1⃣️存储什么?在 rollup 与模块化之前,大多数链对于数据存储需求其实是来者不拒的(当然现在也是来者不拒,只不过存不同地方了);你可以存机密也可以存垃圾,只要付钱,节点就会干活。但随着费用越来越高,什么值得存就成了个值得深思的问题。
来者不拒(无许可)真的是最佳方案吗?如果某些人就是喜欢付钱存垃圾,难道所有的全节点都需要去同步这个垃圾吗?我不认为。区块空间是稀缺的,POS 之后尤甚,因为资产价值➡️网络安全➡️用户需求➡️节点负担➡️资产价值,这是一个被动的正循环,每多一份垃圾,就意味着多一份冗余和低效。
volition 选择将上链权利交给用户自己;这让我想到:是否存在可能,让节点对交易拥有一定的自主分级审查权利?不同类型的交易,理应具有不同的安全需求与费用分级。发垃圾可以,想让历史铭记住这份垃圾,百倍的费用或许不贵吧?
2⃣️如何存储?Bitcoin 所采用的 UTXO 模型,只需记录输入输出、状态只是历史的延续,存储压力相比于采用账户余额模型的 ETH 小很多;ETH 的状态由账户构成,交易却由触发历史变动的信息构成,历史与状态是两个类型的数据;ETH 的历史包括历史交易与历史状态,且其状态增长速度更快。
3⃣️于是便来到著名的 “状态爆炸”——ETH 终将面临全节点不堪重负的一天。状态爆炸除去带来 DA 问题,还揭示了另一个显著的问题,即:全节点之所以不堪重负,撇开硬件要求,主要还是在于高昂的存储成本。回到问题 1⃣️,存储数据的用户仅仅是一次性支付了费用,节点却需要永久存储这些数据(这个时候,你还觉得存垃圾是自由,是无许可的政治正确吗)。公地悲剧告诉我们,成本不对等的获取必将带来滥用。
4⃣️状态爆炸与空间滥用并非新问题,很多链已在着手解决,例如 EOS 类,想通过 RAM 实现实时租用;ETH 也曾提过 storage 方案。然而,“租” 这个概念与区块链记录数据的初衷是本质上相悖的,如果历史可以因为不续费被抹除,建立在该历史上的一切也就缺乏意义了。
这会是个长期的问题,暂时先抛砖引玉。从我个人角度,是觉得需要 “交易审查分级 + 不同分级不同策略”;ETH 新提出的 blob 会是个很好的承接地 —— 在 blob 即将被删除的一个月内,发挥去中心化力量建立众包审查市场,并为值得保留的历史购买空间。至于怎么买,发币还是引流抽水啥的,路子多的很。
以及:听到区块空间买卖,炒房套利的 DNA 都伸直了……
关于 MEV,暂不细说,我个人还是很喜欢当前 “拍卖” 以及 “民主化利润” 的方向的。
这是我在学习 DAG 的时候了解到的,主要是说智能合约需要线性时序来保证其图灵完备性。线性时序也是 EVM 的性能瓶颈。
当然,在性能和智能合约的选择之上,毫无疑问是后者,毕竟没有智能合约的区块链,真的就是吉祥物了。DAG 虽然可以并行执行交易,但最后仍然需要通过一些方法来模拟线性时序,以达到结算上的最终性。所以线性时序会是区块链性能魔咒吗?不懂就问!
仍旧延续去年” 一超多强 “的看法,但我认为今年的新通用公链可能会少很多,更多可能是 ctrl+v 的应用链(并且更可能是来源于一键生成),这种直接看应用本身就好了;layer2 也会越来越多(貌似还有一键 layer2,但私以为不存在市场)短期基本都有点存量博弈,战况只会更惨烈,最终只会留下少数几个胜利者。
总之任何公链,不管如何吹嘘技术,生态 / 市场做的好的话,可以嫖一嫖;生态不咋地的,直接 pass。公链是个非常看团队的领域,商务能力和战略能力将是决定公链发展很重要的因素。当然,如果真的是很牛逼的技术突破,到时贴在各位投研大佬屁股后面就好了。
另一个看好的生态是 cosmos,这个我之前有写文分析过,我很认可它的技术哲学。cosmos 和 ETH 在未来也并不会直接竞争,甚至有可能抱团。但 cosmos 总是不温不火,其未来发展受外部影响更多(比如新加入了一个很叼的链);以及 2.0 提案貌似被否了?为啥被否来着(不记得了)。
二层里,polygon和 StarkNet 会是两个后劲很强的选手。至于模块化那边 celestia 的死活,虽然很机智地推出 cevmos 和 celestium 要在 ETH 分片空档期搞事情,但我仍旧对其未来抱有一丝怀疑。纯粹 DA 的前期发展还是很困难的,它有个临界点;前期那么大阵仗的营销,很容易最后成了 ETH 分片的嫁衣(DAS 谁最先提出的来着?)
solana 宕机问题不知道还在不在解决,以及还有没有钱推手机业务了。虽然在 web3 用户这边基本是露底裤了,但如果手机业务有苗头,我还是抱有一点残存的希望的。
aptos 初步看下来很有意思,但现在还不是很清楚细节。总之,公链篇想说的太多,写着写着却有些吃力,主要还是学艺不精,很多逻辑没能很清晰地表达出来。2023 继续学习吧!
作者:Jojonas