aboutsummaryrefslogtreecommitdiffstats
path: root/core/types/log.go
diff options
context:
space:
mode:
authorgary rong <garyrong0905@gmail.com>2019-02-21 21:14:35 +0800
committerPéter Szilágyi <peterke@gmail.com>2019-02-21 21:14:35 +0800
commit7fd0ccaa68cbc8e3f4fc59d3b99ba5067ba7c73a (patch)
treea6eb7b42652916da18091879974f0f513dd19e3d /core/types/log.go
parent8577b5b020d963ef9972981bbfc62b8930d3e9c9 (diff)
downloadgo-tangerine-7fd0ccaa68cbc8e3f4fc59d3b99ba5067ba7c73a.tar
go-tangerine-7fd0ccaa68cbc8e3f4fc59d3b99ba5067ba7c73a.tar.gz
go-tangerine-7fd0ccaa68cbc8e3f4fc59d3b99ba5067ba7c73a.tar.bz2
go-tangerine-7fd0ccaa68cbc8e3f4fc59d3b99ba5067ba7c73a.tar.lz
go-tangerine-7fd0ccaa68cbc8e3f4fc59d3b99ba5067ba7c73a.tar.xz
go-tangerine-7fd0ccaa68cbc8e3f4fc59d3b99ba5067ba7c73a.tar.zst
go-tangerine-7fd0ccaa68cbc8e3f4fc59d3b99ba5067ba7c73a.zip
core: remove unnecessary fields in logs, receipts and tx lookups (#17106)
* core: remove unnecessary fields in log * core: bump blockchain database version * core, les: remove unnecessary fields in txlookup * eth: print db version explicitly * core/rawdb: drop txlookup entry struct wrapper
Diffstat (limited to 'core/types/log.go')
-rw-r--r--core/types/log.go41
1 files changed, 24 insertions, 17 deletions
diff --git a/core/types/log.go b/core/types/log.go
index 717cd2e5a..a395d5a67 100644
--- a/core/types/log.go
+++ b/core/types/log.go
@@ -68,7 +68,11 @@ type rlpLog struct {
Data []byte
}
-type rlpStorageLog struct {
+// rlpStorageLog is the storage encoding of a log.
+type rlpStorageLog rlpLog
+
+// LegacyRlpStorageLog is the previous storage encoding of a log including some redundant fields.
+type LegacyRlpStorageLog struct {
Address common.Address
Topics []common.Hash
Data []byte
@@ -101,31 +105,34 @@ type LogForStorage Log
// EncodeRLP implements rlp.Encoder.
func (l *LogForStorage) EncodeRLP(w io.Writer) error {
return rlp.Encode(w, rlpStorageLog{
- Address: l.Address,
- Topics: l.Topics,
- Data: l.Data,
- BlockNumber: l.BlockNumber,
- TxHash: l.TxHash,
- TxIndex: l.TxIndex,
- BlockHash: l.BlockHash,
- Index: l.Index,
+ Address: l.Address,
+ Topics: l.Topics,
+ Data: l.Data,
})
}
// DecodeRLP implements rlp.Decoder.
+//
+// Note some redundant fields(e.g. block number, tx hash etc) will be assembled later.
func (l *LogForStorage) DecodeRLP(s *rlp.Stream) error {
var dec rlpStorageLog
err := s.Decode(&dec)
if err == nil {
*l = LogForStorage{
- Address: dec.Address,
- Topics: dec.Topics,
- Data: dec.Data,
- BlockNumber: dec.BlockNumber,
- TxHash: dec.TxHash,
- TxIndex: dec.TxIndex,
- BlockHash: dec.BlockHash,
- Index: dec.Index,
+ Address: dec.Address,
+ Topics: dec.Topics,
+ Data: dec.Data,
+ }
+ } else {
+ // Try to decode log with previous definition.
+ var dec LegacyRlpStorageLog
+ err = s.Decode(&dec)
+ if err == nil {
+ *l = LogForStorage{
+ Address: dec.Address,
+ Topics: dec.Topics,
+ Data: dec.Data,
+ }
}
}
return err