imToken 杯「我的 Eth2」–大道至简,说点负面的观点 – 区块链社区 – ChainNode 链节点

imToken 杯「我的 Eth2」–大道至简,说点负面的观点 – 区块链社区 – ChainNode 链节点

2021年6月24日 eth价格$1892

【说点负面的观点】

看到太多的eth2.0的好评和点赞,我说点负面的想法。

首先表明立场,我不是一个比特币主义者,也无意诋毁以太坊,我只是一个技术男在讨论一个我理解的技术观点。

1、eth并不是什么区块链2.0,很多人提eth是行业发展2.0,无非是为了后面继续说自己的项目是3.0或者250.0,VB自己也不敢吹这个牛,虽然现在eth很牛。

2、eth2.0可能是从复杂走向更复杂,也许是一个无限的死循环,不见得是好事。

3、POS不是问题,问题是中心化是eth在pow就避不开的坑。

区块链2.0和eth2.0大家不要混淆啊,区块链2.0是指比特币之后第二代区块链系统,eth2.0就是现在的以太坊扩容升级计划。

Eth无疑是很成功的,上一波IPO发币浪潮之后,这一波defi和NFT,主流选择的智能合约平台依然是eth,说明很多吹牛取代eth的平台都是扯淡,真正到用的时候,大家依然只相信eth,这是eth的成功,但是由此带来的高费用和数据激增,已经让臃肿的eth不堪重负,到了必须跨出一步的时候。

【图灵完备并不是优势,只是功能】

我无意评论很多所谓区块链3.0(其实是250.0)的产品和技术,更无意贬低eth,只是看到太多的人错误定位eth和btc,而且这个问题也会引出去中心化系统是否需要和应该复杂性问题。

很多人奶eth,说中本聪在btc中没有实现的图灵完备,被小神童(后面我都会称VB,无意贬低也不想神化谁,就好像我曾经写过一篇文章论中本聪是狗还是神)实现了,这个是绝对的误导,扯淡,不是白痴就是太坏了。这种说法就是在暗示,你看,中本聪做不到的,V神做到了,牛逼吧,2.0吧。

中本聪之所以不在btc中实现图灵完备,不是技术实现上有困难,而是故意而为。是因为中本聪意识到,一个去中心化的系统,特别是一个愿景是取代传统银行的系统,稳定性是第一位的,如果图灵完备(可以简单理解为存在迭代和循环),可能存在很多不可预知的bug,一个去中心化的系统,很难快速修复更新迭代。这个预言在后来的eth中屡次被验证,最早的The DAO导致以太坊区块回退,分裂成eth和etc,后面也不断发生严重bug,当前的DEFI虽然繁荣,但是各种利用代码复杂性制造漏洞跑路的团队和利用逻辑漏洞黑币的比比皆是。

所以中本聪在设计btc的时候,故意让它没有图灵完备,也就是只支持5个简单脚本逻辑,并不支持复杂的循环与迭代逻辑,大大减少了btc的复杂性,当然也不能直接执行复杂的智能合约。后面btc扩容争吵了2年,最后还是以bch分叉btc告终,可见一个去中心化系统升级是多么复杂和痛苦。别跟我说什么以太坊就好多了,那只是因为以太坊太过于中心化,反而是大大的问题,这个后面再说。

当我看到《Mastering bitcoin》里面这样描述这部分的时候,不仅拍案叫绝,大神就是大神,早早就料到了10年以后的事情。当时当我看到eth不但实现了图灵完备,如此复杂却如此成功,不禁又叫了一次绝,谁说大神讲不能做就不能做,行业初期,别被某些束缚了手脚。

VB创建以太坊的时候,并不是把它定为为一个代币,而是要执行复杂的智能合约,这就必须要图灵完备,要复杂化,以太币不是eth的灵魂,智能合约才是,只是后来eth成功了,以太币也就成功成为了硬通货。

【分片不是什么新思路,老掉牙的技术】

言归正传,我们谈回eth2.0方案。Eth2.0一个基本思路就是“分片”,分片这个思路一点都不高级,写程序的人没有不熟悉数据库的,数据库表空间太大跑不动的时候,就产生了分片技术,可以简单理解为表面上看还是一个表空间一样的使用,但是后台已经分成几个部分单独存储。

我第一次看到eth要分片处理复杂性的时候,第一个想到的是bitmessage这个区块链邮件软件。这是个无币的区块链邮件系统,虽然很没有名气(不发币,也就没什么人炒作和使用),但是很早就存在了,而且很早就提出了“branch”的思路。在这个系统里面,没有邮件服务器的概念,每一个想发送邮件的人,都会接收其他人加密的邮件(只有你自己的邮件可见,具体不描述了),那么问题来了,如果使用人过多,每个人是不是就会存储太多的邮件,于是它提出branch(分叉、分支)的思路,也就是在整个区块链系统中,每个人只跟他周围的几个人组成一个branch小组,只接收和存储小组内人的邮件,这样存储的数据就不会很大。当发送的邮件超出branch小组,这是就和周边的branch小组打交道,找到邮件所在branch小组的人和邮件。

