EIP-698: OPCODE 0x46 BLOCKREWARD
Authors | Cody Burns <dontPanic@codywburns.com> |
---|---|
Created | 2017-08-28 |
Discussion Link | https://github.com/ethereum/EIPs/issues/698 |
简单总结
该 EIP 向 EVM 添加了一个额外的操作码,该操作码将返回已最终确定的区块奖励值。
摘要
在 EVM 中,0x40 操作码保留用于 区块信息
。当前保留的操作码有:
0X40 BLOCKHASH
0X41 COINBASE
0X42 TIMESTAMP
0X43 NUMBER
0X44 DIFFICULTY
0X45 GASLIMIT
此 EIP 将添加一个额外的操作码 0x46 BLOCKREWARD
,它将返回任何已最终确定的区块的区块奖励。最终确定的区块奖励将包括基本奖励、叔块支付和 gas。
动机
根据 EIP-649 (#669),路线图中现在计划进行定期的区块奖励减少/变化,但是,此 EIP 与共识系统无关,并且在去中心化矿池运作以及任何可以从了解区块奖励中受益的合约(即,合并挖矿的代币)中最有用。
规范
在区块 n
之后,所有客户端应按如下方式处理操作码 0x46
:
- 值:
0x46
- 助记符:
BLOCKREWARD
- δ:
0
没有从堆栈中移除任何东西 - α:
1
区块奖励添加到堆栈 - 描述:
获取区块的奖励排放
- GasCost:
G<sub>base</sub>
其中:µ'<sub>s</sub>[0] ≡ I<sub>HR</sub>
理由
合约挖矿池
对于分布式共识系统(质押池和挖矿池),临时组会合并资源,以减少支付中的差异。 广义上讲,矿池运作的方式是,允许矿工/质押者的集体通过定期提交解决方案来验证他们对解决 PoW 或股份份额的贡献,这些解决方案代表了矿工找到真实区块的概率。
在所有这些方案中,B
代表扣除矿池费用的区块奖励,p
是在份额尝试中找到区块的概率(p=1/D
,其中 D
是当前区块难度)。
一些常见的矿池支付方法是按份额支付,R = B * p
,按比例支付[R = B * (n/N)
,其中 n
是矿工份额的数量,N
是本轮中所有份额的数量。],以及按最后 N 个份额支付[R = B * (n/N)
,其中矿工的奖励是根据 N
个最后份额计算的,而不是上一轮的所有份额]。所有这些方法都基于了解给定区块的区块奖励支付。为了提供信任最小化的解决方案,可以使用 0x46
来调用区块奖励以计算支付。
合并挖矿的代币
合约可以创建可以根据区块奖励作为函数可变地“铸造”的代币,通过调用 0x46
向后兼容性
当前部署的合约
无影响
当前客户端
此 EIP 与当前部署的无法处理 0x46
的客户端不兼容,并且会将包含该操作码的所有交易和区块处理为无效。
实施应作为协调硬分叉的一部分进行。
实施
延伸阅读
黄皮书附录 H. 虚拟机规范部分 H.2
版权
通过 CC0 放弃版权和相关权利。
Citation
Please cite this document as:
Cody Burns <dontPanic@codywburns.com>, "EIP-698: OPCODE 0x46 BLOCKREWARD [DRAFT]," Ethereum Improvement Proposals, no. 698, August 2017. [Online serial]. Available: https://eips.ethereum.org/EIPS/eip-698.