|
|
|
@ -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)) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
b, err := json.Marshal(ptxs) |
|
|
|
|
if err != nil { |
|
|
|
|
return nil |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return &PBlock{ref: block, Number: int(block.Number.Uint64()), Hash: ethutil.Hex(block.Hash())} |
|
|
|
|
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 { |
|
|
|
|