aboutsummaryrefslogtreecommitdiffstats
path: root/consensus/ethash
diff options
context:
space:
mode:
authorPéter Szilágyi <peterke@gmail.com>2017-04-07 22:22:06 +0800
committerPéter Szilágyi <peterke@gmail.com>2017-04-07 22:22:06 +0800
commitb801be99d47ba09121a3e7d14aa028f828525b61 (patch)
treeffa8ffe28b6e7539cfd9baa6aa0b3c48522b91fc /consensus/ethash
parentcc13d576f07fb6803e09fb42880591a67b8b0ef6 (diff)
downloadgo-tangerine-b801be99d47ba09121a3e7d14aa028f828525b61.tar.gz
go-tangerine-b801be99d47ba09121a3e7d14aa028f828525b61.tar.zst
go-tangerine-b801be99d47ba09121a3e7d14aa028f828525b61.zip
consensus, eth: don't CPU mine by default during remote mining
Diffstat (limited to 'consensus/ethash')
-rw-r--r--consensus/ethash/ethash.go9
-rw-r--r--consensus/ethash/sealer.go3
2 files changed, 11 insertions, 1 deletions
diff --git a/consensus/ethash/ethash.go b/consensus/ethash/ethash.go
index aa5b2d8a0..d284e7b00 100644
--- a/consensus/ethash/ethash.go
+++ b/consensus/ethash/ethash.go
@@ -555,11 +555,18 @@ func (ethash *Ethash) Threads() int {
// SetThreads updates the number of mining threads currently enabled. Calling
// this method does not start mining, only sets the thread count. If zero is
-// specified, the miner will use all cores of the machine.
+// specified, the miner will use all cores of the machine. Setting a thread
+// count below zero is allowed and will cause the miner to idle, without any
+// work being done.
func (ethash *Ethash) SetThreads(threads int) {
ethash.lock.Lock()
defer ethash.lock.Unlock()
+ // If we're running a shared PoW, set the thread count on that instead
+ if ethash.shared != nil {
+ ethash.shared.SetThreads(threads)
+ return
+ }
// Update the threads and ping any running seal to pull in any changes
ethash.threads = threads
select {
diff --git a/consensus/ethash/sealer.go b/consensus/ethash/sealer.go
index 9a000ed31..784e8f649 100644
--- a/consensus/ethash/sealer.go
+++ b/consensus/ethash/sealer.go
@@ -61,6 +61,9 @@ func (ethash *Ethash) Seal(chain consensus.ChainReader, block *types.Block, stop
if threads == 0 {
threads = runtime.NumCPU()
}
+ if threads < 0 {
+ threads = 0 // Allows disabling local mining without extra logic around local/remote
+ }
var pend sync.WaitGroup
for i := 0; i < threads; i++ {
pend.Add(1)