Skip to content

Commit bb1d212

Browse files
committed
ethrpc: state overrides
1 parent c890f67 commit bb1d212

3 files changed

Lines changed: 43 additions & 0 deletions

File tree

ethrpc/ethrpc.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -487,6 +487,12 @@ func (p *Provider) CallContract(ctx context.Context, msg ethereum.CallMsg, block
487487
return result, err
488488
}
489489

490+
func (p *Provider) CallContractWithOverrides(ctx context.Context, msg ethereum.CallMsg, blockNum *big.Int, overrides map[common.Address]OverrideAccount) ([]byte, error) {
491+
var result []byte
492+
_, err := p.Do(ctx, CallContractWithOverrides(msg, blockNum, overrides).Strict(p.strictness).Into(&result))
493+
return result, err
494+
}
495+
490496
func (p *Provider) CallContractAtHash(ctx context.Context, msg ethereum.CallMsg, blockHash common.Hash) ([]byte, error) {
491497
var result []byte
492498
_, err := p.Do(ctx, CallContractAtHash(msg, blockHash).Strict(p.strictness).Into(&result))
@@ -523,6 +529,12 @@ func (p *Provider) EstimateGas(ctx context.Context, msg ethereum.CallMsg) (uint6
523529
return result, err
524530
}
525531

532+
func (p *Provider) EstimateGasWithOverrides(ctx context.Context, msg ethereum.CallMsg, overrides map[common.Address]OverrideAccount) (uint64, error) {
533+
var result uint64
534+
_, err := p.Do(ctx, EstimateGasWithOverrides(msg, overrides).Strict(p.strictness).Into(&result))
535+
return result, err
536+
}
537+
526538
func (p *Provider) DebugTraceBlockByNumber(ctx context.Context, blockNum *big.Int) ([]*TransactionDebugTrace, error) {
527539
var result []*TransactionDebugTrace
528540
_, err := p.Do(ctx, DebugTraceBlockByNumber(blockNum).Into(&result))

ethrpc/methods.go

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -342,6 +342,18 @@ func CallContract(msg ethereum.CallMsg, blockNum *big.Int) CallBuilder[[]byte] {
342342
}
343343
}
344344

345+
func CallContractWithOverrides(msg ethereum.CallMsg, blockNum *big.Int, overrides map[common.Address]OverrideAccount) CallBuilder[[]byte] {
346+
params := []any{toCallArg(msg), toBlockNumArg(blockNum)}
347+
if len(overrides) > 0 {
348+
params = append(params, overrides)
349+
}
350+
return CallBuilder[[]byte]{
351+
method: "eth_call",
352+
params: params,
353+
intoFn: hexIntoBytes,
354+
}
355+
}
356+
345357
func CallContractAtHash(msg ethereum.CallMsg, blockHash common.Hash) CallBuilder[[]byte] {
346358
return CallBuilder[[]byte]{
347359
method: "eth_call",
@@ -419,6 +431,18 @@ func EstimateGas(msg ethereum.CallMsg) CallBuilder[uint64] {
419431
}
420432
}
421433

434+
func EstimateGasWithOverrides(msg ethereum.CallMsg, overrides map[common.Address]OverrideAccount) CallBuilder[uint64] {
435+
params := []any{toCallArg(msg)}
436+
if len(overrides) > 0 {
437+
params = append(params, toBlockNumArg(nil), overrides)
438+
}
439+
return CallBuilder[uint64]{
440+
method: "eth_estimateGas",
441+
params: params,
442+
intoFn: hexIntoUint64,
443+
}
444+
}
445+
422446
type DebugTracer string
423447

424448
const (

ethrpc/overrides.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package ethrpc
2+
3+
import "github.com/0xsequence/ethkit/go-ethereum/ethclient/gethclient"
4+
5+
// OverrideAccount specifies the state of an account to be overridden.
6+
// This is an alias of gethclient.OverrideAccount so callers don't need to import gethclient.
7+
type OverrideAccount = gethclient.OverrideAccount

0 commit comments

Comments
 (0)