Documentation ¶
Index ¶
- type CPUMiner
- func (m *CPUMiner) GenerateNBlocks(workerNumber uint32, n uint32, algo string) ([]*chainhash.Hash, error)
- func (m *CPUMiner) GetAlgo() (name string)
- func (m *CPUMiner) HashesPerSecond() float64
- func (m *CPUMiner) IsMining() bool
- func (m *CPUMiner) NumWorkers() int32
- func (m *CPUMiner) SetAlgo(name string)
- func (m *CPUMiner) SetNumWorkers(numWorkers int32)
- func (m *CPUMiner) Start()
- func (m *CPUMiner) Stop()
- type Config
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type CPUMiner ¶
CPUMiner provides facilities for solving blocks (mining) using the CPU in a concurrency-safe manner. It consists of two main goroutines -- a speed monitor and a controller for worker goroutines which generate and solve blocks. The number of goroutines can be set via the SetMaxGoRoutines function, but the default is based on the number of processor cores in the system which is typically sufficient.
func New ¶
New returns a new instance of a CPU miner for the provided configuration. Use Start to begin the mining process. See the documentation for CPUMiner type for more details.
func (*CPUMiner) GenerateNBlocks ¶
func (m *CPUMiner) GenerateNBlocks(workerNumber uint32, n uint32, algo string) ([]*chainhash.Hash, error)
GenerateNBlocks generates the requested number of blocks. It is self contained in that it creates block templates and attempts to solve them while detecting when it is performing stale work and reacting accordingly by generating a new block template. When a block is solved, it is submitted. The function returns a list of the hashes of generated blocks.
func (*CPUMiner) HashesPerSecond ¶
HashesPerSecond returns the number of hashes per second the mining process is performing. 0 is returned if the miner is not currently running. This function is safe for concurrent access.
func (*CPUMiner) IsMining ¶
IsMining returns whether or not the CPU miner has been started and is therefore currently mining. This function is safe for concurrent access.
func (*CPUMiner) NumWorkers ¶
NumWorkers returns the number of workers which are running to solve blocks. This function is safe for concurrent access.
func (*CPUMiner) SetNumWorkers ¶
SetNumWorkers sets the number of workers to create which solve blocks. Any negative values will cause a default number of workers to be used which is based on the number of processor cores in the system. A value of 0 will cause all CPU mining to be stopped. This function is safe for concurrent access.
type Config ¶
type Config struct { // Blockchain gives access for the miner to information about the chain // Blockchain *blockchain.BlockChain // ChainParams identifies which chain parameters the cpu miner is associated // with. ChainParams *netparams.Params // BlockTemplateGenerator identifies the instance to use in order to // generate block templates that the miner will attempt to solve. BlockTemplateGenerator *mining.BlkTmplGenerator // MiningAddrs is a list of payment addresses to use for the generated // blocks. Each generated block will randomly choose one of them. MiningAddrs []util.Address // ProcessBlock defines the function to call with any solved blocks. It // typically must run the provided block through the same set of rules and // handling as any other block coming from the network. ProcessBlock func(*util.Block, blockchain.BehaviorFlags) (bool, error) // ConnectedCount defines the function to use to obtain how many other peers // the server is connected to. This is used by the automatic persistent // mining routine to determine whether or it should attempt mining. This is // useful because there is no point in mining when not connected to any // peers since there would no be anyone to send any found blocks to. ConnectedCount func() int32 // IsCurrent defines the function to use to obtain whether or not the block // chain is current. This is used by the automatic persistent mining // routine to determine whether or it should attempt mining. This is useful // because there is no point in mining if the chain is not current since any // solved blocks would be on a side chain and and up orphaned anyways. IsCurrent func() bool // Algo is the name of the type of PoW used for the block header. Algo string // NumThreads is the number of threads set in the configuration for the // CPUMiner NumThreads uint32 // Solo sets whether the miner will run when not connected Solo bool }
Config is a descriptor containing the cpu miner configuration.