deploy: regenerate compose from vibe-node main ef3800e94a17

This commit is contained in:
2026-09-28 08:11:35 +00:00
parent 123f4cd696
commit c4b30a617f
24 changed files with 216 additions and 0 deletions
@@ -195,6 +195,15 @@ x-upstreams:
# UNAVAILABLE and failing live requests ("Source was empty"). Head tracking # UNAVAILABLE and failing live requests ("Source was empty"). Head tracking
# still governs health with validation off. 2026-07-10, dRPC incident. # still governs health with validation off. 2026-07-10, dRPC incident.
disable-validation: true disable-validation: true
# dshackle runs internal lower-bound detectors against each upstream.
# For a nimbus beacon endpoint the epoch detector calls POST /eth/v1/beacon/rewards/attestations/{epoch}
# every ~5 minutes with a hardcoded 5-second internal timeout, while nimbus needs 16-22 seconds
# to replay that historical state. The probe therefore always times out, retries, and
# re-issues the same historical request forever, which pins the node in constant
# historical state replay and has repeatedly degraded the mainnet ethereum node.
# The code path is GenericUpstream.upstreamStart(): if (!getOptions().disableBoundValidation)
# { detectLowerBlock() }. The YAML key is read by ChainOptionsReader as disable-bound-validation.
disable-bound-validation: true
methods: methods:
disabled: disabled:
- name: GET#/eth/v2/debug/beacon/states/* - name: GET#/eth/v2/debug/beacon/states/*
@@ -201,6 +201,15 @@ x-upstreams:
# UNAVAILABLE and failing live requests ("Source was empty"). Head tracking # UNAVAILABLE and failing live requests ("Source was empty"). Head tracking
# still governs health with validation off. 2026-07-10, dRPC incident. # still governs health with validation off. 2026-07-10, dRPC incident.
disable-validation: true disable-validation: true
# dshackle runs internal lower-bound detectors against each upstream.
# For a nimbus beacon endpoint the epoch detector calls POST /eth/v1/beacon/rewards/attestations/{epoch}
# every ~5 minutes with a hardcoded 5-second internal timeout, while nimbus needs 16-22 seconds
# to replay that historical state. The probe therefore always times out, retries, and
# re-issues the same historical request forever, which pins the node in constant
# historical state replay and has repeatedly degraded the mainnet ethereum node.
# The code path is GenericUpstream.upstreamStart(): if (!getOptions().disableBoundValidation)
# { detectLowerBlock() }. The YAML key is read by ChainOptionsReader as disable-bound-validation.
disable-bound-validation: true
methods: methods:
disabled: disabled:
- name: GET#/eth/v2/debug/beacon/states/* - name: GET#/eth/v2/debug/beacon/states/*
@@ -265,6 +265,15 @@ x-upstreams:
# UNAVAILABLE and failing live requests ("Source was empty"). Head tracking # UNAVAILABLE and failing live requests ("Source was empty"). Head tracking
# still governs health with validation off. 2026-07-10, dRPC incident. # still governs health with validation off. 2026-07-10, dRPC incident.
disable-validation: true disable-validation: true
# dshackle runs internal lower-bound detectors against each upstream.
# For a nimbus beacon endpoint the epoch detector calls POST /eth/v1/beacon/rewards/attestations/{epoch}
# every ~5 minutes with a hardcoded 5-second internal timeout, while nimbus needs 16-22 seconds
# to replay that historical state. The probe therefore always times out, retries, and
# re-issues the same historical request forever, which pins the node in constant
# historical state replay and has repeatedly degraded the mainnet ethereum node.
# The code path is GenericUpstream.upstreamStart(): if (!getOptions().disableBoundValidation)
# { detectLowerBlock() }. The YAML key is read by ChainOptionsReader as disable-bound-validation.
disable-bound-validation: true
methods: methods:
disabled: disabled:
- name: GET#/eth/v2/debug/beacon/states/* - name: GET#/eth/v2/debug/beacon/states/*
@@ -267,6 +267,15 @@ x-upstreams:
# UNAVAILABLE and failing live requests ("Source was empty"). Head tracking # UNAVAILABLE and failing live requests ("Source was empty"). Head tracking
# still governs health with validation off. 2026-07-10, dRPC incident. # still governs health with validation off. 2026-07-10, dRPC incident.
disable-validation: true disable-validation: true
# dshackle runs internal lower-bound detectors against each upstream.
# For a nimbus beacon endpoint the epoch detector calls POST /eth/v1/beacon/rewards/attestations/{epoch}
# every ~5 minutes with a hardcoded 5-second internal timeout, while nimbus needs 16-22 seconds
# to replay that historical state. The probe therefore always times out, retries, and
# re-issues the same historical request forever, which pins the node in constant
# historical state replay and has repeatedly degraded the mainnet ethereum node.
# The code path is GenericUpstream.upstreamStart(): if (!getOptions().disableBoundValidation)
# { detectLowerBlock() }. The YAML key is read by ChainOptionsReader as disable-bound-validation.
disable-bound-validation: true
methods: methods:
disabled: disabled:
- name: GET#/eth/v2/debug/beacon/states/* - name: GET#/eth/v2/debug/beacon/states/*
@@ -201,6 +201,15 @@ x-upstreams:
# UNAVAILABLE and failing live requests ("Source was empty"). Head tracking # UNAVAILABLE and failing live requests ("Source was empty"). Head tracking
# still governs health with validation off. 2026-07-10, dRPC incident. # still governs health with validation off. 2026-07-10, dRPC incident.
disable-validation: true disable-validation: true
# dshackle runs internal lower-bound detectors against each upstream.
# For a nimbus beacon endpoint the epoch detector calls POST /eth/v1/beacon/rewards/attestations/{epoch}
# every ~5 minutes with a hardcoded 5-second internal timeout, while nimbus needs 16-22 seconds
# to replay that historical state. The probe therefore always times out, retries, and
# re-issues the same historical request forever, which pins the node in constant
# historical state replay and has repeatedly degraded the mainnet ethereum node.
# The code path is GenericUpstream.upstreamStart(): if (!getOptions().disableBoundValidation)
# { detectLowerBlock() }. The YAML key is read by ChainOptionsReader as disable-bound-validation.
disable-bound-validation: true
methods: methods:
disabled: disabled:
- name: GET#/eth/v2/debug/beacon/states/* - name: GET#/eth/v2/debug/beacon/states/*
@@ -201,6 +201,15 @@ x-upstreams:
# UNAVAILABLE and failing live requests ("Source was empty"). Head tracking # UNAVAILABLE and failing live requests ("Source was empty"). Head tracking
# still governs health with validation off. 2026-07-10, dRPC incident. # still governs health with validation off. 2026-07-10, dRPC incident.
disable-validation: true disable-validation: true
# dshackle runs internal lower-bound detectors against each upstream.
# For a nimbus beacon endpoint the epoch detector calls POST /eth/v1/beacon/rewards/attestations/{epoch}
# every ~5 minutes with a hardcoded 5-second internal timeout, while nimbus needs 16-22 seconds
# to replay that historical state. The probe therefore always times out, retries, and
# re-issues the same historical request forever, which pins the node in constant
# historical state replay and has repeatedly degraded the mainnet ethereum node.
# The code path is GenericUpstream.upstreamStart(): if (!getOptions().disableBoundValidation)
# { detectLowerBlock() }. The YAML key is read by ChainOptionsReader as disable-bound-validation.
disable-bound-validation: true
methods: methods:
disabled: disabled:
- name: GET#/eth/v2/debug/beacon/states/* - name: GET#/eth/v2/debug/beacon/states/*
@@ -175,6 +175,15 @@ x-upstreams:
# UNAVAILABLE and failing live requests ("Source was empty"). Head tracking # UNAVAILABLE and failing live requests ("Source was empty"). Head tracking
# still governs health with validation off. 2026-07-10, dRPC incident. # still governs health with validation off. 2026-07-10, dRPC incident.
disable-validation: true disable-validation: true
# dshackle runs internal lower-bound detectors against each upstream.
# For a nimbus beacon endpoint the epoch detector calls POST /eth/v1/beacon/rewards/attestations/{epoch}
# every ~5 minutes with a hardcoded 5-second internal timeout, while nimbus needs 16-22 seconds
# to replay that historical state. The probe therefore always times out, retries, and
# re-issues the same historical request forever, which pins the node in constant
# historical state replay and has repeatedly degraded the mainnet ethereum node.
# The code path is GenericUpstream.upstreamStart(): if (!getOptions().disableBoundValidation)
# { detectLowerBlock() }. The YAML key is read by ChainOptionsReader as disable-bound-validation.
disable-bound-validation: true
methods: methods:
disabled: disabled:
- name: GET#/eth/v2/debug/beacon/states/* - name: GET#/eth/v2/debug/beacon/states/*
@@ -175,6 +175,15 @@ x-upstreams:
# UNAVAILABLE and failing live requests ("Source was empty"). Head tracking # UNAVAILABLE and failing live requests ("Source was empty"). Head tracking
# still governs health with validation off. 2026-07-10, dRPC incident. # still governs health with validation off. 2026-07-10, dRPC incident.
disable-validation: true disable-validation: true
# dshackle runs internal lower-bound detectors against each upstream.
# For a nimbus beacon endpoint the epoch detector calls POST /eth/v1/beacon/rewards/attestations/{epoch}
# every ~5 minutes with a hardcoded 5-second internal timeout, while nimbus needs 16-22 seconds
# to replay that historical state. The probe therefore always times out, retries, and
# re-issues the same historical request forever, which pins the node in constant
# historical state replay and has repeatedly degraded the mainnet ethereum node.
# The code path is GenericUpstream.upstreamStart(): if (!getOptions().disableBoundValidation)
# { detectLowerBlock() }. The YAML key is read by ChainOptionsReader as disable-bound-validation.
disable-bound-validation: true
methods: methods:
disabled: disabled:
- name: GET#/eth/v2/debug/beacon/states/* - name: GET#/eth/v2/debug/beacon/states/*
@@ -175,6 +175,15 @@ x-upstreams:
# UNAVAILABLE and failing live requests ("Source was empty"). Head tracking # UNAVAILABLE and failing live requests ("Source was empty"). Head tracking
# still governs health with validation off. 2026-07-10, dRPC incident. # still governs health with validation off. 2026-07-10, dRPC incident.
disable-validation: true disable-validation: true
# dshackle runs internal lower-bound detectors against each upstream.
# For a nimbus beacon endpoint the epoch detector calls POST /eth/v1/beacon/rewards/attestations/{epoch}
# every ~5 minutes with a hardcoded 5-second internal timeout, while nimbus needs 16-22 seconds
# to replay that historical state. The probe therefore always times out, retries, and
# re-issues the same historical request forever, which pins the node in constant
# historical state replay and has repeatedly degraded the mainnet ethereum node.
# The code path is GenericUpstream.upstreamStart(): if (!getOptions().disableBoundValidation)
# { detectLowerBlock() }. The YAML key is read by ChainOptionsReader as disable-bound-validation.
disable-bound-validation: true
methods: methods:
disabled: disabled:
- name: GET#/eth/v2/debug/beacon/states/* - name: GET#/eth/v2/debug/beacon/states/*
@@ -190,6 +190,15 @@ x-upstreams:
# UNAVAILABLE and failing live requests ("Source was empty"). Head tracking # UNAVAILABLE and failing live requests ("Source was empty"). Head tracking
# still governs health with validation off. 2026-07-10, dRPC incident. # still governs health with validation off. 2026-07-10, dRPC incident.
disable-validation: true disable-validation: true
# dshackle runs internal lower-bound detectors against each upstream.
# For a nimbus beacon endpoint the epoch detector calls POST /eth/v1/beacon/rewards/attestations/{epoch}
# every ~5 minutes with a hardcoded 5-second internal timeout, while nimbus needs 16-22 seconds
# to replay that historical state. The probe therefore always times out, retries, and
# re-issues the same historical request forever, which pins the node in constant
# historical state replay and has repeatedly degraded the mainnet ethereum node.
# The code path is GenericUpstream.upstreamStart(): if (!getOptions().disableBoundValidation)
# { detectLowerBlock() }. The YAML key is read by ChainOptionsReader as disable-bound-validation.
disable-bound-validation: true
methods: methods:
disabled: disabled:
- name: GET#/eth/v2/debug/beacon/states/* - name: GET#/eth/v2/debug/beacon/states/*
@@ -249,6 +249,15 @@ x-upstreams:
# UNAVAILABLE and failing live requests ("Source was empty"). Head tracking # UNAVAILABLE and failing live requests ("Source was empty"). Head tracking
# still governs health with validation off. 2026-07-10, dRPC incident. # still governs health with validation off. 2026-07-10, dRPC incident.
disable-validation: true disable-validation: true
# dshackle runs internal lower-bound detectors against each upstream.
# For a nimbus beacon endpoint the epoch detector calls POST /eth/v1/beacon/rewards/attestations/{epoch}
# every ~5 minutes with a hardcoded 5-second internal timeout, while nimbus needs 16-22 seconds
# to replay that historical state. The probe therefore always times out, retries, and
# re-issues the same historical request forever, which pins the node in constant
# historical state replay and has repeatedly degraded the mainnet ethereum node.
# The code path is GenericUpstream.upstreamStart(): if (!getOptions().disableBoundValidation)
# { detectLowerBlock() }. The YAML key is read by ChainOptionsReader as disable-bound-validation.
disable-bound-validation: true
methods: methods:
disabled: disabled:
- name: GET#/eth/v2/debug/beacon/states/* - name: GET#/eth/v2/debug/beacon/states/*
@@ -191,6 +191,15 @@ x-upstreams:
# UNAVAILABLE and failing live requests ("Source was empty"). Head tracking # UNAVAILABLE and failing live requests ("Source was empty"). Head tracking
# still governs health with validation off. 2026-07-10, dRPC incident. # still governs health with validation off. 2026-07-10, dRPC incident.
disable-validation: true disable-validation: true
# dshackle runs internal lower-bound detectors against each upstream.
# For a nimbus beacon endpoint the epoch detector calls POST /eth/v1/beacon/rewards/attestations/{epoch}
# every ~5 minutes with a hardcoded 5-second internal timeout, while nimbus needs 16-22 seconds
# to replay that historical state. The probe therefore always times out, retries, and
# re-issues the same historical request forever, which pins the node in constant
# historical state replay and has repeatedly degraded the mainnet ethereum node.
# The code path is GenericUpstream.upstreamStart(): if (!getOptions().disableBoundValidation)
# { detectLowerBlock() }. The YAML key is read by ChainOptionsReader as disable-bound-validation.
disable-bound-validation: true
methods: methods:
disabled: disabled:
- name: GET#/eth/v2/debug/beacon/states/* - name: GET#/eth/v2/debug/beacon/states/*
@@ -190,6 +190,15 @@ x-upstreams:
# UNAVAILABLE and failing live requests ("Source was empty"). Head tracking # UNAVAILABLE and failing live requests ("Source was empty"). Head tracking
# still governs health with validation off. 2026-07-10, dRPC incident. # still governs health with validation off. 2026-07-10, dRPC incident.
disable-validation: true disable-validation: true
# dshackle runs internal lower-bound detectors against each upstream.
# For a nimbus beacon endpoint the epoch detector calls POST /eth/v1/beacon/rewards/attestations/{epoch}
# every ~5 minutes with a hardcoded 5-second internal timeout, while nimbus needs 16-22 seconds
# to replay that historical state. The probe therefore always times out, retries, and
# re-issues the same historical request forever, which pins the node in constant
# historical state replay and has repeatedly degraded the mainnet ethereum node.
# The code path is GenericUpstream.upstreamStart(): if (!getOptions().disableBoundValidation)
# { detectLowerBlock() }. The YAML key is read by ChainOptionsReader as disable-bound-validation.
disable-bound-validation: true
methods: methods:
disabled: disabled:
- name: GET#/eth/v2/debug/beacon/states/* - name: GET#/eth/v2/debug/beacon/states/*
@@ -191,6 +191,15 @@ x-upstreams:
# UNAVAILABLE and failing live requests ("Source was empty"). Head tracking # UNAVAILABLE and failing live requests ("Source was empty"). Head tracking
# still governs health with validation off. 2026-07-10, dRPC incident. # still governs health with validation off. 2026-07-10, dRPC incident.
disable-validation: true disable-validation: true
# dshackle runs internal lower-bound detectors against each upstream.
# For a nimbus beacon endpoint the epoch detector calls POST /eth/v1/beacon/rewards/attestations/{epoch}
# every ~5 minutes with a hardcoded 5-second internal timeout, while nimbus needs 16-22 seconds
# to replay that historical state. The probe therefore always times out, retries, and
# re-issues the same historical request forever, which pins the node in constant
# historical state replay and has repeatedly degraded the mainnet ethereum node.
# The code path is GenericUpstream.upstreamStart(): if (!getOptions().disableBoundValidation)
# { detectLowerBlock() }. The YAML key is read by ChainOptionsReader as disable-bound-validation.
disable-bound-validation: true
methods: methods:
disabled: disabled:
- name: GET#/eth/v2/debug/beacon/states/* - name: GET#/eth/v2/debug/beacon/states/*
@@ -177,6 +177,15 @@ x-upstreams:
# UNAVAILABLE and failing live requests ("Source was empty"). Head tracking # UNAVAILABLE and failing live requests ("Source was empty"). Head tracking
# still governs health with validation off. 2026-07-10, dRPC incident. # still governs health with validation off. 2026-07-10, dRPC incident.
disable-validation: true disable-validation: true
# dshackle runs internal lower-bound detectors against each upstream.
# For a nimbus beacon endpoint the epoch detector calls POST /eth/v1/beacon/rewards/attestations/{epoch}
# every ~5 minutes with a hardcoded 5-second internal timeout, while nimbus needs 16-22 seconds
# to replay that historical state. The probe therefore always times out, retries, and
# re-issues the same historical request forever, which pins the node in constant
# historical state replay and has repeatedly degraded the mainnet ethereum node.
# The code path is GenericUpstream.upstreamStart(): if (!getOptions().disableBoundValidation)
# { detectLowerBlock() }. The YAML key is read by ChainOptionsReader as disable-bound-validation.
disable-bound-validation: true
methods: methods:
disabled: disabled:
- name: GET#/eth/v2/debug/beacon/states/* - name: GET#/eth/v2/debug/beacon/states/*
@@ -180,6 +180,15 @@ x-upstreams:
# UNAVAILABLE and failing live requests ("Source was empty"). Head tracking # UNAVAILABLE and failing live requests ("Source was empty"). Head tracking
# still governs health with validation off. 2026-07-10, dRPC incident. # still governs health with validation off. 2026-07-10, dRPC incident.
disable-validation: true disable-validation: true
# dshackle runs internal lower-bound detectors against each upstream.
# For a nimbus beacon endpoint the epoch detector calls POST /eth/v1/beacon/rewards/attestations/{epoch}
# every ~5 minutes with a hardcoded 5-second internal timeout, while nimbus needs 16-22 seconds
# to replay that historical state. The probe therefore always times out, retries, and
# re-issues the same historical request forever, which pins the node in constant
# historical state replay and has repeatedly degraded the mainnet ethereum node.
# The code path is GenericUpstream.upstreamStart(): if (!getOptions().disableBoundValidation)
# { detectLowerBlock() }. The YAML key is read by ChainOptionsReader as disable-bound-validation.
disable-bound-validation: true
methods: methods:
disabled: disabled:
- name: GET#/eth/v2/debug/beacon/states/* - name: GET#/eth/v2/debug/beacon/states/*
@@ -175,6 +175,15 @@ x-upstreams:
# UNAVAILABLE and failing live requests ("Source was empty"). Head tracking # UNAVAILABLE and failing live requests ("Source was empty"). Head tracking
# still governs health with validation off. 2026-07-10, dRPC incident. # still governs health with validation off. 2026-07-10, dRPC incident.
disable-validation: true disable-validation: true
# dshackle runs internal lower-bound detectors against each upstream.
# For a nimbus beacon endpoint the epoch detector calls POST /eth/v1/beacon/rewards/attestations/{epoch}
# every ~5 minutes with a hardcoded 5-second internal timeout, while nimbus needs 16-22 seconds
# to replay that historical state. The probe therefore always times out, retries, and
# re-issues the same historical request forever, which pins the node in constant
# historical state replay and has repeatedly degraded the mainnet ethereum node.
# The code path is GenericUpstream.upstreamStart(): if (!getOptions().disableBoundValidation)
# { detectLowerBlock() }. The YAML key is read by ChainOptionsReader as disable-bound-validation.
disable-bound-validation: true
methods: methods:
disabled: disabled:
- name: GET#/eth/v2/debug/beacon/states/* - name: GET#/eth/v2/debug/beacon/states/*
@@ -177,6 +177,15 @@ x-upstreams:
# UNAVAILABLE and failing live requests ("Source was empty"). Head tracking # UNAVAILABLE and failing live requests ("Source was empty"). Head tracking
# still governs health with validation off. 2026-07-10, dRPC incident. # still governs health with validation off. 2026-07-10, dRPC incident.
disable-validation: true disable-validation: true
# dshackle runs internal lower-bound detectors against each upstream.
# For a nimbus beacon endpoint the epoch detector calls POST /eth/v1/beacon/rewards/attestations/{epoch}
# every ~5 minutes with a hardcoded 5-second internal timeout, while nimbus needs 16-22 seconds
# to replay that historical state. The probe therefore always times out, retries, and
# re-issues the same historical request forever, which pins the node in constant
# historical state replay and has repeatedly degraded the mainnet ethereum node.
# The code path is GenericUpstream.upstreamStart(): if (!getOptions().disableBoundValidation)
# { detectLowerBlock() }. The YAML key is read by ChainOptionsReader as disable-bound-validation.
disable-bound-validation: true
methods: methods:
disabled: disabled:
- name: GET#/eth/v2/debug/beacon/states/* - name: GET#/eth/v2/debug/beacon/states/*
@@ -180,6 +180,15 @@ x-upstreams:
# UNAVAILABLE and failing live requests ("Source was empty"). Head tracking # UNAVAILABLE and failing live requests ("Source was empty"). Head tracking
# still governs health with validation off. 2026-07-10, dRPC incident. # still governs health with validation off. 2026-07-10, dRPC incident.
disable-validation: true disable-validation: true
# dshackle runs internal lower-bound detectors against each upstream.
# For a nimbus beacon endpoint the epoch detector calls POST /eth/v1/beacon/rewards/attestations/{epoch}
# every ~5 minutes with a hardcoded 5-second internal timeout, while nimbus needs 16-22 seconds
# to replay that historical state. The probe therefore always times out, retries, and
# re-issues the same historical request forever, which pins the node in constant
# historical state replay and has repeatedly degraded the mainnet ethereum node.
# The code path is GenericUpstream.upstreamStart(): if (!getOptions().disableBoundValidation)
# { detectLowerBlock() }. The YAML key is read by ChainOptionsReader as disable-bound-validation.
disable-bound-validation: true
methods: methods:
disabled: disabled:
- name: GET#/eth/v2/debug/beacon/states/* - name: GET#/eth/v2/debug/beacon/states/*
@@ -175,6 +175,15 @@ x-upstreams:
# UNAVAILABLE and failing live requests ("Source was empty"). Head tracking # UNAVAILABLE and failing live requests ("Source was empty"). Head tracking
# still governs health with validation off. 2026-07-10, dRPC incident. # still governs health with validation off. 2026-07-10, dRPC incident.
disable-validation: true disable-validation: true
# dshackle runs internal lower-bound detectors against each upstream.
# For a nimbus beacon endpoint the epoch detector calls POST /eth/v1/beacon/rewards/attestations/{epoch}
# every ~5 minutes with a hardcoded 5-second internal timeout, while nimbus needs 16-22 seconds
# to replay that historical state. The probe therefore always times out, retries, and
# re-issues the same historical request forever, which pins the node in constant
# historical state replay and has repeatedly degraded the mainnet ethereum node.
# The code path is GenericUpstream.upstreamStart(): if (!getOptions().disableBoundValidation)
# { detectLowerBlock() }. The YAML key is read by ChainOptionsReader as disable-bound-validation.
disable-bound-validation: true
methods: methods:
disabled: disabled:
- name: GET#/eth/v2/debug/beacon/states/* - name: GET#/eth/v2/debug/beacon/states/*
@@ -189,6 +189,15 @@ x-upstreams:
# UNAVAILABLE and failing live requests ("Source was empty"). Head tracking # UNAVAILABLE and failing live requests ("Source was empty"). Head tracking
# still governs health with validation off. 2026-07-10, dRPC incident. # still governs health with validation off. 2026-07-10, dRPC incident.
disable-validation: true disable-validation: true
# dshackle runs internal lower-bound detectors against each upstream.
# For a nimbus beacon endpoint the epoch detector calls POST /eth/v1/beacon/rewards/attestations/{epoch}
# every ~5 minutes with a hardcoded 5-second internal timeout, while nimbus needs 16-22 seconds
# to replay that historical state. The probe therefore always times out, retries, and
# re-issues the same historical request forever, which pins the node in constant
# historical state replay and has repeatedly degraded the mainnet ethereum node.
# The code path is GenericUpstream.upstreamStart(): if (!getOptions().disableBoundValidation)
# { detectLowerBlock() }. The YAML key is read by ChainOptionsReader as disable-bound-validation.
disable-bound-validation: true
methods: methods:
disabled: disabled:
- name: GET#/eth/v2/debug/beacon/states/* - name: GET#/eth/v2/debug/beacon/states/*
@@ -190,6 +190,15 @@ x-upstreams:
# UNAVAILABLE and failing live requests ("Source was empty"). Head tracking # UNAVAILABLE and failing live requests ("Source was empty"). Head tracking
# still governs health with validation off. 2026-07-10, dRPC incident. # still governs health with validation off. 2026-07-10, dRPC incident.
disable-validation: true disable-validation: true
# dshackle runs internal lower-bound detectors against each upstream.
# For a nimbus beacon endpoint the epoch detector calls POST /eth/v1/beacon/rewards/attestations/{epoch}
# every ~5 minutes with a hardcoded 5-second internal timeout, while nimbus needs 16-22 seconds
# to replay that historical state. The probe therefore always times out, retries, and
# re-issues the same historical request forever, which pins the node in constant
# historical state replay and has repeatedly degraded the mainnet ethereum node.
# The code path is GenericUpstream.upstreamStart(): if (!getOptions().disableBoundValidation)
# { detectLowerBlock() }. The YAML key is read by ChainOptionsReader as disable-bound-validation.
disable-bound-validation: true
methods: methods:
disabled: disabled:
- name: GET#/eth/v2/debug/beacon/states/* - name: GET#/eth/v2/debug/beacon/states/*
@@ -189,6 +189,15 @@ x-upstreams:
# UNAVAILABLE and failing live requests ("Source was empty"). Head tracking # UNAVAILABLE and failing live requests ("Source was empty"). Head tracking
# still governs health with validation off. 2026-07-10, dRPC incident. # still governs health with validation off. 2026-07-10, dRPC incident.
disable-validation: true disable-validation: true
# dshackle runs internal lower-bound detectors against each upstream.
# For a nimbus beacon endpoint the epoch detector calls POST /eth/v1/beacon/rewards/attestations/{epoch}
# every ~5 minutes with a hardcoded 5-second internal timeout, while nimbus needs 16-22 seconds
# to replay that historical state. The probe therefore always times out, retries, and
# re-issues the same historical request forever, which pins the node in constant
# historical state replay and has repeatedly degraded the mainnet ethereum node.
# The code path is GenericUpstream.upstreamStart(): if (!getOptions().disableBoundValidation)
# { detectLowerBlock() }. The YAML key is read by ChainOptionsReader as disable-bound-validation.
disable-bound-validation: true
methods: methods:
disabled: disabled:
- name: GET#/eth/v2/debug/beacon/states/* - name: GET#/eth/v2/debug/beacon/states/*
@@ -190,6 +190,15 @@ x-upstreams:
# UNAVAILABLE and failing live requests ("Source was empty"). Head tracking # UNAVAILABLE and failing live requests ("Source was empty"). Head tracking
# still governs health with validation off. 2026-07-10, dRPC incident. # still governs health with validation off. 2026-07-10, dRPC incident.
disable-validation: true disable-validation: true
# dshackle runs internal lower-bound detectors against each upstream.
# For a nimbus beacon endpoint the epoch detector calls POST /eth/v1/beacon/rewards/attestations/{epoch}
# every ~5 minutes with a hardcoded 5-second internal timeout, while nimbus needs 16-22 seconds
# to replay that historical state. The probe therefore always times out, retries, and
# re-issues the same historical request forever, which pins the node in constant
# historical state replay and has repeatedly degraded the mainnet ethereum node.
# The code path is GenericUpstream.upstreamStart(): if (!getOptions().disableBoundValidation)
# { detectLowerBlock() }. The YAML key is read by ChainOptionsReader as disable-bound-validation.
disable-bound-validation: true
methods: methods:
disabled: disabled:
- name: GET#/eth/v2/debug/beacon/states/* - name: GET#/eth/v2/debug/beacon/states/*