forked from cerc-io/laconicd-deprecated
		
	evm: fix import/export genesis for contract storage (#590)
* Problem: import/export roundtrip test fail contract storage Closes: #589 - don't hash the key again in InitGenesis * changelog * try to fix estimate-gas undeterministics Closes #536
This commit is contained in:
		
							parent
							
								
									2088297e3d
								
							
						
					
					
						commit
						d6a64a275a
					
				| @ -41,6 +41,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ | ||||
| 
 | ||||
| * (app) [tharsis#476](https://github.com/tharsis/ethermint/pull/476) Update Bech32 HRP to `ethm`. | ||||
| * (evm) [tharsis#556](https://github.com/tharsis/ethermint/pull/556) Remove tx logs and block bloom from chain state | ||||
| * (evm) [tharsis#590](https://github.com/tharsis/ethermint/pull/590) Contract storage key is not hashed anymore | ||||
| 
 | ||||
| ### API Breaking | ||||
| 
 | ||||
|  | ||||
| @ -478,7 +478,6 @@ func (suite *KeeperTestSuite) TestQueryValidatorAccount() { | ||||
| } | ||||
| 
 | ||||
| func (suite *KeeperTestSuite) TestEstimateGas() { | ||||
| 	ctx := sdk.WrapSDKContext(suite.ctx) | ||||
| 	gasHelper := hexutil.Uint64(20000) | ||||
| 
 | ||||
| 	var ( | ||||
| @ -545,7 +544,7 @@ func (suite *KeeperTestSuite) TestEstimateGas() { | ||||
| 				GasCap: gasCap, | ||||
| 			} | ||||
| 
 | ||||
| 			rsp, err := suite.queryClient.EstimateGas(ctx, &req) | ||||
| 			rsp, err := suite.queryClient.EstimateGas(sdk.WrapSDKContext(suite.ctx), &req) | ||||
| 			if tc.expPass { | ||||
| 				suite.Require().NoError(err) | ||||
| 				suite.Require().Equal(tc.expGas, rsp.Gas) | ||||
|  | ||||
| @ -307,7 +307,6 @@ func (k Keeper) GetAccountStorage(ctx sdk.Context, address common.Address) (type | ||||
| 
 | ||||
| func (k Keeper) DeleteState(addr common.Address, key common.Hash) { | ||||
| 	store := prefix.NewStore(k.Ctx().KVStore(k.storeKey), types.AddressStoragePrefix(addr)) | ||||
| 	key = types.KeyAddressStorage(addr, key) | ||||
| 	store.Delete(key.Bytes()) | ||||
| } | ||||
| 
 | ||||
|  | ||||
| @ -454,10 +454,9 @@ func (k *Keeper) GetRefund() uint64 { | ||||
| // State
 | ||||
| // ----------------------------------------------------------------------------
 | ||||
| 
 | ||||
| func doGetState(ctx sdk.Context, storeKey sdk.StoreKey, addr common.Address, hash common.Hash) common.Hash { | ||||
| func doGetState(ctx sdk.Context, storeKey sdk.StoreKey, addr common.Address, key common.Hash) common.Hash { | ||||
| 	store := prefix.NewStore(ctx.KVStore(storeKey), types.AddressStoragePrefix(addr)) | ||||
| 
 | ||||
| 	key := types.KeyAddressStorage(addr, hash) | ||||
| 	value := store.Get(key.Bytes()) | ||||
| 	if len(value) == 0 { | ||||
| 		return common.Hash{} | ||||
| @ -496,7 +495,6 @@ func (k *Keeper) SetState(addr common.Address, key, value common.Hash) { | ||||
| 
 | ||||
| 	ctx := k.Ctx() | ||||
| 	store := prefix.NewStore(ctx.KVStore(k.storeKey), types.AddressStoragePrefix(addr)) | ||||
| 	key = types.KeyAddressStorage(addr, key) | ||||
| 
 | ||||
| 	action := "updated" | ||||
| 	if ethermint.IsEmptyHash(value.Hex()) { | ||||
|  | ||||
| @ -2,7 +2,6 @@ package types | ||||
| 
 | ||||
| import ( | ||||
| 	"github.com/ethereum/go-ethereum/common" | ||||
| 	"github.com/ethereum/go-ethereum/crypto" | ||||
| ) | ||||
| 
 | ||||
| const ( | ||||
| @ -69,17 +68,3 @@ func AddressStoragePrefix(address common.Address) []byte { | ||||
| func StateKey(address common.Address, key []byte) []byte { | ||||
| 	return append(AddressStoragePrefix(address), key...) | ||||
| } | ||||
| 
 | ||||
| // KeyAddressStorage returns the key hash to access a given account state. The composite key
 | ||||
| // (address + hash) is hashed using Keccak256.
 | ||||
| func KeyAddressStorage(address common.Address, hash common.Hash) common.Hash { | ||||
| 	prefix := address.Bytes() | ||||
| 	key := hash.Bytes() | ||||
| 
 | ||||
| 	compositeKey := make([]byte, len(prefix)+len(key)) | ||||
| 
 | ||||
| 	copy(compositeKey, prefix) | ||||
| 	copy(compositeKey[len(prefix):], key) | ||||
| 
 | ||||
| 	return crypto.Keccak256Hash(compositeKey) | ||||
| } | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user