EIP-1559到底在吵什么?--上篇

  • maxdeath
  • 更新于 2021-03-25 18:47
  • 阅读 3024

最近EIP-1559的事情吵得不可开交,于是我也来蹭蹭热点,来给大家讲讲EIP-1559的同时也给大家讲讲谁在争吵,以及究竟在吵什么。

转载自公众号colacoder:

最近EIP-1559的事情吵得不可开交,于是我也来蹭蹭热点,来给大家讲讲EIP-1559的同时也给大家讲讲谁在争吵,以及究竟在吵什么。

其实,关于这个题材,我以前在知乎专栏《区块链演义》里就已经写过了关于香港共识、隔离见证升级,UASF,以及最终BCH分裂的故事。这次,我们就来讲讲几乎同样的剧情,只不过换做在以太坊发生的故事。

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。如果我们以后每次都采用这种有商有量的方式报价,那矿工就没法一直赚我们那么多钱了!”。

大部分人都表示了赞同,于是大家结成了价格同盟:

以后如果发生拥堵,那么交易费提高一个固定值;但是如果不拥堵,交易费会降回正常水平。

但也有人表示不服气:

“我就是有钱,我想花钱让我的交易早点上链,凭什么不行?”

其他人表示当然行,但你花钱的结果就是大家陷入内卷,导致最后不想花钱的人也得支付额外的费用。

于是,一个基础费+小费的方案应运而生:

大家私下根据拥堵情况约定一个价格,大家都遵守这个约定组成价格同盟使得在拥堵这样的卖方市场下,矿工也赚不到大家在竞争中抬高物价的钱。

然后,如果真的有人非常着急上链,那么大家默许你可以通过私底下给小费的方式实现,明面上大家仍旧保持价格同盟。

于是,为了防止真的出现以上的,用户们掀桌子说“去你的拍卖,老子就只出这么多钱,爱要不要”的情况,以太坊选择妥协:因为虽然以太坊很大,但是虎视眈眈的竞争者也不少,现在看起来以太坊的资源是个卖方市场,供不应求,但如果交易费高导致以太坊成了“不合算的选择”,那么很可能一瞬间以太坊就成了求着交易者来链上发交易的一方。

于是,在这种情况发生之前,未雨绸缪的方法就是先于交易者提出这个方案——

“你们也别价格同盟了,我们也不拍卖了,价格就按照你们的方案定死,叫做基础费。”

“然后小费你们也不用偷偷摸摸给了,直接给就行,我们反正规定小费不会影响基础费,不会因为小费高就哄抬价格。”

销毁基础费

但以上这个机制还是有点问题,因为前面提到的矿工发交易来提高基础费这事还是可行的——在网络不拥堵或者拥堵不严重的时候,矿工总可以生成一些交易造成网络拥堵的假象,从而提高基础费。甚至说,矿工应该可以设计出一个算法,然后根据网络中的交易数量来计算什么时候生成多少笔交易可以让自己获利最多。

于是怎么办呢?

在现实中可能办法不多,但是在区块链里,还真有一个办法:

矿工不获得基础费,而是改为销毁。如果基础费需要销毁,那么矿工自己发交易这事就不可行了——原来,只不过是左手倒右手,发点交易然后交易上链交易费又收回来了;现在发交易变成了真的要烧自己的钱,而且增加的基础费也落不到自己手里。

销毁这词看着有点奇怪,但是在区块链里一点也不新鲜。

大家相对更熟悉的是比特币的区块奖励,也就是铸币。铸币的本质上是现在所有的持币者稀释自己持币的价格来吸引新的用户和矿工加入,来增加整个区块链的价值。

那销毁币的本质其实就是拿自己的币来给所有持币者分红。因为销毁币会造成通缩,而通缩能涨币价,而币价上涨就是热度,这无论对于用户、矿工、开发者还是整个圈子,没人会觉得是一件坏事。所有的流动性不足,交易量下降之类的问题和这个好处比起来都不值一提。所以从很久以前开始很多区块链团队都把定期销毁一部分自己的币当作拉升币价的方法。

而这次换到以太坊,这么一个原本是通胀的系统中,这个提案完全是给整个社区打了一针鸡血,几乎没人能抵抗得住“通缩”这个词的魅力。

但唯一的例外是矿工——因为销毁的是本来给矿工的交易费,这相当于是拿矿工的钱给持币者分红……

当然,从另一个角度说,这也不能完全说是矿工的钱,因为没人说比特币的交易费模型就得是唯一的真理,这只是另一个交易费方案而已,也就是——交易费的部分用来给所有持币者分红,而矿工仅拿小费的部分。

从某种角度讲,就如同你是一个非常繁忙的餐馆的服务员:无论忙于不忙,你都有一笔基础工资。然后,由于某大型活动最近餐馆的生意好起来了,天天爆满,但因此增加的交易额与你无关,而是增加了餐馆老板们的分红。不过,对你而言也不是全无好处,因为你还是能从更多的交易中赚到更多的小费。

这……听起来也挺合理的——如果我们把矿工定位成餐厅的服务员的话。

那矿工对此是什么意见呢?点击关注,我们下回分解。

fb2b55fcb9f00befe672986532944007.jpg

点赞 1
收藏 1
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

1 条评论

请先 登录 后评论
maxdeath
maxdeath
代尔夫特理工大学 (TU Delft) · 区块链博士后 & 代尔夫特理工大学 (TU Delft) · 信息论博士