之所以写这么多,其实eth2.0的分片也是这个思路。以前一个eth全节点,膨胀到几乎不是一个普通PC可以构建的了,总数据量大于3TB,一个新建节点几天也同步不完全部数据。相比较,btc当前300多M,虽然bitcoin core强行压制总数据量的做法我并不认同,但是总体来说,当前依然能保持这么一个轻量级的体量,确实很牛逼。Eth的思路很简单,我把3TB数据分成很多小片,比如分10份,每份就只有300M了,不就没有问题了吗,每个节点只要存一个分片,本地分片解决不了的问题去到其他分片找答案。

分片越多,单个节点需要存储的数据就越少,但是本地数据解决问题的能力就越有限,分片与分片直接交流的需求就越多,复杂度就指数型上升,直到达到一个平衡点,所以分片不是无限的。

我不知道eth2.0分片是从bitmessage中得到的灵感,还是模仿数据库,总之这个技术一点也不新颖,并不是什么传奇,也没有多么牛逼,而且依然有瓶颈。

【从复杂走向更复杂,不在复杂中重生,就在复杂中死亡】

不在解决了复杂性后重生,就会死在解决复杂性的路上。

本身图灵完备的eth就已经足够复杂了。

Eth2.0要解决的问题很多,比如如何减少跨分片数据检索,让用户主要交易和检索在片内完成;如何在分片数量和复杂度之间找到平衡点;如果在新节点加入后快速重构分片检索数据,就好像OSPF/BGP4等路由协议,平时维护一张路由表,当有路由节点发生变化时,能够快速收敛,协商生成新的路由表并在所有路由器之间传递新的完整路由表,等等。对于当前一个拥有5000多个全节点eth来讲,不是个简单的事情。

记得很久以前,电信网络曾经发生过一个断网事件,原因是骨干网上有一台路由器(都是双机冗余)正常工作,但是不能登录维护管理(管理模块有问题),因为是双机,理论上重启一台另外一台依然可以完成全部工作,没有影响。于是管理员重启了这台路由器,结果,重启后发生路由重构,重新计算路由表,跟它对联的省份的路由器检测到路由变化,也重构路由表,重构路由表的过程由于耗费大量cpu资源计算,对端省份很快产生了一个路由器cpu过载告警,其实只要不管它,很快就过去了,一切就正常了,但是偏偏网管告警系统非常好,马上发现了问题并告警,对端省管理员不知道发生了什么问题,面对cpu负载大的告警,直接重启路由器想解决这个问题,于是更多省路由器cpu过载告警,其他省管理员也采取了重启路由器的解决方式,于是乎,省网上大量骨干路由器重启,这个路由表没办法收敛了,不断的变化,重新计算路由拓扑,cpu一直下不来,而且路由表一直不能重构完成。最后造成大面积断网,而且持续时长20多分钟。

这很像一个去中心化系统,因为没有人看到全局,统一协调所有省份,很多人不知道发生了什么,只是根据自己的情况做出应对方案,最后的结果是灾难性的。这个事件中,总共三十几个省,路由器60多台而已,而且使用的是非常成熟的ospf路由协议,不难想象,5000多个节点的去中心化eth网络分片后的复杂性有多高,或者说根本无法想象这个复杂性有多高。任何一个节点的任何动作,都不可能告诉VB,然后VB发通告告知全网管理员,哈哈哈,脑补一下这个妖操作,更不要说还可能存在恶意的破坏节点,如果有人放入几十台破坏节点就能让eth2.0网络瘫痪而打击币价,所有人都会这么做,至少我会做,简直太爽了。

是不是很复杂,是不是很可怕。稍有不慎就万劫不复。

对于中心化系统,复杂不是问题,有集中化管理,有高素质管理员维护,没有作恶节点,所有系统都足够冗余。但是去中心化系统不行,各种原因,比如资金有限,租用的云主机流量超标突然断网,磁盘空间满不能加载新数据,CPU/MEM资源不足验证效率慢,甚至大量全节点主机被黑客攻击等等。任何一种情况发生,可能长时间没人解决。

为了解决这台快拖不动的车,让系统更加复杂。如果维持现状,系统还能跑两年,但是提出了2.0,开弓没有回头箭,说2.0复杂不现实不做了不可能,所以,eth2.0要么能在未来几年中(不指望明年底都能解决和顺利上线)发现并解决主要问题,要么可能就彻底失败。回退到pow和1.0时代,整个人设就崩塌了。当然,eth都听小神童的,什么问题都能快速解决甚至回退区块也无所谓,这里并不是危言耸听和调侃曾经VB的区块回退,大量POS质押代币节点,一旦发生涉及利益的大bug,很可能只能回退区块解决。

【大道至简】

真正好的事物,不是要让客户感觉多么复杂高深,而是多么简单亲切。以太坊不应该让自己越来越复杂,越来越晦涩难懂,至少呈现给开发者、用户、全节点建设和维护者(POS后建设全节点就不是为了开发,而是获得代币利益了,这个也变得很关键)等生态中每一个人的感受要足够的简单。

