diff --git a/consensus/bor/bor.go b/consensus/bor/bor.go
index 35e3bc64a02d9464812f3d6d3cc904876b0b7830..aae8977233274846a940ff83b5bf459859edcfe6 100644
--- a/consensus/bor/bor.go
+++ b/consensus/bor/bor.go
@@ -655,6 +655,8 @@ func (c *Bor) Prepare(chain consensus.ChainReader, header *types.Header) error {
 // Finalize implements consensus.Engine, ensuring no uncles are set, nor block
 // rewards given.
 func (c *Bor) Finalize(chain consensus.ChainReader, header *types.Header, state *state.StateDB, txs []*types.Transaction, uncles []*types.Header) {
+	stateSyncData := []*types.StateData{}
+	var err error
 	headerNumber := header.Number.Uint64()
 	if headerNumber%c.config.Sprint == 0 {
 		cx := chainContext{Chain: chain, Bor: c}
@@ -666,7 +668,7 @@ func (c *Bor) Finalize(chain consensus.ChainReader, header *types.Header, state
 
 		if !c.WithoutHeimdall {
 			// commit statees
-			_, err := c.CommitStates(state, header, cx)
+			stateSyncData, err = c.CommitStates(state, header, cx)
 			if err != nil {
 				log.Error("Error while committing states", "error", err)
 				return
@@ -677,6 +679,8 @@ func (c *Bor) Finalize(chain consensus.ChainReader, header *types.Header, state
 	// No block rewards in PoA, so the state remains as is and uncles are dropped
 	header.Root = state.IntermediateRoot(chain.Config().IsEIP158(header.Number))
 	header.UncleHash = types.CalcUncleHash(nil)
+	header.SetStateSync(stateSyncData)
+
 }
 
 // FinalizeAndAssemble implements consensus.Engine, ensuring no uncles are set,
@@ -707,10 +711,11 @@ func (c *Bor) FinalizeAndAssemble(chain consensus.ChainReader, header *types.Hea
 	// No block rewards in PoA, so the state remains as is and uncles are dropped
 	header.Root = state.IntermediateRoot(chain.Config().IsEIP158(header.Number))
 	header.UncleHash = types.CalcUncleHash(nil)
+	header.SetStateSync(stateSyncData)
+
 	// Assemble block
 	block := types.NewBlock(header, txs, nil, receipts)
 
-	block.SetStateSync(stateSyncData)
 	// return the final block for sealing
 	return block, nil
 }
diff --git a/core/types/block.go b/core/types/block.go
index e00b5e0d2be57e80af5d433af033d905bd45485e..3dd7366ae5cca78b19f94dde70520f0e1277efcc 100644
--- a/core/types/block.go
+++ b/core/types/block.go
@@ -70,21 +70,22 @@ func (n *BlockNonce) UnmarshalText(input []byte) error {
 
 // Header represents a block header in the Ethereum blockchain.
 type Header struct {
-	ParentHash  common.Hash    `json:"parentHash"       gencodec:"required"`
-	UncleHash   common.Hash    `json:"sha3Uncles"       gencodec:"required"`
-	Coinbase    common.Address `json:"miner"            gencodec:"required"`
-	Root        common.Hash    `json:"stateRoot"        gencodec:"required"`
-	TxHash      common.Hash    `json:"transactionsRoot" gencodec:"required"`
-	ReceiptHash common.Hash    `json:"receiptsRoot"     gencodec:"required"`
-	Bloom       Bloom          `json:"logsBloom"        gencodec:"required"`
-	Difficulty  *big.Int       `json:"difficulty"       gencodec:"required"`
-	Number      *big.Int       `json:"number"           gencodec:"required"`
-	GasLimit    uint64         `json:"gasLimit"         gencodec:"required"`
-	GasUsed     uint64         `json:"gasUsed"          gencodec:"required"`
-	Time        uint64         `json:"timestamp"        gencodec:"required"`
-	Extra       []byte         `json:"extraData"        gencodec:"required"`
-	MixDigest   common.Hash    `json:"mixHash"`
-	Nonce       BlockNonce     `json:"nonce"`
+	ParentHash    common.Hash    `json:"parentHash"       gencodec:"required"`
+	UncleHash     common.Hash    `json:"sha3Uncles"       gencodec:"required"`
+	Coinbase      common.Address `json:"miner"            gencodec:"required"`
+	Root          common.Hash    `json:"stateRoot"        gencodec:"required"`
+	TxHash        common.Hash    `json:"transactionsRoot" gencodec:"required"`
+	ReceiptHash   common.Hash    `json:"receiptsRoot"     gencodec:"required"`
+	Bloom         Bloom          `json:"logsBloom"        gencodec:"required"`
+	Difficulty    *big.Int       `json:"difficulty"       gencodec:"required"`
+	Number        *big.Int       `json:"number"           gencodec:"required"`
+	GasLimit      uint64         `json:"gasLimit"         gencodec:"required"`
+	GasUsed       uint64         `json:"gasUsed"          gencodec:"required"`
+	Time          uint64         `json:"timestamp"        gencodec:"required"`
+	Extra         []byte         `json:"extraData"        gencodec:"required"`
+	MixDigest     common.Hash    `json:"mixHash"`
+	Nonce         BlockNonce     `json:"nonce"`
+	stateSyncData []*StateData
 }
 
 // field type overrides for gencodec
@@ -112,6 +113,11 @@ func (h *Header) Size() common.StorageSize {
 	return headerSize + common.StorageSize(len(h.Extra)+(h.Difficulty.BitLen()+h.Number.BitLen())/8)
 }
 
+// SetStateSync set sync data in block
+func (b *Header) SetStateSync(stateData []*StateData) {
+	b.stateSyncData = stateData
+}
+
 // SanityCheck checks a few basic things -- these checks are way beyond what
 // any 'sane' production values should hold, and can mainly be used to prevent
 // that the unbounded fields are stuffed with junk data to add processing
@@ -156,10 +162,9 @@ type Body struct {
 
 // Block represents an entire block in the Ethereum blockchain.
 type Block struct {
-	header        *Header
-	uncles        []*Header
-	transactions  Transactions
-	stateSyncData []*StateData
+	header       *Header
+	uncles       []*Header
+	transactions Transactions
 	// caches
 	hash atomic.Value
 	size atomic.Value
@@ -266,11 +271,6 @@ func CopyHeader(h *Header) *Header {
 	return &cpy
 }
 
-// SetStateSync set sync data in block
-func (b *Block) SetStateSync(stateData []*StateData) {
-	b.stateSyncData = stateData
-}
-
 // DecodeRLP decodes the Ethereum
 func (b *Block) DecodeRLP(s *rlp.Stream) error {
 	var eb extblock
@@ -321,7 +321,7 @@ func (b *Block) GasLimit() uint64            { return b.header.GasLimit }
 func (b *Block) GasUsed() uint64             { return b.header.GasUsed }
 func (b *Block) Difficulty() *big.Int        { return new(big.Int).Set(b.header.Difficulty) }
 func (b *Block) Time() uint64                { return b.header.Time }
-func (b *Block) StateSyncData() []*StateData { return b.stateSyncData }
+func (b *Block) StateSyncData() []*StateData { return b.header.stateSyncData }
 
 func (b *Block) NumberU64() uint64        { return b.header.Number.Uint64() }
 func (b *Block) MixDigest() common.Hash   { return b.header.MixDigest }
@@ -378,10 +378,9 @@ func (b *Block) WithSeal(header *Header) *Block {
 	cpy := *header
 
 	return &Block{
-		header:        &cpy,
-		transactions:  b.transactions,
-		uncles:        b.uncles,
-		stateSyncData: b.stateSyncData,
+		header:       &cpy,
+		transactions: b.transactions,
+		uncles:       b.uncles,
 	}
 }