diff --git a/cmd/miner/common/config.go b/cmd/miner/common/config.go index ac4a9b7d..9d56a28a 100644 --- a/cmd/miner/common/config.go +++ b/cmd/miner/common/config.go @@ -74,6 +74,8 @@ type OptionalConfig struct { Freqs string `long:"freqs" description:"freq settings" default-mask:"1000,200|"` BaseDiff uint `long:"base_diff" description:"base_diff settings,default 4G" default-mask:"224"` UartPath string `long:"uart_path" description:"uarts path split with ," default-mask:"/dev/ttyS1"` + WindowSize int `long:"windowsize" description:"windows size" default-mask:"10"` + BlockPerTime int `long:"blockpertime" description:"block per time" default-mask:"1"` } type PoolConfig struct { @@ -204,6 +206,8 @@ func LoadConfig() (*GlobalConfig, []string, error) { TaskForceStop: true, ForceSolo: false, NumOfChips: 14, + WindowSize: 10, + BlockPerTime: 1, } // Create the home directory if it doesn't already exist. diff --git a/cmd/miner/core/device.go b/cmd/miner/core/device.go index 6a4b920d..bc6f6055 100644 --- a/cmd/miner/core/device.go +++ b/cmd/miner/core/device.go @@ -1,4 +1,5 @@ -/** +/* +* Qitmeer james */ @@ -7,10 +8,11 @@ package core import ( "context" "fmt" - "github.com/Qitmeer/qng/cmd/miner/common" "math" "sync" "time" + + "github.com/Qitmeer/qng/cmd/miner/common" ) type BaseDevice interface { diff --git a/cmd/miner/symbols/lib/robot.go b/cmd/miner/symbols/lib/robot.go index 4eaed991..ca47ca80 100644 --- a/cmd/miner/symbols/lib/robot.go +++ b/cmd/miner/symbols/lib/robot.go @@ -46,6 +46,8 @@ type QitmeerRobot struct { PendingLock sync.Mutex SubmitLock sync.Mutex WsClient *client.Client + SubmitCount int + SubmitStart time.Time } func (this *QitmeerRobot) GetPow(i int, ctx context.Context, uart_path string, allCount uint64) core.BaseDevice { @@ -205,6 +207,7 @@ func (this *QitmeerRobot) NotifyWork(r bool) { func (this *QitmeerRobot) SubmitWork() { common.MinerLoger.Info("listen submit block server") this.Wg.Add(1) + this.SubmitStart = time.Now() go func() { defer this.Wg.Done() str := "" @@ -220,12 +223,27 @@ func (this *QitmeerRobot) SubmitWork() { this.StaleShares++ continue } + this.SubmitCount++ this.SubmitLock.Lock() var err error var txID string var height int var blockHash string var gbtID string + if this.SubmitCount == this.Cfg.OptionConfig.WindowSize { + allNeedTime := time.Duration(this.Cfg.OptionConfig.WindowSize * this.Cfg.OptionConfig.BlockPerTime * int(time.Second)) + spent := time.Since(this.SubmitStart) + offset := allNeedTime - spent + common.MinerLoger.Info(fmt.Sprintf("Finished mining %d blocks", this.Cfg.OptionConfig.WindowSize), "spent", spent, "slept", offset) + if offset > 0 { + t1 := time.NewTimer(offset) + <-t1.C + t1.Stop() + } + this.SubmitCount = 0 + this.SubmitStart = time.Now() + + } if this.Pool { arr = strings.Split(str, "-") // block = arr[0] diff --git a/services/miner/api.go b/services/miner/api.go index aa056064..227e47ad 100644 --- a/services/miner/api.go +++ b/services/miner/api.go @@ -218,9 +218,9 @@ func (api *PublicMinerAPI) SubmitBlockHeader(hexBlockHeader string, extraNonce * } func (api *PublicMinerAPI) checkSubmitLimit() error { - if time.Since(api.miner.stats.LastestSubmit) < SubmitInterval { - return fmt.Errorf("Submission interval Limited:%s < %s\n", time.Since(api.miner.stats.LastestSubmit), SubmitInterval) - } + // if time.Since(api.miner.stats.LastestSubmit) < SubmitInterval { + // return fmt.Errorf("Submission interval Limited:%s < %s\n", time.Since(api.miner.stats.LastestSubmit), SubmitInterval) + // } return nil }