Changed Tx serialization to return bytes instead of a string
This commit is contained in:
parent
8301d154ae
commit
dca9ee79b3
|
@ -28,6 +28,10 @@ func NumToVarInt(x int) string {
|
||||||
func RlpEncode(object interface{}) string {
|
func RlpEncode(object interface{}) string {
|
||||||
if str, ok := object.(string); ok {
|
if str, ok := object.(string); ok {
|
||||||
return "\x00" + NumToVarInt(len(str)) + str
|
return "\x00" + NumToVarInt(len(str)) + str
|
||||||
|
} else if num, ok := object.(uint32); ok {
|
||||||
|
return RlpEncode(Uitoa(num))
|
||||||
|
} else if byt, ok := object.([]byte); ok {
|
||||||
|
return RlpEncode(string(byt))
|
||||||
} else if slice, ok := object.([]interface{}); ok {
|
} else if slice, ok := object.([]interface{}); ok {
|
||||||
var buffer bytes.Buffer
|
var buffer bytes.Buffer
|
||||||
for _, val := range slice {
|
for _, val := range slice {
|
||||||
|
@ -53,7 +57,7 @@ func RlpEncode(object interface{}) string {
|
||||||
}
|
}
|
||||||
|
|
||||||
type RlpSerializer interface {
|
type RlpSerializer interface {
|
||||||
MarshalRls() []byte
|
MarshalRlp() []byte
|
||||||
UnmarshalRls([]byte)
|
UnmarshalRlp([]byte)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,6 @@ import (
|
||||||
"encoding/hex"
|
"encoding/hex"
|
||||||
"crypto/sha256"
|
"crypto/sha256"
|
||||||
_ "bytes"
|
_ "bytes"
|
||||||
"strconv"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -35,14 +34,17 @@ var Period3Reward *big.Int = new(big.Int)
|
||||||
var Period4Reward *big.Int = new(big.Int)
|
var Period4Reward *big.Int = new(big.Int)
|
||||||
|
|
||||||
type Transaction struct {
|
type Transaction struct {
|
||||||
|
RlpSerializer
|
||||||
|
|
||||||
sender string
|
sender string
|
||||||
recipient uint32
|
recipient uint32
|
||||||
value uint32
|
value uint32
|
||||||
fee uint32
|
fee uint32
|
||||||
data []string
|
data []string
|
||||||
memory []int
|
memory []int
|
||||||
signature string
|
|
||||||
|
|
||||||
|
// To be removed
|
||||||
|
signature string
|
||||||
addr string
|
addr string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -61,18 +63,14 @@ func NewTransaction(to uint32, value uint32, data []string) *Transaction {
|
||||||
tx.data[i] = instr
|
tx.data[i] = instr
|
||||||
}
|
}
|
||||||
|
|
||||||
b:= []byte(tx.Serialize())
|
b:= []byte(tx.MarshalRlp())
|
||||||
hash := sha256.Sum256(b)
|
hash := sha256.Sum256(b)
|
||||||
tx.addr = hex.EncodeToString(hash[0:19])
|
tx.addr = hex.EncodeToString(hash[0:19])
|
||||||
|
|
||||||
return &tx
|
return &tx
|
||||||
}
|
}
|
||||||
|
|
||||||
func Uitoa(i uint32) string {
|
func (tx *Transaction) MarshalRlp() []byte {
|
||||||
return strconv.FormatUint(uint64(i), 10)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (tx *Transaction) Serialize() string {
|
|
||||||
// Prepare the transaction for serialization
|
// Prepare the transaction for serialization
|
||||||
preEnc := []interface{}{
|
preEnc := []interface{}{
|
||||||
"0", // TODO last Tx
|
"0", // TODO last Tx
|
||||||
|
@ -84,7 +82,7 @@ func (tx *Transaction) Serialize() string {
|
||||||
tx.data,
|
tx.data,
|
||||||
}
|
}
|
||||||
|
|
||||||
return RlpEncode(preEnc)
|
return []byte(RlpEncode(preEnc))
|
||||||
}
|
}
|
||||||
|
|
||||||
func InitFees() {
|
func InitFees() {
|
||||||
|
|
Loading…
Reference in New Issue