code: func (ec *EthereumClient) EstimateGas(ctx *Context, msg *CallMsg) (gas int64, _ error) {
  	rawGas, err := ec.client.EstimateGas(ctx.context, msg.msg)
  	return int64(rawGas), err
  }
docs: // 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.