转自:https://zhuanlan.zhihu.com/p/361104358
EIP-1559是什么?
EIP指的是来自以太坊社区的对于以太坊算法进行各种改进的提案,这些提案中有的已经被采用到以太坊的升级之中,有的因为各种原因没有被采用就被淹没在了以太坊的历史之中,有的甚至都没在社区里掀起什么波浪。
但EIP-1559显然不属于默默无闻的那一类,无论最终被接收与否,它依然在社区中掀起了惊涛骇浪。
那么,这个掀起了惊涛海浪的EIP-1559是什么呢?
由于EIP-1559现在又成了一个政治问题,所以几乎所有EIP-1559的介绍性文章都是有偏向性的,因为解释得都不够清楚——支持EIP-1559的不愿意说EIP-1559的隐藏动机;而反对EIP-1559的不愿意说EIP-1559设计的原本目的。
于是,在我看来,清楚地解释了EIP-1559机制和设计原因的文章一篇都没有。
所以,这里,我从一个中立的视角,来解释一下EIP-1559最核心的本质是什么,怎么来的,以及想要做什么。
降低交易费
它从目的上,就是一个试图降低交易费的提案。
如果说以太坊现在最大的问题是什么,十个以太坊用户中有九个会说是拥堵,剩下一个会说确认时间太慢和交易费太高——换句话说,还是拥堵。
以太坊的拥堵已经是老生常谈的事情了,而对于拥堵的最根本解决方案是扩容。
而扩容的一劳永逸的解决方案叫分片,然而这个一劳永逸的方案似乎永远停留在“下一阶段的计划”里;于是,等不及的社区搞出了rollup方案,虽然没有分片能够带来无限扩展的输出提升,但是无论是几十倍还是几百倍的提升(根据rollup项目不同有所区别),但无论如何对于现在拥堵的以太坊而言都是雪中送炭。当然,以上这两个方案都不是本文的重点。
EIP-1559无关扩容,它解决的并不是容量问题,它从另一个角度解决拥堵问题。
就比如说,北京市车辆道路的拥堵是路窄车多的问题,根本解决方案是修路,要不然限号。但换个角度讲,车多路窄虽然是堵车的主要原因,但是唯一的原因吗?并不是,车辆频繁变道,加塞,占用快车道低速驾驶等不文明驾驶行为也是堵车的原因——这种行为可能会让本不堵的路变堵,或者让已经堵的路变得更加堵。
而实际上,如果我们把堵车的时候所有车都按部就班地排队当作一个有效率的使用交通资源的行为,那么频繁变道、加塞这种“在与其他车辆的,信息无法互通的竞争中,为了自身利益而采取的”的行为是一种没有效率的交通资源使用行为。于是,在拥堵也就是交通资源十分紧张的情况下,用某些方法敦促所有人都能够更有效率地使用有限的交通资源,其实也是缓解拥堵的一种方法。
而EIP-1559就是这样的一个方案。
在以太坊中,如果我们考虑“交易/费用”,也就以“每块钱能使用的链上计算资源”作为效率的度量标准,那么在拥堵的时候,以太坊的效率的确是不高的。原因是以太坊的“第一价拍卖”(first price auction)。
第一价拍卖
第一价拍卖其实就是我们理解的最一般的拍卖模式。
在交易拥堵的时候,以太坊采用第一价拍卖原则来选择交易,换句话说,就是“价高者得”。这个“得”,指的是得到矿工打包上链的机会——打个比方,如果有5个打包上链的机会,如果10个人分别出价1到10,那么矿工自然会选择出价6到10的那五个交易上链。
那么剩下的那5笔交易怎么办呢?它们会被留在交易池里,如果下一个区块又有5个位置,而其他交易出价都小于1,那么这5笔交易就上链了。
以上的情况在实际中很少出现——在不拥堵的情况下,大家只会出一个约定俗成的基本价格,比如1,这个时候,一般人是没有理由出高于1的价格的。
但到了拥堵的时候,比如前面说的有10笔交易等待上链但只能打包5个的情况下,如果大家都出价一样,那么选择权就到了矿工这边——必然有5笔交易会轮到第二轮才能被打包。
这个时候,如果10个交易者都希望自己的交易这轮上链,他们就得提高自己的交易价格。但这个时候问题来了——提高多少呢?因为以太坊并没有一个实时公开的公告牌告诉你别人都报价了多少,于是,每个人都会想“如果我提高到2,万一别人都是这么想的,那么我岂不是也没法保证这轮上链?”
这就像是在堵车的时候,如果每个人都希望自己比别人更快,于是他们就会尝试变道、加塞……于是导致堵得更厉害了。
但加价是没有上限的。如果每个人都觉得别人会加到2,那么想要立刻上链,就得加到3,以此类推……此外,加上以太坊和中心化平台的区别,别人看不到你的加价,自然也没法准确判断现在其他人的出价,于是,大家只能靠猜别人的报价来出价。
不知道大家有没有在高峰时间打滴滴的经历——显示的是加价可以更快打到车,但是当你加了5块之后,你等了10分钟车还没有来,这个时候,你并不知道是因为没有车还是因为加价不够;而这个时候取消就等于前面白等了,于是剩下的选项就只有等下去和继续加价。
最终的结果,是你可能打上了车,但你支付的费用可能超出你需要支付的价格——比如说,也许你不用加价也能够叫到车,或者,也许你原本+10元就能打到的车,而你加了20元才打到。
在以太坊中也类似,而且,在以太坊里你是没法下调交易费的,因为即便降低了交易费,矿工还是可以发布收到的高交易费的交易。这个设定引起的另外一个结果就是——如果你因此担心对于交易费的判断错误而不愿意增加交易费,可能会导致交易长时间无法上链。
于是,着急交易上链的用户,在这种信息不全的竞争中就有可能会付出比需要更高的交易费。也就是说,在本就拥堵同时效率不高的以太坊网络中,交易的成本由于竞争的溢价变得更高了。
统一价拍卖
EIP-1559的出发点就是通过第一价拍卖的形式来改变以上的这种情况——这种方式就是统一价拍卖。
继续考虑之前的那种情况,10个人分别叫价1-10,而矿工选择5个打包。
在统一价拍卖中,每个成功上链的人不需要支付自己的叫价,而是只需要支付所有被打包的交易中叫价最低的那个人的出价,然后矿工获得这些钱作为奖励。这样,仍旧是叫价6-10的人获得打包上链,但每个人只需要支付6就行了。
这个提案对于用户自然是好的。对于他们而言,交易费用减少了,而且从心理感觉上是非常友好的。你想想,如果是前一种拍卖方式,那么叫价10的人看到最终的结果一定十分懊悔——早知道就叫6而不是10了,白白多付了4。但统一价拍卖就不会存在这个问题,即便你叫价高了,最终还是只需要付叫价最低的那个人的叫价。
对于矿工而言,这种拍卖方式一定是不好的,因为很显然他们的收入下降了。但其实从长期来看这种方式也没这么差,首先,拥堵的时候矿工收入还是会增加,只不过赚得没有那么多了而已;其次,实际上在以上的场景中额外多赚的出价7,8,9,10的四个人的钱,实际上是利用信息不对称导致的过度竞争而赚来的:如果出价是透明并且能够实时更改,五个人在看到对方的价格之后,其实也只要把价格改成6就可以成功上链。
所以,如果一直保持这种情况,最终用户们可能自己会搞出个平台让他们互相交换出价信息,或者,换一条允许他们透明地交换信息的链,于是这个信息不对称的钱矿工还是赚不到。于其这样,不如干脆提前让出来不赚,这是个从用户友好方面的考虑。
但统一价拍卖有个问题,我们来考虑以下这种情况:
在打包完上一个区块之后,现在交易池里还剩下出价1-5的交易。
这个时候矿工如果打包这5笔交易,那么他能够收到的交易费是5,因为最低出价是1。
但这个时候矿工心生一计——如果我自己生成一笔出价为2的交易并且打包进区块,那么我的收入将变成8,因为最低出价是2。
这就是统一价拍卖导致的问题——矿工有可能会自己生成交易来抬价。而在网络原本就拥堵的情况下,矿工生成的这些交易挤占了本就有限的资源,比如原本能够上链的那笔出价为1的交易,现在就只能多等一轮了。
基础费+小费
但实际上,用了统一价拍卖之后,矿工还是从用户的竞价中得利了——因为其实即便是6的出价从事后看来也太高了,如果十个人能够坐下来商量一会先来一次“模拟报价”,然后出价6-10的人会对出价1-5的人说:“我们愿意出的价更高,所以你们加价也只能第二轮上链,不如我们干脆都别为了竞争报那么高的价格好了——我们出2,你们出1。如果我们以后每次都采用这种有商有量的方式报价,那矿工就没法一直赚我们那么多钱了!”。
大部分人都表示了赞同,于是大家结成了价格同盟:
以后如果发生拥堵,那么交易费提高一个固定值;但是如果不拥堵,交易费会降回正常水平。
但也有人表示不服气:
“我就是有钱,我想花钱让我的交易早点上链,凭什么不行?”
其他人表示当然行,但你花钱的结果就是大家陷入内卷,导致最后不想花钱的人也得支付额外的费用。
于是,一个基础费+小费的方案应运而生:
大家私下根据拥堵情况约定一个价格,大家都遵守这个约定组成价格同盟使得在拥堵这样的卖方市场下,矿工也赚不到大家在竞争中抬高物价的钱。
然后,如果真的有人非常着急上链,那么大家默许你可以通过私底下给小费的方式实现,明面上大家仍旧保持价格同盟。
于是,为了防止真的出现以上的,用户们掀桌子说“去你的拍卖,老子就只出这么多钱,爱要不要”的情况,以太坊选择妥协:因为虽然以太坊很大,但是虎视眈眈的竞争者也不少,现在看起来以太坊的资源是个卖方市场,供不应求,但如果交易费高导致以太坊成了“不合算的选择”,那么很可能一瞬间以太坊就成了求着交易者来链上发交易的一方。
于是,在这种情况发生之前,未雨绸缪的方法就是先于交易者提出这个方案——
“你们也别价格同盟了,我们也不拍卖了,价格就按照你们的方案定死,叫做基础费。”
“然后小费你们也不用偷偷摸摸给了,直接给就行,我们反正规定小费不会影响基础费,不会因为小费高就哄抬价格。”
销毁基础费
但以上这个机制还是有点问题,因为前面提到的矿工发交易来提高基础费这事还是可行的——在网络不拥堵或者拥堵不严重的时候,矿工总可以生成一些交易造成网络拥堵的假象,从而提高基础费。甚至说,矿工应该可以设计出一个算法,然后根据网络中的交易数量来计算什么时候生成多少笔交易可以让自己获利最多。
于是怎么办呢?
在现实中可能办法不多,但是在区块链里,还真有一个办法:
矿工不获得基础费,而是改为销毁。如果基础费需要销毁,那么矿工自己发交易这事就不可行了——原来,只不过是左手倒右手,发点交易然后交易上链交易费又收回来了;现在发交易变成了真的要烧自己的钱,而且增加的基础费也落不到自己手里。
销毁这词看着有点奇怪,但是在区块链里一点也不新鲜。
大家相对更熟悉的是比特币的区块奖励,也就是铸币。铸币的本质上是现在所有的持币者稀释自己持币的价格来吸引新的用户和矿工加入,来增加整个区块链的价值。
那销毁币的本质其实就是拿自己的币来给所有持币者分红。因为销毁币会造成通缩,而通缩能涨币价,而币价上涨就是热度,这无论对于用户、矿工、开发者还是整个圈子,没人会觉得是一件坏事。所有的流动性不足,交易量下降之类的问题和这个好处比起来都不值一提。所以从很久以前开始很多区块链团队都把定期销毁一部分自己的币当作拉升币价的方法。
而这次换到以太坊,这么一个原本是通胀的系统中,这个提案完全是给整个社区打了一针鸡血,几乎没人能抵抗得住“通缩”这个词的魅力。
但唯一的例外是矿工——因为销毁的是本来给矿工的交易费,这相当于是拿矿工的钱给持币者分红……
当然,从另一个角度说,这也不能完全说是矿工的钱,因为没人说比特币的交易费模型就得是唯一的真理,这只是另一个交易费方案而已,也就是——交易费的部分用来给所有持币者分红,而矿工仅拿小费的部分。
从某种角度讲,就如同你是一个非常繁忙的餐馆的服务员:无论忙于不忙,你都有一笔基础工资。然后,由于某大型活动最近餐馆的生意好起来了,天天爆满,但因此增加的交易额与你无关,而是增加了餐馆老板们的分红。不过,对你而言也不是全无好处,因为你还是能从更多的交易中赚到更多的小费。
这……听起来也挺合理的——如果我们把矿工定位成餐厅的服务员的话。
那矿工对此是什么意见呢?
以太坊矿工的处境
说矿工的意见之前,我们得先解释一下矿工是干什么的,以及以太坊里的矿工的地位。
算法共识与社会共识
从理论上来讲,对于一切采用PoW的区块链而言,矿工都是这个区块链的核心。因为矿工们在实实在在地维护着根据最初定下的算法产生的账本,也就是共识,我们姑且称之为“算法共识”。
而我们之所以使用区块链,根本原因就在于我们希望用这种“算法共识”来代替“社会共识”,因为“社会共识”是人的共识,而人的共识需要建立在信任上,人之间的信任成本通常是很高的。相比而言,“算法共识”一旦定下就自动执行,节省了“社会共识”中的监督和冲突的成本。
但从另一个角度讲,我们毕竟生活在社会之中,因此“社会共识”是客观存在的。所谓“社会共识”,就是大多数人对于某件事情的看法。
于是,我们就面临了一个有些哲学的问题:
什么是以太坊?
或者说,对于所有的区块链,我们都会随时面临一个灵魂拷问:“如果这条链现在分叉了,而其中一方符合‘算法共识’而另一条符合‘社会共识’,那么哪条链才是这条链呢?”
实际上,这是一个很现实的问题,因为每次硬分叉我们都面临这种选择。而结论是在大多数情况下人们都会选择社会共识。
一方面,是因为至少在现在,“算法共识”这件事远没有“社会共识”那么深入人心——“代码即法律”这件事尽管已经被讨论了那么久,但是现在可能仍旧只有一些极客真正信仰这件事。一边是算法给出的正确的东西,而另一边是由创始人、核心团队和投资人“官方认证”的东西,大部分正常人都会选后者。
而另一方面,是因为实际上区块链的“算法共识”其实也是一种“社会共识”,因为无论是以太坊、还是大多数后面出现的公链,人们其实达成的共识实际上都不是基于某个算法或者某段代码,而是对于白皮书,创始团队以及未来前景的认同,所以也就是“社会共识”。而在某个阶段使用某种算法达成共识,而在未来,当创始团队更新这个算法的时候就采用新算法,其实也是这个“社会共识”的一部分。
于是,在以太坊中,尽管矿工从原理上,每天都为所有的用户达成“算法共识”——他们每天都坐在一起开会对于新发布的交易进行表决,然后盖章,发布,就好像整个账本的正确和真实与否是他们达成共识的结果一样。而实际上,他们只是一个更大的“社会共识”的一部分——是创始团队和开发者定下一个规则,一个房间,让矿工坐在一起开会并同意他们表决盖章的结果是正确与真实的。而无论是社区、开发者、用户、投资人还是交易所,他们其实相信的共识是“创始团队一定会选出正确的人用正确的方法来达成算法共识”,而不是“算法共识”本身。
而且,其实这两者的地位是此消彼长的关系:
如果创始团队不活跃,不经常地去修改“算法共识”或者不去强调自身的“社会共识”,那么久而久之,“算法共识”就会更加深入人心,比如比特币。
而如果反之,如果创始团队很活跃,始终强调“社会共识”并且将修改“算法共识”纳入“社会共识”的一部分,那么自然“算法共识”就会变得非常弱。
以太坊的矿工地位
因此,由于以太坊有一个十分活跃和精力充沛的创始人Vitalik Buterin,以及相当出色的研究者和开发者团队,使得在以太坊中达成“算法共识”的矿工本身就处于从属和相当边缘的位置——
从某种角度来说,矿工不是达成共识的主体,他们只是一个更大的,由社区、开发者和Vitalik Buterin达成的关于以太坊的共识中,暂时被选出来运行以太坊的人而已。
如果这么想,那认为矿工相当于服务员赚基础工资和小费的确没什么问题。
但除了“社会共识”强导致的矿工地位低下之外,以太坊的矿工地位甚至还要低于其他PoW链。原因有2:
其一,因为以太坊的PoW算法是Ethash,是个内存依赖型的哈希算法,而内存依赖性的哈希算法的ASIC矿机设计上有难度,导致时至今日显卡矿机仍旧是挖矿的主流,也就是说,普通用户想要进入挖矿的门槛还是比ASIC矿机要低。虽然说其实PoW中心化的罪魁祸首是矿池而不是矿机,但相比于采用ASIC矿机的矿工,显卡挖矿的矿工显然组织程度和中心化程度上还是要低于比特币矿工的。因此,尽管实际上以太坊矿工的主体肯定还是大矿池,但大矿池的参与者都是散户,而相比于ASIC矿机,散户的利益诉求没有ASIC矿工那么强烈和一致,尤其是显卡矿工其实还有其他的替代币种可挖。所以矿池对于散户的约束力也没那么强,导致矿池在开发者面前,也少了一些叫板的底气。
其二,因为以太坊从设立之初就加入了“难度炸弹”。其实大家也不用管这个“炸弹”是个什么东西,其实就是以太坊在最初的“社会共识”和“算法共识”中,都写明了“以太坊最终要从PoW变成PoS”。后来,虽然“难度炸弹”一再延期,也就是“算法共识”一变再变,但是关于PoW最终要被PoS取代这件事没变过。换句话说,就是从一开始,以太坊的矿工们就已经同意了一个“我只是暂时代管以太坊,未来会让位给别人”的共识。
于是,矿工不仅是个服务员,还是个临时工。
EIP-1559的本质
将以上所有的这一切都串起来,我们来把以太坊想象成一个中心化的互联网公司,然后从老板的视角还原一下EIP-1559提出的逻辑。
- 嗯,用户抱怨交易费太高了,这没办法,区块链平台就是这样的,爱用不用。
- 什么?已经有竞品出现了,号称输出高无拥堵?那没关系,我们也发个路线图好了——分片安排上。
- 竞品已经开始抢夺市场而且很多用户已经因为拥堵想要换平台了?分片来不及了,rollup先安排上吧,告诉大家rollup马上来了,100倍扩容。
- 但是看着用户流失和其他项目煽风点火地挖墙脚心里还是不踏实,那让我来看看还能做点啥?
- 我来看看大家付的交易费……嗯?矿工怎么赚了这么多钱?明明交6块钱就能上链了,竟然有人交易费交到了10块,这用户体验肯定差啊!不行,这明明就是矿工捂着报价信息不公开导致的问题。矿工不过一群打工仔,利用信息不对称鼓动用户哄抬价格这不是损公肥私么,How dare you?!这钱要让矿工吐出来,提高用户体验——把第一价拍卖改成统一价拍卖。
- 等等,改成统一价拍卖矿工还是能赚用户互相竞价的钱,拥堵的时候本来2块钱就上链了,现在因为竞争抬到了6块。这用户体验还是不行,要让矿工把这部分钱也吐出来——我们不搞拍卖了,用户都是以太坊的上帝,搞什么互相竞争?改成根据拥堵情况收固定的基本费,然后对于有特殊需求的用户,可以给小费来提高上链速度。
- 可是这样的话,矿工似乎可以背着我使小动作,通过故意发交易造成拥堵来提高基础费,这个解决起来好像有点难……对了!我们干脆让基础费烧掉,这就解决了之前的问题,而且还会造成通缩让币价上涨,简直完美!
- 不对!甚至比完美还好——这种方案在未来完美契合PoS,而现在,其实是烧矿工的钱补贴持币者,也能鼓励大家参加PoS质押,能够让大家顺理成章地演变到PoS。所有人都是受益方!至于矿工,矿工算什么?矿工还敢造反不成?
从老板的角度看,这个逻辑无懈可击。
或者说,从管理咨询的角度,如果老板在第4条之后找上我问我交易费太高用户体验差怎么办,如果我把矿工当作以太坊的员工,那么我也会得出5,6,7这三条建议——因为明摆着,作为公司的员工不谨守本分拿工资和小费,总想着靠信息不对等让用户竞争赚用户的钱算怎么回事?以前没影响到用户体验老板也就忍了,现在影响到用户体验甚至导致企业竞争不过别人了,不拿你开刀还有王法吗?
但以上的这一切逻辑,都建立在“矿工”是以太坊的员工的基础上……
但事实真是如此吗?
————————————————————————————
当然不是,正如之前说的,矿工其实才是以太坊在“区块链逻辑”里的真正主人。
从矿工的角度,它们可不是谁的手下或者谁雇来的——他们是以太坊的最重要的合伙人之一,因为他们提供了一条PoW区块链中最重要的算力:
“尽管我们平时不说话,但看看比特币,PoW区块链里难道不是算力为王吗?”
就好像矿工心里,自己一直是正妻,是以太坊的贤内助。以前还总说,“唉,我家那位对我挺好的,就是有点大男子主义,但也挺好,我们也不需要抛头露面了,反正夫妻一体嘛。”
于是,平时被排斥在几乎所有决策之外也就算了。
丈夫心心念念地天天吹别的女人,发PoS优于PoW的文章,然后高调推动转换成PoS,相当于找了小三还准备扶正。矿工心里不是滋味,但考虑自己确实出身不好,而且毕竟有“算力炸弹”的约定在先,也就忍了。
甚至,社区里的七大姑八大姨动不动就有人提侵犯矿工利益的提案,什么ProgPoW之类,但那次毕竟丈夫没说话,时间久了矿工也就当没发生过。
但这次突然就来了一个EIP-1559,不仅要扣矿工月钱,而且还把扣下来的月钱给小三,甚至,丈夫还公开支持,美名其曰“这个改动会给这个家带来巨大的好处”。
最重要的是,这个事从头到尾,没人问过矿工的意见——所有的外人,所有的亲戚都表示支持并且直接就把这事当然既成事实了,甚至当着矿工的面一面出谋划策一面憧憬着以太坊的美好未来。
于是矿工才猛然意识到:
“我以为自己是正妻,原来你一直把我当丫鬟来着……”
矿工的(可能)反击
狗血的家庭伦理剧演到这里,一般矿工就该觉醒然后开始报复了。
但矿工们能做什么呢?
删库跑路、更改自己的账户数目、或者消极怠工?
这些确实能做,但是这些都是鱼死网破的威胁,相当于拿把剪刀去和代表以太坊官方的Vitalik Buterin和核心开发团队拼命了——矿工要做就得狠下心一起做,而且一旦做了就是双输的结局。官方也正是因为这样,所以并不担心矿工的威胁,因为一,做了这种事虽然是双输,但正如之前说的,其实以太坊的“社会共识”是强于“算法共识”的,矿工这样虽然可以严重的打击到“社会共识”,但相信以太坊支持者很快还能形成新的“社会共识”比如搭起一条PoS链并且回滚状态,但矿工们的“算法共识”就是完全破产了,这样的后果矿工更承受不起;第二,矿工是分布式的,本身就心不齐,而且其实矿工的代表是矿池,他们其实并不能完全控制手下的矿工,再加上第一条,其实即便某几个矿池振臂一呼说“王侯将相宁有种乎”,只要手底下有矿工不同意,那么最终结果很有可能就是造成一个短期的分叉,而这种结果就跟一剪刀扎过去把对方的手划破了,然后自己被抓起来打死,这显然也不是大矿池想要的。
那么,矿工们有什么能够不损害自己的利益但是会导致以太坊利益受损的方法,然后用这个把柄来要挟以太坊官方的吗?
其实呢,还是有的。
分叉
分叉当然是矿工最理所当然的选择——区块链的世界本来就是这样,如果不同意路线分叉就是了。
社区里其实有不少“矿工不敢分叉”,“分叉了也没人用”的文章,在我看来都属于自己给自己壮胆的行为——
矿工当然可以分叉,虽然分叉的结果难以预料,但其实这是官方的问题而不是矿工的问题。算前车之鉴也好,算珠玉在前也罢,反正BCH的例子摆在那,要是矿工觉得自己的利益收到了侵害,那么他们知道自己的最终选项就是分叉。EIP-1559的支持者大可以说“你看,比特币大矿池当年大张旗鼓想要和比特币分庭抗礼,结果失败了,你看BCH现在的市值才比特币的10%”,但同样的事情从另一个角度来看就变成了:“大不了做个BCH嘛——至少我们能做条市值为10%的链的主,总比再以太坊被人当丫鬟强”。
诚然,都说如果矿工分叉了以太坊正好转PoS,但话是这么说——如果矿工真的今天分叉,以太坊从开发者到社区真的做好无缝衔接到PoS的准备了吗?毕竟目前的Casper算法还并不能作为一个纯PoS算法用在区块链上。
而且说矿工不敢分叉纯属自欺欺人——等到以太坊转PoS的那一天,那么多以太坊矿机不分叉你让他们喝西北风么?或者挖其他哪个币能回本?到时候10000%会有一条以太坊的分叉币出现,只不过不知道大小而已。所以矿工如果因为EIP-1559想要分叉,那只是把他们总要做的一件事情提前做了而已。
所以,对于矿工而言,即便不是现在分叉,但不影响他们从现在开始他们就可以为分叉币做准备——拉拢生态项目,改进算法,宣传造势,等待机会……这些和暂时先采用EIP-1559完全不矛盾。但与此同时,以太坊有没有未雨绸缪地为矿工分叉做这些准备呢?让临时工管库房,然后告诉他合同不续约了还要降工资,你们真的不怕他点把火?
结成价格同盟
前文已经说了,EIP-1559实质上是以太坊官方照顾到用户体验,替用户发起的价格同盟,意图是鼓励大家在拥堵的时候应该按照参考价格支付自己能够接收的交易费,不要相互抬价给矿工多赚钱的机会。
但这个问题的另一面,是矿工也可以在拥堵的时候结成价格同盟——对于他们而言,基础费是会被烧掉的,所以对于他们而言,他们可以要求交易者“除非你们给我们足够的小费,否则即便你给了基础费,我还是不接收你的交易。”
实际上换句话说,就是对EIP-1559的抵制行为——我不管什么基础费不基础费,我只知道我能拿到手的就是小费,所以我还是按照以前的标准收小费。你的交易要是小费给不到之前的标准,那么我就不接收。
很显然,双方的价格这个时候谈不拢了——用户愿意出的交易费比如原来是5块,现在变成基础费1+小费4,但矿工说我要收5块,现在只有4块了我不干。
那最终的结果很显然,就看两边谁先妥协,或者是不是两边各退一步了。
最终的话,更大的可能是矿工会退一步,毕竟维持这种价格同盟双方都有损失,但用户的损失只是交易暂时没法上链,而很多用户其实并不十分在意这一点,或者说宁可晚上链也不愿意多付25%的交易费,但对于矿工而言,维持这个价格同盟代表着会少赚很多小费给得不够的钱的交易,而矿工也不是铁板一块。这钱你不赚,就会被别人赚走。
但其实矿工也未必一无所获——因为交易者也有很多种,肯定还是会有对交易即时性敏感的用户会提高自己的小费,来保证自己的交易不管被哪个矿工收到都会打包。
于是,接下来发生的事情就看双方如何博弈了。但其实最终结果是什么样都不重要,重要的是,如果矿工坚定地从一开始就摆出“我们不愿意让我们的收入下降”的姿态,那么最后矿工的收入会不会下降不好说,但用户的交易费其实不降反升,因为等于多交了基础费。
这显然也是个杀敌一千自损八百的行为——毕竟矿工肯定会背上垄断和中心化的骂名,而交易费的提高肯定会让以太坊丢失用户,从而最终影响到以太坊的价格。
但从另一个角度讲,如果矿工本来都被排除在了以太坊的未来乃至于当下以太坊的生态之外,那么他们又何必在乎以太坊的长期利益呢?从自己的角度讲,管你是不是用了EIP-1559,管你EIP-1559的初衷是不是降交易费,我只管自己的收入不降,这点不是天经地义的么?
矿工的攻击
以上两点其实都有人说过了,但这一点是双方都忽略的一个问题。
这里,我指的不是51%攻击的风险,因为正如我之前所说,51%攻击是鱼死网破的选择。
我说的是矿工可以做的其他攻击的风险。
这里有人可能会问:
“等等?PoW除了51%攻击还有别的攻击风险么?”
那当然,除了51%攻击之外的攻击多了去了,而其中很多攻击其实甚至都是现实中发生过或者已经发生的事情。
首先,是活性攻击,也就是一段时间内不包含正常的交易。
这种攻击在FOMO3D的时候就出现过,那个时候发起者为了拿走FOMO3D奖金池里的奖励,写了个gas很高的合约,然后,在别人想要买入的时候,用高交易费诱使矿工打包这些高Gas的交易占满整个区块,使得其他人无法买入FOMO3D。
在去年3.12MakerDAO的清算事件是非人为的活性失效——由于以太坊大跌,触发了大量清算资产,同时有大量的以太坊交易需求,而MakerDAO资产拍卖机制中没有考虑到这一点,于是在限时内没有人出价导致了大量资产被以极低的价格卖给了一些默认的资产保管者。虽然这不是一次活性攻击,但很明显,实际上资产保管者也完全可以用这种方法来进行活性攻击来获得收益。
第二,是审查攻击,也就是不打包某些特定的交易的攻击,这相当于是对于特定交易的活性攻击。
这种攻击在目前还没有导致非常严重的后果,但在optimistic rollup部署之后则可能是致命的,因为optimistic rollup的安全性建立在“如果有人发布了假的状态,那么在一段时间内必须有人在主链上提供‘造假证明’并且拿走造假者的押金”的基础上。而如果提供造假证明的消息被审查了,那么optimistic rollup的安全性就荡然无存,因为有人可以在侧链上造假而不受惩罚。
而如何进行审查攻击呢?实际上已经有人提出了切实可行的方法——造假者在链上部署一个贿赂矿工的智能合约,然后发布一笔可以拿走自己押金一部分(比拆穿造假损失的押金少)作为交易费的悬赏交易,规定如果挑战期没有人挑战,那么矿工在未来发布这笔交易的时候就能够拿走这笔悬赏。那么,在这笔悬赏的作用之下,如果矿工们都是逐利的,他们的最理性选择就是审查任何提供“造假证明”的交易,因为那样他们才有机会在挑战期结束之后拿到悬赏。
第三不算是一种攻击,而是一种套利方式,也就是front-running。
在目前的DeFi生态中,很多去中心化交易所采用的是AMM的模式,也就是币币交易的定价是由供求关系决定的,也就是始终会受到新交易的影响而波动。于是,比如如果我想要用A币买B币,虽然现在是1换100,但在交易的时候很有可能不是这个比例了,所以我会设置一个区间,比如成交价格只要在1:90到1:110之间我都接受。这个区间当然是越小越好,但是设得太小,对于某些币价波动较大的币或者在币价波动剧烈的情况下,可能会造成一直无法成交。
而由于发交易本身是公开的,于是就给了front-running的余地:如果有个大客户突然要买一堆B币,那么这笔交易之后B币的价格一定暴涨。那么实现获知这件事的人就通过预先大量买入B币,在这笔交易之后再卖出这件事来发一笔横财。当然,买入B币的量不能太多,否则B币的价格就超过了那宗大笔交易的区间了。
而由于交易上链的顺序以及上链的交易都是矿工决定的,所以想要达成front-running需要收买矿工,把他们的交易加在那宗大笔交易之前。
当然,收买矿工其实并不保险——更保险的方法其实是矿工亲自下场。而实际上,矿工完全可以只要收到大额交易就来次front-running,这才是最大化自己收益的方式。
————————————————————————————
以上这三种攻击,都是矿工可以做的,而且,其实如果我们假设矿工只是单纯逐利,那么很多是理性的矿工必然会做的。
因此,其实有些已经有人在做了。
那么,是什么阻止了矿工都去做这些事呢?
是因为其实矿工并不仅仅是利己的,也会有“利他主义(altruistic)”的行为。并且,矿工除了在链上的利益,还有在链外的利益,比如声誉和长期利益。
又或者简单一点说,是因为矿工自认为对于以太坊的义务和对于未来的憧憬,和他们朴素的“不该做恶”的道德观念。
于是,大家认为一方面打压矿工在以太坊中的获利、否定他们对以太坊有义务、把他们完全排除在以太坊的未来之外、说“你们不过就是个临时工”,一方面污名化矿工,说他们在阻碍以太坊的发展,这种行为会导致什么样的结果呢?
很显然,这种行为的结果,也就是EIP-1559可能导致的后果就是矿工不再受到这种“利他主义”和朴素的道德观念的约束,以单纯逐利的标准来行动了。而首当其冲的问题,就是front-running——“既然你们不给我们交易费,那么我们干嘛不凭本事去抢呢?你不仁我不义嘛!”接下来的问题就是审查攻击——在矿工可能不合作的情况下,rollup还能放心地部署吗?
而且,其实最重要的一点在于,以上三种方法矿工完全可以同时进行:
一方面分叉,或者为分叉做准备。
一方面在现在的以太坊上采用这种对抗性的态度:
“你逼我降交易费?不好意思,我降不了,我们也要养家糊口。基础费是什么东西?我们只认小费。”
“你要部署rollup?抱歉,我不懂,什么审查攻击什么的我真的不知道,听都没听说过。出了问题一定不是我审查的原因。”
“为什么front-running的情况变多了?我也不知道,交易顺序完全是随机的啊,可能是我挖的矿的交易恰好都把一笔交易排在大额交易前面了吧。”
然后,等到真的分叉的时候,矿工们可以说:
“欢迎来到真正的以太坊啊!低交易费,有rollup,没有front-running!”
这就是EIP-1559现在被强推背后的一个关键隐患——
在支持者,尤其是开发者们看来,除非矿工能硬气起来并且结成同盟来个51%攻击,否则我们排版了升级EIP-1559,他们最终为了自己的利益也只能认命。
可是实际上是,如果EIP-1559部署了,那么矿工其实能做的事可不仅仅是51%攻击那么简单,而且,其实他们能做的很多事,完全不背离他们自身的利益,甚至还能增加他们的短期收益……
至于长期……你们都把PoW矿工排除在以太坊的未来之外了,那我管PoS以后洪水滔天呢?
总结
看到这里,我的倾向性已经很明显了——和之前那篇关于比特币核心开发者和矿工的文章一样,我还是站在矿工这边的。原因很简单,因为作为一个理论研究者,你很难不站到矿工一边——因为从理论上来说矿工才是区块链的所有者,虽然说实际上“算法共识”只是更大的“社会共识”的一部分;但是如果没了“算法共识”,大家的“社会共识”是什么?code is law在现在很少有人真的当真,也不现实,但如果不尊重代码和算法定下的规则,我们还需要什么区块链,用中心化系统不就好了。
而我之所以在EIP-1559完全无法认同,甚至比比特币UASF那次还不认同这些开发者的做法的原因是——这件事已经完全对事不对人,上升到了“党争”的地步。可能不是每个支持者之前都能搞清我文中写的逻辑,但对于EIP-1559的提出者和那些最核心的支持者而言,他们是门清的。整个EIP-1559完全建立在“我是老板,你是打工的,你之前赚用户的钱赚得太多了。而我要提高用户体验,所以你把钱吐出来,这事没得商量,也没你说话的份”的逻辑上,而这甚至都不是个中心化互联网公司的逻辑,它甚至粗暴地像一个封建家长式的逻辑。但我很难想象,这些自诩极客,自诩区块链的信仰者,理应是最坚定去中心化的人会感觉不出这种逻辑的别扭。
因此,要么,他们已经傲慢得开始把自己当唯一真理了;要么,这只是个政治斗争,他们说的冠冕堂皇的话只不过是用自己专家的身份和地位来引导舆论,从而不择手段打击异己的方式。
两者我都恕难认同。