Documentation
¶
Overview ¶
Package miner implements various Stellite-compatible miners that can be used by the GUI
Index ¶
- Variables
- func DetermineMinerType(dir string) (string, string, error)
- func HumanizeHashrate(hashrate float64) string
- func HumanizeTime(seconds int) string
- type Base
- type Config
- type Miner
- type ProcessingConfig
- type Stats
- type XmrStak
- func (miner *XmrStak) GetLastHashrate() float64
- func (miner *XmrStak) GetName() string
- func (miner *XmrStak) GetProcessingConfig() ProcessingConfig
- func (miner *XmrStak) GetStats() (Stats, error)
- func (miner *XmrStak) WriteConfig(poolEndpoint string, walletAddress string, processingConfig ProcessingConfig) error
- type XmrStakResponse
- type Xmrig
- func (miner *Xmrig) GetLastHashrate() float64
- func (miner *Xmrig) GetName() string
- func (miner *Xmrig) GetProcessingConfig() ProcessingConfig
- func (miner *Xmrig) GetStats() (Stats, error)
- func (miner *Xmrig) WriteConfig(poolEndpoint string, walletAddress string, processingConfig ProcessingConfig) error
- type XmrigAPIConfig
- type XmrigConfig
- type XmrigGPUConfig
- type XmrigPoolConfig
- type XmrigResponse
Constants ¶
This section is empty.
Variables ¶
var SupportedMiners = []string{"xmr-stak", "xmrig"}
SupportedMiners contains a list of the currently supported miners
Functions ¶
func DetermineMinerType ¶
DetermineMinerType checks the given path for supported miners and returns the type of miner and path to the executable
func HumanizeHashrate ¶
HumanizeHashrate returns the H/s, KH/s or MH/s representation of hashrate
func HumanizeTime ¶
HumanizeTime turns seconds into minutes, hours, etc
Types ¶
type Base ¶
type Base struct {
// contains filtered or unexported fields
}
Base implements core functionality common to all miners
type Config ¶
type Config struct {
// Type of miner
Type string `json:"type"`
// Path to the selected miner's executable
Path string `json:"path"`
// Endpoint of the miner's JSON API
Endpoint string `json:"endpoint"`
}
Config holds miner specific configuration information
type Miner ¶
type Miner interface {
// Start the miner
Start() error
// Stop the miner
Stop() error
// WriteConfig writes the miner's configuration to the file format as
// specified by the miner
WriteConfig(
poolEndpoint string,
walletAddress string,
processingConfig ProcessingConfig) error
// GetProcessingConfig returns the current miner processing config
// TODO: Currently only CPU threads, extend this to full CPU/GPU config
GetProcessingConfig() ProcessingConfig
// GetName returns the name of the miner
GetName() string
// GetLastHashrate returns the last reported hashrate
GetLastHashrate() float64
// GetStats returns the current miner stats
GetStats() (Stats, error)
}
Miner defines the required behaviour to be implemented by a miner to work with the GUI
func CreateMiner ¶
CreateMiner creates a supported miner from the given configuration
type ProcessingConfig ¶
type ProcessingConfig struct {
// Type of miner
Type string `json:"type"`
// Threads is the amount of CPU threads
Threads uint16 `json:"threads"`
// MaxThreads is the maximum threads as read by runtime.NumCPU
MaxThreads uint16 `json:"max_threads"`
// MaxUsage is the maximum CPU usage in percentage the miner should
// attempt to use.
// Currently only supported by xmrig CPU backend
MaxUsage uint8 `json:"max_usage"`
}
ProcessingConfig holds the config for the miner's processing setup TODO: Right now this is only for CPU threads and will be extended into full CPU/GPU config
type Stats ¶
type Stats struct {
// Hashrate is the current miner hashrate
Hashrate float64 `json:"hashrate"`
// HashrateHuman is the H/s, KH/s or MH/s representation of hashrate
HashrateHuman string `json:"hashrate_human"`
// CurrentDifficulty as set by the pool
CurrentDifficulty int `json:"current_difficulty"`
SharesGood int `json:"shares_good"`
SharesBad int `json:"shares_bad"`
// Uptime for the miner in seconds
Uptime int `json:"uptime"`
// UptimeHuman is the human readable version of uptime, ex. 10 minutes
UptimeHuman string `json:"uptime_human"`
// Errors is a list of errors that have occurred
Errors []string `json:"errors"`
// UpdateGraph is set to true if the stats graph should be updated
UpdateGraph bool `json:"update_graph"`
// Address contains the Stellite address we are mining to
// TODO: This should be somewhere else, it's not stats!
Address string `json:"address"`
}
Stats contains the miner statistics required by the front-end
type XmrStak ¶
type XmrStak struct {
Base
// contains filtered or unexported fields
}
XmrStak implements the miner interface for the xmr-stak miner https://github.com/fireice-uk/xmr-stak
func NewXmrStak ¶
NewXmrStak creates a new xmr-stak miner instance
func (*XmrStak) GetLastHashrate ¶
GetLastHashrate returns the last reported hashrate
func (*XmrStak) GetProcessingConfig ¶
func (miner *XmrStak) GetProcessingConfig() ProcessingConfig
GetProcessingConfig returns the current miner processing config TODO: Currently only CPU threads, extend this to full CPU/GPU config
func (*XmrStak) WriteConfig ¶
func (miner *XmrStak) WriteConfig( poolEndpoint string, walletAddress string, processingConfig ProcessingConfig) error
WriteConfig writes the miner's configuration in the xmr-stak format
type XmrStakResponse ¶
type XmrStakResponse struct {
Version string `json:"version"`
Hashrate struct {
Threads [][]interface{} `json:"threads"`
Total []float64 `json:"total"`
Highest float64 `json:"highest"`
} `json:"hashrate"`
Results struct {
DiffCurrent int `json:"diff_current"`
SharesGood int `json:"shares_good"`
SharesTotal int `json:"shares_total"`
AvgTime float64 `json:"avg_time"`
HashesTotal int `json:"hashes_total"`
Best []int `json:"best"`
ErrorLog []struct {
Count int `json:"count"`
LastSeen int `json:"last_seen"`
Text string `json:"text"`
} `json:"error_log"`
} `json:"results"`
Connection struct {
Pool string `json:"pool"`
Uptime int `json:"uptime"`
Ping int `json:"ping"`
ErrorLog []struct {
LastSeen int `json:"last_seen"`
Text string `json:"text"`
} `json:"error_log"`
} `json:"connection"`
}
XmrStakResponse contains the data from xmr-stak API Generated with https://mholt.github.io/json-to-go/
type Xmrig ¶
type Xmrig struct {
Base
// contains filtered or unexported fields
}
Xmrig implements the miner interface for the xmrig miner, including xmrig-amd and xmrig-nvidia https://github.com/xmrig/xmrig https://github.com/xmrig/xmrig-amd https://github.com/xmrig/xmrig-nvidia
func (*Xmrig) GetLastHashrate ¶
GetLastHashrate returns the last reported hashrate
func (*Xmrig) GetProcessingConfig ¶
func (miner *Xmrig) GetProcessingConfig() ProcessingConfig
GetProcessingConfig returns the current miner processing config TODO: Currently only CPU threads, extend this to full CPU/GPU config
func (*Xmrig) WriteConfig ¶
func (miner *Xmrig) WriteConfig( poolEndpoint string, walletAddress string, processingConfig ProcessingConfig) error
WriteConfig writes the miner's configuration in the xmrig format
type XmrigAPIConfig ¶
type XmrigAPIConfig struct {
Port int `json:"port"`
AccessToken interface{} `json:"access-token"`
WorkerID interface{} `json:"worker-id"`
}
XmrigAPIConfig contains the Xmrig API config
type XmrigConfig ¶
type XmrigConfig struct {
Algo string `json:"algo"`
Av int `json:"av"`
Background bool `json:"background"`
Colors bool `json:"colors"`
CPUAffinity interface{} `json:"cpu-affinity"`
CPUPriority interface{} `json:"cpu-priority"`
DonateLevel int `json:"donate-level"`
LogFile interface{} `json:"log-file"`
MaxCPUUsage uint8 `json:"max-cpu-usage"`
PrintTime int `json:"print-time"`
Retries int `json:"retries"`
RetryPause int `json:"retry-pause"`
Safe bool `json:"safe"`
Syslog bool `json:"syslog"`
Threads uint16 `json:"threads"`
Pools []XmrigPoolConfig `json:"pools"`
API XmrigAPIConfig `json:"api"`
}
XmrigConfig is the config.json structure for Xmrig Generated with https://mholt.github.io/json-to-go/
type XmrigGPUConfig ¶
type XmrigGPUConfig struct {
Algo string `json:"algo"`
Av int `json:"av"`
Background bool `json:"background"`
Colors bool `json:"colors"`
CPUAffinity interface{} `json:"cpu-affinity"`
CPUPriority interface{} `json:"cpu-priority"`
DonateLevel int `json:"donate-level"`
LogFile interface{} `json:"log-file"`
MaxCPUUsage uint8 `json:"max-cpu-usage"`
PrintTime int `json:"print-time"`
Retries int `json:"retries"`
RetryPause int `json:"retry-pause"`
Safe bool `json:"safe"`
Syslog bool `json:"syslog"`
Threads []struct{} `json:"threads"`
Pools []XmrigPoolConfig `json:"pools"`
API XmrigAPIConfig `json:"api"`
}
XmrigGPUConfig is the config.json structure for Xmrig's GPU Generated with https://mholt.github.io/json-to-go/
type XmrigPoolConfig ¶
type XmrigPoolConfig struct {
URL string `json:"url"`
User string `json:"user"`
Pass string `json:"pass"`
Keepalive bool `json:"keepalive"`
Nicehash bool `json:"nicehash"`
Variant int `json:"variant"`
}
XmrigPoolConfig contains the configuration for a pool in Xmrig
type XmrigResponse ¶
type XmrigResponse struct {
ID string `json:"id"`
WorkerID string `json:"worker_id"`
Version string `json:"version"`
Kind string `json:"kind"`
Ua string `json:"ua"`
CPU struct {
Brand string `json:"brand"`
Aes bool `json:"aes"`
X64 bool `json:"x64"`
Sockets int `json:"sockets"`
} `json:"cpu"`
Algo string `json:"algo"`
Hugepages bool `json:"hugepages"`
DonateLevel int `json:"donate_level"`
Hashrate struct {
Total []float64 `json:"total"`
Highest float64 `json:"highest"`
Threads [][]float64 `json:"threads"`
} `json:"hashrate"`
Results struct {
DiffCurrent int `json:"diff_current"`
SharesGood int `json:"shares_good"`
SharesTotal int `json:"shares_total"`
AvgTime int `json:"avg_time"`
HashesTotal int `json:"hashes_total"`
Best []int `json:"best"`
ErrorLog []string `json:"error_log"`
} `json:"results"`
Connection struct {
Pool string `json:"pool"`
Uptime int `json:"uptime"`
Ping int `json:"ping"`
Failures int `json:"failures"`
ErrorLog []string `json:"error_log"`
} `json:"connection"`
}
XmrigResponse contains the data from xmrig API Generated with https://mholt.github.io/json-to-go/