This commit is contained in:
Viraj Bhartiya 2025-04-25 21:54:40 -07:00 committed by GitHub
commit ba4784866f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 14 additions and 2 deletions

View file

@ -28,6 +28,7 @@ import (
"github.com/ethereum/go-ethereum/core/state" "github.com/ethereum/go-ethereum/core/state"
"github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/crypto" "github.com/ethereum/go-ethereum/crypto"
"github.com/ethereum/go-ethereum/eth/tracers"
"github.com/ethereum/go-ethereum/internal/ethapi" "github.com/ethereum/go-ethereum/internal/ethapi"
"github.com/ethereum/go-ethereum/log" "github.com/ethereum/go-ethereum/log"
"github.com/ethereum/go-ethereum/rlp" "github.com/ethereum/go-ethereum/rlp"
@ -210,7 +211,8 @@ type storageEntry struct {
} }
// StorageRangeAt returns the storage at the given block height and transaction index. // StorageRangeAt returns the storage at the given block height and transaction index.
func (api *DebugAPI) StorageRangeAt(ctx context.Context, blockNrOrHash rpc.BlockNumberOrHash, txIndex int, contractAddress common.Address, keyStart hexutil.Bytes, maxResult int) (StorageRangeResult, error) { // If txIndex is nil, it returns the storage at the end of the given block.
func (api *DebugAPI) StorageRangeAt(ctx context.Context, blockNrOrHash rpc.BlockNumberOrHash, txIndex *int, contractAddress common.Address, keyStart hexutil.Bytes, maxResult int) (StorageRangeResult, error) {
var block *types.Block var block *types.Block
block, err := api.eth.APIBackend.BlockByNumberOrHash(ctx, blockNrOrHash) block, err := api.eth.APIBackend.BlockByNumberOrHash(ctx, blockNrOrHash)
@ -220,7 +222,16 @@ func (api *DebugAPI) StorageRangeAt(ctx context.Context, blockNrOrHash rpc.Block
if block == nil { if block == nil {
return StorageRangeResult{}, fmt.Errorf("block %v not found", blockNrOrHash) return StorageRangeResult{}, fmt.Errorf("block %v not found", blockNrOrHash)
} }
_, _, statedb, release, err := api.eth.stateAtTransaction(ctx, block, txIndex, 0)
var statedb *state.StateDB
var release tracers.StateReleaseFunc
if txIndex != nil {
_, _, statedb, release, err = api.eth.stateAtTransaction(ctx, block, *txIndex, 0)
} else {
statedb, release, err = api.eth.stateAtBlock(ctx, block, 0, nil, true, false)
}
if err != nil { if err != nil {
return StorageRangeResult{}, err return StorageRangeResult{}, err
} }

View file

@ -424,6 +424,7 @@ web3._extend({
name: 'storageRangeAt', name: 'storageRangeAt',
call: 'debug_storageRangeAt', call: 'debug_storageRangeAt',
params: 5, params: 5,
inputFormatter: [null, null, null, null, null]
}), }),
new web3._extend.Method({ new web3._extend.Method({
name: 'getModifiedAccountsByNumber', name: 'getModifiedAccountsByNumber',