smartcontractkit / smartcontractkit/chainlink

[NODE] Basic Get>Uint256 request on Arbitrum Mainnet fails in Operator.sol due to hardcoded MINIMUM_CONSUMER_GAS_LIMIT

Open
#7,365 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Go
Stars
8.2k
Forks
2k
Avg merge
1d 23h
Merged PRs (30d)
202

Description

Description
I have a Chainlink Node running version 1.8.0 on Arbitrum. I have just over 0.5ETH sitting in the node's wallet, so plenty to pay for gas. I send a basic "Get > Uint256" request to the node. The node successfully walks through all the necessary steps and completes the job in UI (all green). However the transaction inside Operator.sol fails on gasleft() < MINIMUM_CONSUMER_GAS_LIMIT.

The error reported in the Arbiscan block explorer is: Fail with error 'Must provide consumer enough gas'

I have not configured/overriden any gas settings on the node, choosing to use the default Arbitrum settings that shipped with the 1.8.0 release.

Should the MINIMUM_CONSUMER_GAS_LIMIT inside Operator.sol be lowered for Arbitrum Mainnet or are there Arbitrum-specific gas settings I can configure on the node to get past this blocker?

Basic Information

Environment Variables

ADVISORY_LOCK_CHECK_INTERVAL	1s
ADVISORY_LOCK_ID	1027321974924625846
ALLOW_ORIGINS	*
BLOCK_BACKFILL_DEPTH	10
BLOCK_HISTORY_ESTIMATOR_BLOCK_DELAY	0
BLOCK_HISTORY_ESTIMATOR_BLOCK_HISTORY_SIZE	0
BLOCK_HISTORY_ESTIMATOR_TRANSACTION_PERCENTILE	0
BRIDGE_RESPONSE_URL	
CHAINLINK_DEV	false
CHAINLINK_PORT	6688
CHAINLINK_TLS_HOST	
CHAINLINK_TLS_PORT	0
CHAINLINK_TLS_REDIRECT	false
CHAIN_TYPE	
DATABASE_BACKUP_FREQUENCY	1h0m0s
DATABASE_BACKUP_MODE	none
DATABASE_BACKUP_ON_VERSION_UPGRADE	true
DATABASE_LOCKING_MODE	lease
DEFAULT_HTTP_LIMIT	32768
DEFAULT_HTTP_TIMEOUT	15s
ETH_CHAIN_ID	42161
ETH_HTTP_URL	
ETH_SECONDARY_URLS	[https://arb-mainnet.g.alchemy.com/v2/xxx]
ETH_URL	wss://arb-mainnet.g.alchemy.com/v2/xxx
EVM_RPC_ENABLED	true
EXPLORER_URL	
FEATURE_EXTERNAL_INITIATORS	false
FEATURE_OFFCHAIN_REPORTING	false
FLAGS_CONTRACT_ADDRESS	
FM_DEFAULT_TRANSACTION_QUEUE_DEPTH	1
GAS_ESTIMATOR_MODE	
INSECURE_FAST_SCRYPT	false
JOB_PIPELINE_REAPER_INTERVAL	1h0m0s
JOB_PIPELINE_REAPER_THRESHOLD	24h0m0s
JSON_CONSOLE	true
KEEPER_BASE_FEE_BUFFER_PERCENT	20
KEEPER_CHECK_UPKEEP_GAS_PRICE_FEATURE_ENABLED	false
KEEPER_DEFAULT_TRANSACTION_QUEUE_DEPTH	1
KEEPER_GAS_PRICE_BUFFER_PERCENT	20
KEEPER_GAS_TIP_CAP_BUFFER_PERCENT	20
KEEPER_MAXIMUM_GRACE_PERIOD	100
KEEPER_REGISTRY_CHECK_GAS_OVERHEAD	200000
KEEPER_REGISTRY_PERFORM_GAS_OVERHEAD	150000
KEEPER_REGISTRY_SYNC_INTERVAL	30m0s
KEEPER_REGISTRY_SYNC_UPKEEP_QUEUE_SIZE	10
KEEPER_TURN_FLAG_ENABLED	false
KEEPER_TURN_LOOK_BACK	1000
LEASE_LOCK_DURATION	10s
LEASE_LOCK_REFRESH_INTERVAL	1s
LINK_CONTRACT_ADDRESS	
LOG_FILE_DIR	/chainlink
LOG_FILE_MAX_AGE	0
LOG_FILE_MAX_BACKUPS	1
LOG_FILE_MAX_SIZE	1.02gb
LOG_LEVEL	debug
LOG_SQL	false
OCR_DEFAULT_TRANSACTION_QUEUE_DEPTH	1
OCR_TRACE_LOGGING	false
P2PV2_ANNOUNCE_ADDRESSES	[]
P2PV2_BOOTSTRAPPERS	[]
P2PV2_DELTA_DIAL	15s
P2PV2_DELTA_RECONCILE	1m0s
P2PV2_LISTEN_ADDRESSES	[]
P2P_BOOTSTRAP_CHECK_INTERVAL	20s
P2P_BOOTSTRAP_PEERS	[]
P2P_DHT_LOOKUP_INTERVAL	10
P2P_INCOMING_MESSAGE_BUFFER_SIZE	10
P2P_LISTEN_IP	0.0.0.0
P2P_LISTEN_PORT	
P2P_NETWORKING_STACK	V1
P2P_NEW_STREAM_TIMEOUT	10s
P2P_OUTGOING_MESSAGE_BUFFER_SIZE	10
P2P_PEER_ID	
REAPER_EXPIRATION	240h0m0s
ROOT	/chainlink
SECURE_COOKIES	false
SESSION_TIMEOUT	15m0s
SHUTDOWN_GRACE_PERIOD	5s
TELEMETRY_INGRESS_LOGGING	false
TELEMETRY_INGRESS_SERVER_PUB_KEY	
TELEMETRY_INGRESS_URL	
TRIGGER_FALLBACK_DB_POLL_INTERVAL	30s

Steps to Reproduce

  1. Deploy a 1.8.0 node to Arbitrum Nitro Mainnet
  2. Deploy operator.sol v0.7 to Arbitrum Nitro Mainnet
  3. Add a Get > Uint 256 jobspec to the node (link provided above)
  4. Execute Get > Uint 256 job - should run successfully
  5. Check Oracle contract on Arbiscan and you should see a failure

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with contracts/src/v0.7/Operator.sol at the linked failure line, then review the Chainlink node 1.8.0 defaults and the provided Arbitrum job specification. Reproduce the Get > Uint256 request using the listed deployment steps and compare the transaction gas behavior. Done means the request completes without the “Must provide consumer enough gas” failure using documented settings or a confirmed contract adjustment.

Written by the indexing model from the issue text.

Assessment

Tech stack
go, kubernetes, solidity
Domain
backend, blockchain, cloud
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.