diff --git a/rpc/backend/account_info.go b/rpc/backend/account_info.go index 6d5bf73ec2..89b1b64388 100644 --- a/rpc/backend/account_info.go +++ b/rpc/backend/account_info.go @@ -6,6 +6,7 @@ import ( "math/big" sdkmath "cosmossdk.io/math" + "github.com/cosmos/cosmos-sdk/api/tendermint/crypto" sdk "github.com/cosmos/cosmos-sdk/types" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" "github.com/ethereum/go-ethereum/common" @@ -34,6 +35,17 @@ func (b *Backend) GetCode(address common.Address, blockNrOrHash rpctypes.BlockNu return res.Code, nil } +func getHexProofs(proof *crypto.ProofOps) []string { + var proofs []string + // check for proof + if proof != nil { + for _, p := range proof.Ops { + proofs = append(proofs, hexutil.Encode(p.Data)) + } + } + return proofs +} + // GetProof returns an account object with proof and any storage proofs func (b *Backend) GetProof(address common.Address, storageKeys []string, blockNrOrHash rpctypes.BlockNumberOrHash) (*rpctypes.AccountResult, error) { blockNum, err := b.BlockNumberFromTendermint(blockNrOrHash) @@ -75,18 +87,10 @@ func (b *Backend) GetProof(address common.Address, storageKeys []string, blockNr return nil, err } - // check for proof - var storeProofs []string - if proof != nil { - for _, p := range proof.Ops { - storeProofs = append(storeProofs, hexutil.Encode(p.Data)) - } - } - storageProofs[i] = rpctypes.StorageResult{ Key: key, Value: (*hexutil.Big)(new(big.Int).SetBytes(valueBz)), - Proof: storeProofs, + Proof: getHexProofs(proof), } } @@ -107,14 +111,6 @@ func (b *Backend) GetProof(address common.Address, storageKeys []string, blockNr return nil, err } - // check for proof - var accProofs []string - if proof != nil { - for _, p := range proof.Ops { - accProofs = append(accProofs, hexutil.Encode(p.Data)) - } - } - balance, ok := sdkmath.NewIntFromString(res.Balance) if !ok { return nil, errors.New("invalid balance") @@ -122,7 +118,7 @@ func (b *Backend) GetProof(address common.Address, storageKeys []string, blockNr return &rpctypes.AccountResult{ Address: address, - AccountProof: accProofs, + AccountProof: getHexProofs(proof), Balance: (*hexutil.Big)(balance.BigInt()), CodeHash: common.HexToHash(res.CodeHash), Nonce: hexutil.Uint64(res.Nonce),