From 68abe04340af647bfe3266fcf4e45611f766032b Mon Sep 17 00:00:00 2001 From: WeebDataHoarder <57538841+WeebDataHoarder@users.noreply.github.com> Date: Mon, 8 Apr 2024 14:10:38 +0200 Subject: [PATCH] Refresh stratum template every consensus block time seconds --- p2pool/stratum/server.go | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/p2pool/stratum/server.go b/p2pool/stratum/server.go index 49f4247..aa2a7e5 100644 --- a/p2pool/stratum/server.go +++ b/p2pool/stratum/server.go @@ -64,6 +64,8 @@ type NewTemplateData struct { type Server struct { SubmitFunc func(block *sidechain.PoolBlock) error + refreshDuration time.Duration + minerData *p2pooltypes.MinerData tip *sidechain.PoolBlock newTemplateData NewTemplateData @@ -125,6 +127,9 @@ func NewServer(s *sidechain.SideChain, submitFunc func(block *sidechain.PoolBloc mempool: (*MiningMempool)(swiss.NewMap[types.Hash, *mempool.Entry](512)), // buffer 4 at a time for non-blocking source incomingChanges: make(chan func() bool, 4), + + //refresh every n seconds + refreshDuration: time.Duration(s.Consensus().TargetBlockTime) * time.Second, } return server } @@ -697,17 +702,17 @@ func (s *Server) HandleMempoolData(data mempool.Mempool) { if tx.Fee >= HighFeeValue { //prevent a lot of calls if not needed if utils.GlobalLogLevel&utils.LogLevelDebug > 0 { - utils.Debugf("Stratum", "new tx id = %s, size = %d, weight = %d, fee = %s", tx.Id, tx.BlobSize, tx.Weight, utils.XMRUnits(tx.Fee)) + utils.Debugf("Stratum", "new tx id = %s, size = %d, weight = %d, fee = %s XMR", tx.Id, tx.BlobSize, tx.Weight, utils.XMRUnits(tx.Fee)) } highFeeReceived = true - utils.Noticef("Stratum", "high fee tx received: %s, %s", tx.Id, utils.XMRUnits(tx.Fee)) + utils.Noticef("Stratum", "high fee tx received: %s, %s XMR - updating template", tx.Id, utils.XMRUnits(tx.Fee)) } } } // Refresh if 10 seconds have passed between templates and new transactions arrived, or a high fee was received - if highFeeReceived || timeReceived.Sub(s.lastMempoolRefresh) >= time.Second*10 { + if highFeeReceived || timeReceived.Sub(s.lastMempoolRefresh) >= s.refreshDuration { s.lastMempoolRefresh = timeReceived if err := s.fillNewTemplateData(types.ZeroDifficulty); err != nil { utils.Errorf("Stratum", "Error building new template data: %s", err)