Skip to content

fix(init-bedrock): validate node type and survive the decommissioned snapshot indexes - #93

Open
Alicepoltora wants to merge 2 commits into
inkonchain:mainfrom
Alicepoltora:fix/validate-node-type-init-bedrock
Open

Alicepoltora wants to merge 2 commits into
inkonchain:mainfrom
Alicepoltora:fix/validate-node-type-init-bedrock

Conversation

@Alicepoltora

@Alicepoltora Alicepoltora commented Sep 27, 2026 •

Copy link
Copy Markdown

Three problems in scripts/init-bedrock.sh, all reachable from a normal first run:

1. A typo in NODE_TYPE silently became a full node. NODE_TYPE=ful fell through both branches and synced from genesis without telling anyone. Now it fails fast:

Unsupported node type: ful (expected 'full' or 'archive')

2. NODE_TYPE=archive dies with a curl resolver error. The hosted indexes (ink.snapshots.gelato.cloud, ink.t.snapshots.gelato.cloud) no longer resolve — reported in #68 and #87. The failure was also misattributed (curl's NXDOMAIN was swallowed into No matching snapshot files found in index). Fetch and parse failures are now separated, and the message tells the operator what to do:

Could not fetch the snapshot index: https://ink.snapshots.gelato.cloud/index.html
The hosted snapshot index is unreachable or no longer published.
Either set NODE_TYPE=full in .env to sync from genesis, or set
BEDROCK_TAR_DOWNLOAD in .env to a geth datadir tarball that has a
matching <url>.sha256 checksum file.

3. There was no way to supply your own snapshot. BEDROCK_TAR_DOWNLOAD from .env was unconditionally overwritten in archive mode. It is now honoured, documented in .env.example, and still fully verified: a missing <url>.sha256 fails with a clear message, and verify_sha256_checksum is given the archive basename so an override URL verifies exactly like the default one.

Testing (run locally against the real script):

  • bash -n clean.
  • archive + dead index -> exits 1 with the message above.
  • NODE_TYPE=ful -> exits 1 with the unsupported-node-type message.
  • archive + BEDROCK_TAR_DOWNLOAD served over python3 -m http.server -> fetch, checksum verify, extract, JWT and initialized flag all succeed (exit 0).
  • same URL with a deliberately wrong .sha256 -> SHA256 verification failed, exit 1.
  • NODE_TYPE=full with no snapshot URL -> skips the download as before.

Pairs with #94 (README marks the indexes decommissioned). Doc-only, so they can merge in either order.

- Reject unknown NODE_TYPE values early. Previously a typo such as
  NODE_TYPE=ful silently fell through and synced from genesis as a
  full node instead of failing.
- Require BEDROCK_DATADIR to be set with a clear error instead of
  failing later inside extract with an empty datadir.
- Remove the unused TORRENTS_DIR and BEDROCK_TMP_PATH variables and
  initialize BEDROCK_TAR_DOWNLOAD so the download block never reads
  an unset variable.
The hosted Gelato snapshot indexes no longer resolve, so NODE_TYPE=archive
died with a curl resolver error and no guidance (inkonchain#68, inkonchain#87).

- split index-fetch failures from "no matching file" so the message says
  what actually happened, and point at NODE_TYPE=full or a custom snapshot
- honour an operator-provided BEDROCK_TAR_DOWNLOAD in archive mode instead
  of overwriting it, and document it in .env.example
- fail clearly when <url>.sha256 is missing, and verify the checksum against
  the archive basename so an override URL verifies the same way
@Alicepoltora Alicepoltora changed the title fix: validate node type and drop dead vars in init-bedrock fix(init-bedrock): validate node type and survive the decommissioned snapshot indexes Oct 5, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant