diff --git a/blockquick/blockheader.go b/blockquick/blockheader.go
index 9ab7af3..ec4410e 100644
--- a/blockquick/blockheader.go
+++ b/blockquick/blockheader.go
@@ -6,6 +6,7 @@ package blockquick
 import (
 	"fmt"
 	"log"
+	"math/big"
 
 	"github.com/diodechain/diode_client/crypto"
 	"github.com/diodechain/diode_client/crypto/secp256k1"
@@ -23,11 +24,11 @@ type BlockHeader struct {
 	minerPubkey []byte
 	timestamp   uint64
 	number      uint64
-	nonce       uint64
+	nonce       big.Int
 }
 
 // NewHeader creates a new block header from existing data
-func NewHeader(txHash []byte, stateHash []byte, prevBlock []byte, minerSig []byte, minerPubkey []byte, timestamp uint64, number uint64, nonce uint64) (bh BlockHeader, err error) {
+func NewHeader(txHash []byte, stateHash []byte, prevBlock []byte, minerSig []byte, minerPubkey []byte, timestamp uint64, number uint64, nonce big.Int) (bh BlockHeader, err error) {
 	header := BlockHeader{
 		txHash:      txHash,
 		stateHash:   stateHash,
diff --git a/blockquick/blockheader_test.go b/blockquick/blockheader_test.go
new file mode 100644
index 0000000..f98eb32
--- /dev/null
+++ b/blockquick/blockheader_test.go
@@ -0,0 +1,47 @@
+// Diode Network Client
+// Copyright 2023 Diode
+// Licensed under the Diode License, Version 1.1
+package blockquick
+
+import (
+	"bytes"
+	"math/big"
+	"testing"
+
+	"github.com/diodechain/diode_client/crypto/secp256k1"
+)
+
+func TestCheckSignature(t *testing.T) {
+	// Create a new block header
+	header := BlockHeader{
+		txHash:      []byte{200, 183, 173, 94, 219, 199, 203, 146, 222, 81, 226, 35, 194, 242, 25, 106, 84, 45, 151, 139, 134, 136, 185, 158, 10, 147, 97, 204, 251, 90, 163, 84},
+		stateHash:   []byte{194, 10, 97, 79, 230, 9, 109, 13, 140, 98, 183, 88, 131, 161, 234, 129, 23, 217, 163, 185, 152, 169, 40, 201, 128, 33, 106, 164, 64, 210, 18, 117},
+		prevBlock:   []byte{0, 0, 39, 225, 2, 205, 90, 142, 203, 98, 195, 69, 19, 213, 225, 75, 37, 95, 220, 249, 148, 16, 117, 192, 187, 192, 254, 68, 82, 172, 151, 35},
+		minerSig:    []byte{0, 151, 29, 1, 22, 133, 215, 29, 173, 153, 188, 19, 243, 24, 254, 211, 246, 212, 253, 133, 116, 69, 102, 108, 209, 217, 190, 222, 15, 4, 91, 222, 199, 35, 24, 137, 45, 75, 22, 30, 123, 7, 111, 231, 12, 37, 180, 192, 30, 182, 166, 139, 165, 41, 22, 231, 88, 171, 122, 85, 9, 102, 17, 59, 155},
+		minerPubkey: []byte{4, 240, 109, 136, 233, 104, 32, 42, 9, 32, 30, 49, 36, 9, 71, 113, 84, 5, 145, 198, 153, 140, 65, 255, 115, 225, 201, 43, 238, 145, 40, 51, 57, 223, 28, 51, 5, 240, 23, 148, 82, 169, 121, 93, 195, 255, 93, 116, 12, 250, 38, 210, 124, 133, 157, 232, 176, 58, 120, 206, 87, 232, 249, 95, 7},
+		timestamp:   1700916441,
+		number:      6406857,
+		nonce:       big.Int{},
+	}
+
+	header.nonce.SetString("3463199413688948191257806122414904513570931607746675394846934843169", 10)
+
+	msgHash, err := header.HashWithoutSig()
+	if err != nil {
+		t.Errorf("hashing error: %s", err)
+	}
+
+	pubkey, err := secp256k1.RecoverPubkey(msgHash, header.minerSig)
+	if err != nil {
+		t.Errorf("recover error: %s", err)
+	}
+
+	if !bytes.Equal(pubkey, header.minerPubkey) {
+		t.Errorf("recovered pubkey and minerPubkey don't match: %v %v", pubkey, header.minerPubkey)
+	}
+
+	// Check if the signature is valid
+	if !header.ValidateSig() {
+		t.Fatal("invalid signature")
+	}
+}
diff --git a/edge/protocol.go b/edge/protocol.go
index 04cb7a7..dc352d6 100644
--- a/edge/protocol.go
+++ b/edge/protocol.go
@@ -160,7 +160,7 @@ func parseBlockHeaderResponse(buffer []byte) (interface{}, error) {
 		dminerPubkey,
 		util.DecodeBytesToUint(timestamp.Value),
 		util.DecodeBytesToUint(number.Value),
-		util.DecodeBytesToUint(nonce.Value),
+		*util.DecodeBytesToBigInt(nonce.Value),
 	)
 	if err != nil {
 		return nil, err