update to use get_storage_at functions

This commit is contained in:
i-norden 2023-03-07 20:40:28 -06:00
parent 1ed81b588d
commit bd7a73afe8
2 changed files with 6 additions and 17 deletions

View File

@ -123,11 +123,11 @@ func (sd *stateDatabase) StorageValue(addressHash, slotHash, blockHash common.Ha
res := StorageSlotResult{} res := StorageSlotResult{}
err := sd.pgdb.QueryRow(context.Background(), GetStorageSlot, err := sd.pgdb.QueryRow(context.Background(), GetStorageSlot,
addressHash.Hex(), slotHash.Hex(), blockHash.Hex()). addressHash.Hex(), slotHash.Hex(), blockHash.Hex()).
Scan(&res.Value, &res.Removed) Scan(&res.Value, &res.Removed, &res.StateLeafRemoved)
if err != nil { if err != nil {
return nil, err return nil, err
} }
if res.Removed { if res.Removed || res.StateLeafRemoved {
// TODO: check expected behavior for deleted/non existing accounts // TODO: check expected behavior for deleted/non existing accounts
return nil, nil return nil, nil
} }

19
sql.go
View File

@ -14,25 +14,14 @@ const (
AND header_cids.block_hash = (SELECT canonical_header_hash(header_cids.block_number)) AND header_cids.block_hash = (SELECT canonical_header_hash(header_cids.block_number))
ORDER BY header_cids.block_number DESC ORDER BY header_cids.block_number DESC
LIMIT 1` LIMIT 1`
GetStorageSlot = `SELECT val, removed FROM eth.storage_cids GetStorageSlot = `SELECT val, removed, state_leaf_removed FROM get_storage_at_by_hash($1, $2, $3)`
INNER JOIN eth.header_cids ON (
storage_cids.header_id = header_cids.block_hash
AND storage_cids.block_number = header_cids.block_number
)
WHERE state_leaf_key = $1
AND storage_leaf_key = $2
AND header_cids.block_number <= (SELECT block_number
FROM eth.header_cids
WHERE block_hash = $3)
AND header_cids.block_hash = (SELECT canonical_header_hash(header_cids.block_number))
ORDER BY header_cids.block_number DESC
LIMIT 1`
) )
// StorageSlotResult struct for unpacking GetStorageSlot result // StorageSlotResult struct for unpacking GetStorageSlot result
type StorageSlotResult struct { type StorageSlotResult struct {
Value []byte `db:"val"` Value []byte `db:"val"`
Removed bool `db:"removed"` Removed bool `db:"removed"`
StateLeafRemoved bool `db:"state_leaf_removed"`
} }
// StateAccountResult struct for unpacking GetStateAccount result // StateAccountResult struct for unpacking GetStateAccount result