Documentation ¶
Overview ¶
Package work implements Klaytn block creation and mining.
Index ¶
- Variables
- type Agent
- type Backend
- type CpuAgent
- type Miner
- func (self *Miner) HashRate() (tot int64)
- func (self *Miner) Mining() bool
- func (self *Miner) Pending() (*types.Block, *state.StateDB)
- func (self *Miner) PendingBlock() *types.Block
- func (self *Miner) Register(agent Agent)
- func (self *Miner) SetExtra(extra []byte) error
- func (self *Miner) Start()
- func (self *Miner) Stop()
- 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<- *Result)
- func (a *RemoteAgent) Start()
- func (a *RemoteAgent) Stop()
- func (a *RemoteAgent) SubmitHashrate(id common.Hash, rate uint64)
- func (a *RemoteAgent) SubmitWork(hash common.Hash) bool
- func (a *RemoteAgent) Work() chan<- *Task
- type Result
- type Task
Constants ¶
This section is empty.
Variables ¶
var (
ResultChGauge = metrics.NewRegisteredGauge("miner/resultch", nil)
)
Functions ¶
This section is empty.
Types ¶
type Agent ¶
type Agent interface { Work() chan<- *Task SetReturnCh(chan<- *Result) Stop() Start() GetHashRate() int64 }
Agent can register themself with the worker
type Backend ¶
type Backend interface { AccountManager() *accounts.Manager BlockChain() *blockchain.BlockChain TxPool() *blockchain.TxPool ChainDB() database.DBManager ReBroadcastTxs(transactions types.Transactions) }
Backend wraps all methods required for mining.
type CpuAgent ¶
type CpuAgent struct {
// contains filtered or unexported fields
}
func NewCpuAgent ¶
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 (*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) Unregister ¶
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(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<- *Task
type Task ¶
Task is the workers current environment and holds all of the current state information
func (*Task) ApplyTransactions ¶
func (env *Task) ApplyTransactions(txs *types.TransactionsByPriceAndNonce, bc *blockchain.BlockChain, rewardbase common.Address) []*types.Log
func (*Task) Transactions ¶
func (env *Task) Transactions() []*types.Transaction