fix: do not hash log values; decode as cbor byte arrays.
This commit is contained in:
parent
b90451792d
commit
23007b0b3b
@ -546,10 +546,10 @@ type EthLog struct {
|
|||||||
Address EthAddress `json:"address"`
|
Address EthAddress `json:"address"`
|
||||||
|
|
||||||
// Data is the value of the event log, excluding topics
|
// Data is the value of the event log, excluding topics
|
||||||
Data EthHash `json:"data"`
|
Data EthBytes `json:"data"`
|
||||||
|
|
||||||
// List of topics associated with the event log.
|
// List of topics associated with the event log.
|
||||||
Topics []EthHash `json:"topics"`
|
Topics []EthBytes `json:"topics"`
|
||||||
|
|
||||||
// Following fields are derived from the transaction containing the log
|
// Following fields are derived from the transaction containing the log
|
||||||
|
|
||||||
|
@ -1058,11 +1058,11 @@ func ethFilterResultFromEvents(evs []*filter.CollectedEvent) (*api.EthFilterResu
|
|||||||
var err error
|
var err error
|
||||||
|
|
||||||
for _, entry := range ev.Entries {
|
for _, entry := range ev.Entries {
|
||||||
hash := api.EthHashData(entry.Value)
|
value := api.EthBytes(decodeLogBytes(entry.Value))
|
||||||
if entry.Key == api.EthTopic1 || entry.Key == api.EthTopic2 || entry.Key == api.EthTopic3 || entry.Key == api.EthTopic4 {
|
if entry.Key == api.EthTopic1 || entry.Key == api.EthTopic2 || entry.Key == api.EthTopic3 || entry.Key == api.EthTopic4 {
|
||||||
log.Topics = append(log.Topics, hash)
|
log.Topics = append(log.Topics, value)
|
||||||
} else {
|
} else {
|
||||||
log.Data = hash
|
log.Data = value
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1499,11 +1499,11 @@ func newEthTxReceipt(ctx context.Context, tx api.EthTx, lookup *api.MsgLookup, r
|
|||||||
}
|
}
|
||||||
|
|
||||||
for _, entry := range evt.Entries {
|
for _, entry := range evt.Entries {
|
||||||
hash := api.EthHashData(entry.Value)
|
value := api.EthBytes(decodeLogBytes(entry.Value))
|
||||||
if entry.Key == api.EthTopic1 || entry.Key == api.EthTopic2 || entry.Key == api.EthTopic3 || entry.Key == api.EthTopic4 {
|
if entry.Key == api.EthTopic1 || entry.Key == api.EthTopic2 || entry.Key == api.EthTopic3 || entry.Key == api.EthTopic4 {
|
||||||
l.Topics = append(l.Topics, hash)
|
l.Topics = append(l.Topics, value)
|
||||||
} else {
|
} else {
|
||||||
l.Data = hash
|
l.Data = value
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1531,3 +1531,18 @@ func newEthTxReceipt(ctx context.Context, tx api.EthTx, lookup *api.MsgLookup, r
|
|||||||
|
|
||||||
return receipt, nil
|
return receipt, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// decodeLogBytes decodes a CBOR-serialized array into its original form.
|
||||||
|
//
|
||||||
|
// This function swallows errors and returns the original array if it failed
|
||||||
|
// to decode.
|
||||||
|
func decodeLogBytes(orig []byte) []byte {
|
||||||
|
if orig == nil {
|
||||||
|
return orig
|
||||||
|
}
|
||||||
|
decoded, err := cbg.ReadByteArray(bytes.NewReader(orig), uint64(len(orig)))
|
||||||
|
if err != nil {
|
||||||
|
return orig
|
||||||
|
}
|
||||||
|
return decoded
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user