Alert Source Discuss
🚧 Stagnant Standards Track: Core

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.coinbasegas.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.