mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-06-19 21:31:37 +00:00
parent
8679a9fc4f
commit
db50cdd311
1 changed files with 29 additions and 3 deletions
|
|
@ -646,9 +646,13 @@ func (ec *Client) FeeHistory(ctx context.Context, blockCount uint64, lastBlock *
|
|||
}
|
||||
|
||||
// EstimateGas tries to estimate the gas needed to execute a specific transaction based on
|
||||
// the current pending state of the backend blockchain. There is no guarantee that this is
|
||||
// the true gas limit requirement as other transactions may be added or removed by miners,
|
||||
// but it should provide a basis for setting a reasonable default.
|
||||
// the current state of the backend blockchain. There is no guarantee that this is the
|
||||
// true gas limit requirement as other transactions may be added or removed by miners, but
|
||||
// it should provide a basis for setting a reasonable default.
|
||||
//
|
||||
// Note that the state used by this method is implementation-defined by the remote RPC
|
||||
// server, but it's reasonable to assume that it will either be the pending or latest
|
||||
// state.
|
||||
func (ec *Client) EstimateGas(ctx context.Context, msg ethereum.CallMsg) (uint64, error) {
|
||||
var hex hexutil.Uint64
|
||||
err := ec.c.CallContext(ctx, &hex, "eth_estimateGas", toCallArg(msg))
|
||||
|
|
@ -658,6 +662,28 @@ func (ec *Client) EstimateGas(ctx context.Context, msg ethereum.CallMsg) (uint64
|
|||
return uint64(hex), nil
|
||||
}
|
||||
|
||||
// EstimateGasAtBlock is almost the same as EstimateGas except that it selects the block height
|
||||
// instead of using the remote RPC's default state for gas estimation.
|
||||
func (ec *Client) EstimateGasAtBlock(ctx context.Context, msg ethereum.CallMsg, blockNumber *big.Int) (uint64, error) {
|
||||
var hex hexutil.Uint64
|
||||
err := ec.c.CallContext(ctx, &hex, "eth_estimateGas", toCallArg(msg), toBlockNumArg(blockNumber))
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
return uint64(hex), nil
|
||||
}
|
||||
|
||||
// EstimateGasAtBlockHash is almost the same as EstimateGas except that it selects the block
|
||||
// hash instead of using the remote RPC's default state for gas estimation.
|
||||
func (ec *Client) EstimateGasAtBlockHash(ctx context.Context, msg ethereum.CallMsg, blockHash common.Hash) (uint64, error) {
|
||||
var hex hexutil.Uint64
|
||||
err := ec.c.CallContext(ctx, &hex, "eth_estimateGas", toCallArg(msg), rpc.BlockNumberOrHashWithHash(blockHash, false))
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
return uint64(hex), nil
|
||||
}
|
||||
|
||||
// SendTransaction injects a signed transaction into the pending pool for execution.
|
||||
//
|
||||
// If the transaction was a contract creation use the TransactionReceipt method to get the
|
||||
|
|
|
|||
Loading…
Reference in a new issue