From 481b221279be1673832f96e35e3fdc0f82e178bc Mon Sep 17 00:00:00 2001 From: Taylor Gerring Date: Sat, 4 Jul 2015 00:00:23 -0500 Subject: [PATCH] Decode full receipt storage --- core/transaction_util.go | 15 +++++++++++++++ rpc/api/parsing.go | 6 ++++-- xeth/xeth.go | 4 ++-- 3 files changed, 21 insertions(+), 4 deletions(-) diff --git a/core/transaction_util.go b/core/transaction_util.go index cb5d6c7f7..61bf023a6 100644 --- a/core/transaction_util.go +++ b/core/transaction_util.go @@ -54,6 +54,21 @@ func PutReceipts(db common.Database, receipts types.Receipts) error { return nil } +// GetReceipt returns a receipt by hash +func GetFullReceipt(db common.Database, txHash common.Hash) *types.ReceiptForStorage { + data, _ := db.Get(append(receiptsPre, txHash[:]...)) + if len(data) == 0 { + return nil + } + + var receipt types.ReceiptForStorage + err := rlp.DecodeBytes(data, &receipt) + if err != nil { + glog.V(logger.Error).Infoln("GetReceipt err:", err) + } + return &receipt +} + // GetReceipt returns a receipt by hash func GetReceipt(db common.Database, txHash common.Hash) *types.Receipt { data, _ := db.Get(append(receiptsPre, txHash[:]...)) diff --git a/rpc/api/parsing.go b/rpc/api/parsing.go index d1f9ccac2..c7edf4325 100644 --- a/rpc/api/parsing.go +++ b/rpc/api/parsing.go @@ -413,15 +413,17 @@ type ReceiptRes struct { Logs *[]interface{} `json:logs` } -func NewReceiptRes(rec *types.Receipt) *ReceiptRes { +func NewReceiptRes(rec *types.ReceiptForStorage) *ReceiptRes { if rec == nil { return nil } var v = new(ReceiptRes) // TODO fill out rest of object + // ContractAddress is all 0 when not a creation tx + v.ContractAddress = newHexData(rec.ContractAddress) v.CumulativeGasUsed = newHexNum(rec.CumulativeGasUsed) - + v.TransactionHash = newHexData(rec.TxHash) return v } diff --git a/xeth/xeth.go b/xeth/xeth.go index cbc8dbbde..1b7f06821 100644 --- a/xeth/xeth.go +++ b/xeth/xeth.go @@ -368,8 +368,8 @@ func (self *XEth) GetBlockReceipts(bhash common.Hash) types.Receipts { return self.backend.BlockProcessor().GetBlockReceipts(bhash) } -func (self *XEth) GetTxReceipt(txhash common.Hash) *types.Receipt { - return core.GetReceipt(self.backend.ExtraDb(), txhash) +func (self *XEth) GetTxReceipt(txhash common.Hash) *types.ReceiptForStorage { + return core.GetFullReceipt(self.backend.ExtraDb(), txhash) } func (self *XEth) GasLimit() *big.Int {