beacon-chain-java icon indicating copy to clipboard operation
beacon-chain-java copied to clipboard

Prevent hash_tree_root caching of mutable objects

Open ericsson49 opened this issue 6 years ago • 0 comments

CachingBeaconChainSpec::hash_tree_root can be passed with a mutable object, e.g. MutableBeaconState or WriteList/WriteVector. Thus it can return wrong value, if the mutable object is modified, since the caching code uses Object identity (BeaconStateImple::hashCode is not overridden). There are several possible ways to solve the problem:

  1. implement proper BeaconStateImple::hashCode to match the BeaconStateImple::equals implementation
  2. Invalidate cache based on updates
  3. Do not cache mutable objects. This will require implementing an appropriate flag/interface to manifest (im)mutability.

ericsson49 avatar Sep 25 '19 10:09 ericsson49