Tutorial 7 — Connect an App Proof to Cardano
Open an evidence chain in App-Chain Studio
- Level: intermediate to advanced
- Time: about 20 minutes on local devnet
- Outcome: bootstrap a threshold-enforced script anchor, advance it after app blocks finalize, and understand the independent verification chain.
An app-chain finality certificate proves that the configured member threshold approved a block. An L1 anchor makes a later application position durable and discoverable through Cardano. These are related but distinct proofs.
1. Start an anchored local cluster
Section titled “1. Start an anchored local cluster”export YANO_CLUSTER_DIR=/tmp/yano-tutorial-anchor
./yano.sh appchain cluster start 3 \ --anchor-mode script \ --anchor-every 2Script mode uses a thread NFT and a Plutus V3 validator. The local launcher has a deterministic demo anchor seed and can fund it from the self-contained devnet faucet.
2. Bootstrap one chain’s immutable anchor identity
Section titled “2. Bootstrap one chain’s immutable anchor identity”./yano.sh appchain cluster anchor-bootstrap orders-chainBootstrap consumes a seed UTxO, mints the one-shot thread NFT, and creates the genesis datum. It establishes identity; it does not let the wallet alone claim an arbitrary application tip.
Inspect the L1 Anchor card on http://127.0.0.1:7070/ui/app-chain/. It should show the thread policy, script address, wallet, anchored height, transaction, and lag.
3. Produce application progress
Section titled “3. Produce application progress”./yano.sh appchain cluster submit orders-chain audit '{"event":"certificate-issued","id":"C-1"}'./yano.sh appchain cluster submit orders-chain audit '{"event":"certificate-published","id":"C-1"}'./yano.sh appchain cluster submit orders-chain audit '{"event":"certificate-acknowledged","id":"C-1"}'Wait for app finality and the local L1 transaction:
sleep 20./yano.sh appchain cluster status
curl -s \ http://127.0.0.1:7070/api/v1/app-chain/chains/orders-chain/status \ | jq .anchorAll members independently reconcile the authenticated script UTxO from their own L1 view. Node-local “confirmed since restart” counters may differ after a restart; the durable anchored height, transaction, and lag should converge.
4. The independent verification chain
Section titled “4. The independent verification chain”For one application record, a verifier needs:
record/value │ MPF or messages-root proof ▼state root / certified app block │ threshold finality certificate + block hash chain ▼anchored descendant │ exact thread NFT + validator address + inline datum ▼Cardano transaction confirmed by an independent L1 sourceThe checks are:
- Recompute the record/message commitment.
- Verify its MPF or messages-root path against the correct app-block root.
- Verify the app block’s threshold signatures using an independently trusted chain profile.
- When the record predates the anchor, verify the certified block-hash chain to the anchored descendant.
- Fetch the Cardano transaction/UTxO independently.
- Require the expected validator address and state-thread asset.
- Decode the exact inline datum and match chain id, height, block hash, state root, member set, and threshold.
A transaction hash appearing in a Yano JSON response is not, by itself, independent anchor verification.
Metadata versus script anchoring
Section titled “Metadata versus script anchoring”| Property | Metadata | Script |
|---|---|---|
| Setup | Fund wallet | Fund wallet + bootstrap |
| L1 enforcement | Data commitment only | Monotonic thread + threshold member signatures |
| Main safety authority | Anchor wallet | On-chain validator and member threshold |
| Typical use | Low-cost timestamp/discovery | Strong consortium settlement boundary |
Both modes commit application data; only script mode enforces the threshold and monotonic successor rules on chain.
Public test networks
Section titled “Public test networks”For preview or preprod:
- generate a dedicated raw 32-byte anchor seed;
- provide it through the owner-only anchor-key file mechanism;
- fund the printed enterprise address with test ADA;
- use an explicit public-network confirmation before the demo spends; and
- increase cadence/stability settings to match real L1 timing and fees.
Do not reuse a wallet mnemonic, validator member seed, actor signing key, or API key as the anchor wallet.
5. Clean up
Section titled “5. Clean up”./yano.sh appchain cluster cleanunset YANO_CLUSTER_DIRLocal devnet state is disposable. A public script anchor is permanent Cardano history even after local files are deleted.
Go deeper
Section titled “Go deeper”- Follow L1 anchoring §5 for portable evidence bundles and exact trust-context construction.
- Use
EvidenceVerifierandEffectProofVerifierrather than trusting server booleans. - Test L1 rollback and anchor resubmission before a pilot.
- Review the pinned Aiken release artifacts and the Java/julc cross-implementation drift checks before depending on a released script identity.