mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-08-19 10:22:23 +00:00
allows calling contract method at any block number
This commit is contained in:
parent
d3441ebb56
commit
5a13b3b5be
1 changed files with 5 additions and 4 deletions
|
|
@ -38,6 +38,7 @@ type SignerFn func(types.Signer, common.Address, *types.Transaction) (*types.Tra
|
|||
type CallOpts struct {
|
||||
Pending bool // Whether to operate on the pending state or the last known one
|
||||
From common.Address // Optional the sender address, otherwise the first account is used
|
||||
BlockNumber *big.Int // BlockNumber selects the block height at which the call runs
|
||||
|
||||
Context context.Context // Network context to support cancellation and timeouts (nil = no timeout)
|
||||
}
|
||||
|
|
@ -148,10 +149,10 @@ func (c *BoundContract) Call(opts *CallOpts, result interface{}, method string,
|
|||
}
|
||||
}
|
||||
} else {
|
||||
output, err = c.caller.CallContract(ctx, msg, nil)
|
||||
output, err = c.caller.CallContract(ctx, msg, opts.BlockNumber)
|
||||
if err == nil && len(output) == 0 {
|
||||
// Make sure we have a contract to operate on, and bail out otherwise.
|
||||
if code, err = c.caller.CodeAt(ctx, c.address, nil); err != nil {
|
||||
if code, err = c.caller.CodeAt(ctx, c.address, opts.BlockNumber); err != nil {
|
||||
return err
|
||||
} else if len(code) == 0 {
|
||||
return ErrNoCode
|
||||
|
|
|
|||
Loading…
Reference in a new issue