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