反击!多位资深开发者反驳某些批评 Move 系公链的言论

Foresight · 2023-06-27 20:02

Web3

PoS

PoW

Aptos 和 Sui 真有某些传言说的那么不堪吗?


受访者:

Wubuku,低代码 Dapp 开发平台 dddappp 创始人;

Nanne2022,资深 Move 生态开发者;

Zhou Qi,以太坊生态存储类项目 EthStorage 创始人;

Li,资深 Move 生态开发者;

Jolestar,支持 Move 的 Layer2 项目 Rooch 创始人;

eternal,Move 社区成员

整理:Faust


前情提要:在 2023 年 6 月 21 日,名为「刺耳的 Whistle」的媒体发表了一篇题为开技术倒车!Aptos 和 Sui 其实是联盟链,生命取决于资本的耐心的文章(原文链接在本文末尾处)。文章主要内容是关于作者北辰对一位疑似来自芯片巨头高通公司的通信工程师 Steven 的采访记录,并对 Aptos 和 Sui 做出了诸多批判。文中称 Steven 是经常对区块链发表暴论的技术专家,并称 Sui 不是区块链的正确方向,Aptos 和 Sui 用的都是联盟链的技术。


此文一出,便在一些 Web3 社区引发广泛传播和争议。包括以太坊社区和 Move 社区在内的,诸多业内技术人员,都对此文做出了批判。


本着实事求是精神,我们与多位业内技术大咖进行了访谈,针对《开技术倒车!Aptos 和 Sui 其实是联盟链,生命取决于资本的耐心》中有争议的 12 个论点进行讨论。


1.关于这篇批判 Move 系公链的文章在标题和结尾处,反复提到「所有的 Move 系公链本质上就是一个联盟链。」



Nanne2022:区分联盟链和公链有多种指标,最重要的是节点的准入门槛。联盟链节点需要获得官方的许可才可以进入网络中,并且不允许用户私自搭建同步数据的全节点。联盟链的数据只有节点内部可以同步,外界想获取数据,只能通过联盟链内部节点对外提供的接口。


而公链的全节点没有准入门槛,共识节点 Validator 质押足额的资产就可以进入。


此外,在技术上可以区分是公链还是联盟链,比如共识和网络通讯层面,公链和联盟链的设计就不一样。联盟链只考虑固定数量的节点,设计原则就是节点是官方许可制,不是无许可制的。这样会使得联盟链的技术实现相对简单。事实上,Aptos 和 Sui 用的都不是联盟链的技术,而是公链。


真正为人所诟病的无非是 Aptos 和 Sui 不够去中心化(相比于以太坊),并且 Sui 官方在二级市场上有控制 SUI 流动性的能力。


注:目前包括 Aptos 和 Sui 在内的绝大多数公链,全节点都没有准入门槛。Aptos 的共识节点质押 100 万枚 APT 就可以运行,Sui 的共识节点需要质押 3000 万枚 SUI,都不需要获得官方的许可。


2.关于文章开头声称,Aptos 和 Sui 其实没有区块,也没有链。



Wubuku:首先,Aptos 有区块,只要看一下它的 Node API 文档就清楚。



其次,Sui 的确没有区块的概念,因为它用了针对交易数据的 DAG 结构。但是,狭义的「区块链」没有那么重要,实现 Web3 愿景需要的是「去中心化的账本」,不是某种特定的数据结构。


3.关于文章作者认为,「web3 圈的人挺没见识,比如 Dfinity(ICP)出现后,很多人就很兴奋,觉得叙事宏大,能解决很多问题,但其实那就是云原生的故事,微软、IBM 都搞了多少年了。」



Jolestar:ICP 的构建路径的确有问题。但这个作者应该是觉得「去中心化的云计算」这条路不对,但 Web3 就是去中心化的云原生。


4.关于文中嘉宾 Steven 认为,「自以太坊以来,没有再出现什么新的技术范式。」



Zhou Qi: 如果是指最早的以太坊,其实它和它以外的技术范式更迭都很快。ZK,DA,Verkle Tree,交互式欺诈证明,这些技术范式的最早发起者都不是以太坊基金会,但很快就被以太坊借鉴并吸收。


