EIP-2474: Coinbase 调用
Authors | Ricardo Guilherme Schmidt (@3esmit) |
---|---|
Created | 2020-01-19 |
Discussion Link | https://ethresear.ch/t/gas-abstraction-non-signed-block-validator-only-procedures/4388/2 |
简单概要
允许合约直接被 block.coinbase
(区块验证者) 调用,而无需交易。
摘要
在工作量证明区块链中,验证者被称为矿工。
验证者可能希望直接执行函数,而无需签署交易。一些例子可能是在合约中提交一个证明,以进行对验证者也有利的更改。
一个值得注意的例子是当验证者想要充当 EIP-1077 Gas Relayer 时,激励他们从元交易中获得费用。
如果没有此更改,他们可以通过从任何地址签名一个 gasPrice = 0
的交易来完成,其中包含 gas relayed 调用。
然而,这带来了验证者签署一个无所作为的交易的开销,因为 msg.sender
永远不会被使用,并且 EVM 不会收取任何 gas 成本。
本提案使得移除这个未使用的 ecrecover 成为可能。
动机
为了减少不使用 msg.sender
且由验证者以 tx.gasPrice = 0
调用的调用的开销。
规范
由 block.coinbase
执行的调用将首先包含在区块中,并且会正常消耗区块的 gas,但是它们不会支付/花费 gas,而是调用逻辑将以其他形式支付给验证者。
允许执行任何没有区块 coinbase 交易的调用,除非验证者调用尝试读取 msg.sender
,否则会抛出一个无效的跳转。
验证者包含的调用将具有 tx.origin = block.coinbase
和 gas.price = 0
,用于调用堆栈的其余部分,其余的遵循正常的调用。
理由
待定
向后兼容性
tx.origin = block.coinbase
可能会在设计不良的合约上引起一些问题,例如使用 tx.origin
来验证签名,对合约如何使用 tx.origin 的分析可能有助于确定这是否是一个好的选择。
测试用例
待定
实现
待定
安全考虑
待定
版权
在 CC0 下放弃版权及相关权利。
Citation
Please cite this document as:
Ricardo Guilherme Schmidt (@3esmit), "EIP-2474: Coinbase 调用 [DRAFT]," Ethereum Improvement Proposals, no. 2474, January 2020. [Online serial]. Available: https://eips.ethereum.org/EIPS/eip-2474.