Documentation

Overview

    Package miner implements Ethereum block creation and mining.

    Index

    Constants

    This section is empty.

    Variables

    This section is empty.

    Functions

    This section is empty.

    Types

    type Agent

    type Agent interface {
    	Work() chan<- *Work
    	SetReturnCh(chan<- *Result)
    	Stop()
    	Start()
    	GetHashRate() int64
    }

      Agent can register themself with the worker

      type Backend

      type Backend interface {
      	AccountManager() *accounts.Manager
      	BlockChain() *core.BlockChain
      	TxPool() *core.TxPool
      	ChainDb() ethdb.Database
      }

        Backend wraps all methods required for mining.

        type CpuAgent

        type CpuAgent struct {
        	// contains filtered or unexported fields
        }

        func NewCpuAgent

        func NewCpuAgent(chain consensus.ChainReader, engine consensus.Engine) *CpuAgent

        func (*CpuAgent) GetHashRate

        func (self *CpuAgent) GetHashRate() int64

        func (*CpuAgent) SetReturnCh

        func (self *CpuAgent) SetReturnCh(ch chan<- *Result)

        func (*CpuAgent) Start

        func (self *CpuAgent) Start()

        func (*CpuAgent) Stop

        func (self *CpuAgent) Stop()

        func (*CpuAgent) Work

        func (self *CpuAgent) Work() chan<- *Work

        type Miner

        type Miner struct {
        	// contains filtered or unexported fields
        }

          Miner creates blocks and searches for proof-of-work values.

          func New

          func New(eth Backend, config *params.ChainConfig, mux *event.TypeMux, engine consensus.Engine) *Miner

          func (*Miner) HashRate

          func (self *Miner) HashRate() (tot int64)

          func (*Miner) Mining

          func (self *Miner) Mining() bool

          func (*Miner) Pending

          func (self *Miner) Pending() (*types.Block, *state.StateDB)

            Pending returns the currently pending block and associated state.

            func (*Miner) PendingBlock

            func (self *Miner) PendingBlock() *types.Block

              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) Register

              func (self *Miner) Register(agent Agent)

              func (*Miner) SetEtherbase

              func (self *Miner) SetEtherbase(addr common.Address)

              func (*Miner) SetExtra

              func (self *Miner) SetExtra(extra []byte) error

              func (*Miner) Start

              func (self *Miner) Start(coinbase common.Address)

              func (*Miner) Stop

              func (self *Miner) Stop()

              func (*Miner) Unregister

              func (self *Miner) Unregister(agent Agent)

              type RemoteAgent

              type RemoteAgent struct {
              	// contains filtered or unexported fields
              }

              func NewRemoteAgent

              func NewRemoteAgent(chain consensus.ChainReader, engine 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<- *Result)

                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(nonce types.BlockNonce, mixDigest, hash common.Hash) 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

                  type Result

                  type Result struct {
                  	Work  *Work
                  	Block *types.Block
                  }

                  type Work

                  type Work struct {
                  	Block *types.Block // the new block
                  	// contains filtered or unexported fields
                  }

                    Work is the workers current environment and holds all of the current state information