|火星独家 | 通向以太坊2.0:读懂「无状态验证机制」



|火星独家 | 通向以太坊2.0:读懂「无状态验证机制」
本文插图
免责声明:本文旨在传递更多市场信息 , 不构成任何投资建议 。 文章仅代表作者观点 , 不代表火星财经官方立场 。
小编:记得关注哦
来源:火星独家

|火星独家 | 通向以太坊2.0:读懂「无状态验证机制」
本文插图
编译 | Bite@火星财经App
以太坊 2.0最广为人知的变化是Staking和分片 , 这些变化都是从以太坊中获得灵感 。
当以太坊在2015年推出时 , 它引入了“通用”区块链的概念 , 任何人可以在网络上构建与ETH和各种代币互动的应用程序 。 这些应用为去中心化金融(DeFi)打开了成熟大门 , 并发展到持有超过10亿美元抵押资产的金融产品 。
以太坊 2.0距离全面启动仍需要2–3年的时间 , 并且Eth 2.0将被部署为由信标链(Beacon Chain)与多条分片链(Shard Chains)构成的独立区块链 , 而 Eth 1.0 需要经过改动与升级方能成为Eth 2.0中的其中一条分片链 。 这意味着现在运行的以太坊 1.0 区块链需要进行改动 , 并且在未来的 5~10 年保持运作 , 持续发展 。 而 Eth 1.x 即为以太坊1.0升级版本的代称 。 Eth 1.x 的首要目标旨在解决现在区块链日益增长的资料负担 。
当人们谈论以太坊及其状态规模时 , 你可能听说过“状态膨胀”(state bloat) 。 这是指支付一次GAS费会让你的数据在以太坊区块链上永久保存 , 从而导致一个无限的、不断增长的状态 , 其中甚至有很多无用数据 。 状态在存储空间上膨胀 , 这意味着随着网络的使用 , 以太坊节点需要更多的存储或更高性能的硬件 。 从长远来看 , 这增加了以太坊节点运行的门槛 , 并且每当区块GAS限制增加时 , 状态增长就成为一个更大的问题 。
无状态性
无状态客户端的概念是最先由 Vitalik在探索 Sharding (分片) 的情况下提出来的 , 但之后在围绕Eth1.X的讨论中也被探讨 。 起初这种方式被认为太过复杂 , 但随着Trinity bean sync方式展现了semi-statelessness (半无状态性) 对于轻客户端的可行性 , 无状态客户端的概念获得了很多支持 。
什么是“状态”?
要解释无状态以太坊 , 我们首先需要理解“状态”(state)的概念 。 当我们提到“状态”时 , 一般是指“事务的状态” 。
以太坊的完整“状态”描述了所有账户和余额的当前状态 , 以及在EVM中部署和运行的所有智能合约的集体历史 。 链上每个最终确定的区块 , 都有且只有一个状态 , 这是由网络中的所有参与者共同确认的 。 每当有新的区块被添加到链上 , 状态都会随之改变且更新 。
我们来看一下以太坊客户端软件中一般的交易过程:

