What is the purpose of combine_key in ethcore/src/account_db.rs (https://github.com/paritytech/parity-ethereum/blob/master/ethcore/src/account_db.rs#L31)? This breaks the Proving and ProofCheck state backends as the key under which the contract code is stored is not equal to the keccak hash of the code. Would it be possible to _not_ combine the address hash and the key, and instead just lookup by the provided key? Geth does this (https://github.com/ethereum/go-ethereum/blob/17d67c5834679f2b27ef08eddfce3b3a154a96a8/core/state/database.go#L146) so it doesn't seem like it is mandated by the spec.
@rphmeier can probably answer this? this appears to have been our design since day 1.
This is required for our pruning algorithm. The idea is that every node has unique key in the underlying key-value database. This eliminates the need for reference counting and makes pruning much more performant.
Proving and ProofCheck should be usingAccountDb for accessing account storage.
Most helpful comment
This is required for our pruning algorithm. The idea is that every node has unique key in the underlying key-value database. This eliminates the need for reference counting and makes pruning much more performant.
ProvingandProofCheckshould be usingAccountDbfor accessing account storage.