diff options
author | obscuren <geffobscura@gmail.com> | 2014-11-11 19:16:36 +0800 |
---|---|---|
committer | obscuren <geffobscura@gmail.com> | 2014-11-11 19:16:36 +0800 |
commit | 75ee3b3f089e703b728bb301cc6b2abe4c111c41 (patch) | |
tree | 9087d865e296cbb93c590fe15cd9942353b70058 /chain/receipt.go | |
parent | 9509322ecd8e709ce8a17442836b6ff15ba2edff (diff) | |
download | dexon-75ee3b3f089e703b728bb301cc6b2abe4c111c41.tar.gz dexon-75ee3b3f089e703b728bb301cc6b2abe4c111c41.tar.zst dexon-75ee3b3f089e703b728bb301cc6b2abe4c111c41.zip |
debugging code
Diffstat (limited to 'chain/receipt.go')
-rw-r--r-- | chain/receipt.go | 65 |
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]) } |