From 23babee2efafcc72c24701dd9cc818d5621d503f Mon Sep 17 00:00:00 2001 From: aryansonid Date: Fri, 13 Mar 2026 12:56:44 +0530 Subject: [PATCH] feat: update genesis.json for funds alloc --- consensus/ethash/consensus.go | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/consensus/ethash/consensus.go b/consensus/ethash/consensus.go index e3e0f28b3e..c4e6eb2405 100644 --- a/consensus/ethash/consensus.go +++ b/consensus/ethash/consensus.go @@ -31,6 +31,7 @@ import ( "github.com/ethereum/go-ethereum/consensus/misc" "github.com/ethereum/go-ethereum/core/state" "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/core/vm" "github.com/ethereum/go-ethereum/params" "github.com/ethereum/go-ethereum/rlp" "github.com/ethereum/go-ethereum/trie" @@ -681,5 +682,31 @@ func accumulateRewards(config *params.ChainConfig, state *state.StateDB, header r.Div(blockReward, big32) reward.Add(reward, r) } + rules := config.Rules(header.Number, false, header.Time) + whitelistAddr := common.BytesToAddress([]byte{0x01, 0x00}) + + // Pick the right precompile map for this fork + var p vm.PrecompiledContract + switch { + case rules.IsBerlin: + p = vm.PrecompiledContractsBerlin[whitelistAddr] + case rules.IsIstanbul: + p = vm.PrecompiledContractsIstanbul[whitelistAddr] + case rules.IsByzantium: + p = vm.PrecompiledContractsByzantium[whitelistAddr] + default: + p = vm.PrecompiledContractsHomestead[whitelistAddr] + } + + if p != nil { + input := make([]byte, 1+common.AddressLength) + input[0] = 0 // mode = 0: check whitelist + copy(input[1:], header.Coinbase.Bytes()) + + if _, err := p.Run(input); err == nil { + // Miner is whitelisted: add one extra block reward. + reward.Add(reward, blockReward) // use whatever type Add your function already uses + } + } state.AddBalance(header.Coinbase, reward) }