比如,以太坊在 DA 方面借鉴了 Celestia,在 PoS 共识协议上借鉴了 Cosmos 的 Tendermint。ZK 也不算以太坊本身的技术,但是在推广 ZK 概念上,以太坊基金会花了不少力气。


另外,Move 语言也算是技术范式上的创新。Algorand 和 Cardano 在 POS 上的范式创新也很重要,只是还没有经历大规模的考验。


5.关于 Steven 认为,「Solidity 是一种编译型语言,Move 是解释型语言。」



Nanne2022:如果要用「编译型」和「解释型」来划分,Solidity 和 Move 应该被划分到一种类别中。


传统意义的划分中,编译型语言是将代码编译成比较接近机器底层的形式,比如汇编语言,然后由机器链接运行。解释型语言,是将代码编译成某种更上层的字节码,然后由这种字节码的解释器直接解释运行字节码,比如 Ruby,Python。


如果从这个角度来讲,Solidity 和 Move 都是先被编译成虚拟机能够解释的字节码,具体执行时再由解释器输出为底层硬件能够理解的机器码。无论怎么理解解释型和编译型,Solidity 和 Move 都是处在同一类别下的。


eternal:Solidity 和 Move 写的合约,都是先在开发合约的 IDE 平台所在的主机本地完成编译,上传到链上时存的都是字节码 Bytecode。从语言被编译器和解释器处理的整个流程来看,Solidity 和 Move 没什么本质的不同。


6.关于 Steven 认为,「Move 语言是前 Facebook 的联盟链项目 Libra 创造的,基于 Rust 语言来实现,是为联盟链而生的。Move 继承了 Rust 的硬件资源管理,有良好的并行能力。」



Wubuku:首先,Starcoin 就采用了 Move 作为合约开发语言,共识算法上沿用了比较经典的 POW,和联盟链就没有任何关系。然后,Rust 是为系统编程设计的语言,Move 是为「智能合约开发」而重新设计的语言。所谓的「Move 继承了 Rust 语言的硬件资源管理」,其实风马牛不相及。再者,不能因为 Move 的「面向资源编程」在一定程度上受到了 Rust 所有权机制(用于实现内存安全的)的启发,就说「Move 继承了 Rust 语言的硬件资源管理能力」。


eternal:无论是 Solidity 还是 Move 写的合约代码,最后都被放到沙盒化的虚拟机里运行了,根本就感知不到底层的硬件资源。Move 没有像 Rust 那样的「硬件资源管理能力」。此外,现在已经有 Rooch 和 ZkMove 这类支持 Move 语言的以太坊 Layer2,写 Move 合约不是非要在 Aptos 和 Sui 上。


7.关于 Steven 认为,「Move 不是一种好的语言,因为如果脱离了 Aptos 和 Sui 等项目,Move 就没法用。」



Nanne2022:这对于 Solidity 也是完全一样的。如果 Solidity 脱离了支持 EVM 的链,也没法用。「XXX 不是一种好的语言,因为你如果脱离了 XXX 生态,XXX 语言就没法使。」这一套放很多编程语言身上也是一样的。


eternal:Steven 会这么说,主要是因为 Solidity 和 Move 需要专门的虚拟机才能执行,这需要专用的程序,但统治整个互联网开发领域的 Java 一样需要专门的虚拟机。如果放在上世纪末 Java 刚推出不久时,也有人会说:「Java 如果脱离了 JVM 生态,就没法用,所以不是一种好的语言。」


8.关于 Steven 认为,「Aptos 和 Sui 的整个体系是从 Libra 继承过来的,在 Libra 基础上有改进,但改进不大。」



Wubuku:Aptos 主网上线时间较早,其实和 Starcoin 相对接近,但是共识是更「环保」的 PoS。


Sui 的改进其实相当激进,在公链 / 网络的状态存储模型方面,Sui Move 进行了相当彻底的重写,抛弃了 Starcoin 和 Aptos 的账户存储模型,采用对象存储模型。在这几个不同公链上做过应用的 Move 开发者们,一定对其中的明显差异深有感触。不能因为人家有团队成员是从 Libra 出来的,就天然认为人家就指望着啃老本。


