Refine comments for feature add reward to validators and signers block.

This commit is contained in:
dinhln89 2018-06-18 10:45:38 +07:00
parent d1aa9bc746
commit f5604918e8
2 changed files with 10 additions and 7 deletions

View file

@ -607,9 +607,12 @@ func (c *Clique) Prepare(chain consensus.ChainReader, header *types.Header) erro
func (c *Clique) Finalize(chain consensus.ChainReader, header *types.Header, state *state.StateDB, txs []*types.Transaction, uncles []*types.Header, receipts []*types.Receipt) (*types.Block, error) { func (c *Clique) Finalize(chain consensus.ChainReader, header *types.Header, state *state.StateDB, txs []*types.Transaction, uncles []*types.Header, receipts []*types.Receipt) (*types.Block, error) {
// set block reward // set block reward
// FIXME: unit Ether could be too plump // FIXME: unit Ether could be too plump
if c.HookReward != nil { number := header.Number.Uint64()
if error := c.HookReward(chain, state, header); error != nil { rCheckpoint := chain.Config().Clique.RewardCheckpoint
return nil, error
if c.HookReward != nil && number%rCheckpoint == 0 {
if err := c.HookReward(chain, state, header); err != nil {
return nil, err
} }
} }

View file

@ -195,6 +195,9 @@ func New(ctx *node.ServiceContext, config *Config) (*Ethereum, error) {
Reward float64 `json:"reward"` Reward float64 `json:"reward"`
} }
number := header.Number.Uint64()
rCheckpoint := chain.Config().Clique.RewardCheckpoint
// Call to smart contract signer. // Call to smart contract signer.
config := ctx.GetConfig() config := ctx.GetConfig()
client, err := ethclient.Dial(config.IPCEndpoint()) client, err := ethclient.Dial(config.IPCEndpoint())
@ -207,12 +210,9 @@ func New(ctx *node.ServiceContext, config *Config) (*Ethereum, error) {
log.Error("TOMO - Fail get block signer", "error", err) log.Error("TOMO - Fail get block signer", "error", err)
} }
opts := new(bind.CallOpts) opts := new(bind.CallOpts)
number := header.Number.Uint64()
rCheckpoint := chain.Config().Clique.RewardCheckpoint
prevCheckpoint := number - rCheckpoint prevCheckpoint := number - rCheckpoint
if number > 0 && prevCheckpoint > 0 && number%rCheckpoint == 0 { if number > 0 && prevCheckpoint > 0 {
// Not reward for singer of genesis block and only calculate reward at checkpoint block. // Not reward for singer of genesis block and only calculate reward at checkpoint block.
startBlockNumber := number - (rCheckpoint * 2) + 1 startBlockNumber := number - (rCheckpoint * 2) + 1
endBlockNumber := startBlockNumber + rCheckpoint - 2 endBlockNumber := startBlockNumber + rCheckpoint - 2