|火星独家 | 通向以太坊2.0:读懂「无状态验证机制」
本文插图
在区块中执行交易需要交易数据(蓝色矩形所示) , 及当前状态(黄色矩形所示);执行结束后 , 原本的当前状态变为历史状态 , 同时产生新的当前状态 。 处理交易可能还需要一些别的数据(如区块时间戳 , 或是前个区块哈希值) , 但我们先忽略这些大小固定且无关紧要的部分 。 执行交易还会产生明细(receipt)(绿色部分) , 但在讨论无状态客户端时也可暂时忽略 。
无状态客户端的核心思想是:在区块中执行交易过程时 , 不访问整个状态 。
Eth 1.X扩容难题
Eth1.x 研究的重点是将当前的以太坊链转移到“无状态客户端” (Stateless 以太坊), 最终目标是顺利过渡成为Eth2.0中的一个执行环境 (Executive Environment) 。
以太坊已经发布了近5年的时间 , 惊人增长的背后也让业界注意到了它的瓶颈是什么 , 随着越来越难运行全节点 , 以太坊网络可能会变得越来越中心化;随着网络延迟的增加 , 它的速度可能会越来越慢;随着“状态膨胀”的出现 , 区块验证可能变得越发困难 。 最终 , 随着交易吞吐量达到上限 , 且客户端改进越来越难以实现 , 终端用户与核心开发者都将非常受挫 。分页标题
以太坊2.0
以太坊2.0是加密货币领域有史以来最大的开源 , 旨在提供一个全新系统 , 实现以太坊更多预期目标 。 你可能听说过Casper(权益证明)和分片 , 但是其中包含了许多以太坊 2.0将包含的目标 。
由于以太坊2.0的很多改进对于现有ETH1.0来说肯定是突破性的改变 , 这些改变将建立在Eth2链上 , 现有的以太坊1.0链将被“插入”(变成一个分片)新系统中 。 这样一来 , Eth2就不需要对现有网络进行复杂的升级 , 以太坊网络将正常运行 , 并享受新系统带来的所有好处 。
Eth 1.X的核心目的有两个:
(A) 延长Eth 1.0 的寿命 。
【|火星独家 | 通向以太坊2.0:读懂「无状态验证机制」】(B) 与 Eth 2.0 链接 。
由于 Eth 2.0 中的分片(shards)将是无状态的 , 因此「无状态」将是参与 Eth 2.0 区块验证的先决条件 。 Eth 1.0 要与 Eth 2.0 相容的话势必得支援无状态运作 , 方能顺利过度 , 与 Eth 2.0 介接 。
具体来说 , 是找到一种方式让以太坊网络中的部分节点可以将保留整个以太坊状态的副本变为一个选项 , 而非必须 。 因此 , 要让现行的以太坊网络能够支援没有保存完整全网状态的轻量级节点:「无状态节点」参与到网络中的新区块验证 。
重要的是 , 转向无状态或半无状态范式对现有 Eth1.0 网络的破坏要小于状态租金之类的方式 , 因为这种方式不会对现有客户端带来重大的更改 。 有状态节点和无状态轻客户端可以同时共存 , 且 semi-stateless (半无状态) 的以太坊将为试验不同的客户端实现提供了更多的机遇 。 同时 , Eth2.0中的分片(shards)几乎可以肯定会是无状态的 , 因此当时机成熟时 , 这将为Eth1.0最终向Serenity过渡开辟出一条新的道路 。
Eth2.0将朝着无状态的目标发展 , 这意味着轻(无状态)节点将能够验证所有交易以及状态的所有部分 , 而无需实际存储任何状态 。 无状态允许轻客户端以各种状态/无状态存在 , 每个状态都需要不同的规范 , 从而使节点更易于访问 。
由于每个分片都有自己独特的状态 , Eth2中的验证者需要在验证分片的状态上执行状态变化 。 无状态协议使得验证者不必每次在切换时下载分片状态 , 只需要下载代表数据的二进制merkle树(这要小得多) 。 分片越多 , 状态增长越无止境 , 总会有像交易所或区块探索者这样的服务 , 激励他们保留所有的分片链状态/数据 , 并不计成本地准确交付 。
这为充当“状态提供者”的软件打开了方便之门 , 这些软件向验证器提供事务更改的状态部分 , 因此它们可以轻松地执行状态更改 。 状态中继器帮助将验证过程中的磁盘I/O和存储密集型部分完全转移到另一个实体 。 这为有趣的激励计划打开了大门(对于状态 , 这一直是以太坊的一个问题) , 并使验证者大大受益 , 他们不再需要保留整个分片状态 。
以上介绍 , 相信读者们应该对于现行的Eth 1.0升级到 Eth 1.x 需要进行的改动有简单的认识 。 在 Eth 1.x 升级完成后 , 人们将能用便宜的硬件运行自己的无状态节点(轻节点) , 更多能够参与验证的轻节点可以进一步维护全网的安全性 。
拥有无状态验证机制的Eth1.x方能顺利和Eth2.0的信标链与其它分片链介接 , 正式让以太坊网络进入由无状态验证机制与分片技术构筑成的轻量化Eth 2.0未来 。
参考文章:
Ivan Martinez:What ETH2 has learned from ETH1
以太坊中文网