diff options
-rw-r--r-- | block.go | 27 | ||||
-rw-r--r-- | ethereum.go | 15 |
2 files changed, 27 insertions, 15 deletions
@@ -1,7 +1,7 @@ package main import ( - _"fmt" + "fmt" "time" ) @@ -44,21 +44,28 @@ func (block *Block) MarshalRlp() []byte { encTx[i] = string(tx.MarshalRlp()) } - enc := RlpEncode([]interface{}{ + header := []interface{}{ block.number, - block.prevHash, + //block.prevHash, // Sha of uncles - block.coinbase, + //block.coinbase, // root state - Sha256Bin([]byte(RlpEncode(encTx))), - block.difficulty, - block.time, - block.nonce, + //Sha256Bin([]byte(RlpEncode(encTx))), + //block.difficulty, + //block.time, + //block.nonce, // extra? - }) + } - return []byte(enc) + return Encode([]interface{}{header, encTx}) } func (block *Block) UnmarshalRlp(data []byte) { + fmt.Printf("%q\n", data) + t, _ := Decode(data,0) + if slice, ok := t.([]interface{}); ok { + if txes, ok := slice[1].([]interface{}); ok { + fmt.Println(txes[0]) + } + } } diff --git a/ethereum.go b/ethereum.go index 78f08c15e..d3cecdc94 100644 --- a/ethereum.go +++ b/ethereum.go @@ -9,7 +9,7 @@ func main() { bm := NewBlockManager() - tx := NewTransaction(0x0, 20, []string{ + tx := NewTransaction("\x00", 20, []string{ "SET 10 6", "LD 10 10", "LT 10 1 20", @@ -23,13 +23,18 @@ func main() { "SET 255 15", "JMP 255", }) - tx2 := NewTransaction(0x0, 20, []string{"SET 10 6", "LD 10 10"}) + txData := tx.MarshalRlp() + + copyTx := &Transaction{} + copyTx.UnmarshalRlp(txData) + + + tx2 := NewTransaction("\x00", 20, []string{"SET 10 6", "LD 10 10"}) blck := NewBlock([]*Transaction{tx2, tx}) bm.ProcessBlock( blck ) - //fmt.Printf("rlp encoded Tx %q\n", tx.MarshalRlp()) - fmt.Printf("block enc %q\n", blck.MarshalRlp()) - fmt.Printf("block hash %q\n", blck.Hash()) + //t := blck.MarshalRlp() + //blck.UnmarshalRlp(t) } |