EIP-4863: 信标链推送提款
通过一种新的“推送式”交易类型,支持验证者从信标链向 EVM 提款。
Authors | Alex Stokes (@ralexstokes), Danny Ryan (@djrtwo) |
---|---|
Created | 2022-02-28 |
Discussion Link | https://ethereum-magicians.org/t/eip-4863-beacon-chain-push-withdrawals/8465 |
Table of Contents
摘要
引入一种新的 EIP-2718 交易类型 以支持从信标链“推送”到 EVM 的验证者提款。
添加区块验证,以确保提款交易在信标链上的提款处理方面是合理的。
动机
此 EIP 提供了一种将信标链上进行的验证者提款输入到 EVM 的方法。 该架构是“推送式”的,而不是“拉取式”的,其中提款需要在从信标链出队后立即在执行块中处理。
相对于核心协议而言,这种方法比“拉取式”替代方案(例如 EIP-4788 + 用户空间提款合约)更复杂(通过提供一种具有特殊语义的新交易类型),但确实提供了将关键功能更紧密地集成到协议本身中。
规范
常量 | 值 | 单位 |
---|---|---|
FORK_TIMESTAMP |
待定 | |
WITHDRAWAL_TX_TYPE |
0x3 |
字节 |
从执行时间戳 FORK_TIMESTAMP
开始,执行客户端必须引入以下对交易处理和区块验证的扩展:
新的交易类型
定义一种新的 EIP-2718 交易类型,其 TransactionType
为 WITHDRAWAL_TX_TYPE
。
TransactionPayload
是一个 RLP 编码的列表 RLP([index, address, amount])
,其中 index
是一个 64 位的值,唯一标识一个特定的提款,address
指的是一个执行层帐户,amount
指的是一个以 wei 为单位给出的以太币值。
这些值由共识层提供。
区块有效性
如果一个区块包含任何类型为 WITHDRAWAL_TX_TYPE
的交易,它们必须位于区块中所有其他交易之后。
如果执行客户端收到一个不符合这种情况的区块,它必须认为该区块无效。
交易处理
当处理类型为 WITHDRAWAL_TX_TYPE
的交易时,实现应将 WithdrawalTransaction
指定的 address
的余额增加指定的 amount
wei。
这种余额变化是无条件的,并且必须不能失败。
这种交易类型没有相关的 gas 成本。
待办事项:添加日志?
理由
推送与拉取方法
这种推送方法为验证者提供了一小部分处理补贴,而不是需要通过正常的 EVM 处理来购买 gas,而拉取方法则需要这样做。
当信标链上满足必要条件时,这种样式也会自动发生,这对验证者来说是更好的用户体验。
为什么是新的交易类型?
此 EIP 建议一种新的交易类型,因为它具有与其他现有类型的 EVM 交易不同的特殊语义。
一种全新的交易类型将通用 EVM 执行与这种类型的处理隔离开来,从而简化了提款的测试和安全审查。
为什么新的交易类型没有(gas)成本?
在给定时间可以到达执行层的这种交易类型的最大数量是有界的(由共识层强制执行),并且此限制保持较小,以便任何执行层运营成本在更广泛的区块执行上下文中都可以忽略不计。
为什么只更新余额?没有通用的 EVM 执行?
更通用的处理会引入失败的风险,这会使信标链上的核算变得复杂。
此 EIP 建议了一条以最小的(复杂性)成本获得大部分收益的提款路线。
为什么进行新的区块验证?
信标链必须能够有效地验证给定执行块中的提款交易是否是根据其自身的内部调度逻辑预期的交易,以维护提款机制的健全性。
通过要求所有提款交易都位于每个适用块的末尾,检查一致性的算法将变成从集合的开始到已知有界(小)数字的直接线性遍历。
拥有像这样的简单排序方案有助于客户端在提款处理方面进行优化,如果提款交易可以自由地放置在区块中,则会受到阻碍。
向后兼容性
没有问题。
安全考虑事项
对提款交易的共识层验证对于确保将适当数量的 ETH 提取回执行层至关重要。 这种共识层到执行层的 ETH 转移在 EVM 中没有当前的类似物,因此值得非常高的安全审查。
版权
在 CC0 下放弃版权和相关权利。
Citation
Please cite this document as:
Alex Stokes (@ralexstokes), Danny Ryan (@djrtwo), "EIP-4863: 信标链推送提款 [DRAFT]," Ethereum Improvement Proposals, no. 4863, February 2022. [Online serial]. Available: https://eips.ethereum.org/EIPS/eip-4863.