Skip to content
This repository has been archived by the owner on Apr 4, 2024. It is now read-only.

Commit

Permalink
add getHexProofs
Browse files Browse the repository at this point in the history
  • Loading branch information
mmsqe committed Nov 4, 2022
1 parent a7d32c8 commit 6bbd7ce
Showing 1 changed file with 14 additions and 18 deletions.
32 changes: 14 additions & 18 deletions rpc/backend/account_info.go
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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),
}
}

Expand All @@ -107,22 +111,14 @@ 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")
}

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),
Expand Down

0 comments on commit 6bbd7ce

Please sign in to comment.