mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-06-20 13:44:31 +00:00
## Why this should be merged
`ava-labs/coreth` has a partitioned state-address space, achieved by
setting or clearing a specific bit in the hash used to key the space.
This change allows such behaviour to be achieved with pure `libevm`
instead of the `StateDB` wrapping that `coreth` currently uses.
## How this works
Introduction of `state.StateDBHooks` interface, including a
`TransformStateKey()` method that allows for arbitrary change of state
key. If registered, this hook will be honoured by
`StateDB.{Get,GetCommitted,State}Key()` methods unless they receive a
`stateconf.SkipStateKeyTransformation` option.
## How this was tested
Unit test of `SetState() -> GetState() + GetCommittedState()` round trip
with and without options to skip.
|
||
|---|---|---|
| .. | ||
| cmd/internalise | ||
| ethapi | ||
| ethtest | ||
| hookstest | ||
| legacy | ||
| options | ||
| precompiles/p256verify | ||
| pseudo | ||
| register | ||
| set | ||
| stateconf | ||
| sync | ||
| testonly | ||
| tooling | ||
| interfaces_test.go | ||
| libevm.go | ||