Documentation ¶
Overview ¶
Package miner implements Matrix block creation and mining.
Index ¶
- Constants
- Variables
- type Agent
- type ChainReader
- type CpuAgent
- type Miner
- func (s *Miner) Getworker() *worker
- func (self *Miner) HashRate() (tot int64)
- func (self *Miner) Mining() bool
- func (self *Miner) Pending() (*types.Block, *state.StateDBManage)
- func (self *Miner) PendingBlock() *types.Block
- func (self *Miner) Register(agent Agent)
- func (self *Miner) SetExtra(extra []byte) error
- func (self *Miner) StartCpuMining()
- func (self *Miner) Stop()
- func (self *Miner) StopCpuMining()
- func (self *Miner) Unregister(agent Agent)
- type RemoteAgent
- func (a *RemoteAgent) GetHashRate() (tot int64)
- func (a *RemoteAgent) GetWork() ([3]string, error)
- func (a *RemoteAgent) SetReturnCh(returnCh chan<- *types.Header)
- func (a *RemoteAgent) Start()
- func (a *RemoteAgent) Stop()
- func (a *RemoteAgent) SubmitHashrate(id common.Hash, rate uint64)
- func (a *RemoteAgent) SubmitWork(strnonce, strAIHah, strhash, strminerAddr string) bool
- func (a *RemoteAgent) Work() chan<- *Work
- type Result
- type Work
Constants ¶
const ( ModuleWork = "Miner_Work" ModuleMiner = "Miner" OVERFLOWNUM = 10 OVERFLOWLEN = 10 )
Variables ¶
var (
LimitBroadcastRole = errors.New("change Broadcast to others")
)
Functions ¶
This section is empty.
Types ¶
type Agent ¶
type Agent interface { Work() chan<- *Work SetReturnCh(chan<- *types.Header) Stop() Start() GetHashRate() int64 }
Agent can register themself with the worker
type ChainReader ¶
type ChainReader interface { Config() *params.ChainConfig Engine(version []byte) consensus.Engine DPOSEngine(version []byte) consensus.DPOSEngine VerifyHeader(header *types.Header) error GetCurrentHash() common.Hash GetGraphByHash(hash common.Hash) (*mc.TopologyGraph, *mc.ElectGraph, error) GetBroadcastAccounts(blockHash common.Hash) ([]common.Address, error) GetInnerMinerAccounts(blockHash common.Hash) ([]common.Address, error) GetVersionSuperAccounts(blockHash common.Hash) ([]common.Address, error) GetBlockSuperAccounts(blockHash common.Hash) ([]common.Address, error) GetBroadcastIntervalByHash(blockHash common.Hash) (*mc.BCIntervalInfo, error) GetA0AccountFromAnyAccount(account common.Address, blockHash common.Hash) (common.Address, common.Address, error) CurrentHeader() *types.Header // GetBlock retrieves a block from the database by hash and number. GetBlock(hash common.Hash, number uint64) *types.Block GetHeader(hash common.Hash, number uint64) *types.Header // GetHeaderByNumber retrieves a block header from the database by number. GetHeaderByNumber(number uint64) *types.Header // GetHeaderByHash retrieves a block header from the database by its hash. GetHeaderByHash(hash common.Hash) *types.Header GetMinDifficulty(blockHash common.Hash) (*big.Int, error) }
type CpuAgent ¶
type CpuAgent struct {
// contains filtered or unexported fields
}
func NewCpuAgent ¶
func NewCpuAgent(chain ChainReader) *CpuAgent
func (*CpuAgent) GetHashRate ¶
func (*CpuAgent) SetReturnCh ¶
type Miner ¶
type Miner struct {
// contains filtered or unexported fields
}
Miner creates blocks and searches for proof-of-work values.
func New ¶
func New(bc *core.BlockChain, config *params.ChainConfig, mux *event.TypeMux, hd *msgsend.HD) (*Miner, error)
func (*Miner) Pending ¶
func (self *Miner) Pending() (*types.Block, *state.StateDBManage)
Pending returns the currently pending block and associated state.
func (*Miner) PendingBlock ¶
// PendingBlock returns the currently pending block. // // Note, to access both the pending block and the pending state // simultaneously, please use Pending(), as the pending state can // change between multiple method calls
func (*Miner) StartCpuMining ¶
func (self *Miner) StartCpuMining()
func (*Miner) StopCpuMining ¶
func (self *Miner) StopCpuMining()
func (*Miner) Unregister ¶
type RemoteAgent ¶
type RemoteAgent struct {
// contains filtered or unexported fields
}
func NewRemoteAgent ¶
func NewRemoteAgent(chain consensus.ChainReader, engine map[string]consensus.Engine) *RemoteAgent
func (*RemoteAgent) GetHashRate ¶
func (a *RemoteAgent) GetHashRate() (tot int64)
GetHashRate returns the accumulated hashrate of all identifier combined
func (*RemoteAgent) GetWork ¶
func (a *RemoteAgent) GetWork() ([3]string, error)
func (*RemoteAgent) SetReturnCh ¶
func (a *RemoteAgent) SetReturnCh(returnCh chan<- *types.Header)
func (*RemoteAgent) Start ¶
func (a *RemoteAgent) Start()
func (*RemoteAgent) Stop ¶
func (a *RemoteAgent) Stop()
func (*RemoteAgent) SubmitHashrate ¶
func (a *RemoteAgent) SubmitHashrate(id common.Hash, rate uint64)
func (*RemoteAgent) SubmitWork ¶
func (a *RemoteAgent) SubmitWork(strnonce, strAIHah, strhash, strminerAddr string) bool
SubmitWork tries to inject a pow solution into the remote agent, returning whether the solution was accepted or not (not can be both a bad pow as well as any other error, like no work pending).
func (*RemoteAgent) Work ¶
func (a *RemoteAgent) Work() chan<- *Work