aboutsummaryrefslogtreecommitdiffstats
path: root/core/types/receipt.go
diff options
context:
space:
mode:
authorJeffrey Wilcke <jeffrey@ethereum.org>2015-05-28 22:35:07 +0800
committerJeffrey Wilcke <jeffrey@ethereum.org>2015-05-28 22:35:07 +0800
commit03178a77b66b55c26b966dab5069847b1d139054 (patch)
treef5552fae68535f2308bef2e01053bfaabd52d078 /core/types/receipt.go
parent4baa5ca963552df6ed11112094f08111c8cf14bd (diff)
parente3253b5d5e65bfb6944ddaabd3c79400fbe06ef8 (diff)
downloadgo-tangerine-03178a77b66b55c26b966dab5069847b1d139054.tar
go-tangerine-03178a77b66b55c26b966dab5069847b1d139054.tar.gz
go-tangerine-03178a77b66b55c26b966dab5069847b1d139054.tar.bz2
go-tangerine-03178a77b66b55c26b966dab5069847b1d139054.tar.lz
go-tangerine-03178a77b66b55c26b966dab5069847b1d139054.tar.xz
go-tangerine-03178a77b66b55c26b966dab5069847b1d139054.tar.zst
go-tangerine-03178a77b66b55c26b966dab5069847b1d139054.zip
Merge pull request #1132 from obscuren/log_optimisations
core: log optimisations
Diffstat (limited to 'core/types/receipt.go')
-rw-r--r--core/types/receipt.go29
1 files changed, 29 insertions, 0 deletions
diff --git a/core/types/receipt.go b/core/types/receipt.go
index 414e4d364..6b4024ada 100644
--- a/core/types/receipt.go
+++ b/core/types/receipt.go
@@ -26,10 +26,39 @@ func (self *Receipt) SetLogs(logs state.Logs) {
self.logs = logs
}
+func (self *Receipt) Logs() state.Logs {
+ return self.logs
+}
+
func (self *Receipt) EncodeRLP(w io.Writer) error {
return rlp.Encode(w, []interface{}{self.PostState, self.CumulativeGasUsed, self.Bloom, self.logs})
}
+func (self *Receipt) DecodeRLP(s *rlp.Stream) error {
+ var r struct {
+ PostState []byte
+ CumulativeGasUsed *big.Int
+ Bloom Bloom
+ Logs state.Logs
+ }
+ if err := s.Decode(&r); err != nil {
+ return err
+ }
+ self.PostState, self.CumulativeGasUsed, self.Bloom, self.logs = r.PostState, r.CumulativeGasUsed, r.Bloom, r.Logs
+
+ return nil
+}
+
+type ReceiptForStorage Receipt
+
+func (self *ReceiptForStorage) EncodeRLP(w io.Writer) error {
+ storageLogs := make([]*state.LogForStorage, len(self.logs))
+ for i, log := range self.logs {
+ storageLogs[i] = (*state.LogForStorage)(log)
+ }
+ return rlp.Encode(w, []interface{}{self.PostState, self.CumulativeGasUsed, self.Bloom, storageLogs})
+}
+
func (self *Receipt) RlpEncode() []byte {
bytes, err := rlp.EncodeToBytes(self)
if err != nil {