合并
Kiln 合并到底发生了什么?
和主网一样,Kiln 以单独的 PoW 链和 PoS 链启动。通过合并,它现在完全在 PoS 下运行。
Kiln 是否真正遵循了当前主网合并的规范?即它相当于主网合并后的情况吗?亦即它是否遵循 Bellatrix 分叉规范?
是的。Kiln 上线后,我们确实对规范做了一些小改动,但它们是向后兼容的。当前网络规范在这里。
我们预计现在不会有重大的规范更改,强烈建议工具/基础设施/应用程序开发人员在 Kiln 上进行测试,以确保他们的产品在合并后的以太坊环境中按预期工作。
Kiln 测试网的信标链似乎存在状态和智能合约。这与 ethereum.org 中关于信标链的建议相反。这仅仅是因为我被区块浏览器误导了吗?
合并后,信标区块包含当前 PoW 区块所包含的交易负载。我们在规范中称其为 ExecutionPayload。这里有一张解释它运作的图表。
上图中,PoW 和信标链上的前两个区块是合并之前的,后两个则是合并之后的。详情请参阅长文。
一旦一个 PoW 区块产生,随后产生的信标链区块就会包含交易数据。
合并后的区块处理流程是怎样的?
选出一个验证者来提出一个区块。
该验证者通过Engine API要求其执行层(EL)向他发送一个 ExecutionPayload。
EL 将包含最有利可图的有效交易集合的有效负载返回给共识层(CL)。
CL 提出一个包含该有效载荷的区块,并在信标链 p2p 网络上进行传播。
注意:
单个交易仍在 EL p2p 网络上传播,并且 EL 只负责维护交易池。完整的区块会在 CL p2p 网络上传播。
验证者在执行层中指定他们想要接收费用的地址。交易费不会像验证人的质押和激励那样被「锁定」在信标链上。
其他验证者对区块进行验证,如果有效,则在信标链 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 中有详细说明。
原文标题:《Ethereum Roadmap FAQ》
原文作者:Tim Beiko
原文编译:0x9F、0x22D,律动 BlockBeats
声明:此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。本网站所提供的信息,只供参考之用。