这是 Consensys 的一个研究项目,文章作者是研究员 Sandra Johnson,目前无状态以太坊还在建模阶段,我也会持续跟进他们最新的动态。

原文链接 https://consensys.net/blog/research-development/modelling-stateless-ethereum-a-journey-into-the-unknown/

什么是无状态以太坊**?**

在回答这个问题之前,我们先了解下什么是”状态“,以及为什么我们要摆脱“状态”。

以太坊世界的状态是指所有的以太坊钱包地址、它们的余额、部署的智能合约和相关的存储。由于新的钱包不断产生,新的智能合约也不断被部署,所以从当前的设计上来看,以太坊的状态数据会越来越多,无限增长。

而无限的状态增长意味着:新增一个新的以太坊全节点需要更长的时间,并且运行全节点需要更多的存储空间。带来的后果就是以太坊矿工运行节点的成本也会不断增加,运行节点挖矿的吸引力也就随之降低,最终以太坊难以规模化,节点越少越不安全。

Vitalik Buterin 早在 2017 年就认识到了这些问题,当时他首次提出了无状态以太坊的概念,主要目的是:通过缓解无限的状态增长,使以太坊规模化。

无状态 Stateless 的概念

确切的说,“无状态”并不真正意味着“没有状态”。就像我们说无状态请求或无状态服务的时候,说的“状态”都是指你产生了对别人有影响的东西,也就是说,你把维护和存储以太坊状态的责任转交给了网络中的另一个参与者,以太坊上现在就是这样的。

因此,“无状态”其实上是一个错误的说法,无状态的以太坊客户端并不是完全没有状态的,而是各自选择了自己想要维持的状态,大家相互之间不影响。

一个无状态的以太坊客户端应该能够选择它想维护的信息,并且持续更新它们。反之,它可以完全无视那些自己不感兴趣的状态,并且不会产生任何影响。

关于区块“见证”

实现无状态以太坊的关键机制是区块”见证“(见证是个密码学概念,后面会慢慢解释),在无状态以太坊中,当客户端从矿工那里收到经过验证的区块时,他们也将收到这个区块相应的见证。区块的“见证”由执行该区块所含交易所需的所有数据组成。

但如果是这样,区块的数据量就会很大,将有更多的数据包在网络上传递,这就得评估对网络产生的影响,以确保以太坊生态系统在这种变化的环境中继续安全有效地运行。

这就引出了一个关键问题:无状态以太坊是否可行?

要回答这个问题,我们首先来建个模。

关于建模

建模是预测未来的常用手段,也可以用来探索,当我们想改变一个稳定运行的环境时,可能出现的无意的连锁反应。

无状态的以太坊就是这么一种场景。目前的以太坊网络已经存在而且运行良好,我们可以不断获得大量靠谱的数据,然后也很了解它的运作方式。如果我们引入无状态以太坊,可能会打破现有的平衡,首先得搞清楚:改变后的系统将如何调整和运作。如果我们开始实施无状态以太坊,很多不确定的事情得提前了解清楚,比如,最坏和最好的情况是什么?

建模可以帮助我们捕捉已知的东西,也有利于我们对未知的探索。基于我们对已知事物的了解,我们可以对我们正在研究的系统中的关键过程(process)和相互作用进行建模。对于未知的东西,我们用概率来表示模型中的不确定性。我们也会咨询那些对当前系统或问题有深入了解的专家,把他们的知识在模型中表达出来,这个很重要,有助于定位哪些过程(process)可能会受到系统变化的影响。