diff options
author | Péter Szilágyi <peterke@gmail.com> | 2017-04-12 21:38:31 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-04-12 21:38:31 +0800 |
commit | a7b9e484d05ceb0afce4ba5dbc62b8f262c2e354 (patch) | |
tree | 35ab50c0e276beb15e6beac2eaa846f6b737f64c /consensus | |
parent | 6b7ae4e751dbaee0f31032f045fd35b0c1079388 (diff) | |
download | go-tangerine-a7b9e484d05ceb0afce4ba5dbc62b8f262c2e354.tar go-tangerine-a7b9e484d05ceb0afce4ba5dbc62b8f262c2e354.tar.gz go-tangerine-a7b9e484d05ceb0afce4ba5dbc62b8f262c2e354.tar.bz2 go-tangerine-a7b9e484d05ceb0afce4ba5dbc62b8f262c2e354.tar.lz go-tangerine-a7b9e484d05ceb0afce4ba5dbc62b8f262c2e354.tar.xz go-tangerine-a7b9e484d05ceb0afce4ba5dbc62b8f262c2e354.tar.zst go-tangerine-a7b9e484d05ceb0afce4ba5dbc62b8f262c2e354.zip |
consensus, core, ethstats: use engine specific block beneficiary (#14318)
* consensus, core, ethstats: use engine specific block beneficiary
* core, eth, les, miner: use explicit beneficiary during mining
Diffstat (limited to 'consensus')
-rw-r--r-- | consensus/clique/clique.go | 6 | ||||
-rw-r--r-- | consensus/consensus.go | 5 | ||||
-rw-r--r-- | consensus/ethash/consensus.go | 6 |
3 files changed, 17 insertions, 0 deletions
diff --git a/consensus/clique/clique.go b/consensus/clique/clique.go index 3c36545c4..8619bd1d8 100644 --- a/consensus/clique/clique.go +++ b/consensus/clique/clique.go @@ -220,6 +220,12 @@ func New(config *params.CliqueConfig, db ethdb.Database) *Clique { } } +// Author implements consensus.Engine, returning the Ethereum address recovered +// from the signature in the header's extra-data section. +func (c *Clique) Author(header *types.Header) (common.Address, error) { + return ecrecover(header) +} + // VerifyHeader checks whether a header conforms to the consensus rules. func (c *Clique) VerifyHeader(chain consensus.ChainReader, header *types.Header, seal bool) error { return c.verifyHeader(chain, header, nil) diff --git a/consensus/consensus.go b/consensus/consensus.go index c199e627f..8cbd32c88 100644 --- a/consensus/consensus.go +++ b/consensus/consensus.go @@ -49,6 +49,11 @@ type ChainReader interface { // Engine is an algorithm agnostic consensus engine. type Engine interface { + // Author retrieves the Ethereum address of the account that minted the given + // block, which may be different from the header's coinbase if a consensus + // engine is based on signatures. + Author(header *types.Header) (common.Address, error) + // VerifyHeader checks whether a header conforms to the consensus rules of a // given engine. Verifying the seal may be done optionally here, or explicitly // via the VerifySeal method. diff --git a/consensus/ethash/consensus.go b/consensus/ethash/consensus.go index f4f8f4b17..4b6e779d5 100644 --- a/consensus/ethash/consensus.go +++ b/consensus/ethash/consensus.go @@ -59,6 +59,12 @@ var ( errInvalidPoW = errors.New("invalid proof-of-work") ) +// Author implements consensus.Engine, returning the header's coinbase as the +// proof-of-work verified author of the block. +func (ethash *Ethash) Author(header *types.Header) (common.Address, error) { + return header.Coinbase, nil +} + // VerifyHeader checks whether a header conforms to the consensus rules of the // stock Ethereum ethash engine. func (ethash *Ethash) VerifyHeader(chain consensus.ChainReader, header *types.Header, seal bool) error { |