aboutsummaryrefslogtreecommitdiffstats
path: root/chain/receipt.go
diff options
context:
space:
mode:
authorobscuren <geffobscura@gmail.com>2014-11-11 19:16:36 +0800
committerobscuren <geffobscura@gmail.com>2014-11-11 19:16:36 +0800
commit75ee3b3f089e703b728bb301cc6b2abe4c111c41 (patch)
tree9087d865e296cbb93c590fe15cd9942353b70058 /chain/receipt.go
parent9509322ecd8e709ce8a17442836b6ff15ba2edff (diff)
downloaddexon-75ee3b3f089e703b728bb301cc6b2abe4c111c41.tar
dexon-75ee3b3f089e703b728bb301cc6b2abe4c111c41.tar.gz
dexon-75ee3b3f089e703b728bb301cc6b2abe4c111c41.tar.bz2
dexon-75ee3b3f089e703b728bb301cc6b2abe4c111c41.tar.lz
dexon-75ee3b3f089e703b728bb301cc6b2abe4c111c41.tar.xz
dexon-75ee3b3f089e703b728bb301cc6b2abe4c111c41.tar.zst
dexon-75ee3b3f089e703b728bb301cc6b2abe4c111c41.zip
debugging code
Diffstat (limited to 'chain/receipt.go')
-rw-r--r--chain/receipt.go65
1 files changed, 65 insertions, 0 deletions
diff --git a/chain/receipt.go b/chain/receipt.go
new file mode 100644
index 000000000..742271fa3
--- /dev/null
+++ b/chain/receipt.go
@@ -0,0 +1,65 @@
+package chain
+
+import (
+ "bytes"
+ "fmt"
+ "math/big"
+
+ "github.com/ethereum/go-ethereum/ethutil"
+ "github.com/ethereum/go-ethereum/state"
+)
+
+type Receipt struct {
+ PostState []byte
+ CumulativeGasUsed *big.Int
+ Bloom []byte
+ logs state.Logs
+}
+
+func NewRecieptFromValue(val *ethutil.Value) *Receipt {
+ r := &Receipt{}
+ r.RlpValueDecode(val)
+
+ return r
+}
+
+func (self *Receipt) RlpValueDecode(decoder *ethutil.Value) {
+ self.PostState = decoder.Get(0).Bytes()
+ self.CumulativeGasUsed = decoder.Get(1).BigInt()
+ self.Bloom = decoder.Get(2).Bytes()
+
+ it := decoder.Get(3).NewIterator()
+ for it.Next() {
+ self.logs = append(self.logs, state.NewLogFromValue(it.Value()))
+ }
+}
+
+func (self *Receipt) RlpData() interface{} {
+ fmt.Println(self.logs.RlpData())
+ return []interface{}{self.PostState, self.CumulativeGasUsed, self.Bloom, self.logs.RlpData()}
+}
+
+func (self *Receipt) RlpEncode() []byte {
+ return ethutil.Encode(self.RlpData())
+}
+
+func (self *Receipt) Cmp(other *Receipt) bool {
+ if bytes.Compare(self.PostState, other.PostState) != 0 {
+ return false
+ }
+
+ return true
+}
+
+func (self *Receipt) String() string {
+ return fmt.Sprintf(`Receipt: %x
+cumulative gas: %v
+bloom: %x
+logs: %v
+rlp: %x`, self.PostState, self.CumulativeGasUsed, self.Bloom, self.logs, self.RlpEncode())
+}
+
+type Receipts []*Receipt
+
+func (self Receipts) Len() int { return len(self) }
+func (self Receipts) GetRlp(i int) []byte { return ethutil.Rlp(self[i]) }