diff --git a/core/types/transaction.go b/core/types/transaction.go
index 7d34c86f47879da542b800359f7f3fc316d400c2..88a718f937d3f544705ac7bd22d2292f1b1060fe 100644
--- a/core/types/transaction.go
+++ b/core/types/transaction.go
@@ -23,7 +23,7 @@ type Transaction struct {
 	Recipient    []byte
 	Amount       *big.Int
 	Payload      []byte
-	V            uint64
+	V            byte
 	R, S         []byte
 }
 
@@ -136,7 +136,7 @@ func (tx *Transaction) Sign(privk []byte) error {
 
 	tx.R = sig[:32]
 	tx.S = sig[32:64]
-	tx.V = uint64(sig[64] + 27)
+	tx.V = sig[64] + 27
 
 	return nil
 }
@@ -144,7 +144,7 @@ func (tx *Transaction) Sign(privk []byte) error {
 func (tx *Transaction) SetSignatureValues(sig []byte) error {
 	tx.R = sig[:32]
 	tx.S = sig[32:64]
-	tx.V = uint64(sig[64] + 27)
+	tx.V = sig[64] + 27
 	return nil
 }
 
@@ -173,7 +173,7 @@ func (tx *Transaction) RlpValueDecode(decoder *ethutil.Value) {
 	tx.Recipient = decoder.Get(3).Bytes()
 	tx.Amount = decoder.Get(4).BigInt()
 	tx.Payload = decoder.Get(5).Bytes()
-	tx.V = decoder.Get(6).Uint()
+	tx.V = decoder.Get(6).Byte()
 	tx.R = decoder.Get(7).Bytes()
 	tx.S = decoder.Get(8).Bytes()
 }