From 375367e1ee70438bb87f548f55cea4dbd3e3aa35 Mon Sep 17 00:00:00 2001 From: BeniaminDrasovean Date: Thu, 4 Jun 2026 13:18:14 +0300 Subject: [PATCH 1/3] use checkMiniBlock in verifyBlockProposal --- process/block/baseProcess.go | 6 ++ process/common.go | 35 +++++++++ process/common_test.go | 84 ++++++++++++++++++++ process/coordinator/process.go | 38 +--------- process/coordinator/process_test.go | 114 ---------------------------- 5 files changed, 127 insertions(+), 150 deletions(-) diff --git a/process/block/baseProcess.go b/process/block/baseProcess.go index e729455b4b..120c7b94ff 100644 --- a/process/block/baseProcess.go +++ b/process/block/baseProcess.go @@ -1169,6 +1169,7 @@ func (bp *baseProcessor) checkHeaderBodyCorrelationProposal(miniBlockHeaders []d var mbHdr data.MiniBlockHeaderHandler var miniBlock *block.MiniBlock + selfId := bp.shardCoordinator.SelfId() for i := 0; i < len(body.MiniBlocks); i++ { miniBlock = body.MiniBlocks[i] mbHdr = miniBlockHeaders[i] @@ -1195,6 +1196,11 @@ func (bp *baseProcessor) checkHeaderBodyCorrelationProposal(miniBlockHeaders []d return err } + err = process.CheckMiniBlock(miniBlock, selfId) + if err != nil { + return err + } + delete(mbHashesFromHdr, mbHashStr) } diff --git a/process/common.go b/process/common.go index 4bc7d9038a..84949b20bc 100644 --- a/process/common.go +++ b/process/common.go @@ -1636,3 +1636,38 @@ func getExecutionResultToSetOnReplacedHeader( return executionResultToSet, nil } + +// CheckMiniBlock checks if the given mini block has valid shard ids according to the given self id +func CheckMiniBlock( + miniBlock *block.MiniBlock, + selfId uint32, +) error { + // there are checks for non existing shard id at interceptors level + + if miniBlock.SenderShardID != selfId && miniBlock.GetReceiverShardID() != selfId && miniBlock.GetReceiverShardID() != core.AllShardId { + return fmt.Errorf("%w - not valid shard ids: block type: %s, sender shard id: %d, receiver shard id: %d", + ErrInvalidShardId, + miniBlock.Type, + miniBlock.SenderShardID, + miniBlock.ReceiverShardID) + } + + if miniBlock.GetType() == block.PeerBlock && + (miniBlock.GetSenderShardID() != core.MetachainShardId || miniBlock.GetReceiverShardID() != core.AllShardId) { + return fmt.Errorf("%w - peer blocks: block type: %s, sender shard id: %d, receiver shard id: %d", + ErrInvalidShardId, + miniBlock.Type, + miniBlock.SenderShardID, + miniBlock.ReceiverShardID) + } + + if miniBlock.GetType() != block.PeerBlock && miniBlock.GetReceiverShardID() == core.AllShardId { + return fmt.Errorf("%w - invalid all shard ids: block type: %s, sender shard id: %d, receiver shard id: %d", + ErrInvalidShardId, + miniBlock.Type, + miniBlock.SenderShardID, + miniBlock.ReceiverShardID) + } + + return nil +} diff --git a/process/common_test.go b/process/common_test.go index aa82675145..43f4b44c58 100644 --- a/process/common_test.go +++ b/process/common_test.go @@ -3895,3 +3895,87 @@ func TestCleanCachesForExecutionResult(t *testing.T) { require.Equal(t, 3, len(executedMbsRemovedKeys)) }) } + +func TestTransactionCoordinator_checkMiniBlock(t *testing.T) { + t.Parallel() + + t.Run("valid miniblock should not error", func(t *testing.T) { + t.Parallel() + + selfShardID := uint32(1) + + mb := &block.MiniBlock{SenderShardID: 2, ReceiverShardID: selfShardID, Type: block.TxBlock} + err := process.CheckMiniBlock(mb, selfShardID) + require.Nil(t, err) + + mb = &block.MiniBlock{SenderShardID: selfShardID, ReceiverShardID: 2, Type: block.TxBlock} + err = process.CheckMiniBlock(mb, selfShardID) + require.Nil(t, err) + }) + + t.Run("not related to self shard, should fail", func(t *testing.T) { + t.Parallel() + + selfShardID := uint32(1) + + mb := &block.MiniBlock{SenderShardID: 2, ReceiverShardID: 3, Type: block.TxBlock} + err := process.CheckMiniBlock(mb, selfShardID) + require.ErrorIs(t, err, process.ErrInvalidShardId) + + mb = &block.MiniBlock{SenderShardID: 2, ReceiverShardID: core.MetachainShardId, Type: block.TxBlock} + err = process.CheckMiniBlock(mb, selfShardID) + require.ErrorIs(t, err, process.ErrInvalidShardId) + + mb = &block.MiniBlock{SenderShardID: core.MetachainShardId, ReceiverShardID: 3, Type: block.TxBlock} + err = process.CheckMiniBlock(mb, selfShardID) + require.ErrorIs(t, err, process.ErrInvalidShardId) + }) + + t.Run("peer miniblock should be from meta to all shards", func(t *testing.T) { + t.Parallel() + + selfShardID := uint32(0) + + mb := &block.MiniBlock{SenderShardID: core.MetachainShardId, ReceiverShardID: core.AllShardId, Type: block.TxBlock} + err := process.CheckMiniBlock(mb, selfShardID) + require.ErrorIs(t, err, process.ErrInvalidShardId) + + mb = &block.MiniBlock{SenderShardID: 2, ReceiverShardID: core.AllShardId, Type: block.PeerBlock} + err = process.CheckMiniBlock(mb, selfShardID) + require.ErrorIs(t, err, process.ErrInvalidShardId) + + mb = &block.MiniBlock{SenderShardID: core.MetachainShardId, ReceiverShardID: 1, Type: block.PeerBlock} + err = process.CheckMiniBlock(mb, selfShardID) + require.ErrorIs(t, err, process.ErrInvalidShardId) + + mb = &block.MiniBlock{SenderShardID: core.MetachainShardId, ReceiverShardID: core.AllShardId, Type: block.PeerBlock} + err = process.CheckMiniBlock(mb, selfShardID) + require.Nil(t, err) + }) + + t.Run("non peer miniblock should not be to all", func(t *testing.T) { + t.Parallel() + + selfShardID := uint32(0) + + mb := &block.MiniBlock{SenderShardID: core.MetachainShardId, ReceiverShardID: core.AllShardId, Type: block.TxBlock} + err := process.CheckMiniBlock(mb, selfShardID) + require.ErrorIs(t, err, process.ErrInvalidShardId) + + mb = &block.MiniBlock{SenderShardID: 1, ReceiverShardID: core.AllShardId, Type: block.TxBlock} + err = process.CheckMiniBlock(mb, selfShardID) + require.ErrorIs(t, err, process.ErrInvalidShardId) + + mb = &block.MiniBlock{SenderShardID: 1, ReceiverShardID: core.AllShardId, Type: block.ReceiptBlock} + err = process.CheckMiniBlock(mb, selfShardID) + require.ErrorIs(t, err, process.ErrInvalidShardId) + + mb = &block.MiniBlock{SenderShardID: 1, ReceiverShardID: core.AllShardId, Type: block.RewardsBlock} + err = process.CheckMiniBlock(mb, selfShardID) + require.ErrorIs(t, err, process.ErrInvalidShardId) + + mb = &block.MiniBlock{SenderShardID: 1, ReceiverShardID: core.AllShardId, Type: block.SmartContractResultBlock} + err = process.CheckMiniBlock(mb, selfShardID) + require.ErrorIs(t, err, process.ErrInvalidShardId) + }) +} diff --git a/process/coordinator/process.go b/process/coordinator/process.go index 9d387d8f1d..aa8a73c05f 100644 --- a/process/coordinator/process.go +++ b/process/coordinator/process.go @@ -440,7 +440,7 @@ func (tc *transactionCoordinator) processMiniBlocksFromMe( haveTime func() bool, ) error { for _, mb := range body.MiniBlocks { - err := tc.checkMiniBlock(mb) + err := process.CheckMiniBlock(mb, tc.shardCoordinator.SelfId()) if err != nil { return err } @@ -484,40 +484,6 @@ func (tc *transactionCoordinator) processMiniBlocksFromMe( return nil } -// TODO consider calling this from VerifyBlockProposal instead of ProcessBlockProposal -func (tc *transactionCoordinator) checkMiniBlock( - miniBlock *block.MiniBlock, -) error { - // there are checks for non existing shard id at interceptors level - - if miniBlock.SenderShardID != tc.shardCoordinator.SelfId() && miniBlock.GetReceiverShardID() != tc.shardCoordinator.SelfId() && miniBlock.GetReceiverShardID() != core.AllShardId { - return fmt.Errorf("%w - not valid shard ids: block type: %s, sender shard id: %d, receiver shard id: %d", - process.ErrInvalidShardId, - miniBlock.Type, - miniBlock.SenderShardID, - miniBlock.ReceiverShardID) - } - - if miniBlock.GetType() == block.PeerBlock && - (miniBlock.GetSenderShardID() != core.MetachainShardId || miniBlock.GetReceiverShardID() != core.AllShardId) { - return fmt.Errorf("%w - peer blocks: block type: %s, sender shard id: %d, receiver shard id: %d", - process.ErrInvalidShardId, - miniBlock.Type, - miniBlock.SenderShardID, - miniBlock.ReceiverShardID) - } - - if miniBlock.GetType() != block.PeerBlock && miniBlock.GetReceiverShardID() == core.AllShardId { - return fmt.Errorf("%w - invalid all shard ids: block type: %s, sender shard id: %d, receiver shard id: %d", - process.ErrInvalidShardId, - miniBlock.Type, - miniBlock.SenderShardID, - miniBlock.ReceiverShardID) - } - - return nil -} - func (tc *transactionCoordinator) processMiniBlocksToMe( header data.HeaderHandler, body *block.Body, @@ -540,7 +506,7 @@ func (tc *transactionCoordinator) processMiniBlocksToMe( for mbIndex = 0; mbIndex < len(body.MiniBlocks); mbIndex++ { miniBlock := body.MiniBlocks[mbIndex] - err := tc.checkMiniBlock(miniBlock) + err := process.CheckMiniBlock(miniBlock, tc.shardCoordinator.SelfId()) if err != nil { return mbIndex, err } diff --git a/process/coordinator/process_test.go b/process/coordinator/process_test.go index 20e7e75b07..54fdd33fa7 100644 --- a/process/coordinator/process_test.go +++ b/process/coordinator/process_test.go @@ -4540,117 +4540,3 @@ func createDefaultTxCoordinatorArgs() ArgTransactionCoordinator { return txCoordinatorArgs } - -func TestTransactionCoordinator_checkMiniBlock(t *testing.T) { - t.Parallel() - - t.Run("valid miniblock should not error", func(t *testing.T) { - t.Parallel() - - argsTransactionCoordinator := createMockTransactionCoordinatorArguments() - - selfShardID := uint32(1) - argsTransactionCoordinator.ShardCoordinator = &mock.ShardCoordinatorStub{ - SelfIdCalled: func() uint32 { - return selfShardID - }, - } - - tc, err := NewTransactionCoordinator(argsTransactionCoordinator) - require.Nil(t, err) - require.NotNil(t, tc) - - mb := &block.MiniBlock{SenderShardID: 2, ReceiverShardID: selfShardID, Type: block.TxBlock} - err = tc.checkMiniBlock(mb) - require.Nil(t, err) - - mb = &block.MiniBlock{SenderShardID: selfShardID, ReceiverShardID: 2, Type: block.TxBlock} - err = tc.checkMiniBlock(mb) - require.Nil(t, err) - }) - - t.Run("not related to self shard, should fail", func(t *testing.T) { - t.Parallel() - - argsTransactionCoordinator := createMockTransactionCoordinatorArguments() - - selfShardID := uint32(1) - argsTransactionCoordinator.ShardCoordinator = &mock.ShardCoordinatorStub{ - SelfIdCalled: func() uint32 { - return selfShardID - }, - } - - tc, err := NewTransactionCoordinator(argsTransactionCoordinator) - require.Nil(t, err) - require.NotNil(t, tc) - - mb := &block.MiniBlock{SenderShardID: 2, ReceiverShardID: 3, Type: block.TxBlock} - err = tc.checkMiniBlock(mb) - require.ErrorIs(t, err, process.ErrInvalidShardId) - - mb = &block.MiniBlock{SenderShardID: 2, ReceiverShardID: core.MetachainShardId, Type: block.TxBlock} - err = tc.checkMiniBlock(mb) - require.ErrorIs(t, err, process.ErrInvalidShardId) - - mb = &block.MiniBlock{SenderShardID: core.MetachainShardId, ReceiverShardID: 3, Type: block.TxBlock} - err = tc.checkMiniBlock(mb) - require.ErrorIs(t, err, process.ErrInvalidShardId) - }) - - t.Run("peer miniblock should be from meta to all shards", func(t *testing.T) { - t.Parallel() - - argsTransactionCoordinator := createMockTransactionCoordinatorArguments() - - tc, err := NewTransactionCoordinator(argsTransactionCoordinator) - require.Nil(t, err) - require.NotNil(t, tc) - - mb := &block.MiniBlock{SenderShardID: core.MetachainShardId, ReceiverShardID: core.AllShardId, Type: block.TxBlock} - err = tc.checkMiniBlock(mb) - require.ErrorIs(t, err, process.ErrInvalidShardId) - - mb = &block.MiniBlock{SenderShardID: 2, ReceiverShardID: core.AllShardId, Type: block.PeerBlock} - err = tc.checkMiniBlock(mb) - require.ErrorIs(t, err, process.ErrInvalidShardId) - - mb = &block.MiniBlock{SenderShardID: core.MetachainShardId, ReceiverShardID: 1, Type: block.PeerBlock} - err = tc.checkMiniBlock(mb) - require.ErrorIs(t, err, process.ErrInvalidShardId) - - mb = &block.MiniBlock{SenderShardID: core.MetachainShardId, ReceiverShardID: core.AllShardId, Type: block.PeerBlock} - err = tc.checkMiniBlock(mb) - require.Nil(t, err) - }) - - t.Run("non peer miniblock should not be to all", func(t *testing.T) { - t.Parallel() - - argsTransactionCoordinator := createMockTransactionCoordinatorArguments() - - tc, err := NewTransactionCoordinator(argsTransactionCoordinator) - require.Nil(t, err) - require.NotNil(t, tc) - - mb := &block.MiniBlock{SenderShardID: core.MetachainShardId, ReceiverShardID: core.AllShardId, Type: block.TxBlock} - err = tc.checkMiniBlock(mb) - require.ErrorIs(t, err, process.ErrInvalidShardId) - - mb = &block.MiniBlock{SenderShardID: 1, ReceiverShardID: core.AllShardId, Type: block.TxBlock} - err = tc.checkMiniBlock(mb) - require.ErrorIs(t, err, process.ErrInvalidShardId) - - mb = &block.MiniBlock{SenderShardID: 1, ReceiverShardID: core.AllShardId, Type: block.ReceiptBlock} - err = tc.checkMiniBlock(mb) - require.ErrorIs(t, err, process.ErrInvalidShardId) - - mb = &block.MiniBlock{SenderShardID: 1, ReceiverShardID: core.AllShardId, Type: block.RewardsBlock} - err = tc.checkMiniBlock(mb) - require.ErrorIs(t, err, process.ErrInvalidShardId) - - mb = &block.MiniBlock{SenderShardID: 1, ReceiverShardID: core.AllShardId, Type: block.SmartContractResultBlock} - err = tc.checkMiniBlock(mb) - require.ErrorIs(t, err, process.ErrInvalidShardId) - }) -} From 2a1d99f90e033242a41d204cdbaa68ffae3d26c9 Mon Sep 17 00:00:00 2001 From: BeniaminDrasovean Date: Thu, 4 Jun 2026 13:26:37 +0300 Subject: [PATCH 2/3] small fixes --- process/common_test.go | 2 +- process/coordinator/process.go | 10 ++++++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/process/common_test.go b/process/common_test.go index 43f4b44c58..e9f0ae24ef 100644 --- a/process/common_test.go +++ b/process/common_test.go @@ -3896,7 +3896,7 @@ func TestCleanCachesForExecutionResult(t *testing.T) { }) } -func TestTransactionCoordinator_checkMiniBlock(t *testing.T) { +func Test_CheckMiniBlock(t *testing.T) { t.Parallel() t.Run("valid miniblock should not error", func(t *testing.T) { diff --git a/process/coordinator/process.go b/process/coordinator/process.go index aa8a73c05f..d87ada358f 100644 --- a/process/coordinator/process.go +++ b/process/coordinator/process.go @@ -439,13 +439,14 @@ func (tc *transactionCoordinator) processMiniBlocksFromMe( body *block.Body, haveTime func() bool, ) error { + selfId := tc.shardCoordinator.SelfId() for _, mb := range body.MiniBlocks { - err := process.CheckMiniBlock(mb, tc.shardCoordinator.SelfId()) + err := process.CheckMiniBlock(mb, selfId) if err != nil { return err } - if mb.SenderShardID != tc.shardCoordinator.SelfId() { + if mb.SenderShardID != selfId { return process.ErrMiniBlocksInWrongOrder } } @@ -503,15 +504,16 @@ func (tc *transactionCoordinator) processMiniBlocksToMe( // processing has to be done in order, as the order of different type of transactions over the same account is strict // processing destination ME miniblocks first mbIndex := 0 + selfId := tc.shardCoordinator.SelfId() for mbIndex = 0; mbIndex < len(body.MiniBlocks); mbIndex++ { miniBlock := body.MiniBlocks[mbIndex] - err := process.CheckMiniBlock(miniBlock, tc.shardCoordinator.SelfId()) + err := process.CheckMiniBlock(miniBlock, selfId) if err != nil { return mbIndex, err } - if miniBlock.SenderShardID == tc.shardCoordinator.SelfId() { + if miniBlock.SenderShardID == selfId { return mbIndex, nil } From 8e5cbef4e121f904fa50f65f727796e90401aa86 Mon Sep 17 00:00:00 2001 From: BeniaminDrasovean Date: Tue, 16 Jun 2026 12:33:55 +0300 Subject: [PATCH 3/3] fix after merge --- process/block/baseProcess.go | 7 ++- process/block/baseProcess_test.go | 5 +- process/common.go | 35 ------------- process/common_test.go | 84 ------------------------------- 4 files changed, 10 insertions(+), 121 deletions(-) diff --git a/process/block/baseProcess.go b/process/block/baseProcess.go index e2b53abe93..45ab3688c5 100644 --- a/process/block/baseProcess.go +++ b/process/block/baseProcess.go @@ -1224,7 +1224,12 @@ func (bp *baseProcessor) checkMiniBlockWithMiniBlockHeaderProposal(mbHash []byte if err != nil { return err } - return bp.checkConstructionStateProcessingTypeAndIndexesCorrectnessProposal(mbHdr) + err = bp.checkConstructionStateProcessingTypeAndIndexesCorrectnessProposal(mbHdr) + if err != nil { + return err + } + + return process.CheckMiniBlock(miniBlock, bp.shardCoordinator) } func (bp *baseProcessor) checkMiniBlockWithMiniBlockHeader(mbHash []byte, mbHdr data.MiniBlockHeaderHandler, miniBlock *block.MiniBlock, blockShardID uint32) error { diff --git a/process/block/baseProcess_test.go b/process/block/baseProcess_test.go index 3032f7f202..da362d74e3 100644 --- a/process/block/baseProcess_test.go +++ b/process/block/baseProcess_test.go @@ -18,6 +18,7 @@ import ( "github.com/multiversx/mx-chain-core-go/core" "github.com/multiversx/mx-chain-core-go/core/check" "github.com/multiversx/mx-chain-core-go/core/keyValStorage" + "github.com/multiversx/mx-chain-core-go/core/sharding" "github.com/multiversx/mx-chain-core-go/data" "github.com/multiversx/mx-chain-core-go/data/block" "github.com/multiversx/mx-chain-core-go/data/rewardTx" @@ -4555,7 +4556,9 @@ func TestCheckHeaderBodyCorrelationProposal(t *testing.T) { }) t.Run("should work", func(t *testing.T) { - arguments := CreateMockArguments(createComponentHolderMocks()) + coreComponents, dataComponents, bootstrapComponents, statusComponents := createComponentHolderMocks() + bootstrapComponents.Coordinator, _ = sharding.NewMultiShardCoordinator(3, 0) + arguments := CreateMockArguments(coreComponents, dataComponents, bootstrapComponents, statusComponents) bp, _ := blproc.NewShardProcessor(arguments) miniBlock := &block.MiniBlock{ diff --git a/process/common.go b/process/common.go index 62c9f6aa24..63cca54b30 100644 --- a/process/common.go +++ b/process/common.go @@ -1760,38 +1760,3 @@ func getExecutionResultToSetOnReplacedHeader( return executionResultToSet, nil } - -// CheckMiniBlock checks if the given mini block has valid shard ids according to the given self id -func CheckMiniBlock( - miniBlock *block.MiniBlock, - selfId uint32, -) error { - // there are checks for non existing shard id at interceptors level - - if miniBlock.SenderShardID != selfId && miniBlock.GetReceiverShardID() != selfId && miniBlock.GetReceiverShardID() != core.AllShardId { - return fmt.Errorf("%w - not valid shard ids: block type: %s, sender shard id: %d, receiver shard id: %d", - ErrInvalidShardId, - miniBlock.Type, - miniBlock.SenderShardID, - miniBlock.ReceiverShardID) - } - - if miniBlock.GetType() == block.PeerBlock && - (miniBlock.GetSenderShardID() != core.MetachainShardId || miniBlock.GetReceiverShardID() != core.AllShardId) { - return fmt.Errorf("%w - peer blocks: block type: %s, sender shard id: %d, receiver shard id: %d", - ErrInvalidShardId, - miniBlock.Type, - miniBlock.SenderShardID, - miniBlock.ReceiverShardID) - } - - if miniBlock.GetType() != block.PeerBlock && miniBlock.GetReceiverShardID() == core.AllShardId { - return fmt.Errorf("%w - invalid all shard ids: block type: %s, sender shard id: %d, receiver shard id: %d", - ErrInvalidShardId, - miniBlock.Type, - miniBlock.SenderShardID, - miniBlock.ReceiverShardID) - } - - return nil -} diff --git a/process/common_test.go b/process/common_test.go index 0fcb2bb3df..1e28dc9b9c 100644 --- a/process/common_test.go +++ b/process/common_test.go @@ -4234,87 +4234,3 @@ func TestCleanCachesForExecutionResult(t *testing.T) { require.Equal(t, 3, len(executedMbsRemovedKeys)) }) } - -func Test_CheckMiniBlock(t *testing.T) { - t.Parallel() - - t.Run("valid miniblock should not error", func(t *testing.T) { - t.Parallel() - - selfShardID := uint32(1) - - mb := &block.MiniBlock{SenderShardID: 2, ReceiverShardID: selfShardID, Type: block.TxBlock} - err := process.CheckMiniBlock(mb, selfShardID) - require.Nil(t, err) - - mb = &block.MiniBlock{SenderShardID: selfShardID, ReceiverShardID: 2, Type: block.TxBlock} - err = process.CheckMiniBlock(mb, selfShardID) - require.Nil(t, err) - }) - - t.Run("not related to self shard, should fail", func(t *testing.T) { - t.Parallel() - - selfShardID := uint32(1) - - mb := &block.MiniBlock{SenderShardID: 2, ReceiverShardID: 3, Type: block.TxBlock} - err := process.CheckMiniBlock(mb, selfShardID) - require.ErrorIs(t, err, process.ErrInvalidShardId) - - mb = &block.MiniBlock{SenderShardID: 2, ReceiverShardID: core.MetachainShardId, Type: block.TxBlock} - err = process.CheckMiniBlock(mb, selfShardID) - require.ErrorIs(t, err, process.ErrInvalidShardId) - - mb = &block.MiniBlock{SenderShardID: core.MetachainShardId, ReceiverShardID: 3, Type: block.TxBlock} - err = process.CheckMiniBlock(mb, selfShardID) - require.ErrorIs(t, err, process.ErrInvalidShardId) - }) - - t.Run("peer miniblock should be from meta to all shards", func(t *testing.T) { - t.Parallel() - - selfShardID := uint32(0) - - mb := &block.MiniBlock{SenderShardID: core.MetachainShardId, ReceiverShardID: core.AllShardId, Type: block.TxBlock} - err := process.CheckMiniBlock(mb, selfShardID) - require.ErrorIs(t, err, process.ErrInvalidShardId) - - mb = &block.MiniBlock{SenderShardID: 2, ReceiverShardID: core.AllShardId, Type: block.PeerBlock} - err = process.CheckMiniBlock(mb, selfShardID) - require.ErrorIs(t, err, process.ErrInvalidShardId) - - mb = &block.MiniBlock{SenderShardID: core.MetachainShardId, ReceiverShardID: 1, Type: block.PeerBlock} - err = process.CheckMiniBlock(mb, selfShardID) - require.ErrorIs(t, err, process.ErrInvalidShardId) - - mb = &block.MiniBlock{SenderShardID: core.MetachainShardId, ReceiverShardID: core.AllShardId, Type: block.PeerBlock} - err = process.CheckMiniBlock(mb, selfShardID) - require.Nil(t, err) - }) - - t.Run("non peer miniblock should not be to all", func(t *testing.T) { - t.Parallel() - - selfShardID := uint32(0) - - mb := &block.MiniBlock{SenderShardID: core.MetachainShardId, ReceiverShardID: core.AllShardId, Type: block.TxBlock} - err := process.CheckMiniBlock(mb, selfShardID) - require.ErrorIs(t, err, process.ErrInvalidShardId) - - mb = &block.MiniBlock{SenderShardID: 1, ReceiverShardID: core.AllShardId, Type: block.TxBlock} - err = process.CheckMiniBlock(mb, selfShardID) - require.ErrorIs(t, err, process.ErrInvalidShardId) - - mb = &block.MiniBlock{SenderShardID: 1, ReceiverShardID: core.AllShardId, Type: block.ReceiptBlock} - err = process.CheckMiniBlock(mb, selfShardID) - require.ErrorIs(t, err, process.ErrInvalidShardId) - - mb = &block.MiniBlock{SenderShardID: 1, ReceiverShardID: core.AllShardId, Type: block.RewardsBlock} - err = process.CheckMiniBlock(mb, selfShardID) - require.ErrorIs(t, err, process.ErrInvalidShardId) - - mb = &block.MiniBlock{SenderShardID: 1, ReceiverShardID: core.AllShardId, Type: block.SmartContractResultBlock} - err = process.CheckMiniBlock(mb, selfShardID) - require.ErrorIs(t, err, process.ErrInvalidShardId) - }) -}