Skip to content

Commit

Permalink
ethclient/gethclient: return storage proofs in GetProof (#24697)
Browse files Browse the repository at this point in the history
Storage proofs were being unmarshalled from the RPC form to the go struct, but were not being included in the final returned struct.
  • Loading branch information
trianglesphere authored and unclezoro committed Sep 21, 2022
1 parent 34420d0 commit a181eee
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 2 deletions.
1 change: 1 addition & 0 deletions ethclient/gethclient/gethclient.go
Expand Up @@ -114,6 +114,7 @@ func (ec *Client) GetProof(ctx context.Context, account common.Address, keys []s
Nonce: uint64(res.Nonce),
CodeHash: res.CodeHash,
StorageHash: res.StorageHash,
StorageProof: storageResults,
}
return &result, err
}
Expand Down
19 changes: 17 additions & 2 deletions ethclient/gethclient/gethclient_test.go
Expand Up @@ -40,6 +40,8 @@ import (
var (
testKey, _ = crypto.HexToECDSA("b71c71a67e1177ad4e901695e1b4b9ee17ae16c6668d313eac2f96dbcda3f291")
testAddr = crypto.PubkeyToAddress(testKey.PublicKey)
testSlot = common.HexToHash("0xdeadbeef")
testValue = crypto.Keccak256Hash(testSlot[:])
testBalance = big.NewInt(2e15)
)

Expand Down Expand Up @@ -73,7 +75,7 @@ func generateTestChain() (*core.Genesis, []*types.Block) {
config := params.AllEthashProtocolChanges
genesis := &core.Genesis{
Config: config,
Alloc: core.GenesisAlloc{testAddr: {Balance: testBalance}},
Alloc: core.GenesisAlloc{testAddr: {Balance: testBalance, Storage: map[common.Hash]common.Hash{testSlot: testValue}}},
ExtraData: []byte("test genesis"),
Timestamp: 9000,
}
Expand Down Expand Up @@ -191,7 +193,7 @@ func testAccessList(t *testing.T, client *rpc.Client) {
func testGetProof(t *testing.T, client *rpc.Client) {
ec := New(client)
ethcl := ethclient.NewClient(client)
result, err := ec.GetProof(context.Background(), testAddr, []string{}, nil)
result, err := ec.GetProof(context.Background(), testAddr, []string{testSlot.String()}, nil)
if err != nil {
t.Fatal(err)
}
Expand All @@ -208,6 +210,19 @@ func testGetProof(t *testing.T, client *rpc.Client) {
if result.Balance.Cmp(balance) != 0 {
t.Fatalf("invalid balance, want: %v got: %v", balance, result.Balance)
}
// test storage
if len(result.StorageProof) != 1 {
t.Fatalf("invalid storage proof, want 1 proof, got %v proof(s)", len(result.StorageProof))
}
proof := result.StorageProof[0]
slotValue, _ := ethcl.StorageAt(context.Background(), testAddr, testSlot, nil)
if !bytes.Equal(slotValue, proof.Value.Bytes()) {
t.Fatalf("invalid storage proof value, want: %v, got: %v", slotValue, proof.Value.Bytes())
}
if proof.Key != testSlot.String() {
t.Fatalf("invalid storage proof key, want: %v, got: %v", testSlot.String(), proof.Key)
}

}

func testGCStats(t *testing.T, client *rpc.Client) {
Expand Down

0 comments on commit a181eee

Please sign in to comment.