Engine/create (#12)

* added aura to createConsensusEngine

* consensus engine create
This commit is contained in:
Dustin Brickwood 2018-09-08 15:24:57 +02:00 committed by David Ansermino
parent d08315ecd3
commit 725046997e
2 changed files with 13 additions and 1 deletions

View file

@ -206,7 +206,7 @@ type Aura struct {
lock sync.RWMutex // Protects the signer fields lock sync.RWMutex // Protects the signer fields
} }
// New creates a Clique proof-of-authority consensus engine with the initial // New creates a Aura proof-of-authority consensus engine with the initial
// signers set to the ones provided by the user. // signers set to the ones provided by the user.
func New(config *params.AuraConfig, db ethdb.Database) *Aura { func New(config *params.AuraConfig, db ethdb.Database) *Aura {
// Set any missing consensus parameters to their defaults // Set any missing consensus parameters to their defaults

View file

@ -49,6 +49,7 @@ import (
"github.com/ethereum/go-ethereum/params" "github.com/ethereum/go-ethereum/params"
"github.com/ethereum/go-ethereum/rlp" "github.com/ethereum/go-ethereum/rlp"
"github.com/ethereum/go-ethereum/rpc" "github.com/ethereum/go-ethereum/rpc"
"github.com/ethereum/go-ethereum/consensus/aura"
) )
type LesServer interface { type LesServer interface {
@ -220,6 +221,8 @@ func CreateConsensusEngine(ctx *node.ServiceContext, chainConfig *params.ChainCo
// If proof-of-authority is requested, set it up // If proof-of-authority is requested, set it up
if chainConfig.Clique != nil { if chainConfig.Clique != nil {
return clique.New(chainConfig.Clique, db) return clique.New(chainConfig.Clique, db)
} else if chainConfig.Aura != nil {
return aura.New(chainConfig.Aura, db)
} }
// Otherwise assume proof-of-work // Otherwise assume proof-of-work
switch config.PowMode { switch config.PowMode {
@ -375,6 +378,15 @@ func (s *Ethereum) StartMining(threads int) error {
return fmt.Errorf("signer missing: %v", err) return fmt.Errorf("signer missing: %v", err)
} }
clique.Authorize(eb, wallet.SignHash) clique.Authorize(eb, wallet.SignHash)
} else {
if aura, ok := s.engine.(*aura.Aura); ok {
wallet, e := s.accountManager.Find(accounts.Account{Address: eb})
if wallet == nil || e != nil {
log.Error("Etherbase account unavailable locally", "err", err)
return fmt.Errorf("signer missing: %v", err)
}
aura.Authorize(eb, wallet.SignHash)
}
} }
// If mining is started, we can disable the transaction rejection mechanism // If mining is started, we can disable the transaction rejection mechanism
// introduced to speed sync times. // introduced to speed sync times.