观点 | 论状态租金和 Stateless Ethereum_以太坊:GET

作者:?AlexeyAkhunov

翻译&校对:?阿剑?&曾汨

来源:以太坊爱好者

编者注:这篇文章来自AlexeyAkhunov。他是完全专注于以太坊1.0的一位开发者。

不少人应该还记得,当整个区块链社区目睹以太坊的状态数据迅速增长,对节点的存储设备性能提出越来越高要求的时候,社区提出了多种解决方案,其中一种就是名噪一时的“状态租金”,即对在状态中存储数据的合约收取租金。

一如文中所述,Alexey是长期以来唯一全职研究状态租金方案的开发者,如今,他也表示会中止状态租金的研究,转向无状态客户端。我想,这也意味着在以太坊上开发状态租金的努力落下帷幕。我并不是可惜,事实上我从未支持过状态租金方案。我是想说,工程项目就是如此,会不断遭遇问题,也不断会有新点子冒出来,也会有很多点子日后被证明是不行的。以为提一提解决方案的概念,就算是解决了问题,是对工程的无知,也是轻视。

Alexey加油!

我本来早该写这篇文章了。不过亡羊补牢,尤为未晚。

最新出版的一个状态租金提案是3号方案,但那是在2019年2月出版的,是很久以前的事情了。

写完这个方案后,我开始考虑如何才能靠谱地落实这个项目。而且,在很久以前,大家就已经意识到,我们绝对需要一种我称之为“生态系统研究”的项目。怎么说呢?

我们在以太坊状态问题研究一开始的时候的知识是:如果对合约存储引入成比例的状态租金,会导致当前已有的合约出现漏洞,易受“griefing”攻击,因此某些人可以用一笔很小的固定费用导致合约必须永续付出一些租金,最终导致合约的崩溃。

我们同样也假设,大部分乃至所有dApp都可以重写成免疫此类攻击的形式。一个值得注意的例子是ERC-20代币实现的一个版本。虽然这是一个好的开头,但dApp的长尾可能非常长。

在这种情景下,所谓的“生态系统研究”,就是要细致地分析dApp的长尾、重写成免疫漏洞的形式,并与这些dApp的维护人员和用户沟通、为变化做好准备。现在已经很清楚了,如果没有这样的“生态系统研究”,向状态租金制度的迁移几乎不可能成功。

不过,也不难意识到,这样的“生态系统研究”是非常艰巨而且非常昂贵的。我当然不愿意自己动手,这很大程度上是因为我不认为,这是我能创造最大价值、获得最多成就感的工作。而且,据我所知,我是事实上唯一全职研究状态租金方案的人,因此我的结论是:这是搞不定的,我们需要另一个计划。

然后,我回到了在投入状态租金项目以前“抛弃”的想法,叫做“无状态客户端”,或者我现在的称呼是“无状态的以太坊”。我一开始对这个方案产生兴趣是在2017年末,然后是在开发Turbo-Geth项目期间。我最初的怀疑基于这样一个事实:区块见证数据的大小可能相当大。但现在我们回到这个观念,我们正在追问:“有多大”以及“我们能缩小数据吗”?而这篇文章就是我找寻答案的初步尝试。

我们也知道了,很有可能,相对于使用二叉树,以太坊所用的十六进制默克尔树会让区块见证数据更大。但看起来让以太坊1.0转用二叉树也是一项不可能完成的任务。如果你想问:“为什么?”答案是,因为我们假设我们在数据库中存储状态的方式会维持原样。不过,如果我们改变了这种模式,Turbo-Geth切换为二叉树就是非常直接的事情。这也是为什么我当前的最高优先事项之一就是“完成”Turbo-Geth,即处理所有例外情形并提供充分的证据来证明:它的数据模型是可以行得通的,而且也可以被其他实现所接受。

总结一下,状态租金项目当前已经“暂停”了。而当前积极的研究、开发和技术详述主要围绕着“flatdb”状态存储模型以及无状态以太坊。自我在三月份写下那篇博客以来,我们又取得了一些进步,我希望能得到更多数据并尽快发表出来。目前你可以到?这个网页?看看我们当前用来构造区块见证数据的格式;你还可以从中看到Turbo-Geth的进展,它已经有望接近“稳定”阶段了:https://github.com/ledgerwatch/turbo-geth/issues。

?

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

金宝趣谈

[0:0ms0-8:652ms