Skip to content

[Fault Proof] Reference Input No Idx - #473

Open
Drop-Table-Users wants to merge 1 commit into
fp/no-input-idxfrom
fp/no-ref-input-idx
Open

[Fault Proof] Reference Input No Idx#473
Drop-Table-Users wants to merge 1 commit into
fp/no-input-idxfrom
fp/no-ref-input-idx

Conversation

@Drop-Table-Users

@Drop-Table-Users Drop-Table-Users commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

Midgard E2E Run - Preprod Transaction Hashes

Setup / Protocol

Reference Scripts

Block Header Commits

DA Attestation L1 Txs

Confirmed-State Merges

Midgard Invalid Signature Fault Proof - Preprod Transaction Hashes

Faulty L2 Transaction

  • native tx id: 5f2c33bb1492d7cf5102e889fac8e70aa2cbb9e0ce8ba431247dc5798a3fe87c
  • fault: address witness signature at index 0 does not verify against the native transaction id
  • transactions root committed on L1: ec6405a22c595df8ef41ad4672f4ff006c0d3621367fda72e1c8f508ebe7278b

Faulty Block Header

Invalid Signature Fault Proof

Block Removal

Final Verification

  • state queue: headers=[]
  • merge readiness: no_queued_block
  • readyz: ready=true

@Drop-Table-Users Drop-Table-Users changed the title No ref-input-idx WIP [Fault Proof] Reference Input No Idx Jul 30, 2026
@Drop-Table-Users Drop-Table-Users self-assigned this Aug 3, 2026
@Drop-Table-Users
Drop-Table-Users marked this pull request as ready for review August 3, 2026 22:17
colll78 added a commit that referenced this pull request Aug 6, 2026
PR #473 is the only source of the `reference-input-no-idx` chain: unlike the
#469 harvest, nothing of it exists at HEAD, so the whole four-step family is
genuinely new and is taken. It is not taken verbatim — the PR was cut from a
7/29 base whose native-tx commitments the current tree has replaced.

Adapted to the current boundary:

- `onchain/aiken/lib/midgard/fraud-proofs/reference-input-no-idx/step-0{1..4}.ak`
  and the four matching validators. The PR opened its preimages with
  `blake2b_256(codec.encode_native_byte_list(...))`; the current native codec
  commits every collection with `bounded_collection_v1.from_items`, so step-02
  now opens consensus field 1 over `encode_midgard_tx_input` and step-04 opens
  field 2 over `encode_midgard_tx_output`. Step-04's `Args.outputs_preimage`
  is `List<MidgardTxOutput>` rather than the PR's `List<ByteArray>`, matching
  `input-no-idx/step-04.ak`.
- Every step carries a positive and a valid-block-negative selector driven by
  `native_binding_fixture_v1`, mirroring the `input-no-idx` selectors; the PR
  shipped none.
- `demo/midgard-sdk/src/fraud-proof/reference-input-no-idx.ts`: the step-01..04
  datum, state, args, and redeemer schemas, plus the field-1 reference-inputs
  and field-2 outputs commitment helpers, reusing the shared `native.js`
  envelope and the `input-no-idx` canonical encoders.
- `demo/midgard-sdk/src/fraud-proof/contracts.ts`: the
  `REFERENCE_INPUT_NO_IDX_FAULT_PROOF_TITLES` blueprint titles, the
  `referenceInputNoIdx` chain in the blueprint's parameter order, and the
  standalone `buildReferenceInputNoIdxFaultProofContracts` entrypoint.
- `demo/midgard-fault-proofs/src/prepare-reference-input-no-idx.ts` with its
  test, reconciled against the `*V1` core codec names and
  `ROOT_DOMAINS.transactionsV1`, with the PR's cross-branch
  `NriReferenceInputPreimageEntry` import inlined and the outputs artifact
  renamed `outputsPreimageCbor` to say what it holds.

Corrected claim: the PR asserted that steps 02-04 compile to the same UPLC as
`input-no-idx` and that the two chains share those three scripts. Measured
against the current tree, only steps 03 and 04 are shared — `input-no-idx`
step-02 has since grown a Direct/Folding state and a four-constructor args
enum, so step-02 is now distinct. The tests pin 6 distinct applied hashes
across the eight steps, and the whole applied proof surface moves 131 -> 133.

Dropped as stale or out of scope: the PR's `rinx-submit-step-0{1..4}.ts`
builders and the `bin.ts`/`runtime.ts`/`submit-init.ts` wiring they need, its
`catalogue.ts` and `FraudProofs` registration, its always-succeeds blueprint
and docs-site churn, and its `docs/fault-proofs` status edits (two of those
files are parent-owned).

The submit builders are deliberately not landed. They resolve contracts through
`resolveFaultProofDeploymentContracts`, which requires the family to be a
registered `FraudProofCatalogueCategoryName`. That registration is a
deployment-identity change spanning the SDK catalogue order and `FraudProofs`,
midgard-core's `DEPLOYMENT_MANIFEST_V1_CONTRACT_NAMES` and V1 catalogue-category
order, and two hand-pinned catalogue fixtures whose MPF root and per-category
membership proofs must be recomputed.

The Q31 manifest row previously recorded a structural-N/A disposition reducing
the family to validation-trace ResolveInputs, with "zero standalone
reference-input-no-idx family/category inventory" as an expected output and
"standalone Q31 family/category appears" as an invalidation trigger. That
trigger has now fired, so the row is re-derived: it leases the real family
paths, its focusedCommands all resolve, and it records the measured counts and
the submit-step blocker. The ResolveInputs guard is kept as the adjacent
anchor.

Measured: each of `fraud_proofs/reference_input_no_idx/step_0{1..4}` 2/2 under
both the stock v1.1.22 `aiken` and the fork, identical counts, 8 selectors
total; `prepare-reference-input-no-idx.test.ts` 10/10; midgard-sdk
`fault-proof.test.ts` 23/23; `verify-normalized-format` 8/8; `aiken check
--skip-tests` green; `tsc --noEmit` clean for midgard-sdk and
midgard-fault-proofs; manifest quality 0 defects and self-test PASS.
Pre-existing red, unrelated and present at the base commit:
`inspect-contracts.test.ts` catalogue-readiness digest and
`validation-resolver-applied-hashes.test.ts` applied-hash fixture.

Refs #473

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
colll78 added a commit that referenced this pull request Aug 6, 2026
…ation

Records the owner-directed harvest of PRs #469/#473/#474 (supersession
verdicts, adaptations, added on-chain coverage, the shared catalogue-
registration blocker), the 388-validator dual-compiler agreement, the
fresh harvest blueprint aaefc713…, and the passing deposit -> L2 ->
withdrawal journey (1/1, 204.4 s).

Refs #469, #473, #474

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@colll78

colll78 commented Aug 6, 2026

Copy link
Copy Markdown
Collaborator

Harvest record (owner-directed, 2026-08-05, ledgered in 6ec50b0): the reference-input-no-idx family was genuinely new and was harvested onto the Goal branch as commit 2b540c1 with substantive adaptation — preimage openings rebuilt on the current bounded_collection_v1 native codec, step-04 outputs retyped, 8 native_binding_fixture_v1 selectors added (the PR shipped no on-chain tests), and the PR's UPLC-sharing claim corrected by measurement (only steps 03/04 share; step-02 diverged upstream). All 8 modules pass 2/2 under both pinned compilers. Submit builders remain blocked on the catalogue registration (#547). Leaving the PR open for the author's disposition.

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.

2 participants