Skip to content

feat(shadownet): index L2 Michelson deposits - #50

Merged
Wizard1209 merged 1 commit into
masterfrom
feat/shadownet-l2-michelson
Aug 25, 2026
Merged

Wizard1209 merged 1 commit into
masterfrom
feat/shadownet-l2-michelson

Conversation

@Wizard1209

Copy link
Copy Markdown
Member

Etherlink 7.0 activated a Michelson runtime (Tezlink) on shadownet on 2026-08-24 at 14:58:21 UTC,
genesis L2 level 6038916. This gives configs/shadownet.yaml the same four pieces mainnet and
tezosx-shadownet already carry, so tz1-receiver XTZ deposits get indexed there too.

Four additions, mirroring configs/mainnet.yaml:

  • custom.has_michelson_runtime: true — the overlay's custom block replaces the base one, so the
    key is restated here as a literal bool (handlers/alias.py rejects a string).
  • datasource tezos_x_michelson_tzkt — the TzKT over the rollup's Michelson runtime.
  • contract tezos_x_michelson_depositor — TEZLINK_DEPOSITOR, a kernel constant, identical on every
    network.
  • index tezos_x_michelson_deposits — tezos_x.on_michelson_deposit_ophash, bounded by
    L2_MICHELSON_FIRST_LEVEL.

The op-hash derivation carries no in-band version, so it is only valid against the kernel snapshot
its golden vectors pin. Checked directly: shadownet and mainnet both answer tez_kernelVersion with
86a1a4085acd51938923832c202bd799c42f793a — the same kernel, so the pinned derivation holds.

Verified against the live network:

  • RuntimeGateway.originOf answers a decodable tuple on shadownet — has_michelson_runtime: true
    will not raise RuntimeGatewayUnsupportedError and take L1 indexing down.
  • The L2 TzKT answers /v1/protocols/current with 200, and its earliest block is exactly 6038916 —
    so the index's first_level is read off the datasource, not predicted, and sits below its head.
    A first_level above that head freezes the whole indexer silently.
  • make test — 137 passed. make prod-check — PASS, including config export for mainnet,
    shadownet and tezosx-shadownet inside the image.

Deploying a tag whose image predates this drops L2 Michelson indexing silently, so
check-michelson-in-image.sh (in the deployment tree) now takes the network as its second argument
instead of always grepping configs/mainnet.yaml.

Etherlink shadownet activated a Michelson runtime (Tezlink) alongside its
EVM one, so a tz1-receiver XTZ deposit now has an L2 leg that no EVM index
can see: the kernel emits it as a synthetic transaction from TEZLINK_DEPOSITOR
on a chain of its own, reachable only through a TzKT over that runtime.

Same four pieces mainnet carries — `has_michelson_runtime: true` so the
RuntimeGateway precompile classifies EVM addresses, the Michelson TzKT
datasource, the depositor contract, and the deposits index that feeds the
op-hash matcher.

Both new env vars are already passed through by the deployment compose.
`TEZOSX_MICHELSON_TZKT_URL` unreachable at boot is a crash loop, not
degradation — the datasource probes it before the schema is opened.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@Wizard1209
Wizard1209 merged commit 8d2a146 into master Aug 25, 2026
1 check passed
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