From 34179cae22224faa7a71cc4a37796e19b3a7cf06 Mon Sep 17 00:00:00 2001 From: Tuna Date: Thu, 10 Jan 2019 17:29:18 +0700 Subject: [PATCH] get state on chain at HookReward --- consensus/posv/posv.go | 4 ++-- eth/backend.go | 8 ++++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/consensus/posv/posv.go b/consensus/posv/posv.go index 912eb146d8..e0d3d1eca5 100644 --- a/consensus/posv/posv.go +++ b/consensus/posv/posv.go @@ -224,7 +224,7 @@ type Posv struct { signFn clique.SignerFn // Signer function to authorize hashes with lock sync.RWMutex // Protects the signer fields - HookReward func(state *state.StateDB, chain consensus.ChainReader, header *types.Header) (error, map[string]interface{}) + HookReward func(chain consensus.ChainReader, header *types.Header) (error, map[string]interface{}) HookPenalty func(chain consensus.ChainReader, blockNumberEpoc uint64) ([]common.Address, error) HookValidator func(header *types.Header, signers []common.Address) ([]byte, error) HookVerifyMNs func(header *types.Header, signers []common.Address) error @@ -850,7 +850,7 @@ func (c *Posv) Finalize(chain consensus.ChainReader, header *types.Header, state rCheckpoint := chain.Config().Posv.RewardCheckpoint if c.HookReward != nil && number%rCheckpoint == 0 { - err, rewards := c.HookReward(state, chain, header) + err, rewards := c.HookReward(chain, header) if err != nil { return nil, err } diff --git a/eth/backend.go b/eth/backend.go index f5a8c9b309..9a6fe46806 100644 --- a/eth/backend.go +++ b/eth/backend.go @@ -36,7 +36,7 @@ import ( "github.com/ethereum/go-ethereum/contracts" "github.com/ethereum/go-ethereum/core" "github.com/ethereum/go-ethereum/core/bloombits" - "github.com/ethereum/go-ethereum/core/state" + //"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/eth/downloader" @@ -285,7 +285,11 @@ func New(ctx *node.ServiceContext, config *Config) (*Ethereum, error) { } // Hook calculates reward for masternodes - c.HookReward = func(state *state.StateDB, chain consensus.ChainReader, header *types.Header) (error, map[string]interface{}) { + c.HookReward = func(chain consensus.ChainReader, header *types.Header) (error, map[string]interface{}) { + state, err := eth.blockchain.State() + if state == nil || err != nil { + log.Crit("Can't get state", "block number", header.Number.Uint64(), "err", err) + } number := header.Number.Uint64() rCheckpoint := chain.Config().Posv.RewardCheckpoint foundationWalletAddr := chain.Config().Posv.FoudationWalletAddr