diff --git a/app/appmessage/rpc_submit_block.go b/app/appmessage/rpc_submit_block.go index 8cd29b18b..9bc3afd23 100644 --- a/app/appmessage/rpc_submit_block.go +++ b/app/appmessage/rpc_submit_block.go @@ -14,9 +14,10 @@ func (msg *SubmitBlockRequestMessage) Command() MessageCommand { } // NewSubmitBlockRequestMessage returns a instance of the message -func NewSubmitBlockRequestMessage(block *RPCBlock) *SubmitBlockRequestMessage { +func NewSubmitBlockRequestMessage(block *RPCBlock, allowNonDAABlocks bool) *SubmitBlockRequestMessage { return &SubmitBlockRequestMessage{ - Block: block, + Block: block, + AllowNonDAABlocks: allowNonDAABlocks, } } diff --git a/infrastructure/network/netadapter/server/grpcserver/protowire/rpc_submit_block.go b/infrastructure/network/netadapter/server/grpcserver/protowire/rpc_submit_block.go index 062a196b6..8c2785710 100644 --- a/infrastructure/network/netadapter/server/grpcserver/protowire/rpc_submit_block.go +++ b/infrastructure/network/netadapter/server/grpcserver/protowire/rpc_submit_block.go @@ -15,6 +15,7 @@ func (x *KaspadMessage_SubmitBlockRequest) toAppMessage() (appmessage.Message, e func (x *KaspadMessage_SubmitBlockRequest) fromAppMessage(message *appmessage.SubmitBlockRequestMessage) error { x.SubmitBlockRequest = &SubmitBlockRequestMessage{Block: &RpcBlock{}} + x.SubmitBlockRequest.AllowNonDAABlocks = message.AllowNonDAABlocks return x.SubmitBlockRequest.Block.fromAppMessage(message.Block) } diff --git a/infrastructure/network/rpcclient/rpc_submit_block.go b/infrastructure/network/rpcclient/rpc_submit_block.go index 97bc3cd57..8b8a70569 100644 --- a/infrastructure/network/rpcclient/rpc_submit_block.go +++ b/infrastructure/network/rpcclient/rpc_submit_block.go @@ -5,10 +5,9 @@ import ( "github.com/kaspanet/kaspad/domain/consensus/model/externalapi" ) -// SubmitBlock sends an RPC request respective to the function's name and returns the RPC server's response -func (c *RPCClient) SubmitBlock(block *externalapi.DomainBlock) (appmessage.RejectReason, error) { +func (c *RPCClient) submitBlock(block *externalapi.DomainBlock, allowNonDAABlocks bool) (appmessage.RejectReason, error) { err := c.rpcRouter.outgoingRoute().Enqueue( - appmessage.NewSubmitBlockRequestMessage(appmessage.DomainBlockToRPCBlock(block))) + appmessage.NewSubmitBlockRequestMessage(appmessage.DomainBlockToRPCBlock(block), allowNonDAABlocks)) if err != nil { return appmessage.RejectReasonNone, err } @@ -22,3 +21,13 @@ func (c *RPCClient) SubmitBlock(block *externalapi.DomainBlock) (appmessage.Reje } return appmessage.RejectReasonNone, nil } + +// SubmitBlock sends an RPC request respective to the function's name and returns the RPC server's response +func (c *RPCClient) SubmitBlock(block *externalapi.DomainBlock) (appmessage.RejectReason, error) { + return c.submitBlock(block, false) +} + +// SubmitBlockAlsoIfNonDAA operates the same as SubmitBlock with the exception that `allowNonDAABlocks` is set to true +func (c *RPCClient) SubmitBlockAlsoIfNonDAA(block *externalapi.DomainBlock) (appmessage.RejectReason, error) { + return c.submitBlock(block, true) +} diff --git a/stability-tests/common/mine/mine.go b/stability-tests/common/mine/mine.go index 44d3c9574..54e34ddd6 100644 --- a/stability-tests/common/mine/mine.go +++ b/stability-tests/common/mine/mine.go @@ -75,7 +75,7 @@ func mineBlocks(consensusConfig *consensus.Config, rpcClient *rpc.Client, blockC } beforeSubmitBlockTime := time.Now() - rejectReason, err := rpcClient.SubmitBlock(block) + rejectReason, err := rpcClient.SubmitBlockAlsoIfNonDAA(block) if err != nil { return errors.Wrap(err, "error in SubmitBlock") } diff --git a/stability-tests/daa/daa_test.go b/stability-tests/daa/daa_test.go index 003c87767..eabb8caa5 100644 --- a/stability-tests/daa/daa_test.go +++ b/stability-tests/daa/daa_test.go @@ -297,7 +297,7 @@ func logMinedBlockStatsAndUpdateStatFields(t *testing.T, rpcClient *rpcclient.RP } func submitMinedBlock(t *testing.T, rpcClient *rpcclient.RPCClient, block *externalapi.DomainBlock) { - _, err := rpcClient.SubmitBlock(block) + _, err := rpcClient.SubmitBlockAlsoIfNonDAA(block) if err != nil { t.Fatalf("SubmitBlock: %s", err) } diff --git a/stability-tests/many-tips/main.go b/stability-tests/many-tips/main.go index 8623f1dd3..ecf5caa9f 100644 --- a/stability-tests/many-tips/main.go +++ b/stability-tests/many-tips/main.go @@ -77,7 +77,7 @@ func realMain() error { mutableHeader.SetTimeInMilliseconds(genesisTimestamp + 1000) block.Header = mutableHeader.ToImmutable() mining.SolveBlock(block, rand.New(rand.NewSource(time.Now().UnixNano()))) - _, err = rpcClient.SubmitBlock(block) + _, err = rpcClient.SubmitBlockAlsoIfNonDAA(block) if err != nil { return err } @@ -183,7 +183,7 @@ func mineBlock(rpcClient *rpc.Client, miningAddress util.Address) error { return err } mining.SolveBlock(block, rand.New(rand.NewSource(time.Now().UnixNano()))) - _, err = rpcClient.SubmitBlock(block) + _, err = rpcClient.SubmitBlockAlsoIfNonDAA(block) if err != nil { return err } @@ -202,7 +202,7 @@ func mineTips(numOfTips int, miningAddress util.Address, rpcClient *rpc.Client) rd := rand.New(rand.NewSource(time.Now().UnixNano())) for i := 0; i < numOfTips; i++ { mining.SolveBlock(block, rd) - _, err = rpcClient.SubmitBlock(block) + _, err = rpcClient.SubmitBlockAlsoIfNonDAA(block) if err != nil { return err } diff --git a/stability-tests/mempool-limits/transactions.go b/stability-tests/mempool-limits/transactions.go index ee1f9c80e..1643debdb 100644 --- a/stability-tests/mempool-limits/transactions.go +++ b/stability-tests/mempool-limits/transactions.go @@ -107,7 +107,7 @@ func mineBlockAndGetCoinbaseTransaction(t *testing.T, rpcClient *rpcclient.RPCCl t.Fatalf("RPCBlockToDomainBlock: %+v", err) } mine.SolveBlock(templateBlock) - _, err = rpcClient.SubmitBlock(templateBlock) + _, err = rpcClient.SubmitBlockAlsoIfNonDAA(templateBlock) if err != nil { t.Fatalf("SubmitBlock: %+v", err) } diff --git a/stability-tests/netsync/node.go b/stability-tests/netsync/node.go index 0a5dade40..581f09953 100644 --- a/stability-tests/netsync/node.go +++ b/stability-tests/netsync/node.go @@ -199,5 +199,5 @@ func mineOnTips(client *rpc.Client) (appmessage.RejectReason, error) { mine.SolveBlock(domainBlock) } - return client.SubmitBlock(domainBlock) + return client.SubmitBlockAlsoIfNonDAA(domainBlock) } diff --git a/testing/integration/ibd_test.go b/testing/integration/ibd_test.go index 6e66fec12..80fc1d801 100644 --- a/testing/integration/ibd_test.go +++ b/testing/integration/ibd_test.go @@ -228,7 +228,7 @@ func mineNextBlockWithMockTimestamps(t *testing.T, harness *appHarness, rd *rand mining.SolveBlock(block, rd) - _, err = harness.rpcClient.SubmitBlock(block) + _, err = harness.rpcClient.SubmitBlockAlsoIfNonDAA(block) if err != nil { t.Fatalf("Error submitting block: %s", err) } diff --git a/testing/integration/mining_test.go b/testing/integration/mining_test.go index b101c0995..81b16f309 100644 --- a/testing/integration/mining_test.go +++ b/testing/integration/mining_test.go @@ -24,7 +24,7 @@ func mineNextBlock(t *testing.T, harness *appHarness) *externalapi.DomainBlock { rd := rand.New(rand.NewSource(time.Now().UnixNano())) mining.SolveBlock(block, rd) - _, err = harness.rpcClient.SubmitBlock(block) + _, err = harness.rpcClient.SubmitBlockAlsoIfNonDAA(block) if err != nil { t.Fatalf("Error submitting block: %s", err) }