就好像我理解,ipad和iphone为什么成功?就是简单啊,点点点就ok了,荷兰猪用鼻子也能玩一玩。我曾经越狱过ipad和android手机,获得root权限后可以ssh进去,发现就是一个完整的linux系统。这是什么概念,linux曾经被认为是专业人士和开发人员使用的系统,普通用户只能用用windows,而ipad就是把复杂的后台linux封装起来,呈现给用户的就是点点点这么简单的界面和操作,比windows还简单,就成功了。如果是装逼显示专业,怕没人搭理它。

谷歌引导的大数据(big data)系统,后来被yahoo开源的hadoop,其思路依然是大道至简。最早数据记录在类似txt的文本文件中,随着数据量增加,检索等需求越来越复杂,慢慢产生了类似excel这种小型数据库,然后是oracle这种关系型数据库,随着数据进一步增加,这些数据库也装不下跑不动了,于是谷歌想,我把数据分片装入txt文本,排序索引后,不但能处理几十上百TB的数据毫无压力,而且自由扩展,查询检索效率也不比传统数据库差。从txt文本又回到txt文本,大数据说起来神乎其神,其核心思路和道理不过如此。

从这个角度看eth2.0,并不乐观。诚然,很多事情没有那么理想,大家都在寻找改进的方式,有些东西甚至是矛盾的,只有中心化之后TPS才会大幅提高。如果eth2.0只是来秀肌肉的,就算最终实现了分片存储、高TPS等效果,依然不会成功。

【去中心化的路很漫长,以太坊还要走很久】

如果说btc的去中心化是1.0,那么eth不但不是什么2.0,反而是0.5甚至0.1了,其他代币或者区块链系统就更不用说了。

中心化真的不好吗?eth通过中心化操作,不但快速解决了发现的bug,而且产品高速迭代,不断更新,至臻至善,似乎无限美好啊;btc一个扩容吵了2年都每个结果,要是没有中心化操作,eth不可能发展这么快、这么好,大有弯道超车的意思,都是拜中心化所赐。Eth的世界里,大家都信V神,V神还有钱,租个几万台云主机,所有节点V神建设管理,冗余、效率、可靠,处理速度分分钟超过某宝、某信,这样不好吗?

但是这个问题就回归到行业的本源了,为什么要搞btc/eth这种冗余而低效的区块链系统。btc/eth的核心不是发行了一个代币,而是去中心化的信任系统。我一直很喜欢强调这一点。没有去中心这个核心点,btc/eth毫无价值,以前中心化系统都做得很好了,智能合约九十年代就有了,而且非常成熟,只是没有运行在去中心化的系统中。

Eth虽然享受了很多中心化操作带来的好处,但是eth要是不能走出中心化的问题,必将走向灭亡。Eth享受中心化带来的好处就好像吸毒,越吸越上瘾,欲罢不能,我相信eth2.0的路上,一定会通过回退区块的方式解决问题,只是几次而已。VB也很清楚,狼来了的事情喊多了就没人相信了,所以后面出现比THE DAO更严重的丢币事件的时候,大家问VB能不能回退,VB说不能(有人调侃THEDAO是VB的钱,所以能回退,后面不是VB的钱,所以不能)。但是我们不要忽视一点,就是只要VB点头,依然可以随时回退,没有人否认这一点吧,就算有人不服分叉,有VB支持的分叉依然是大家心目中正宗的以太坊,看看etc混的不要说兄弟、儿子,连孙子都不如的地位就能知道。

POS没有人会怀疑效率更高(没有蛮力计算,到时间就能出块),安全性更好(由于质押代币作恶的惩罚更严重),但是继续走向中心化这个死结(所谓富者更富,拥有更多代币的人拥有绝对的发言权)。

ETH高举去中心化大旗,行中心化之实,没有困难的时候把自己打扮得像个纯真的小姑娘,因为有恃无恐,在困难的时候不会去考虑如何用去中心化的一套方法思路解决,人家就没想过为了一个小小的问题争吵几年,分分钟推出VB就搞定了,甚至不用VB也很少有噪音。有些人感觉这没什么不好,甚至以此嘲笑BTC核心团队搞不定矿工和社区,才让项目很久没有啥变化和重量级更新。

最近几天看到有团队在阿里蚂蚁链上开发了一个敦煌飞天的NFT,大卖,很火,如果eth不坚持走去中心化的路线,真的打得过这种企业发行的联盟链吗?像币安这种交易所的平台链bsc也虎视眈眈,看看其他几个竞争的链,EOS无论从挖矿(21个超级节点)到开发团队都超级中心化,孙割的链风风火火蹭着热点,居然成为usdt最大发行链,更不要提中国一大堆阿猫阿狗链,无论上没上交易所,都是清一色的公司化运作,根本不是什么开发社区。

无论这些被如何炒作,币价多高,我依然固执的相信,没有去中心化,都将成为历史的尘埃,一文不值。如果eth2.0让以太坊更加中心化,怕不是进步,而是真的走向无法回头的灭亡。

感谢链节点的活动,希望eth2.0能够成功并继续辉煌。

用于链节点社区imToken杯「我的Eth2」征文大赛https://www.chainnode.com/post/587419