From b3a3814f6acbea7f2ae64bfdc38632a75e0d8480 Mon Sep 17 00:00:00 2001 From: andri lim Date: Mon, 22 Apr 2019 16:52:18 +0700 Subject: [PATCH] implement EIP649: reduce block reward from 5 to 3 ether --- nimbus/p2p/executor.nim | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/nimbus/p2p/executor.nim b/nimbus/p2p/executor.nim index 5eab39212..20af3514c 100644 --- a/nimbus/p2p/executor.nim +++ b/nimbus/p2p/executor.nim @@ -92,8 +92,6 @@ proc makeReceipt(vmState: BaseVMState, fork = FkFrontier): Receipt = result.bloom = logsBloom(result.logs).value.toByteArrayBE proc processBlock*(chainDB: BaseChainDB, header: BlockHeader, body: BlockBody, vmState: BaseVMState): ValidationResult = - let blockReward = 5.u256 * pow(10.u256, 18) # 5 ETH - if chainDB.config.daoForkSupport and header.blockNumber == chainDB.config.daoForkBlock: vmState.mutateStateDB: db.applyDAOHardFork() @@ -102,6 +100,8 @@ proc processBlock*(chainDB: BaseChainDB, header: BlockHeader, body: BlockBody, v debug "Mismatched txRoot", blockNumber=header.blockNumber return ValidationResult.Error + let fork = vmState.blockNumber.toFork + if header.txRoot != BLANK_ROOT_HASH: if body.transactions.len == 0: debug "No transactions in body", blockNumber=header.blockNumber @@ -114,11 +114,16 @@ proc processBlock*(chainDB: BaseChainDB, header: BlockHeader, body: BlockBody, v for txIndex, tx in body.transactions: var sender: EthAddress if tx.getSender(sender): - let gasUsed = processTransaction(tx, sender, vmState) + let gasUsed = processTransaction(tx, sender, vmState, some(fork)) else: debug "Could not get sender", txIndex, tx return ValidationResult.Error - vmState.receipts[txIndex] = makeReceipt(vmState) + vmState.receipts[txIndex] = makeReceipt(vmState, fork) + + let blockReward = if fork >= FkByzantium: + 3.u256 * pow(10.u256, 18) # 3 ETH + else: + 5.u256 * pow(10.u256, 18) # 5 ETH var mainReward = blockReward if header.ommersHash != EMPTY_UNCLE_HASH: