smartcontractkit / smartcontractkit/chainlink
[NODE] Basic Get>Uint256 request on Arbitrum Mainnet fails in Operator.sol due to hardcoded MINIMUM_CONSUMER_GAS_LIMIT
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
- Network: Abitrum Nitro Mainnet
- Operating System: Container-Optimized OS from Google
- Kubernetes Version: 1.22.10-gke.600
- Hosting Provider: GCP
- Startup Command: Kubernetes pod runnning smartcontract/chainlink:1.8.0-root ["local", "n", "-p", "/chainlink/.password", "-a", "/chainlink/.api"]
- Operator.sol failure line
- Verified Operator.sol on Arbiscan
- Transaction Record
- JobSpec
- Client Contract
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
- Deploy a 1.8.0 node to Arbitrum Nitro Mainnet
- Deploy operator.sol v0.7 to Arbitrum Nitro Mainnet
- Add a Get > Uint 256 jobspec to the node (link provided above)
- Execute Get > Uint 256 job - should run successfully
- Check Oracle contract on Arbiscan and you should see a failure
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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