diff --git a/cmd/hack/hack.go b/cmd/hack/hack.go
index e88d16449b3b1349635b86469f538d7658242ce5..91bc7e0058aa7d967f3313ebe3075713903f4e60 100644
--- a/cmd/hack/hack.go
+++ b/cmd/hack/hack.go
@@ -1689,7 +1689,7 @@ func readCallTraces(chaindata string, block uint64) error {
 	if err2 != nil {
 		return err2
 	}
-	var acc common.Address = common.HexToAddress("0x511bc4556d823ae99630ae8de28b9b80df90ea2e")
+	var acc = common.HexToAddress("0x511bc4556d823ae99630ae8de28b9b80df90ea2e")
 	for k, v, err = idxCursor.Seek(acc[:]); k != nil && err == nil && bytes.HasPrefix(k, acc[:]); k, v, err = idxCursor.Next() {
 		bm := roaring64.New()
 		_, err = bm.ReadFrom(bytes.NewReader(v))
@@ -1994,9 +1994,9 @@ func scanTxs(chaindata string) error {
 }
 
 func scanReceipts3(chaindata string, block uint64) error {
-	dbdb := mdbx.MustOpen(chaindata)
-	defer dbdb.Close()
-	tx, err := dbdb.BeginRw(context.Background())
+	db := mdbx.MustOpen(chaindata)
+	defer db.Close()
+	tx, err := db.BeginRw(context.Background())
 	if err != nil {
 		return err
 	}
@@ -2255,6 +2255,27 @@ func runBlock(ibs *state.IntraBlockState, txnWriter state.StateWriter, blockWrit
 	return receipts, nil
 }
 
+func devTx(chaindata string) error {
+	db := mdbx.MustOpen(chaindata)
+	defer db.Close()
+	tx, err := db.BeginRo(context.Background())
+	if err != nil {
+		return err
+	}
+	defer tx.Rollback()
+	b, err := rawdb.ReadBlockByNumber(tx, 0)
+	tool.Check(err)
+	cc, err := rawdb.ReadChainConfig(tx, b.Hash())
+	tool.Check(err)
+	txn := types.NewTransaction(1, common.Address{}, uint256.NewInt(100), 100_000, uint256.NewInt(1), []byte{1})
+	signedTx, err := types.SignTx(txn, *types.LatestSigner(cc), core.DevnetSignPrivateKey)
+	tool.Check(err)
+	buf := bytes.NewBuffer(nil)
+	err = signedTx.MarshalBinary(buf)
+	tool.Check(err)
+	fmt.Printf("%x\n", buf.Bytes())
+	return nil
+}
 func main() {
 	flag.Parse()
 
@@ -2414,6 +2435,9 @@ func main() {
 
 	case "scanReceipts3":
 		err = scanReceipts3(*chaindata, uint64(*block))
+
+	case "devTx":
+		err = devTx(*chaindata)
 	}
 
 	if err != nil {
diff --git a/eth/backend.go b/eth/backend.go
index 7ce61817f6009aa6844e5ecb4fa1f520149783ff..fd22d8973b25408d8fbac2e8dcf0c411ebf1a2ac 100644
--- a/eth/backend.go
+++ b/eth/backend.go
@@ -491,6 +491,12 @@ func New(stack *node.Node, config *ethconfig.Config, logger log.Logger) (*Ethere
 				if err := miningRPC.(*privateapi.MiningServer).BroadcastMinedBlock(b); err != nil {
 					log.Error("txpool rpc mined block broadcast", "err", err)
 				}
+				if err := backend.downloadServer.Hd.AddMinedBlock(b); err != nil {
+					log.Error("add mined block to header downloader", "err", err)
+				}
+				if err := backend.downloadServer.Bd.AddMinedBlock(b); err != nil {
+					log.Error("add mined block to body downloader", "err", err)
+				}
 
 			case b := <-backend.pendingBlocks:
 				if err := miningRPC.(*privateapi.MiningServer).BroadcastPendingBlock(b); err != nil {
diff --git a/turbo/stages/bodydownload/body_algos.go b/turbo/stages/bodydownload/body_algos.go
index 699a03269d12d29a8868897673260f445c8c69da..9eebc2d5f8bbc2a2e59e7400baf4ace5c2300755 100644
--- a/turbo/stages/bodydownload/body_algos.go
+++ b/turbo/stages/bodydownload/body_algos.go
@@ -371,3 +371,8 @@ func (bd *BodyDownload) AddToPrefetch(block *types.Block) {
 	}
 	bd.prefetchedBlocks.Add(block)
 }
+
+func (bd *BodyDownload) AddMinedBlock(block *types.Block) error {
+	bd.AddToPrefetch(block)
+	return nil
+}
diff --git a/turbo/stages/headerdownload/header_algos.go b/turbo/stages/headerdownload/header_algos.go
index aacbc632943e7fc2979d37b4250c85c43136fbf2..5b19b500e5e27085b270120dedaf94de9a94d779 100644
--- a/turbo/stages/headerdownload/header_algos.go
+++ b/turbo/stages/headerdownload/header_algos.go
@@ -963,6 +963,22 @@ func (hd *HeaderDownload) Fetching() bool {
 	return hd.fetching
 }
 
+func (hd *HeaderDownload) AddMinedBlock(block *types.Block) error {
+	buf := bytes.NewBuffer(nil)
+	if err := block.Header().EncodeRLP(buf); err != nil {
+		return err
+	}
+	segments, _, err := hd.SingleHeaderAsSegment(buf.Bytes(), block.Header())
+	if err != nil {
+		return err
+	}
+
+	for _, segment := range segments {
+		_, _ = hd.ProcessSegment(segment, false /* newBlock */, "miner")
+	}
+	return nil
+}
+
 func DecodeTips(encodings []string) (map[common.Hash]HeaderRecord, error) {
 	hardTips := make(map[common.Hash]HeaderRecord, len(encodings))
 
diff --git a/turbo/stages/headerdownload/header_data_struct.go b/turbo/stages/headerdownload/header_data_struct.go
index 6197f6e6e9b067a9b11360e9586968f114f9f1cc..c3e6dbc41d824d6504ea5bea9fbfe3ffebc907d1 100644
--- a/turbo/stages/headerdownload/header_data_struct.go
+++ b/turbo/stages/headerdownload/header_data_struct.go
@@ -252,7 +252,7 @@ func (pp PeerPenalty) String() string {
 	return fmt.Sprintf("peerPenalty{peer: %d, penalty: %s, err: %v}", pp.peerHandle, pp.penalty, pp.err)
 }
 
-// HeaderInserter incapsulates necessary variable for inserting header records to the database, abstracting away the source of these headers
+// HeaderInserter encapsulates necessary variable for inserting header records to the database, abstracting away the source of these headers
 // The headers are "fed" by repeatedly calling the FeedHeader function.
 type HeaderInserter struct {
 	localTd          *big.Int