mirror of
https://github.com/kaspanet/kaspad.git
synced 2025-06-06 14:16:43 +00:00
Implement a simple mechanism to stop a miner from mining while kaspad is not synced (#1284)
* Reintroduce isSynced into the GetBlockTemplate response. * Add a warning for when kaspad is not synced. * Rephrase a log.
This commit is contained in:
parent
bd97075e07
commit
9d0f513e49
@ -24,6 +24,7 @@ func NewGetBlockTemplateRequestMessage(payAddress string) *GetBlockTemplateReque
|
||||
type GetBlockTemplateResponseMessage struct {
|
||||
baseMessage
|
||||
MsgBlock *MsgBlock
|
||||
IsSynced bool
|
||||
|
||||
Error *RPCError
|
||||
}
|
||||
@ -34,6 +35,9 @@ func (msg *GetBlockTemplateResponseMessage) Command() MessageCommand {
|
||||
}
|
||||
|
||||
// NewGetBlockTemplateResponseMessage returns a instance of the message
|
||||
func NewGetBlockTemplateResponseMessage(msgBlock *MsgBlock) *GetBlockTemplateResponseMessage {
|
||||
return &GetBlockTemplateResponseMessage{MsgBlock: msgBlock}
|
||||
func NewGetBlockTemplateResponseMessage(msgBlock *MsgBlock, isSynced bool) *GetBlockTemplateResponseMessage {
|
||||
return &GetBlockTemplateResponseMessage{
|
||||
MsgBlock: msgBlock,
|
||||
IsSynced: isSynced,
|
||||
}
|
||||
}
|
||||
|
@ -67,3 +67,8 @@ func (m *Manager) SetOnBlockAddedToDAGHandler(onBlockAddedToDAGHandler flowconte
|
||||
func (m *Manager) SetOnTransactionAddedToMempoolHandler(onTransactionAddedToMempoolHandler flowcontext.OnTransactionAddedToMempoolHandler) {
|
||||
m.context.SetOnTransactionAddedToMempoolHandler(onTransactionAddedToMempoolHandler)
|
||||
}
|
||||
|
||||
// IsIBDRunning returns true if IBD is currently running
|
||||
func (m *Manager) IsIBDRunning() bool {
|
||||
return m.context.IsIBDRunning()
|
||||
}
|
||||
|
@ -33,5 +33,7 @@ func HandleGetBlockTemplate(context *rpccontext.Context, _ *router.Router, reque
|
||||
}
|
||||
msgBlock := appmessage.DomainBlockToMsgBlock(templateBlock)
|
||||
|
||||
return appmessage.NewGetBlockTemplateResponseMessage(msgBlock), nil
|
||||
isSynced := !context.ProtocolManager.IsIBDRunning()
|
||||
|
||||
return appmessage.NewGetBlockTemplateResponseMessage(msgBlock, isSynced), nil
|
||||
}
|
||||
|
@ -158,6 +158,10 @@ func solveLoop(newTemplateChan chan *appmessage.GetBlockTemplateResponseMessage,
|
||||
if stopOldTemplateSolving != nil {
|
||||
close(stopOldTemplateSolving)
|
||||
}
|
||||
if !template.IsSynced && !mineWhenNotSynced {
|
||||
log.Warnf("Kaspad is not synced. Skipping current block template")
|
||||
continue
|
||||
}
|
||||
|
||||
stopOldTemplateSolving = make(chan struct{})
|
||||
block := appmessage.MsgBlockToDomainBlock(template.MsgBlock)
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -344,6 +344,7 @@ message GetBlockTemplateRequestMessage{
|
||||
|
||||
message GetBlockTemplateResponseMessage{
|
||||
BlockMessage blockMessage = 1;
|
||||
bool isSynced = 2;
|
||||
|
||||
RPCError error = 1000;
|
||||
}
|
||||
|
@ -22,12 +22,13 @@ func (x *KaspadMessage_GetBlockTemplateResponse) toAppMessage() (appmessage.Mess
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return appmessage.NewGetBlockTemplateResponseMessage(msgBlock), nil
|
||||
return appmessage.NewGetBlockTemplateResponseMessage(msgBlock, x.GetBlockTemplateResponse.IsSynced), nil
|
||||
}
|
||||
|
||||
func (x *KaspadMessage_GetBlockTemplateResponse) fromAppMessage(message *appmessage.GetBlockTemplateResponseMessage) error {
|
||||
x.GetBlockTemplateResponse = &GetBlockTemplateResponseMessage{
|
||||
BlockMessage: &BlockMessage{},
|
||||
IsSynced: message.IsSynced,
|
||||
}
|
||||
return x.GetBlockTemplateResponse.BlockMessage.fromAppMessage(message.MsgBlock)
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user