// AccumulateRewards credits the coinbase of the given block with the // mining reward. The total reward consists of the static block reward // and rewards for included uncles. The coinbase of each uncle block is // also rewarded. func AccumulateRewards(statedb *state.StateDB, header *types.Header, uncles []*types.Header) { reward := new(big.Int).Set(BlockReward) r := new(big.Int) for _, uncle := range uncles { r.Add(uncle.Number, big8) r.Sub(r, header.Number) r.Mul(r, BlockReward) r.Div(r, big8) statedb.AddBalance(uncle.Coinbase, r) r.Div(BlockReward, big32) reward.Add(reward, r) } statedb.AddBalance(header.Coinbase, reward) }
func AccumulateRewards(statedb *state.StateDB, block *types.Block) { reward := new(big.Int).Set(BlockReward) for _, uncle := range block.Uncles() { num := new(big.Int).Add(big.NewInt(8), uncle.Number) num.Sub(num, block.Number()) r := new(big.Int) r.Mul(BlockReward, num) r.Div(r, big.NewInt(8)) statedb.AddBalance(uncle.Coinbase, r) reward.Add(reward, new(big.Int).Div(BlockReward, big.NewInt(32))) } // Get the account associated with the coinbase statedb.AddBalance(block.Header().Coinbase, reward) }