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 {
|
type GetBlockTemplateResponseMessage struct {
|
||||||
baseMessage
|
baseMessage
|
||||||
MsgBlock *MsgBlock
|
MsgBlock *MsgBlock
|
||||||
|
IsSynced bool
|
||||||
|
|
||||||
Error *RPCError
|
Error *RPCError
|
||||||
}
|
}
|
||||||
@ -34,6 +35,9 @@ func (msg *GetBlockTemplateResponseMessage) Command() MessageCommand {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// NewGetBlockTemplateResponseMessage returns a instance of the message
|
// NewGetBlockTemplateResponseMessage returns a instance of the message
|
||||||
func NewGetBlockTemplateResponseMessage(msgBlock *MsgBlock) *GetBlockTemplateResponseMessage {
|
func NewGetBlockTemplateResponseMessage(msgBlock *MsgBlock, isSynced bool) *GetBlockTemplateResponseMessage {
|
||||||
return &GetBlockTemplateResponseMessage{MsgBlock: msgBlock}
|
return &GetBlockTemplateResponseMessage{
|
||||||
|
MsgBlock: msgBlock,
|
||||||
|
IsSynced: isSynced,
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -67,3 +67,8 @@ func (m *Manager) SetOnBlockAddedToDAGHandler(onBlockAddedToDAGHandler flowconte
|
|||||||
func (m *Manager) SetOnTransactionAddedToMempoolHandler(onTransactionAddedToMempoolHandler flowcontext.OnTransactionAddedToMempoolHandler) {
|
func (m *Manager) SetOnTransactionAddedToMempoolHandler(onTransactionAddedToMempoolHandler flowcontext.OnTransactionAddedToMempoolHandler) {
|
||||||
m.context.SetOnTransactionAddedToMempoolHandler(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)
|
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 {
|
if stopOldTemplateSolving != nil {
|
||||||
close(stopOldTemplateSolving)
|
close(stopOldTemplateSolving)
|
||||||
}
|
}
|
||||||
|
if !template.IsSynced && !mineWhenNotSynced {
|
||||||
|
log.Warnf("Kaspad is not synced. Skipping current block template")
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
stopOldTemplateSolving = make(chan struct{})
|
stopOldTemplateSolving = make(chan struct{})
|
||||||
block := appmessage.MsgBlockToDomainBlock(template.MsgBlock)
|
block := appmessage.MsgBlockToDomainBlock(template.MsgBlock)
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -344,6 +344,7 @@ message GetBlockTemplateRequestMessage{
|
|||||||
|
|
||||||
message GetBlockTemplateResponseMessage{
|
message GetBlockTemplateResponseMessage{
|
||||||
BlockMessage blockMessage = 1;
|
BlockMessage blockMessage = 1;
|
||||||
|
bool isSynced = 2;
|
||||||
|
|
||||||
RPCError error = 1000;
|
RPCError error = 1000;
|
||||||
}
|
}
|
||||||
|
@ -22,12 +22,13 @@ func (x *KaspadMessage_GetBlockTemplateResponse) toAppMessage() (appmessage.Mess
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
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 {
|
func (x *KaspadMessage_GetBlockTemplateResponse) fromAppMessage(message *appmessage.GetBlockTemplateResponseMessage) error {
|
||||||
x.GetBlockTemplateResponse = &GetBlockTemplateResponseMessage{
|
x.GetBlockTemplateResponse = &GetBlockTemplateResponseMessage{
|
||||||
BlockMessage: &BlockMessage{},
|
BlockMessage: &BlockMessage{},
|
||||||
|
IsSynced: message.IsSynced,
|
||||||
}
|
}
|
||||||
return x.GetBlockTemplateResponse.BlockMessage.fromAppMessage(message.MsgBlock)
|
return x.GetBlockTemplateResponse.BlockMessage.fromAppMessage(message.MsgBlock)
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user