diff --git a/src/consensus/pob/miner.rs b/src/consensus/pob/miner.rs
index e95da9b33e232e664c002a163120925a8b5d2cc0..9ec4463b02e693e3a840e26599986c7c7af27fda 100644
--- a/src/consensus/pob/miner.rs
+++ b/src/consensus/pob/miner.rs
@@ -498,9 +498,9 @@ where
         let transactions: Vec<MessageWithSender> = pending_txs
             .clone()
             .into_iter()
+            .sorted_by(|tx_a, tx_b| Ord::cmp(&tx_a.nonce(), &tx_b.nonce()))
             .map(|tx| {
                 let sender = tx.recover_sender().map_err(|e| anyhow!(e)).unwrap();
-
                 MessageWithSender {
                     message: tx.message,
                     sender,