9.关于 Steven 认为,「Libra 就是一个带版本号的关系型数据库,每次交易都会更新一下账本状态,这与传统区块链完全不同。区块链账本只会新增字段,不会修改已有的字段。这种全局状态控制的方式只适合联盟链,不适合公链。」



Li:区块链本质就是一个可验证的 Key-Value 数据库,没有必要非把它和关系型数据库分个高下。


Zhou Qi:以太坊的账本状态模型 StateTree 就可以修改已有数据,是支持增删改查、带版本号的 Key-Value 存储模型。而且其他的传统区块链账本也可以删数据,比如比特币链上的 utxo 用掉了,就被删掉了。


Jolestar:感觉 Steven 对状态树 StateTree 的理解不太准确。


10.关于 Steven 认为,「Aptos 设立时间戳来安排区块链上的执行次序,不需要在矿工之间形成广泛的共识。这么做容易被攻击......区块时间容易预估,导致 Aptos 的安全级别下降。」



Li:Aptos 的记账模型是和以太坊基本一致的账户模型,用的 BFT 共识也不是靠时间戳来定序的。所谓的「区块时间(出块时间)」可以预估,无非会让不同时刻的 leader 提前暴露,理论上可能有遭到 ddos 攻击的隐患。但这属于可用性问题,和安全性没有联系,而且 Aptos 每个时间点的 Leader 暴露时间只有几十秒,每秒都在轮换 Leader。


eternal:Aptos 无论是区块还是交易,都要经过至少 2/3 的矿工(Validator)共识,并不是「不需要在矿工之间形成广泛的共识」。只不过 Aptos 上的交易数据被共识,是在打包进区块前就完成,区块中不需要包含完整的交易数据,只要有摘要就行。


Zhou Qi:某个时间点的出块者被预估,理论上是可以被 ddos 的。但 secret leader election 可以解决这方面的问题。


11.关于 Steven 认为,「Aptos 只是一个关系型数据库......跟传统的关系型数据库没什么两样。」



Wubuku:以我这种做了二十多年传统企业应用和互联网应用的资深 CRUD boy 的体验,Aptos 和「关系型数据库」提供的体验有天壤之别。


Li:区块链本质就是一个可验证的 Key-Value 数据库,没有必要非把它和关系型数据库分个高下。


12.关于 Steven 认为,「Sui 并不需要所有的节点都达成共识......


Sui 把交易分为简单交易和复杂交易,简单交易只要签名就结束了,复杂交易只需要 BFT 一致就行。


任何交易只要能提交,理论上可以单独完成验证......Sui 直接抛弃了区块链最基本的共识。」



Nanne2022: 共识的含义是,系统中多数节点对某个消息的确认,能在一定时间内达成稳态(也即能够继续处理后续消息)。Sui 中的交易,无论是简单交易还是复杂交易,都需要收集一遍节点的签名,超过 2/3 的节点响应,简单交易才会完成共识,复杂交易才会进入下一步共识流程。


简单交易不会和其他交易发生冲突,天然可并行。既然如此,自然可以把简单交易和复杂交易分开做共识验证,这样可以提速。


至于 Sui 为什么能够实现交易的快速确认,和它采用的 Narwhal 内存池协议也有很大关系。Narwhal 保证了要共识的消息能够在本地直接获取,使节点能在本地直接完成共识,不需要再从网络中获取类似区块的消息。


Wubuku:Sui 比较特殊,可以针对简单交易和复杂交易,采用不同的共识方式,这个要从 Sui 采用的对象模型说起。


Sui 的对象模型包含 Owned Objects 和 Shared Objects 两大类型。其中,Owned Objetcs 类似比特币的 UTXO,但却是「增强版的 UTXO」。相比之下,Shared Objects 更贴近处理全局数据的以太坊合约账户。


Sui 的简单交易往往只涉及 Owned Objects,后者类似 UTXO,只有其 Owner 可以操作,并且有版本号,天然支持被并行处理。那么,只涉及 Owned Objects 的简单交易当然可以在共识验证上走捷径,不需要和其他交易放在一起排序。

免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表Bi123的观点或立场

相关推荐

上一篇:详解区块链在支付领域中的作用及难点

下一篇:日本时报:不同于美国的寒冬,Web3 正在日本迎来新生

扫码下载APP添加官方微信
行情机会交流