干货 | 研究以太坊 2.0 中的状态提供者模型
本文乃与 samwilsn 及 adietrichs 联合撰写而成,亦得到 villanuevawill 和 Quilt 团队的莫大帮助。
简介
以太坊 2.0 的无状态性意味着交易必须携带自己要访问的状态。更准确地说,对于区块提议者(BP) ,除了包含交易,区块还需要包含所有交易访问的所有状态和对应的见证信息。假定创建交易的用户和 BP 都未存储状态数据,那么,网络就需要另一个群体来保存并提供这些状态。这种角色通常被称作状态提供者(SP)。
不管区块提议者和状态提供者是如何交换状态的,用户都可能需要在创建交易之前获取状态。比如通过获取合约的字节码,估计 Gas 的花销或者检查账户的余额。这意味着状态提供者需要为用户暴露一个类似拉取数据功能(pull-like)的接口。尽管没有激励层,只依赖无私的状态提供者也可以为用户提供状态(以太坊1.0 就是这样做的),也可以通过状态通道来实现支付,给状态提供者添加一个激励层。
比较准则
关于如何将状态提供者集成到整个系统中,人们已经提出了多种想法。在下面的章节中,我们将扼要地介绍几种方案。除了概括性的描述,我们还会对比下面的几个性质:
状态访问限制
因为交易的执行基于执行时的状态,所以,如果底层的状态变化了,交易的执行也会跟着变化。特别地,对一些交易来说,其状态访问的位置可能会变化。这可能是因为简单的跳转语句(比如 if),或者所访问的位置是在运行时计算的。我们将两种情况称作动态状态访问(DSA)。在无状态模式下,这会让交易创建过程变得复杂。问题在于可能无法提前为这些交易提供状态(因为无法提前知道这些交易会访问哪些全局状态)。不同的状态提供者模式在支持这些交易的程度上表现不同。
如果某个模式限制了动态状态访问,那么 Eth1 很有可能无法成为 Eth2 执行环境(EE),而且将经常需要特殊的处理。
激励措施
对状态提供者的报酬从下面两方面对比:
谁支付报酬以及报酬是如何计算的? 一开始是否支持无私状态提供者,如果是这样,激励措施可以之后再加吗?
中心化风险
谁可以审查交易,可以审查到什么程度? 一个状态提供者可以存储多少状态?需要什么样的硬件? 区块提议者和状态生产者之间要达到怎样的互信程度?
时间约束
丢失状态的可归因性
模式
模式 | 状态访问 | 激励措施 | 中心化风险 | 时间约束 |
---|---|---|---|---|
直推模式 | 受限 | 自愿奉献或者支付通道 | 知名度高的状态提供者将有优势 | 无 |
中继推送模式 | 不受限制 | 按批次收费或者排他期收费 | 存在审查可能 | 需要在一个 slot 内更新并传输一批数据 |
拉取模式 | 不受限制 | 支付通道 | 知名度高的状态提供者将有优势 | 要在一个 slot 内请求一批状态 |
直推模式(Direct Push Model)
主要优势:简单。不需专业的状态提供者或激励系统。没有特别的时间约束。 主要缺点:只适用于事先知道所有状态访问需要的交易。这限制了整个系统的功能。尽管可以用一些缓解措施,但兼容性问题无法解决。特别地, 这种模型下,Eth1 无法成为 Eth2 的运行环境。
中继推送模式(Relayed Push Model)
没有交易池的情况下,交易包是不公开的。中继者向区块提议者售卖附加了状态的交易包(费用比交易费低一点),从而形成交易包市场。对区块提议者来说存在一些风险:某笔交易可能已经被包含在另一个区块中了,成了无效交易;或者收到的交易费比中继者售卖时宣告的要少。 另一种方法是,不论有没有交易池,交易可以包含给某个特定中继者的支付。用户承诺一段排他期(即几个时隙),这段时间内,用户不会创建其他交易。如果用户在排他期同时签署两个或多个交易时,就要遭到惩罚。为此,EE 必须提供 “罚没” 用户的方法。但因为用户没有锁定保证金,那么尚不清楚如何罚没没有足够账户余额的用户。
假定合并交易包是复杂的(因为动态状态访问),交易包市场会导致高中心化,并且允许单独的中继者审查交易。因为上面列出的 BPs 可能遭受的风险,BPs 更倾向于与知名且信任的中继者合作。个人用户与这些知名的中继者相比,是无法提供有足够高交易费的交易包的。 使用排他期以及交易包池会提供高程度的去中心化,但是以用户的便利性和一个更加复杂的交易池实现为代价。理论上来讲,任何用户都可以从交易池中检索到交易包,添加自己的交易去扩充交易包,然后以更高的交易费用中继交易包。
主要优势:没有状态访问限制。 缺点: 光靠一个交易包池可能不够,因为交易包体积较大(与 Eth1 中单个单个交易所组成的交易池相反),而且有严格的时间约束。 没有交易池的情况下,交易包不能被组合起来,那么一个区块就只能包含单个中继者提出的交易包。中继者可能会中心化并引入审查。 就算有交易池,交易包组合功能是否足以完全缓解审查问题依旧是不明朗的。 激励系统很复杂。
拉取模式(Pull Model)
优点: 没有相关的状态访问限制。 时间约束问题较少。 没有显著的中心化风险。尽管可以预计到,某一些状态提供者将专门为区块提议者提供状态,但没有某个状态提供者可以显著地干预整个过程的进行。一个状态提供者可以做的最坏的事情就是在被请求时不提供状态。 主要的缺点:必须对签名验证做一些标准化,或者通过验证脚本,或者使用 VHEE。
延伸讨论
自力更生式见证信息 & Gas 花销
状态费用
状态抽象
分布式状态网络
(完)
声明:此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。本网站所提供的信息,只供参考之用。
-
自由开放透明的矿机革命 - 新一代DOGE矿机VOLCMINER D1发布
2024-10-17 -
Coin Metrics:2024年Q3比特币矿业报告
2024-10-10 -
Aleo 主网上线天王变“天亡”?矿工直呼被坑惨
2024-09-22 -
预挖矿与去中心化:Fractal给我们带来的思考
2024-09-19 -
俄罗斯加密合法化:怎么运作 能让它避开西方制裁吗
2024-09-10