EIP-6789: 将 gas 重命名为 mana
此 EIP 建议将 gas 重命名为 mana,正如 Vitalik Buterin 在 2015 年提出的那样
| Authors | Pascal Caversaccio (@pcaversaccio) |
|---|---|
| Created | 2023-03-27 |
| Discussion Link | https://ethereum-magicians.org/t/eip-6789-rename-gas-to-mana/13570 |
摘要
此 EIP 建议将 gas 重命名为 mana,正如 Vitalik Buterin 在 2015 年提出的那样。
动机
重提 Vitalik 在 2015 年提出的最初提议的根本动机是,我们终于迎来了权益证明时代,并且鉴于未来的路线图(即“The Surge”,“The Scourge”,“The Verge”,“The Purge”和“The Splurge”),我认为现在是进行如此意义深远的语义更改的最后机会。
规范
本文档中使用的关键词“MUST”,“MUST NOT”,“REQUIRED”,“SHALL”,“SHALL NOT”,“SHOULD”,“SHOULD NOT”,“RECOMMENDED”,“NOT RECOMMENDED”,“MAY”和“OPTIONAL”应按照 RFC 2119 和 RFC 8174 中的描述进行解释。
核心术语 gas 必须重命名为 mana。
以下操作码必须重命名:
GASPRICE改为MANAPRICE;GASLIMIT改为MANALIMIT;以及GAS改为MANA。
此外,以下操作码的输入参数或输出必须重命名:
CALL的gas输入参数改为mana;CALLCODE的gas输入参数改为mana;DELEGATECALL的gas输入参数改为mana;STATICCALL的gas输入参数改为mana;GASLIMIT的gasLimit输出改为manaLimit;以及GAS的gas输出改为mana。
最后,以下 RPC 端点必须重命名:
eth_estimateGas改为eth_estimateMana;eth_gasPrice改为eth_manaPrice; 以及eth_maxPriorityFeePerGas改为eth_maxPriorityFeePerMana。
RPC 端点的描述必须相应地重命名:
eth_estimateMana: 生成并返回允许交易完成所需的mana量的估算值;eth_manaPrice: 返回当前每个mana的 wei 价格;以及eth_maxPriorityFeePerMana: 返回当前每个mana的maxPriorityFeePerMana(以 wei 为单位)。
理由
mana反映了权益证明的环境友好性提高;mana通常被理解为短暂且不可转让的,这更好地代表了gas的概念;以及mana通常被描绘成可再生的,而(天然)gas是不可再生的。
向后兼容性
此提案不向后兼容,因为它重命名了核心术语 gas。
测试用例
示例 1
如果交易需要的 mana 超过 manaLimit 允许的量,则该交易将被还原为 mana 不足 交易。
示例 2
一个 Solidity 合约,用于通过新的 manaleft() 语法(替换 gasleft())估算专用函数调用的已用 mana。
// SPDX-License-Identifier: AGPL-3.0
pragma solidity 0.8.19;
contract ManaMetering {
function oldWay() external view returns (string memory, uint256 manaUsed) {
string memory hiMom = "Hi Mom, ";
string memory missYou = "miss you.";
uint256 startMana = manaleft();
string memory concat = string(abi.encodePacked(hiMom, missYou));
manaUsed = startMana - manaleft();
return (concat, manaUsed);
}
function newWay() external view returns (string memory, uint256 manaUsed) {
string memory hiMom = "Hi Mom, ";
string memory missYou = "miss you.";
uint256 startMana = manaleft();
string memory concat = string.concat(hiMom, missYou);
manaUsed = startMana - manaleft();
return (concat, manaUsed);
}
}
在 Vyper 中,可以通过新的交易属性 msg.mana 复制相同的行为,该属性替换 msg.gas。
示例 3
如何在 MetaMask 中设置 manaLimit 的示例:

安全注意事项
没有与将 gas 重命名为 mana 直接相关的安全注意事项。
版权
版权及相关权利通过 CC0 放弃。
Citation
Please cite this document as:
Pascal Caversaccio (@pcaversaccio), "EIP-6789: 将 gas 重命名为 mana [DRAFT]," Ethereum Improvement Proposals, no. 6789, March 2023. [Online serial]. Available: https://eips.ethereum.org/EIPS/eip-6789.