|
|
|
@ -28,7 +28,7 @@ type BlockRes struct { |
|
|
|
|
GasUsed *hexnum `json:"gasUsed"` |
|
|
|
|
UnixTimestamp *hexnum `json:"timestamp"` |
|
|
|
|
Transactions []*TransactionRes `json:"transactions"` |
|
|
|
|
Uncles []*hexdata `json:"uncles"` |
|
|
|
|
Uncles []*UncleRes `json:"uncles"` |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func (b *BlockRes) MarshalJSON() ([]byte, error) { |
|
|
|
@ -73,7 +73,10 @@ func (b *BlockRes) MarshalJSON() ([]byte, error) { |
|
|
|
|
ext.GasUsed = b.GasUsed |
|
|
|
|
ext.UnixTimestamp = b.UnixTimestamp |
|
|
|
|
ext.Transactions = b.Transactions |
|
|
|
|
ext.Uncles = b.Uncles |
|
|
|
|
ext.Uncles = make([]*hexdata, len(b.Uncles)) |
|
|
|
|
for i, u := range b.Uncles { |
|
|
|
|
ext.Uncles[i] = u.BlockHash |
|
|
|
|
} |
|
|
|
|
return json.Marshal(ext) |
|
|
|
|
} else { |
|
|
|
|
var ext struct { |
|
|
|
@ -119,14 +122,15 @@ func (b *BlockRes) MarshalJSON() ([]byte, error) { |
|
|
|
|
for i, tx := range b.Transactions { |
|
|
|
|
ext.Transactions[i] = tx.Hash |
|
|
|
|
} |
|
|
|
|
ext.Uncles = b.Uncles |
|
|
|
|
ext.Uncles = make([]*hexdata, len(b.Uncles)) |
|
|
|
|
for i, u := range b.Uncles { |
|
|
|
|
ext.Uncles[i] = u.BlockHash |
|
|
|
|
} |
|
|
|
|
return json.Marshal(ext) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func NewBlockRes(block *types.Block, fullTx bool) *BlockRes { |
|
|
|
|
// TODO respect fullTx flag
|
|
|
|
|
|
|
|
|
|
if block == nil { |
|
|
|
|
return nil |
|
|
|
|
} |
|
|
|
@ -159,9 +163,9 @@ func NewBlockRes(block *types.Block, fullTx bool) *BlockRes { |
|
|
|
|
res.Transactions[i].TxIndex = newHexNum(i) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
res.Uncles = make([]*hexdata, len(block.Uncles())) |
|
|
|
|
res.Uncles = make([]*UncleRes, len(block.Uncles())) |
|
|
|
|
for i, uncle := range block.Uncles() { |
|
|
|
|
res.Uncles[i] = newHexData(uncle.Hash()) |
|
|
|
|
res.Uncles[i] = NewUncleRes(uncle) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return res |
|
|
|
@ -182,6 +186,10 @@ type TransactionRes struct { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func NewTransactionRes(tx *types.Transaction) *TransactionRes { |
|
|
|
|
if tx == nil { |
|
|
|
|
return nil |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
var v = new(TransactionRes) |
|
|
|
|
v.Hash = newHexData(tx.Hash()) |
|
|
|
|
v.Nonce = newHexNum(tx.Nonce()) |
|
|
|
@ -198,6 +206,49 @@ func NewTransactionRes(tx *types.Transaction) *TransactionRes { |
|
|
|
|
return v |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
type UncleRes struct { |
|
|
|
|
BlockNumber *hexnum `json:"number"` |
|
|
|
|
BlockHash *hexdata `json:"hash"` |
|
|
|
|
ParentHash *hexdata `json:"parentHash"` |
|
|
|
|
Nonce *hexdata `json:"nonce"` |
|
|
|
|
Sha3Uncles *hexdata `json:"sha3Uncles"` |
|
|
|
|
ReceiptHash *hexdata `json:"receiptHash"` |
|
|
|
|
LogsBloom *hexdata `json:"logsBloom"` |
|
|
|
|
TransactionRoot *hexdata `json:"transactionsRoot"` |
|
|
|
|
StateRoot *hexdata `json:"stateRoot"` |
|
|
|
|
Miner *hexdata `json:"miner"` |
|
|
|
|
Difficulty *hexnum `json:"difficulty"` |
|
|
|
|
ExtraData *hexdata `json:"extraData"` |
|
|
|
|
GasLimit *hexnum `json:"gasLimit"` |
|
|
|
|
GasUsed *hexnum `json:"gasUsed"` |
|
|
|
|
UnixTimestamp *hexnum `json:"timestamp"` |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func NewUncleRes(h *types.Header) *UncleRes { |
|
|
|
|
if h == nil { |
|
|
|
|
return nil |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
var v = new(UncleRes) |
|
|
|
|
v.BlockNumber = newHexNum(h.Number) |
|
|
|
|
v.BlockHash = newHexData(h.Hash()) |
|
|
|
|
v.ParentHash = newHexData(h.ParentHash) |
|
|
|
|
v.Sha3Uncles = newHexData(h.UncleHash) |
|
|
|
|
v.Nonce = newHexData(h.Nonce[:]) |
|
|
|
|
v.LogsBloom = newHexData(h.Bloom) |
|
|
|
|
v.TransactionRoot = newHexData(h.TxHash) |
|
|
|
|
v.StateRoot = newHexData(h.Root) |
|
|
|
|
v.Miner = newHexData(h.Coinbase) |
|
|
|
|
v.Difficulty = newHexNum(h.Difficulty) |
|
|
|
|
v.ExtraData = newHexData(h.Extra) |
|
|
|
|
v.GasLimit = newHexNum(h.GasLimit) |
|
|
|
|
v.GasUsed = newHexNum(h.GasUsed) |
|
|
|
|
v.UnixTimestamp = newHexNum(h.Time) |
|
|
|
|
v.ReceiptHash = newHexData(h.ReceiptHash) |
|
|
|
|
|
|
|
|
|
return v |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// type FilterLogRes struct {
|
|
|
|
|
// Hash string `json:"hash"`
|
|
|
|
|
// Address string `json:"address"`
|
|
|
|
|