forked from cerc-io/plugeth
eth/tracers/logger: remove unnecessary comparisons in accessList.equal (#24663)
This change removes extraneous/unnecessary checks for equality when comparing 2 accessList values A and B. Given that we validate that their lengths of A and B are equal, if so and if every element in A is in B, reflexively every element in B is already in A. If that weren't the case and an element g existed in A but not in B, that would mean that there is an extra element and hence a mathematical contradiction. Fixes #24658
This commit is contained in:
parent
40cfe71002
commit
a8bb49b8ea
@ -62,16 +62,14 @@ func (al accessList) equal(other accessList) bool {
|
|||||||
if len(al) != len(other) {
|
if len(al) != len(other) {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
// Given that len(al) == len(other), we only need to check that
|
||||||
|
// all the items from al are in other.
|
||||||
for addr := range al {
|
for addr := range al {
|
||||||
if _, ok := other[addr]; !ok {
|
if _, ok := other[addr]; !ok {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for addr := range other {
|
|
||||||
if _, ok := al[addr]; !ok {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Accounts match, cross reference the storage slots too
|
// Accounts match, cross reference the storage slots too
|
||||||
for addr, slots := range al {
|
for addr, slots := range al {
|
||||||
otherslots := other[addr]
|
otherslots := other[addr]
|
||||||
@ -79,16 +77,13 @@ func (al accessList) equal(other accessList) bool {
|
|||||||
if len(slots) != len(otherslots) {
|
if len(slots) != len(otherslots) {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
// Given that len(slots) == len(otherslots), we only need to check that
|
||||||
|
// all the items from slots are in otherslots.
|
||||||
for hash := range slots {
|
for hash := range slots {
|
||||||
if _, ok := otherslots[hash]; !ok {
|
if _, ok := otherslots[hash]; !ok {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for hash := range otherslots {
|
|
||||||
if _, ok := slots[hash]; !ok {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user