From aefcb834199a64ff62daf7e685bbe5088c08a11e Mon Sep 17 00:00:00 2001 From: Maran Date: Mon, 26 May 2014 17:07:04 +0200 Subject: [PATCH 1/3] Updated Public Block and Transaction objects with more information --- ethpub/types.go | 36 ++++++++++++++++++++++++++++-------- 1 file changed, 28 insertions(+), 8 deletions(-) diff --git a/ethpub/types.go b/ethpub/types.go index e8a2164a7..edef7d50e 100644 --- a/ethpub/types.go +++ b/ethpub/types.go @@ -2,16 +2,20 @@ package ethpub import ( "encoding/hex" + "encoding/json" "github.com/ethereum/eth-go/ethchain" "github.com/ethereum/eth-go/ethutil" + _ "log" "strings" ) // Block interface exposed to QML type PBlock struct { - ref *ethchain.Block - Number int `json:"number"` - Hash string `json:"hash"` + ref *ethchain.Block + Number int `json:"number"` + Hash string `json:"hash"` + Transactions string `json:"transactions"` + Time int64 `json:"time"` } // Creates a new QML Block from a chain block @@ -19,8 +23,17 @@ func NewPBlock(block *ethchain.Block) *PBlock { if block == nil { return nil } + var ptxs []PTx + for _, tx := range block.Transactions() { + ptxs = append(ptxs, *NewPTx(tx)) + } - return &PBlock{ref: block, Number: int(block.Number.Uint64()), Hash: ethutil.Hex(block.Hash())} + b, err := json.Marshal(ptxs) + if err != nil { + return nil + } + + return &PBlock{ref: block, Number: int(block.Number.Uint64()), Hash: ethutil.Hex(block.Hash()), Transactions: string(b), Time: block.Time} } func (self *PBlock) ToString() string { @@ -43,16 +56,23 @@ func (self *PBlock) GetTransaction(hash string) *PTx { type PTx struct { ref *ethchain.Transaction - Value, Hash, Address string - Contract bool + Value string `json:"value"` + Gas string `json:"gas"` + GasPrice string `json:"gasPrice"` + Hash string `json:"hash"` + Address string `json:"address"` + Sender string `json:"sender"` + Data string `json:"data"` + Contract bool `json:"isContract"` } func NewPTx(tx *ethchain.Transaction) *PTx { hash := hex.EncodeToString(tx.Hash()) - sender := hex.EncodeToString(tx.Recipient) + receiver := hex.EncodeToString(tx.Recipient) + sender := hex.EncodeToString(tx.Sender()) isContract := len(tx.Data) > 0 - return &PTx{ref: tx, Hash: hash, Value: ethutil.CurrencyToString(tx.Value), Address: sender, Contract: isContract} + return &PTx{ref: tx, Hash: hash, Value: ethutil.CurrencyToString(tx.Value), Address: receiver, Contract: isContract, Gas: tx.Gas.String(), GasPrice: tx.GasPrice.String(), Data: hex.EncodeToString(tx.Data), Sender: sender} } func (self *PTx) ToString() string { From 2232974cda9ed73c62a370545742ef88332c5f1e Mon Sep 17 00:00:00 2001 From: Maran Date: Mon, 26 May 2014 17:18:51 +0200 Subject: [PATCH 2/3] Changed var names around --- ethpub/types.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/ethpub/types.go b/ethpub/types.go index edef7d50e..af3cfe2cd 100644 --- a/ethpub/types.go +++ b/ethpub/types.go @@ -23,17 +23,18 @@ func NewPBlock(block *ethchain.Block) *PBlock { if block == nil { return nil } + var ptxs []PTx for _, tx := range block.Transactions() { ptxs = append(ptxs, *NewPTx(tx)) } - b, err := json.Marshal(ptxs) + txJson, err := json.Marshal(ptxs) if err != nil { return nil } - return &PBlock{ref: block, Number: int(block.Number.Uint64()), Hash: ethutil.Hex(block.Hash()), Transactions: string(b), Time: block.Time} + return &PBlock{ref: block, Number: int(block.Number.Uint64()), Hash: ethutil.Hex(block.Hash()), Transactions: string(txJson), Time: block.Time} } func (self *PBlock) ToString() string { From c1b09d639cc922c7aa322ac56cc4f400d76431b4 Mon Sep 17 00:00:00 2001 From: Maran Date: Tue, 27 May 2014 10:38:31 +0200 Subject: [PATCH 3/3] Disamble tx data before adding it to PTx object --- ethpub/types.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ethpub/types.go b/ethpub/types.go index af3cfe2cd..348ae3f25 100644 --- a/ethpub/types.go +++ b/ethpub/types.go @@ -71,9 +71,11 @@ func NewPTx(tx *ethchain.Transaction) *PTx { hash := hex.EncodeToString(tx.Hash()) receiver := hex.EncodeToString(tx.Recipient) sender := hex.EncodeToString(tx.Sender()) + data := strings.Join(ethchain.Disassemble(tx.Data), "\n") + isContract := len(tx.Data) > 0 - return &PTx{ref: tx, Hash: hash, Value: ethutil.CurrencyToString(tx.Value), Address: receiver, Contract: isContract, Gas: tx.Gas.String(), GasPrice: tx.GasPrice.String(), Data: hex.EncodeToString(tx.Data), Sender: sender} + return &PTx{ref: tx, Hash: hash, Value: ethutil.CurrencyToString(tx.Value), Address: receiver, Contract: isContract, Gas: tx.Gas.String(), GasPrice: tx.GasPrice.String(), Data: data, Sender: sender} } func (self *PTx) ToString() string {