原文标题:《Ethereum Roadmap FAQ》
原文作者:Tim Beiko
原文编译:0x9F、0x22D,律动 BlockBeats
合并
Kiln 合并到底发生了什么?
和主网一样,Kiln 以单独的 PoW 链和 PoS 链启动。通过合并,它现在完全在 PoS 下运行。
Kiln 是否真正遵循了当前主网合并的规范?即它相当于主网合并后的情况吗?亦即它是否遵循 Bellatrix 分叉规范?
是的。Kiln 上线后,我们确实对规范做了一些小改动,但它们是向后兼容的。当前网络规范在这里。
我们预计现在不会有重大的规范更改,强烈建议工具/基础设施/应用程序开发人员在 Kiln 上进行测试,以确保他们的产品在合并后的以太坊环境中按预期工作。
Kiln 测试网的信标链似乎存在状态和智能合约,这与 ethereum.org 中关于信标链的建议相反。我被区块浏览器误导了吗?
合并后,信标区块包含当前 PoW 区块所包含的交易负载。我们在规范中称其为 ExecutionPayload。这里有一张解释它运作的图表。
上图中,PoW 和信标链上的前两个区块是合并之前的,后两个则是合并之后的。详情请参阅长文。
一旦一个 PoW 区块产生,随后产生的信标链区块就会包含交易数据。
合并后的区块处理流程是怎样的?
1. 选出一个验证者来提出一个区块。
2. 该验证者通过Engine API要求其执行层(EL)向他发送一个 ExecutionPayload。
3. EL 将包含最有利可图的有效交易集合的有效负载返回给共识层(CL)。
4. CL 提出一个包含该有效载荷的区块,并在信标链 p2p 网络上进行传播。
注意:a. 单个交易仍在 EL p2p 网络上传播,并且 EL 只负责维护交易池。完整的区块会在 CL p2p 网络上传播。b. 验证者在执行层中指定他们想要接收费用的地址。交易费不会像验证人的质押和激励那样被「锁定」在信标链上。
5. 其他验证者对区块进行验证,如果有效,则在信标链 p2p 网络上进行传播。
合并的测试过程是怎样的?
我们正在同时进行几个测试工作。这里有一个列表。
影子分叉
什么是影子分叉?
影子分叉是指少数节点被配置为在某个点从以太坊网络中分叉出去。在合并的情况里,我们通过启动设定要比整个网络更早运行合并的节点来实现。这使我们能够测试在与影子分叉网络类似的条件下,升级是如何进行的。但绝大多数节点不会意识到升级已经发生。影子分叉之后,主链上有效的交易也可以映射到分叉链上,从而模拟原始网络的吞吐量。@parithosh_j 在推特上描述了更多细节。
下图来自其推文,显示了影子分叉之后网络的样子:
Goerli 区块的上面一行显示了标准链上的一个节点,该节点不知道影子分叉。
Goeli 区块的中间一行显示了影子分叉链上的一个节点,该节点有一个经过修改的配置,指示它一旦达到 TTD(Total Terminal Difficulty)就发生分叉。
最下面一行显示的是一个仅用于影子分叉的信标链:当达到 TTD 时,它将为整条链提供共识。
达到 TTD 之后,标准链上的节点继续正常生产区块:「对他们而言」什么都没发生。
达到 TTD 之后,配置修改过的的节点发生分叉,并运行合并。合并之后的首个区块由信标链上的下一位验证者产生。虽然这个区块能包含标准链上的任何交易,但包含的具体交易或它们的顺序不一定与标准链上一样。
为什么「影子分叉」有用?
影子分叉让我们能够在不破坏标准链的情况下,仅使用少量节点来查看节点在合并发生时的反应。影子分叉给了我们一个比启动新测试网更真实的测试环境,因为现有的测试网上已经有交易发生了,而且有大量的状态和历史,比起新的测试网,这会让节点承受更多压力。因此,我们得以获得节点在「真实世界」的性能指标,而不用影响标准网络的运作。
你们能影子分叉主网吗?
是的,而且我们现在做了。影子分叉主网非常有用,因为它向我们展示了节点在状态和历史巨大、交易最复杂的恶劣条件下如何反应。主网影子分叉后,我们还可以测试节点在尝试加入分叉网络时的稳定性、同步程度如何等等。这不仅提供了有关过渡本身的数据,还提供了新节点在合并后状态下加入网络的行为数据。
过程中的哪一阶段是影子分叉?
影子分叉给了我们升级按预期工作的信心。一旦它们在所有升级过程中都能顺利进行,我们就有自信通过合并运行现有的测试网。值得注意的是,影子分叉中的节点由一小部分运营商控制:一些公共测试网拥有更广泛的验证者集合。一旦测试网升级并稳定下来,我们就可以计划在主网上进行合并了。
提款
质押提款将如何完成?我找到了几种规范,但没有发现其中一种产生了特别明确的共识。检查质押合约后,我发现只有一个可写入的 method,那就是 deposit(存款)。目前基本没有关于提款逻辑的说明。
以太坊合并不会启用质押提款功能,它们将在之后的分叉中上线(此处为当前规范)。
注:目前将提款引入执行层的方法确定为EIP-4895。
提款其实并不「经过」存款合约,它们从信标链中被推回执行层,并以与矿工奖励相同的分发方式被完成。这意味着计算循环供应量会稍微复杂一些,因为存款合约的中的余额不会随着提款而「减少」。
提款密钥如何工作?eth2-deposit-cli 这个工具默认不会自动生成 BLS 提取密钥。密钥具体如何工作?会只用到派生路径(derivation path)的第 0 个索引吗?
在EIP-2334中对此进行了说明。
如果你使用一个 eth1 提款密钥,你只能提款到那个密钥对应的地址吗?还是说提款密钥只是用来签署提款交易,你可以向任意地址提出 ETH?
要从信标链中提出 ETH,你必须指定一个 eth1 地址作为「目标」接收者。你不需要用这个帐户签署任何内容,因为如果只从执行层来看,你会发现提款是自动发生的,就像目标账户在提款区块后突然多出了额外的 ETH。
如果你使用 BLS 密钥提款,ETH 会去哪里?我的理解是共识层中不会有状态或账户。因此,是否只需指定一个执行层地址以接受提出的 ETH?还是说未来共识层中将含有状态?
在提款时,你要指定一个执行层地址,并以 Gwei 为单位填写要提出的金额(请参阅规范)。需要明确的是,你不能使用 BLS 提款密钥进行提款。在合并后的分叉中,我们将进行一项操作来更改你在共识层上的存款凭据。
分片
对于未来的分片会是什么样子,目前有什么共识吗?似乎执行分片已被完全放弃,取而代之的则是 Rollups。
执行分片已被「弃用」,有利于以 Rollups 为中心的执行层扩容方案。数据分片是目前正在研究和实施的主要分片。
Rollups 如何在合并后实际工作?它们是否仍然位于 eth1/执行层之上?还是他们会直接建立在共识层之上?
他们继续像今天一样工作,部署在执行层上,但可以利用共识层的决定性。
数据分片目前在哪里?什么是数据分片?随着 Rollups 变得越来越流行,数据分片将只会是解决数据可用性的一种方法吗?
目前的计划是首先通过一种新的交易类型公开它,如EIP-4844中有详细说明。
这也将为在单独的点对点层上全面实施分片奠定基础。此处解释了目前提出的全分片模型。