From 9a0f2eeeb67243f01a6fa165e5fe381afdfa9ea0 Mon Sep 17 00:00:00 2001 From: Yura Lazarev Date: Wed, 8 Jul 2026 16:21:25 +0200 Subject: [PATCH] submissions(two_party_escrow): re-pin mainnet + preview to the latest accept-path optimization (d078652) Update the Plinth_1.65.0.0_Unisay default and its _preview counterpart to plinth-cape-submissions @d078652. The accept-path pass (compile-time credential compare, fused withdrawal scan, shared TxInfo spine walk, positional adaOf lovelace read, findUniqueE deposit lookup) drops happy-path total_fee 101588->73594 (mainnet changPV, -27.6%) and 83342->62722 (preview van Rossem, -24.7%). All 47 outcomes hold. --- .../Plinth_1.65.0.0_Unisay/metadata.json | 6 +- .../Plinth_1.65.0.0_Unisay/metrics.json | 145 +- .../Plinth_1.65.0.0_Unisay/source/README.md | 18 +- .../two_party_escrow.uplc | 2194 +++++------- .../metadata.json | 6 +- .../metrics.json | 142 +- .../source/README.md | 12 +- .../two_party_escrow.uplc | 3102 ++++++++--------- 8 files changed, 2507 insertions(+), 3118 deletions(-) diff --git a/submissions/two_party_escrow/Plinth_1.65.0.0_Unisay/metadata.json b/submissions/two_party_escrow/Plinth_1.65.0.0_Unisay/metadata.json index 56092f39..51f62aa9 100644 --- a/submissions/two_party_escrow/Plinth_1.65.0.0_Unisay/metadata.json +++ b/submissions/two_party_escrow/Plinth_1.65.0.0_Unisay/metadata.json @@ -16,10 +16,10 @@ } ], "submission": { - "date": "2026-07-08T07:23:46Z", + "date": "2026-07-08T14:14:37Z", "source_available": true, "source_repository": "https://github.com/Unisay/plinth-cape-submissions", - "source_commit_hash": "f9ef6bdf4ed08ec16039600903d8af7e6c22046b", - "implementation_notes": "Two-party escrow validator written in `do`-notation on `Plinth.Validator`, a zero-cost early-termination monad, together with the zero-cost typed decoding DSL `Plinth.Decoder.Named`. `QualifiedDo` keeps `V.do` (decode-or-abort stages) beside `N.do` (Named walk regions); `IxDecoder` tracks the walk cursor in the type via a Peano-indexed fundep class (`FieldAt`), so each `ScriptContext`/datum field is decoded with a single `Constr` walk, and a value that is only compared is never structurally decoded (`Plinth.Encoded`). Retains the escrow security hardening: the escrow input is tied to the script's own payment credential, and the incomplete-withdrawal guard compares the payment credential only (ignoring the staking part). Re-optimised for CAPE metrics schema 2.0.0, whose aggregates cover only the happy-path (accept) measurements. total_fee 311093 to 101588 lovelace (-67.3%); promoted to the default artifact for this line, with the previous asdata implementation retained as Plinth_1.65.0.0_Unisay_asdata. Source: lib/TwoPartyEscrow.hs (+ `lib/Plinth/Validator.hs`, `lib/Plinth/Decoder/Named.hs`, `lib/Plinth/Decoder/Named/ScriptContext.hs`, `lib/Plinth/Encoded.hs`) in plinth-cape-submissions @ f9ef6bdf4ed08ec16039600903d8af7e6c22046b (branch main)." + "source_commit_hash": "d078652f03d31ed728c1fb63f1d9f8824218494c", + "implementation_notes": "Two-party escrow validator written in `do`-notation on `Plinth.Validator`, a zero-cost early-termination monad, together with the zero-cost typed decoding DSL `Plinth.Decoder.Named` (`V.do`/`N.do` via `QualifiedDo`; `IxDecoder`/`FieldAt` Peano-indexed cursor; `Plinth.Encoded` compare-without-decode). Retains the escrow security hardening: the escrow input is tied to the script's own payment credential, and the incomplete-withdrawal guard compares the payment credential only (ignoring the staking part). This round further cuts the accept path: it compares the compile-time script credential instead of locating the own input by out-ref, fuses the withdrawal scan into the seller-payment fold, shares one `TxInfo` spine walk across inputs/outputs/signatories, reads lovelace positionally with `adaOf` instead of an assetAmount key lookup, and locates the single deposit output with `findUniqueE` in one pass. total_fee 101588 to 73594 lovelace (-27.6%, CAPE changPV measurement). The previous asdata implementation stays as Plinth_1.65.0.0_Unisay_asdata. Source: lib/TwoPartyEscrow.hs (+ `lib/Plinth/Validator.hs`, `lib/Plinth/Decoder/Named.hs`, `lib/Plinth/Decoder/Named/ScriptContext.hs`, `lib/Plinth/Encoded.hs`) in plinth-cape-submissions @ d078652f03d31ed728c1fb63f1d9f8824218494c (branch main)." } } diff --git a/submissions/two_party_escrow/Plinth_1.65.0.0_Unisay/metrics.json b/submissions/two_party_escrow/Plinth_1.65.0.0_Unisay/metrics.json index 6727f408..66836d16 100644 --- a/submissions/two_party_escrow/Plinth_1.65.0.0_Unisay/metrics.json +++ b/submissions/two_party_escrow/Plinth_1.65.0.0_Unisay/metrics.json @@ -1,83 +1,83 @@ { "evaluations": [ { - "cpu_units": 26183226, + "cpu_units": 17262689, "description": "Deposit with buyer signature and exactly 75 ADA should succeed", "execution_result": "success", "included_in_aggregates": true, - "memory_units": 69411, + "memory_units": 47483, "name": "deposit_successful" }, { - "cpu_units": 36885524, + "cpu_units": 21066127, "description": "Accept with seller signature and 75 ADA to seller should succeed", "execution_result": "success", "included_in_aggregates": true, - "memory_units": 91434, + "memory_units": 53810, "name": "accept_successful" }, { - "cpu_units": 36885524, + "cpu_units": 21066127, "description": "Accept with multiple script inputs (ambiguous state - expects pass)", "execution_result": "success", "included_in_aggregates": true, - "memory_units": 91434, + "memory_units": 53810, "name": "accept_with_multiple_inputs" }, { - "cpu_units": 36885524, + "cpu_units": 21066127, "description": "Accept with datum attached to seller's payment (expects pass)", "execution_result": "success", "included_in_aggregates": true, - "memory_units": 91434, + "memory_units": 53810, "name": "accept_with_datum_attached" }, { - "cpu_units": 48602311, + "cpu_units": 26875359, "description": "Accept with payment split across two outputs to seller (50+25 ADA - expects pass)", "execution_result": "success", "included_in_aggregates": true, - "memory_units": 115264, + "memory_units": 63556, "name": "accept_with_multiple_outputs_to_seller" }, { - "cpu_units": 32280683, + "cpu_units": 23276107, "description": "Refund after deadline with buyer signature should succeed", "execution_result": "success", "included_in_aggregates": true, - "memory_units": 83118, + "memory_units": 63126, "name": "refund_successful" }, { - "cpu_units": 32280683, + "cpu_units": 23276107, "description": "Refund exactly 1 second after deadline expiry should succeed", "execution_result": "success", "included_in_aggregates": true, - "memory_units": 83118, + "memory_units": 63126, "name": "refund_after_exact_deadline" }, { - "cpu_units": 32280683, + "cpu_units": 23276107, "description": "Refund with multiple script inputs should succeed (no single input validation)", "execution_result": "success", "included_in_aggregates": true, - "memory_units": 83118, + "memory_units": 63126, "name": "refund_with_multiple_inputs" }, { - "cpu_units": 32280683, + "cpu_units": 23276107, "description": "Refund with datum attached to buyer's output should succeed", "execution_result": "success", "included_in_aggregates": true, - "memory_units": 83118, + "memory_units": 63126, "name": "refund_with_datum_attached" }, { - "cpu_units": 41114658, + "cpu_units": 27559794, "description": "Refund split across two outputs to buyer (50+25 ADA) should succeed", "execution_result": "success", "included_in_aggregates": true, - "memory_units": 101758, + "memory_units": 71470, "name": "refund_with_multiple_outputs_to_buyer" }, { @@ -153,83 +153,83 @@ "name": "simple_builtin_data_redeemer_0" }, { - "cpu_units": 7669457, + "cpu_units": 7568249, "description": "Deposit without buyer signature should fail", "execution_result": "success", "included_in_aggregates": false, - "memory_units": 21099, + "memory_units": 21097, "name": "deposit_without_buyer_signature" }, { - "cpu_units": 16949378, + "cpu_units": 9376709, "description": "Deposit with buyer signature but wrong amount (50 ADA) should fail", "execution_result": "success", "included_in_aggregates": false, - "memory_units": 41591, + "memory_units": 21194, "name": "deposit_with_incorrect_amount" }, { - "cpu_units": 8937714, + "cpu_units": 4024157, "description": "Deposit fails when ADA goes to pubkey address instead of script", "execution_result": "success", "included_in_aggregates": false, - "memory_units": 21165, + "memory_units": 1032, "name": "deposit_to_wrong_address" }, { - "cpu_units": 9521521, + "cpu_units": 6486992, "description": "Accept operation fails when seller signature is missing", "execution_result": "success", "included_in_aggregates": false, - "memory_units": 21805, + "memory_units": 21227, "name": "accept_without_seller_signature" }, { - "cpu_units": 47002311, + "cpu_units": 23659359, "description": "Accept operation fails with wrong payment amount (50 ADA instead of 75 ADA)", "execution_result": "success", "included_in_aggregates": false, - "memory_units": 105264, + "memory_units": 43456, "name": "accept_with_incorrect_payment_amount" }, { - "cpu_units": 1770967, + "cpu_units": 1687817, "description": "Accept operation fails when payment goes to impostor address instead of seller", "execution_result": "success", "included_in_aggregates": false, - "memory_units": 712, + "memory_units": 680, "name": "accept_with_payment_to_wrong_address" }, { - "cpu_units": 1770967, + "cpu_units": 1687817, "description": "Accept operation without valid deposit UTXO (should fail - invalid escrow state)", "execution_result": "success", "included_in_aggregates": false, - "memory_units": 712, + "memory_units": 680, "name": "accept_without_prior_deposit" }, { - "cpu_units": 1770967, + "cpu_units": 1687817, "description": "Accept with only 50 ADA payment to seller (insufficient - expects fail)", "execution_result": "success", "included_in_aggregates": false, - "memory_units": 712, + "memory_units": 680, "name": "accept_with_partial_payment_to_seller" }, { - "cpu_units": 1770967, + "cpu_units": 1687817, "description": "Accept with 100 ADA payment to seller (excess amount - expects fail due to exact validation)", "execution_result": "success", "included_in_aggregates": false, - "memory_units": 712, + "memory_units": 680, "name": "accept_with_excess_payment_to_seller" }, { - "cpu_units": 1770967, + "cpu_units": 1687817, "description": "Accept while leaving funds in script (should fail - incomplete withdrawal)", "execution_result": "success", "included_in_aggregates": false, - "memory_units": 712, + "memory_units": 680, "name": "accept_with_remaining_script_output" }, { @@ -337,11 +337,11 @@ "name": "refund_after_accept_should_fail" }, { - "cpu_units": 2065832, + "cpu_units": 1982682, "description": "Accept attempt after buyer has already refunded should fail (state validation)", "execution_result": "success", "included_in_aggregates": false, - "memory_units": 778, + "memory_units": 746, "name": "accept_after_refund_should_fail" }, { @@ -353,19 +353,19 @@ "name": "double_refund_should_fail" }, { - "cpu_units": 2065832, + "cpu_units": 1982682, "description": "Multiple accept attempts should fail (double spending prevention)", "execution_result": "success", "included_in_aggregates": false, - "memory_units": 778, + "memory_units": 746, "name": "double_accept_should_fail" }, { - "cpu_units": 24325280, + "cpu_units": 15644743, "description": "Deposit with no upper bound (+inf) should fail; the upper bound must be finite to record the deposit time safely", "execution_result": "success", "included_in_aggregates": false, - "memory_units": 62783, + "memory_units": 42355, "name": "deposit_infinite_upper_bound" }, { @@ -381,43 +381,42 @@ "evaluator": "PlutusTx.Eval-1.45.0.0" }, "measurements": { - "block_cpu_budget_pct": 0.1215057775, - "block_memory_budget_pct": 0.18590967741935485, + "block_cpu_budget_pct": 0.068899485, + "block_memory_budget_pct": 0.1152741935483871, "cpu_units": { - "maximum": 48602311, - "median": 34583103, - "minimum": 26183226, - "sum": 355679499 + "maximum": 27559794, + "median": 23276107, + "minimum": 17262689, + "sum": 228000651 }, "excluded": { "count": 37, "cpu_units": { - "maximum": 47002311, - "sum": 167625741 + "maximum": 23659359, + "sum": 119398239 }, "memory_units": { - "maximum": 105264, - "sum": 331921 + "maximum": 43456, + "sum": 208351 } }, - "execution_fee_lovelace": 77183, + "execution_fee_lovelace": 50854, "memory_units": { - "maximum": 115264, - "median": 87276, - "minimum": 69411, - "sum": 893207 - }, - "reference_script_fee_lovelace": 24405, - "script_size_bytes": 1627, - "scripts_per_block": 537, - "scripts_per_tx": 121, - "term_size": 1188, - "total_fee_lovelace": 101588, - "tx_cpu_budget_pct": 0.48602311, - "tx_memory_budget_pct": 0.8233142857142858 + "maximum": 71470, + "median": 63126, + "minimum": 47483, + "sum": 596443 + }, + "reference_script_fee_lovelace": 22740, + "script_size_bytes": 1516, + "scripts_per_block": 867, + "scripts_per_tx": 195, + "term_size": 1059, + "total_fee_lovelace": 73594, + "tx_cpu_budget_pct": 0.27559794, + "tx_memory_budget_pct": 0.5105000000000001 }, "scenario": "two_party_escrow", - "timestamp": "2026-07-08T07:23:46Z", - "version": "2.0.0", - "notes": "Generated using UPLC-CAPE measure tool" + "timestamp": "2026-07-08T14:20:29Z", + "version": "2.0.0" } diff --git a/submissions/two_party_escrow/Plinth_1.65.0.0_Unisay/source/README.md b/submissions/two_party_escrow/Plinth_1.65.0.0_Unisay/source/README.md index cc627a56..e6db9c25 100644 --- a/submissions/two_party_escrow/Plinth_1.65.0.0_Unisay/source/README.md +++ b/submissions/two_party_escrow/Plinth_1.65.0.0_Unisay/source/README.md @@ -1,28 +1,32 @@ -# two_party_escrow Plinth 1.65.0.0 source +# two_party_escrow Plinth 1.65.0.0 (monadic) source **Repository**: **Branch**: `main` -**Commit**: `f9ef6bdf4ed08ec16039600903d8af7e6c22046b` +**Commit**: `d078652f03d31ed728c1fb63f1d9f8824218494c` **Path**: `lib/TwoPartyEscrow.hs` (+ `lib/Plinth/Validator.hs`, `lib/Plinth/Decoder/Named.hs`, `lib/Plinth/Decoder/Named/ScriptContext.hs`, `lib/Plinth/Encoded.hs`) -Two-party escrow validator written in `do`-notation on `Plinth.Validator`, a zero-cost early-termination monad, together with the zero-cost typed decoding DSL `Plinth.Decoder.Named`. `QualifiedDo` keeps `V.do` (decode-or-abort stages) beside `N.do` (Named walk regions); `IxDecoder` tracks the walk cursor in the type via a Peano-indexed fundep class (`FieldAt`), so each `ScriptContext`/datum field is decoded with a single `Constr` walk, and a value that is only compared is never structurally decoded (`Plinth.Encoded`). Retains the escrow security hardening: the escrow input is tied to the script's own payment credential, and the incomplete-withdrawal guard compares the payment credential only (ignoring the staking part). Re-optimised for CAPE metrics schema 2.0.0 (happy-path aggregates only): total_fee 311093 to 101588 lovelace (-67.3%), promoted to the default for this line. +The monadic two-party escrow validator; see the submission `metadata.json` for the accept-path optimization list. This is the default artifact for the mainnet 1.65.0.0 line. ## Reproducing the compilation ```bash git clone https://github.com/Unisay/plinth-cape-submissions cd plinth-cape-submissions -git checkout f9ef6bdf4ed08ec16039600903d8af7e6c22046b +git checkout d078652f03d31ed728c1fb63f1d9f8824218494c ``` -`CAPE_REPO` must point at the sibling UPLC-CAPE checkout (build aborts if unset); set it in `.envrc.local` (gitignored). Then: +`CAPE_REPO` must point at the sibling UPLC-CAPE checkout; the build aborts if the variable is unset. The recommended place is `.envrc.local` (gitignored), e.g.: + +```sh +export CAPE_REPO="$HOME/src/UPLC-CAPE" +``` + +Then enter the dev shell and run the generator: ```bash nix develop cabal run plinth-submissions ``` - -The generator writes `$CAPE_REPO/submissions/two_party_escrow/Plinth_1.65.0.0_Unisay/two_party_escrow.uplc` (monadic is the default on `main`; the previous asdata implementation is retained as `Plinth_1.65.0.0_Unisay_asdata`). diff --git a/submissions/two_party_escrow/Plinth_1.65.0.0_Unisay/two_party_escrow.uplc b/submissions/two_party_escrow/Plinth_1.65.0.0_Unisay/two_party_escrow.uplc index 7a84390e..926f31a5 100644 --- a/submissions/two_party_escrow/Plinth_1.65.0.0_Unisay/two_party_escrow.uplc +++ b/submissions/two_party_escrow/Plinth_1.65.0.0_Unisay/two_party_escrow.uplc @@ -22,14 +22,14 @@ forced-4 (lam forced-5 - (lam - ctxData-6 - [ - (lam - s-7 - [ + [ + (lam + seen-6 + [ + (lam + go-7 (lam - a-8 + ctxData-8 [ (lam s-9 @@ -38,22 +38,22 @@ a-10 [ (lam - a-11 + s-11 [ (lam - action-12 + a-12 [ (lam - foldE-13 + a-13 [ (lam - lovelaceOf-14 + action-14 [ (lam - anyE-15 + lovelaceOf-15 [ (lam - findE-16 + anyE-16 [ (force (case @@ -69,7 +69,7 @@ 0 ) ] - action-12 + action-14 ] (delay (lam @@ -95,7 +95,7 @@ 0 [ [ - anyE-15 + anyE-16 (lam v-23 [ @@ -133,11 +133,11 @@ [ (lam nt-24 - [ - (lam - ds-25 + (lam + eta-25 + [ (lam - eta-26 + n-26 (force (case (constr @@ -145,114 +145,71 @@ [ [ (builtin - lessThanInteger + equalsInteger ) (con integer - 0 + 75000000 ) ] - (case - ds-25 - (lam - scriptOuts-27 - scriptOuts-27 - ) - ) + [ + lovelaceOf-15 + nt-24 + ] ] (delay [ - (lam - n-28 - (force - (case - (constr - 0 - [ - [ - (builtin - lessThanInteger - ) - (case - ds-25 - (lam - scriptOuts-29 - scriptOuts-29 - ) - ) - ] - (con - integer - 2 - ) - ] - (delay - [ - n-28 - eta-26 - ] - ) - (delay - (error + n-26 + eta-25 + ] + ) + (delay + (error - ) + ) + ) + ) + forced-2 + ) + ) + ) + [ + (lam + nt-27 + (lam + eta-28 + [ + (lam + cse-29 + (force + (case + (constr + 0 + [ + [ + (builtin + equalsInteger ) - ) - forced-2 - ) - ) - ) - [ - (lam - nt-30 - (lam - eta-31 + (con + integer + 2 + ) + ] + [ + forced-0 + cse-29 + ] + ] + (delay [ (lam - n-32 - (force - (case - (constr - 0 - [ - [ - (builtin - equalsInteger - ) - (con - integer - 75000000 - ) - ] - [ - lovelaceOf-14 - nt-30 - ] - ] - (delay - [ - n-32 - eta-31 - ] - ) - (delay - (error - - ) - ) - ) - forced-2 - ) - ) - ) - [ - (lam - nt-33 + s-30 + [ (lam - eta-34 + a-31 [ (lam - cse-35 + depositTime-32 (force (case (constr @@ -264,265 +221,194 @@ ) (con integer - 2 + 0 ) ] [ forced-0 - cse-35 + [ + (builtin + unConstrData + ) + a-31 + ] ] ] (delay - [ - (lam - s-36 - [ - (lam - a-37 + (force + (case + (constr + 0 + [ + [ + (builtin + equalsInteger + ) + [ + (builtin + unIData + ) + depositTime-32 + ] + ] [ (lam - depositTime-38 - (force - (case - (constr - 0 - [ - [ - (builtin - equalsInteger - ) - (con - integer - 0 - ) - ] - [ - forced-0 + cse-33 + [ + (lam + cse-34 + (force + (case + (constr + 0 [ - (builtin - unConstrData - ) - a-37 + [ + (builtin + equalsInteger + ) + (con + integer + 1 + ) + ] + [ + forced-0 + cse-34 + ] ] - ] - ] - (delay - (force - (case - (constr - 0 - [ - [ - (builtin - equalsInteger - ) - [ - (builtin - unIData - ) - depositTime-38 - ] - ] - [ - (lam - cse-39 - [ - (lam - cse-40 - (force - (case - (constr - 0 - [ - [ - (builtin - equalsInteger - ) - (con - integer - 1 - ) - ] - [ - forced-0 - cse-40 - ] - ] - (delay - [ - (lam - t-41 - (force - (case - (constr - 0 - [ - [ - (builtin - equalsInteger - ) - (con - integer - 1 - ) - ] - [ - forced-0 - [ - (builtin - unConstrData - ) - [ - forced-4 - [ - forced-1 - cse-39 - ] - ] - ] - ] - ] - (delay - t-41 - ) - (delay - [ - [ - (builtin - addInteger - ) - (con - integer - -1 - ) - ] - t-41 - ] - ) - ) - forced-2 - ) - ) - ) - [ - (builtin - unIData - ) - [ - forced-4 - [ - forced-3 - cse-40 - ] - ] - ] - ] - ) - (delay - (error - - ) - ) - ) - forced-2 - ) - ) - ) + (delay + [ + (lam + t-35 + (force + (case + (constr + 0 [ - (builtin - unConstrData - ) [ - forced-4 - cse-39 + (builtin + equalsInteger + ) + (con + integer + 1 + ) ] - ] - ] - ) - [ - forced-3 - [ - (builtin - unConstrData - ) - [ - forced-4 [ - forced-1 + forced-0 [ - forced-3 + (builtin + unConstrData + ) [ - (builtin - unConstrData - ) - a-20 + forced-4 + [ + forced-1 + cse-33 + ] ] ] ] ] - ] + (delay + t-35 + ) + (delay + [ + [ + (builtin + addInteger + ) + (con + integer + -1 + ) + ] + t-35 + ] + ) + ) + forced-2 + ) + ) + ) + [ + (builtin + unIData + ) + [ + forced-4 + [ + forced-3 + cse-34 ] ] ] - (delay - [ - eta-34 - (constr - 0 - ) - ] - ) - (delay - (error + ] + ) + (delay + (error - ) - ) ) - forced-2 ) ) - ) - (delay - (error - - ) + forced-2 ) ) - forced-2 ) - ) + [ + (builtin + unConstrData + ) + [ + forced-4 + cse-33 + ] + ] + ] ) [ - forced-4 + forced-3 [ - forced-1 - s-36 + (builtin + unConstrData + ) + [ + forced-4 + [ + forced-1 + [ + forced-3 + [ + (builtin + unConstrData + ) + a-20 + ] + ] + ] + ] ] ] ] - ) - [ - forced-4 - s-36 ] - ] - ) - [ - forced-3 - [ - (builtin - unConstrData - ) - [ - forced-4 + (delay [ - forced-3 - cse-35 + eta-28 + (constr + 0 + ) ] - ] - ] - ] - ] + ) + (delay + (error + + ) + ) + ) + forced-2 + ) + ) ) (delay (error @@ -535,168 +421,89 @@ ) ) [ - (builtin - unConstrData - ) - nt-33 - ] - ] - ) - ) - [ - forced-4 - [ - forced-1 - [ - forced-1 - [ - forced-3 + forced-4 [ - (builtin - unConstrData - ) - nt-30 + forced-1 + s-30 ] ] ] + ) + [ + forced-4 + s-30 ] ] - ] - ] - ) - ) - (case - (constr - 0 - (con - string - "No script outputs created" - ) - (lam - o-42 + ) [ + forced-3 [ (builtin - equalsData + unConstrData ) - (con - data - (Constr 0 - [ Constr 1 - [ B #31313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131 ] - , Constr 1 - [ ] ]) - ) - ] - [ - forced-4 [ - forced-3 + forced-4 [ - (builtin - unConstrData - ) - o-42 + forced-3 + cse-29 ] ] ] ] - ) - nt-24 + ] ) - findE-16 - ) - ] - ] - ) - (delay - (error + (delay + (error - ) - ) - ) - forced-2 - ) - ) - ) - ) - (constr - 0 - (case - (constr - 0 - (lam - n-43 - (lam - o-44 - (force - (case - (constr - 0 - [ - [ - (builtin - equalsData - ) - (con - data - (Constr 0 - [ Constr 1 - [ B #31313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131 ] - , Constr 1 - [ ] ]) ) - ] - [ - forced-4 - [ - forced-3 - [ - (builtin - unConstrData - ) - o-44 - ] - ] - ] - ] - (delay - [ - [ - (builtin - addInteger - ) - (con - integer - 1 - ) - ] - n-43 - ] - ) - (delay - n-43 + ) ) + forced-2 ) - forced-2 ) ) - ) - ) - (con - integer - 0 + [ + (builtin + unConstrData + ) + nt-27 + ] + ] ) - nt-24 ) - foldE-13 - ) - ) - ] + [ + forced-4 + [ + forced-1 + [ + forced-1 + [ + forced-3 + [ + (builtin + unConstrData + ) + nt-24 + ] + ] + ] + ] + ] + ] + ] + ) ) [ - forced-4 - cse-18 + go-7 + [ + (builtin + unListData + ) + [ + forced-4 + cse-18 + ] + ] ] ] ] @@ -744,7 +551,7 @@ (builtin unConstrData ) - a-8 + a-10 ] ] ] @@ -755,10 +562,10 @@ (delay [ (lam - lovelacePaidTo-45 + foldE-36 [ (lam - isEscrowInput-46 + isEscrowInput-37 (force (case (constr @@ -773,60 +580,58 @@ 1 ) ] - action-12 + action-14 ] (delay (lam - eta-47 - [ - (lam - s-48 - [ - (lam - a-49 - (force - (case - (constr - 0 + eta-38 + (force + (case + (constr + 0 + [ + [ + (builtin + equalsInteger + ) + (con + integer + 0 + ) + ] + [ + forced-0 + [ + (builtin + unConstrData + ) + [ + forced-4 [ + forced-3 [ (builtin - equalsInteger - ) - (con - integer - 0 + unConstrData ) - ] - [ - forced-0 [ - (builtin - unConstrData - ) + forced-4 [ - forced-4 + forced-3 [ - forced-3 + (builtin + unConstrData + ) [ - (builtin - unConstrData - ) + forced-4 [ - forced-4 + forced-1 [ forced-3 [ (builtin unConstrData ) - [ - forced-4 - [ - forced-1 - s-48 - ] - ] + a-13 ] ] ] @@ -836,362 +641,305 @@ ] ] ] - (delay + ] + ] + ] + ] + (delay + [ + (lam + s-39 + [ + (lam + a-40 [ (lam - cse-50 + s-41 [ (lam - cse-51 - [ - (lam - a-52 - [ - (lam - n-53 - (force - (case - (constr - 0 + a-42 + (force + (case + (constr + 0 + [ + [ + anyE-16 + (lam + v-43 + [ + [ + (builtin + equalsData + ) + (con + data + (B #bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb) + ) + ] + v-43 + ] + ) + ] + [ + forced-4 + [ + forced-1 + [ + forced-1 [ + forced-1 [ - anyE-15 - (lam - v-54 + forced-1 + [ + forced-1 [ - [ - (builtin - equalsData - ) - (con - data - (B #bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb) - ) - ] - v-54 + forced-1 + s-41 ] - ) + ] ] - a-52 ] - (delay - [ - n-53 - eta-47 - ] - ) - (delay - (error + ] + ] + ] + ] + (delay + [ + (lam + n-44 + (force + (case + (constr + 0 + [ + [ + anyE-16 + isEscrowInput-37 + ] + a-40 + ] + (delay + [ + n-44 + eta-38 + ] + ) + (delay + (error + ) + ) ) + forced-2 ) ) - forced-2 ) - ) - ) - [ - (lam - nt-55 [ (lam - nt-56 - [ - (lam - nt-57 - (lam - eta-58 - (force - (case - (constr - 0 - (case - (constr - 0 - [ - [ - anyE-15 - (lam - o-59 - [ - [ - (builtin - equalsData - ) - [ - forced-4 - [ - forced-3 - [ - (builtin - unConstrData - ) - [ - forced-4 - [ - forced-3 - [ - (builtin - unConstrData - ) - o-59 - ] - ] - ] - ] - ] - ] - ] - nt-56 - ] - ) - ] - nt-57 - ] - (con - bool - False - ) - (con - bool - True - ) - ) - forced-2 + paidToSeller-45 + (lam + eta-46 + (force + (case + (constr + 0 + [ + [ + (builtin + equalsInteger ) - (delay - (force - (case - (constr - 0 - [ - [ - anyE-15 - isEscrowInput-46 - ] - nt-55 - ] - (delay - (force - (case - (constr - 0 - [ - [ - (builtin - equalsInteger - ) - (con - integer - 75000000 - ) - ] - [ - [ - lovelacePaidTo-45 - (con - data - (Constr 0 - [ B #bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb ]) - ) - ] - nt-57 - ] - ] - (delay - [ - eta-58 - (constr - 0 - ) - ] - ) - (delay - (error - - ) - ) - ) - forced-2 - ) - ) - ) - (delay - (error - - ) - ) - ) - forced-2 - ) - ) + (con + integer + 75000000 ) - (delay - (error - - ) + ] + paidToSeller-45 + ] + (delay + [ + eta-46 + (constr + 0 ) + ] + ) + (delay + (error + ) - forced-2 ) ) + forced-2 ) ) - [ - forced-4 - cse-51 - ] - ] + ) ) - [ - forced-4 - [ - forced-3 - [ - (builtin - unConstrData - ) - [ - forced-4 + (case + (constr + 0 + (lam + acc-47 + (lam + o-48 [ - forced-3 - [ - (builtin - unConstrData - ) - [ - forced-4 - [ - forced-1 - [ - forced-3 + (lam + nt-49 + (force + (case + (constr + 0 [ - (builtin - unConstrData + [ + (builtin + equalsData + ) + (con + data + (Constr 1 + [ B #31313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131 ]) + ) + ] + nt-49 + ] + (delay + (error + ) - (case - (constr - 0 - (con - string - "Own input not found" - ) - (lam - i-60 + ) + (delay + (force + (case + (constr + 0 [ [ (builtin equalsData ) + (con + data + (Constr 0 + [ B #bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb ]) + ) + ] + nt-49 + ] + (delay + [ [ - forced-4 - [ - forced-3 - [ - (builtin - unConstrData - ) - i-60 - ] - ] + (builtin + addInteger + ) + acc-47 + ] + [ + lovelaceOf-15 + o-48 ] ] - a-49 - ] + ) + (delay + acc-47 + ) ) - nt-55 + forced-2 ) - findE-16 ) + ) + ) + forced-2 + ) + ) + ) + [ + forced-4 + [ + forced-3 + [ + (builtin + unConstrData + ) + [ + forced-4 + [ + forced-3 + [ + (builtin + unConstrData + ) + o-48 + ] ] ] ] ] ] ] - ] - ] - ] - ] + ) + ) + (con + integer + 0 + ) + a-42 + ) + foldE-36 + ) ] - ) - [ - forced-4 - cse-50 ] - ] - ] + ) + (delay + (error + + ) + ) + ) + forced-2 ) - [ - forced-4 - [ - forced-1 - [ - forced-1 - [ - forced-1 - [ - forced-1 - [ - forced-1 - [ - forced-1 - cse-51 - ] - ] - ] - ] - ] - ] - ] - ] + ) ) [ - forced-1 - [ - forced-1 - cse-50 - ] + forced-4 + s-41 ] ] ) [ - forced-3 + forced-1 [ - (builtin - unConstrData - ) - a-8 + forced-1 + s-39 ] ] ] ) - (delay - (error - - ) - ) - ) - forced-2 + [ + forced-4 + s-39 + ] + ] ) + [ + forced-3 + [ + (builtin + unConstrData + ) + a-10 + ] + ] + ] + ) + (delay + (error + ) ) - [ - forced-4 - s-48 - ] - ] + ) + forced-2 ) - [ - forced-3 - [ - (builtin - unConstrData - ) - a-11 - ] - ] - ] + ) ) ) (delay @@ -1209,14 +957,14 @@ 2 ) ] - action-12 + action-14 ] (delay (lam - eta-61 + eta-50 [ (lam - cse-62 + cse-51 (force (case (constr @@ -1239,7 +987,7 @@ ) [ forced-4 - cse-62 + cse-51 ] ] ] @@ -1247,25 +995,25 @@ (delay [ (lam - cse-63 + cse-52 [ (lam - cse-64 + cse-53 [ (lam - s-65 + s-54 [ (lam - a-66 + a-55 (force (case (constr 0 [ [ - anyE-15 + anyE-16 (lam - v-67 + v-56 [ [ (builtin @@ -1276,7 +1024,7 @@ (B #aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa) ) ] - v-67 + v-56 ] ) ] @@ -1284,17 +1032,17 @@ forced-4 [ forced-1 - s-65 + s-54 ] ] ] (delay [ (lam - a-68 + a-57 [ (lam - n-69 + n-58 (force (case (constr @@ -1318,16 +1066,16 @@ (builtin unIData ) - a-68 + a-57 ] ] ] [ (lam - cse-70 + cse-59 [ (lam - cse-71 + cse-60 (force (case (constr @@ -1344,13 +1092,13 @@ ] [ forced-0 - cse-71 + cse-60 ] ] (delay [ (lam - t-72 + t-61 (force (case (constr @@ -1375,14 +1123,14 @@ forced-4 [ forced-1 - cse-70 + cse-59 ] ] ] ] ] (delay - t-72 + t-61 ) (delay [ @@ -1395,7 +1143,7 @@ 1 ) ] - t-72 + t-61 ] ) ) @@ -1411,7 +1159,7 @@ forced-4 [ forced-3 - cse-71 + cse-60 ] ] ] @@ -1433,7 +1181,7 @@ ) [ forced-4 - cse-70 + cse-59 ] ] ] @@ -1452,7 +1200,7 @@ (builtin unConstrData ) - a-66 + a-55 ] ] ] @@ -1462,8 +1210,8 @@ ] (delay [ - n-69 - eta-61 + n-58 + eta-50 ] ) (delay @@ -1478,19 +1226,19 @@ ) [ (lam - nt-73 + nt-62 (lam - eta-74 + eta-63 (force (case (constr 0 [ [ - anyE-15 - isEscrowInput-46 + anyE-16 + isEscrowInput-37 ] - nt-73 + nt-62 ] (delay (force @@ -1507,24 +1255,90 @@ 75000000 ) ] - [ - [ - lovelacePaidTo-45 + (case + (constr + 0 + (lam + acc-64 + (lam + o-65 + (force + (case + (constr + 0 + [ + [ + (builtin + equalsData + ) + (con + data + (Constr 0 + [ B #aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ]) + ) + ] + [ + forced-4 + [ + forced-3 + [ + (builtin + unConstrData + ) + [ + forced-4 + [ + forced-3 + [ + (builtin + unConstrData + ) + o-65 + ] + ] + ] + ] + ] + ] + ] + (delay + [ + [ + (builtin + addInteger + ) + acc-64 + ] + [ + lovelaceOf-15 + o-65 + ] + ] + ) + (delay + acc-64 + ) + ) + forced-2 + ) + ) + ) + ) (con - data - (Constr 0 - [ B #aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ]) + integer + 0 ) - ] - [ - forced-4 - cse-64 - ] - ] + [ + forced-4 + cse-53 + ] + ) + foldE-36 + ) ] (delay [ - eta-74 + eta-63 (constr 0 ) @@ -1553,7 +1367,7 @@ ) [ forced-4 - cse-63 + cse-52 ] ] ] @@ -1562,7 +1376,7 @@ forced-4 [ forced-1 - cse-62 + cse-51 ] ] ] @@ -1579,7 +1393,7 @@ ) [ forced-4 - s-65 + s-54 ] ] ) @@ -1593,7 +1407,7 @@ forced-1 [ forced-1 - cse-64 + cse-53 ] ] ] @@ -1605,7 +1419,7 @@ forced-1 [ forced-1 - cse-63 + cse-52 ] ] ] @@ -1616,7 +1430,7 @@ (builtin unConstrData ) - a-8 + a-10 ] ] ] @@ -1655,7 +1469,7 @@ (builtin unConstrData ) - a-11 + a-13 ] ] ] @@ -1684,10 +1498,10 @@ ) ) (lam - i-75 + i-66 [ (lam - nt-76 + nt-67 (force (case (constr @@ -1719,7 +1533,7 @@ (builtin unConstrData ) - nt-76 + nt-67 ] ] ] @@ -1739,8 +1553,8 @@ ) ] [ - lovelaceOf-14 - nt-76 + lovelaceOf-15 + nt-67 ] ] ) @@ -1765,7 +1579,7 @@ (builtin unConstrData ) - i-75 + i-66 ] ] ] @@ -1775,402 +1589,162 @@ ] ) (lam - cred-77 - (lam - outputs-78 - (case - (constr - 0 + f-68 + [ + (lam + go-69 + (lam + z-70 + (lam + ds-71 + [ + [ + go-69 + z-70 + ] + [ + (builtin + unListData + ) + ds-71 + ] + ] + ) + ) + ) + [ + (lam + s-72 + [ + s-72 + s-72 + ] + ) + (lam + s-73 (lam - acc-79 + acc-74 (lam - o-80 + xs-75 (force (case (constr 0 - [ - [ - (builtin - equalsData - ) - [ - forced-4 - [ - forced-3 - [ - (builtin - unConstrData - ) - [ - forced-4 - [ - forced-3 - [ - (builtin - unConstrData - ) - o-80 - ] - ] - ] - ] - ] - ] - ] - cred-77 - ] + xs-75 (delay - [ - [ - (builtin - addInteger - ) - acc-79 - ] - [ - lovelaceOf-14 - o-80 - ] - ] + acc-74 ) (delay - acc-79 - ) - ) - forced-2 - ) - ) - ) - ) - (con - integer - 0 - ) - outputs-78 - ) - foldE-13 - ) - ) - ) - ] - ) - ) - forced-2 - ) - ) - (lam - ds-81 - (con unit ()) - ) - ] - ) - (lam - msg-82 - (lam - p-83 - [ - (lam - go-84 - (lam - ds-85 - [ - go-84 - [ - (builtin - unListData - ) - ds-85 - ] - ] - ) - ) - [ - (lam - s-86 - [ s-86 s-86 ] - ) - (lam - s-87 - (lam - xs-88 - [ - (force - (case - (constr - 0 - xs-88 - (delay - (lam - ds-89 - (error - - ) - ) - ) - (delay - [ - (lam - x-90 - [ - (lam - xs-91 - (lam - ds-92 - (force (case (constr 0 + s-73 [ - p-83 - x-90 - ] - (delay - x-90 - ) - (delay [ - [ - s-87 - s-87 - ] - xs-91 + f-68 + acc-74 ] - ) + [ + forced-4 + xs-75 + ] + ] + [ + forced-1 + xs-75 + ] ) - forced-2 + s-73 ) ) ) - ) - [ - forced-1 - xs-88 - ] - ] - ) - [ - forced-4 - xs-88 - ] - ] - ) - ) - forced-5 - ) - ) - (constr 0) - ] - ) - ) - ] - ] - ) - ) - ] - ) - (lam - p-93 - [ - (lam - go-94 - (lam - ds-95 - [ - go-94 - [ - (builtin - unListData - ) - ds-95 - ] - ] - ) - ) - [ - (lam - s-96 [ s-96 s-96 ] - ) - (lam - s-97 - (lam - xs-98 - (force - (case - (constr - 0 - xs-98 - (delay - (con - bool - False - ) - ) - (delay - [ - (lam - h-99 - [ - (lam - t-100 - (force - (case - (constr - 0 - [ - p-93 - h-99 - ] - (delay - (con - bool - True - ) - ) - (delay - [ - [ - s-97 - s-97 - ] - t-100 - ] + forced-5 ) ) - forced-2 ) ) ) - [ - forced-1 - xs-98 - ] ] - ) - [ - forced-4 - xs-98 ] - ] - ) + ) + ] ) - forced-5 ) + forced-2 ) ) - ) - ] - ] - ) - ] - ) - (lam - o-101 - [ - (lam - v-102 - [ - (lam - cse-103 - [ - [ - cse-103 - [ - cse-103 - (lam - ds-104 - [ - (builtin - unIData - ) - ds-104 - ] - ) - ] - ] - v-102 + (lam + ds-76 + (con unit ()) + ) ] ) (lam - found-105 + p-77 [ (lam - go-106 + go-78 (lam - ds-107 + ds-79 [ - go-106 + go-78 [ (builtin - unMapData + unListData ) - ds-107 + ds-79 ] ] ) ) [ (lam - s-108 - [ s-108 s-108 ] + s-80 + [ s-80 s-80 ] ) (lam - s-109 + s-81 (lam - xs-110 + xs-82 (force (case (constr 0 - xs-110 + xs-82 (delay (con - integer - 0 + bool + False ) ) (delay [ (lam - h-111 + h-83 [ (lam - t-112 + t-84 (force (case (constr 0 [ - [ - (builtin - equalsData - ) - (con - data - (B #) - ) - ] - [ - forced-0 - h-111 - ] + p-77 + h-83 ] (delay - [ - found-105 - [ - forced-3 - h-111 - ] - ] + (con + bool + True + ) ) (delay [ [ - s-109 - s-109 + s-81 + s-81 ] - t-112 + t-84 ] ) ) @@ -2180,13 +1754,13 @@ ) [ forced-1 - xs-110 + xs-82 ] ] ) [ forced-4 - xs-110 + xs-82 ] ] ) @@ -2201,111 +1775,227 @@ ) ] ) - [ - forced-4 + (lam + o-85 [ - forced-1 + (builtin unIData) [ forced-3 [ - (builtin - unConstrData - ) - o-101 + forced-4 + [ + (builtin + unMapData + ) + [ + forced-3 + [ + forced-4 + [ + (builtin + unMapData + ) + [ + forced-4 + [ + forced-1 + [ + forced-3 + [ + (builtin + unConstrData + ) + o-85 + ] + ] + ] + ] + ] + ] + ] + ] ] ] ] - ] + ) ] ) + [ (builtin unIData) a-12 ] ] ) + [ forced-4 [ forced-1 s-11 ] ] + ] + ) + [ forced-4 s-11 ] + ] + ) + [ forced-1 s-9 ] + ] + ) + [ forced-4 s-9 ] + ] + ) + [ forced-3 [ (builtin unConstrData) ctxData-8 ] ] + ] + ) + ) + [ + (lam s-86 [ s-86 s-86 ]) + (lam + s-87 + (lam + xs-88 + [ + (force + (case + (constr + 0 + xs-88 + (delay (lam ds-89 (error))) + (delay + [ + (lam + x-90 + [ (lam - f-113 - [ - (lam - go-114 - (lam - z-115 - (lam - ds-116 + xs-91 + (lam + ds-92 + (force + (case + (constr + 0 [ - [ go-114 z-115 ] [ - (builtin unListData) - ds-116 + (builtin equalsData) + (con + data + (Constr 0 + [ Constr 1 + [ B #31313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131 ] + , Constr 1 [] ]) + ) + ] + [ + forced-4 + [ + forced-3 + [ + (builtin + unConstrData + ) + x-90 + ] + ] ] ] + (delay + [ + [ seen-6 x-90 ] xs-91 + ] + ) + (delay + [ [ s-87 s-87 ] xs-91 ] + ) ) + forced-2 ) ) + ) + ) + [ forced-1 xs-88 ] + ] + ) + [ forced-4 xs-88 ] + ] + ) + ) + forced-5 + ) + ) + (constr 0) + ] + ) + ) + ] + ] + ) + [ + (lam s-93 [ s-93 s-93 ]) + (lam + s-94 + (lam + found-95 + (lam + xs-96 + (force + (case + (constr + 0 + xs-96 + (delay found-95) + (delay + [ + (lam + h-97 + [ + (lam + t-98 + (force + (case + (constr + 0 [ - (lam s-117 [ s-117 s-117 ]) - (lam - s-118 - (lam - acc-119 - (lam - xs-120 - (force - (case - (constr - 0 - xs-120 - (delay acc-119) - (delay - (case - (constr - 0 - s-118 - [ - [ - f-113 - acc-119 - ] - [ - forced-4 - xs-120 - ] - ] - [ - forced-1 - xs-120 - ] - ) - s-118 - ) - ) - ) - forced-5 - ) - ) - ) + [ + (builtin equalsData) + (con + data + (Constr 0 + [ Constr 1 + [ B #31313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131 ] + , Constr 1 [] ]) ) - ) + ] + [ + forced-4 + [ + forced-3 + [ + (builtin unConstrData) + h-97 + ] + ] + ] ] - ] + (delay (error)) + (delay + (case + (constr + 0 s-94 found-95 t-98 + ) + s-94 + ) + ) + ) + forced-2 ) - ] + ) ) - [ (builtin unIData) a-10 ] + [ forced-1 xs-96 ] ] ) - [ forced-4 [ forced-1 s-9 ] ] + [ forced-4 xs-96 ] ] ) - [ forced-4 s-9 ] - ] + ) + forced-5 ) - [ forced-1 s-7 ] - ] + ) ) - [ forced-4 s-7 ] - ] + ) ) - [ forced-3 [ (builtin unConstrData) ctxData-6 ] ] ] - ) + ] ) ) ) diff --git a/submissions/two_party_escrow/Plinth_1.65.0.0_Unisay_preview/metadata.json b/submissions/two_party_escrow/Plinth_1.65.0.0_Unisay_preview/metadata.json index ac128835..52f2123c 100644 --- a/submissions/two_party_escrow/Plinth_1.65.0.0_Unisay_preview/metadata.json +++ b/submissions/two_party_escrow/Plinth_1.65.0.0_Unisay_preview/metadata.json @@ -17,10 +17,10 @@ } ], "submission": { - "date": "2026-07-08T11:39:07Z", + "date": "2026-07-08T14:14:37Z", "source_available": true, "source_repository": "https://github.com/Unisay/plinth-cape-submissions", - "source_commit_hash": "6b75b5a3fe1cf56b195cc4222cf939a2812cee78", - "implementation_notes": "Compiled with Plinth 1.65.0.0 and BuiltinCasing enabled (preview line; requires plutus-core >= 1.65 \u2014 not yet on mainnet). This build additionally emits the batch-6 `dropList` builtin (van Rossem protocol version) for cursor gaps of three or more fields in the typed decoder, replacing the chained `tailList` induction with a single call whose term size does not grow with the gap; the emission is PREVIEW-gated (same track as BuiltinCasing), so the production build stays byte-identical. Source: `lib/TwoPartyEscrow.hs` (+ `lib/Plinth/Decoder.hs`, `lib/Plinth/Decoder/Named.hs`) in plinth-cape-submissions @ 6b75b5a3fe1cf56b195cc4222cf939a2812cee78." + "source_commit_hash": "d078652f03d31ed728c1fb63f1d9f8824218494c", + "implementation_notes": "Compiled with Plinth 1.65.0.0 and BuiltinCasing enabled (preview line; requires plutus-core >= 1.65 \u2014 not yet on mainnet). Emits the batch-6 `dropList` builtin for cursor gaps of three or more fields in the typed decoder (PREVIEW-gated, so the production build stays byte-identical). This round further cuts the accept path: it compares the compile-time script credential instead of locating the own input by out-ref, fuses the withdrawal scan into the seller-payment fold, shares one `TxInfo` spine walk across inputs/outputs/signatories, reads lovelace positionally with `adaOf` instead of an assetAmount key lookup, and locates the single deposit output with `findUniqueE` in one pass. total_fee 83342 to 62722 lovelace (-24.7%). Source: lib/TwoPartyEscrow.hs (+ `lib/Plinth/Decoder.hs`, `lib/Plinth/Decoder/Named.hs`, `lib/Plinth/Encoded.hs`) in plinth-cape-submissions @ d078652f03d31ed728c1fb63f1d9f8824218494c." } } diff --git a/submissions/two_party_escrow/Plinth_1.65.0.0_Unisay_preview/metrics.json b/submissions/two_party_escrow/Plinth_1.65.0.0_Unisay_preview/metrics.json index 99cb4037..da329bf7 100644 --- a/submissions/two_party_escrow/Plinth_1.65.0.0_Unisay_preview/metrics.json +++ b/submissions/two_party_escrow/Plinth_1.65.0.0_Unisay_preview/metrics.json @@ -1,83 +1,83 @@ { "evaluations": [ { - "cpu_units": 18669291, + "cpu_units": 12376202, "description": "Deposit with buyer signature and exactly 75 ADA should succeed", "execution_result": "success", "included_in_aggregates": true, - "memory_units": 57020, + "memory_units": 41281, "name": "deposit_successful" }, { - "cpu_units": 26011481, + "cpu_units": 15595881, "description": "Accept with seller signature and 75 ADA to seller should succeed", "execution_result": "success", "included_in_aggregates": true, - "memory_units": 74636, + "memory_units": 47547, "name": "accept_successful" }, { - "cpu_units": 26011481, + "cpu_units": 15595881, "description": "Accept with multiple script inputs (ambiguous state - expects pass)", "execution_result": "success", "included_in_aggregates": true, - "memory_units": 74636, + "memory_units": 47547, "name": "accept_with_multiple_inputs" }, { - "cpu_units": 26011481, + "cpu_units": 15595881, "description": "Accept with datum attached to seller's payment (expects pass)", "execution_result": "success", "included_in_aggregates": true, - "memory_units": 74636, + "memory_units": 47547, "name": "accept_with_datum_attached" }, { - "cpu_units": 34187110, + "cpu_units": 20133248, "description": "Accept with payment split across two outputs to seller (50+25 ADA - expects pass)", "execution_result": "success", "included_in_aggregates": true, - "memory_units": 92990, + "memory_units": 56335, "name": "accept_with_multiple_outputs_to_seller" }, { - "cpu_units": 22989728, + "cpu_units": 17120156, "description": "Refund after deadline with buyer signature should succeed", "execution_result": "success", "included_in_aggregates": true, - "memory_units": 70440, + "memory_units": 57664, "name": "refund_successful" }, { - "cpu_units": 22989728, + "cpu_units": 17120156, "description": "Refund exactly 1 second after deadline expiry should succeed", "execution_result": "success", "included_in_aggregates": true, - "memory_units": 70440, + "memory_units": 57664, "name": "refund_after_exact_deadline" }, { - "cpu_units": 22989728, + "cpu_units": 17120156, "description": "Refund with multiple script inputs should succeed (no single input validation)", "execution_result": "success", "included_in_aggregates": true, - "memory_units": 70440, + "memory_units": 57664, "name": "refund_with_multiple_inputs" }, { - "cpu_units": 22989728, + "cpu_units": 17120156, "description": "Refund with datum attached to buyer's output should succeed", "execution_result": "success", "included_in_aggregates": true, - "memory_units": 70440, + "memory_units": 57664, "name": "refund_with_datum_attached" }, { - "cpu_units": 29164385, + "cpu_units": 20288027, "description": "Refund split across two outputs to buyer (50+25 ADA) should succeed", "execution_result": "success", "included_in_aggregates": true, - "memory_units": 85165, + "memory_units": 65551, "name": "refund_with_multiple_outputs_to_buyer" }, { @@ -153,83 +153,83 @@ "name": "simple_builtin_data_redeemer_0" }, { - "cpu_units": 6173634, + "cpu_units": 2872426, "description": "Deposit without buyer signature should fail", "execution_result": "success", "included_in_aggregates": false, - "memory_units": 20684, + "memory_units": 682, "name": "deposit_without_buyer_signature" }, { - "cpu_units": 10828899, + "cpu_units": 4507075, "description": "Deposit with buyer signature but wrong amount (50 ADA) should fail", "execution_result": "success", "included_in_aggregates": false, - "memory_units": 20851, + "memory_units": 715, "name": "deposit_with_incorrect_amount" }, { - "cpu_units": 7124980, + "cpu_units": 2737377, "description": "Deposit fails when ADA goes to pubkey address instead of script", "execution_result": "success", "included_in_aggregates": false, - "memory_units": 20684, + "memory_units": 650, "name": "deposit_to_wrong_address" }, { - "cpu_units": 6933041, + "cpu_units": 4836422, "description": "Accept operation fails when seller signature is missing", "execution_result": "success", "included_in_aggregates": false, - "memory_units": 21164, + "memory_units": 20811, "name": "accept_without_seller_signature" }, { - "cpu_units": 32523110, + "cpu_units": 17861248, "description": "Accept operation fails with wrong payment amount (50 ADA instead of 75 ADA)", "execution_result": "success", "included_in_aggregates": false, - "memory_units": 82590, + "memory_units": 42135, "name": "accept_with_incorrect_payment_amount" }, { - "cpu_units": 1050901, + "cpu_units": 967751, "description": "Accept operation fails when payment goes to impostor address instead of seller", "execution_result": "success", "included_in_aggregates": false, - "memory_units": 582, + "memory_units": 550, "name": "accept_with_payment_to_wrong_address" }, { - "cpu_units": 1050901, + "cpu_units": 967751, "description": "Accept operation without valid deposit UTXO (should fail - invalid escrow state)", "execution_result": "success", "included_in_aggregates": false, - "memory_units": 582, + "memory_units": 550, "name": "accept_without_prior_deposit" }, { - "cpu_units": 1050901, + "cpu_units": 967751, "description": "Accept with only 50 ADA payment to seller (insufficient - expects fail)", "execution_result": "success", "included_in_aggregates": false, - "memory_units": 582, + "memory_units": 550, "name": "accept_with_partial_payment_to_seller" }, { - "cpu_units": 1050901, + "cpu_units": 967751, "description": "Accept with 100 ADA payment to seller (excess amount - expects fail due to exact validation)", "execution_result": "success", "included_in_aggregates": false, - "memory_units": 582, + "memory_units": 550, "name": "accept_with_excess_payment_to_seller" }, { - "cpu_units": 1050901, + "cpu_units": 967751, "description": "Accept while leaving funds in script (should fail - incomplete withdrawal)", "execution_result": "success", "included_in_aggregates": false, - "memory_units": 582, + "memory_units": 550, "name": "accept_with_remaining_script_output" }, { @@ -337,11 +337,11 @@ "name": "refund_after_accept_should_fail" }, { - "cpu_units": 1127822, + "cpu_units": 1044672, "description": "Accept attempt after buyer has already refunded should fail (state validation)", "execution_result": "success", "included_in_aggregates": false, - "memory_units": 615, + "memory_units": 583, "name": "accept_after_refund_should_fail" }, { @@ -353,19 +353,19 @@ "name": "double_refund_should_fail" }, { - "cpu_units": 1127822, + "cpu_units": 1044672, "description": "Multiple accept attempts should fail (double spending prevention)", "execution_result": "success", "included_in_aggregates": false, - "memory_units": 615, + "memory_units": 583, "name": "double_accept_should_fail" }, { - "cpu_units": 15823330, + "cpu_units": 8842241, "description": "Deposit with no upper bound (+inf) should fail; the upper bound must be finite to record the deposit time safely", "execution_result": "success", "included_in_aggregates": false, - "memory_units": 41558, + "memory_units": 21519, "name": "deposit_infinite_upper_bound" }, { @@ -381,42 +381,42 @@ "evaluator": "PlutusTx.Eval-1.65.0.0" }, "measurements": { - "block_cpu_budget_pct": 0.085467775, - "block_memory_budget_pct": 0.14998387096774193, + "block_cpu_budget_pct": 0.0507200675, + "block_memory_budget_pct": 0.10572741935483872, "cpu_units": { - "maximum": 34187110, - "median": 24500604, - "minimum": 18669291, - "sum": 252014141 + "maximum": 20288027, + "median": 17120156, + "minimum": 12376202, + "sum": 168065744 }, "excluded": { "count": 37, "cpu_units": { - "maximum": 32523110, - "sum": 111892497 + "maximum": 17861248, + "sum": 73560242 }, "memory_units": { - "maximum": 82590, - "sum": 261940 + "maximum": 42135, + "sum": 140697 } }, - "execution_fee_lovelace": 60917, + "execution_fee_lovelace": 43072, "memory_units": { - "maximum": 92990, - "median": 72538, - "minimum": 57020, - "sum": 740843 - }, - "reference_script_fee_lovelace": 22425, - "script_size_bytes": 1495, - "scripts_per_block": 666, - "scripts_per_tx": 150, - "term_size": 1086, - "total_fee_lovelace": 83342, - "tx_cpu_budget_pct": 0.3418711, - "tx_memory_budget_pct": 0.6642142857142856 + "maximum": 65551, + "median": 56999, + "minimum": 41281, + "sum": 536464 + }, + "reference_script_fee_lovelace": 19650, + "script_size_bytes": 1310, + "scripts_per_block": 945, + "scripts_per_tx": 213, + "term_size": 955, + "total_fee_lovelace": 62722, + "tx_cpu_budget_pct": 0.20288027, + "tx_memory_budget_pct": 0.4682214285714286 }, "scenario": "two_party_escrow", - "timestamp": "2026-07-08T11:39:44Z", + "timestamp": "2026-07-08T14:20:29Z", "version": "2.0.0" } diff --git a/submissions/two_party_escrow/Plinth_1.65.0.0_Unisay_preview/source/README.md b/submissions/two_party_escrow/Plinth_1.65.0.0_Unisay_preview/source/README.md index 8615d542..1f0ecffc 100644 --- a/submissions/two_party_escrow/Plinth_1.65.0.0_Unisay_preview/source/README.md +++ b/submissions/two_party_escrow/Plinth_1.65.0.0_Unisay_preview/source/README.md @@ -4,18 +4,18 @@ **Branch**: `main` -**Commit**: `6b75b5a3fe1cf56b195cc4222cf939a2812cee78` +**Commit**: `d078652f03d31ed728c1fb63f1d9f8824218494c` -**Path**: `lib/TwoPartyEscrow.hs` (decoder DSL: `lib/Plinth/Decoder.hs`, `lib/Plinth/Decoder/Named.hs`) +**Path**: `lib/TwoPartyEscrow.hs` (+ `lib/Plinth/Decoder.hs`, `lib/Plinth/Decoder/Named.hs`, `lib/Plinth/Encoded.hs`) -This submission compiles `lib/TwoPartyEscrow.hs` from the Plinth source repository with the Plinth (plutus-tx-plugin) 1.65.0.0 line and the BuiltinCasing preview flag enabled. The preview build also emits the batch-6 `dropList` builtin for cursor gaps of three or more fields in the typed decoder: a single `dropList` call replaces the chained `tailList` steps and its term size does not grow with the gap. `dropList` is only accepted from the van Rossem protocol version, so the emission is gated to the preview build (the production build keeps the pure `tailList` induction and stays byte-identical). Requires `plutus-core >= 1.65.0.0` (not yet on mainnet). +The preview build of the monadic two-party escrow validator: BuiltinCasing plus the dropList decoder step, requiring `plutus-core >= 1.65.0.0` (not yet on mainnet). ## Reproducing the compilation ```bash git clone https://github.com/Unisay/plinth-cape-submissions cd plinth-cape-submissions -git checkout 6b75b5a3fe1cf56b195cc4222cf939a2812cee78 +git checkout d078652f03d31ed728c1fb63f1d9f8824218494c ``` `CAPE_REPO` must point at the sibling UPLC-CAPE checkout; the build aborts if the variable is unset. The recommended place is `.envrc.local` (gitignored), e.g.: @@ -24,11 +24,9 @@ git checkout 6b75b5a3fe1cf56b195cc4222cf939a2812cee78 export CAPE_REPO="$HOME/src/UPLC-CAPE" ``` -Then enter the dev shell and run the generator with the preview flag: +Then enter the dev shell and run the generatorTrue: ```bash nix develop cabal run --flags=preview plinth-submissions ``` - -The produced UPLC writes to `$CAPE_REPO/submissions/two_party_escrow/Plinth_1.65.0.0_Unisay_preview/two_party_escrow.uplc` and matches the UPLC in this submission. diff --git a/submissions/two_party_escrow/Plinth_1.65.0.0_Unisay_preview/two_party_escrow.uplc b/submissions/two_party_escrow/Plinth_1.65.0.0_Unisay_preview/two_party_escrow.uplc index d32fe64b..b8a06624 100644 --- a/submissions/two_party_escrow/Plinth_1.65.0.0_Unisay_preview/two_party_escrow.uplc +++ b/submissions/two_party_escrow/Plinth_1.65.0.0_Unisay_preview/two_party_escrow.uplc @@ -13,468 +13,564 @@ forced-1 (lam forced-2 - (lam - ctxData-3 - [ - (lam - s-4 - [ - (lam - a-5 - [ + [ + (lam + p-3 + [ + (lam + seen-4 + [ + (lam + go-5 (lam - s-6 + ctxData-6 [ (lam - a-7 + s-7 [ (lam a-8 [ (lam - action-9 + s-9 [ (lam - foldE-10 + a-10 [ (lam - lovelaceOf-11 + a-11 [ (lam - anyE-12 + action-12 [ (lam - findE-13 + lovelaceOf-13 [ - (case - [ - [ - (builtin - equalsInteger - ) - (con integer 0) - ] - action-9 - ] + (lam + anyE-14 [ - (lam - escrowDatum-14 + (case + [ + [ + (builtin + equalsInteger + ) + (con integer 0) + ] + action-12 + ] [ (lam - lovelacePaidTo-15 + escrowDatum-15 [ (lam - isEscrowInput-16 - (case - [ - [ - (builtin - equalsInteger - ) - (con - integer - 1 - ) - ] - action-9 - ] - (case - [ + foldE-16 + [ + (lam + isEscrowInput-17 + (case [ - (builtin - equalsInteger - ) - (con - integer - 2 - ) + [ + (builtin + equalsInteger + ) + (con + integer + 1 + ) + ] + action-12 ] - action-9 - ] - (error) - (lam - eta-17 - [ + (case [ - escrowDatum-14 [ - forced-1 + (builtin + equalsInteger + ) + (con + integer + 2 + ) + ] + action-12 + ] + (error + + ) + (lam + eta-18 + [ [ - forced-0 - (case + escrowDatum-15 + [ + forced-1 [ - (builtin - unConstrData + forced-0 + (case + [ + (builtin + unConstrData + ) + a-11 + ] + (lam + l-19 + (lam + r-20 + r-20 + ) + ) ) - a-8 ] - (lam - l-18 - (lam - r-19 - r-19 - ) - ) - ) + ] ] - ] - ] - (lam - a-20 - [ - (case - a-20 - (lam - state-21 - (lam - datumEsc-22 + (lam + a-21 + [ + (case + a-21 (lam - eta-23 - (case - [ - [ - (builtin - equalsInteger - ) - (con - integer - 0 - ) - ] + state-22 + (lam + datumEsc-23 + (lam + eta-24 (case [ - (builtin - unConstrData + [ + (builtin + equalsInteger + ) + (con + integer + 0 + ) + ] + (case + [ + (builtin + unConstrData + ) + state-22 + ] + (lam + l-25 + (lam + r-26 + l-25 + ) + ) ) - state-21 ] - (lam - l-24 - (lam - r-25 - l-24 - ) - ) - ) - ] - (error + (error - ) - [ - (lam - cse-26 + ) [ (lam - s-27 + cse-27 [ (lam - a-28 - (case - [ - [ - anyE-12 - (lam - v-29 + s-28 + [ + (lam + a-29 + (case + [ + [ + anyE-14 + (lam + v-30 + [ + [ + (builtin + equalsData + ) + (con + data + (B #aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa) + ) + ] + v-30 + ] + ) + ] [ + forced-1 [ - (builtin - equalsData - ) - (con - data - (B #aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa) - ) + forced-0 + s-28 ] - v-29 ] - ) - ] - [ - forced-1 - [ - forced-0 - s-27 ] - ] - ] - (error + (error - ) - [ - (lam - a-30 + ) [ (lam - n-31 - (case - [ - [ - (builtin - lessThanInteger - ) + a-31 + [ + (lam + n-32 + (case [ [ (builtin - addInteger - ) - (con - integer - 1800 - ) - ] - [ - (builtin - unIData + lessThanInteger ) - a-30 + [ + [ + (builtin + addInteger + ) + (con + integer + 1800 + ) + ] + [ + (builtin + unIData + ) + a-31 + ] + ] ] - ] - ] - [ - (lam - cse-32 [ (lam cse-33 - (case - [ - [ - (builtin - equalsInteger - ) - (con - integer - 1 - ) - ] + [ + (lam + cse-34 (case - cse-33 - (lam - l-34 - (lam - r-35 - l-34 - ) - ) - ) - ] - (error - - ) - [ - (lam - t-36 - (case + [ [ - [ - (builtin - equalsInteger - ) - (con - integer - 1 - ) - ] - (case - [ - (builtin - unConstrData - ) - [ - forced-1 - [ - forced-0 - (case - cse-32 - (lam - l-37 - (lam - r-38 - r-38 - ) - ) - ) - ] - ] - ] - (lam - l-39 - (lam - r-40 - l-39 - ) - ) + (builtin + equalsInteger + ) + (con + integer + 1 ) ] - [ - [ - (builtin - addInteger - ) - (con - integer - 1 - ) - ] - t-36 - ] - t-36 - ) - ) - [ - (builtin - unIData - ) - [ - forced-1 (case - cse-33 + cse-34 (lam - l-41 + l-35 (lam - r-42 - r-42 + r-36 + l-35 ) ) ) ] - ] - ] - ) - ) - [ - (builtin - unConstrData - ) - [ - forced-1 - (case - cse-32 - (lam - l-43 - (lam - r-44 - r-44 + (error + ) - ) + [ + (lam + t-37 + (case + [ + [ + (builtin + equalsInteger + ) + (con + integer + 1 + ) + ] + (case + [ + (builtin + unConstrData + ) + [ + forced-1 + [ + forced-0 + (case + cse-33 + (lam + l-38 + (lam + r-39 + r-39 + ) + ) + ) + ] + ] + ] + (lam + l-40 + (lam + r-41 + l-40 + ) + ) + ) + ] + [ + [ + (builtin + addInteger + ) + (con + integer + 1 + ) + ] + t-37 + ] + t-37 + ) + ) + [ + (builtin + unIData + ) + [ + forced-1 + (case + cse-34 + (lam + l-42 + (lam + r-43 + r-43 + ) + ) + ) + ] + ] + ] + ) ) + [ + (builtin + unConstrData + ) + [ + forced-1 + (case + cse-33 + (lam + l-44 + (lam + r-45 + r-45 + ) + ) + ) + ] + ] ] - ] - ] - ) - [ - (builtin - unConstrData - ) - [ - forced-1 - (case + ) + [ + (builtin + unConstrData + ) [ - (builtin - unConstrData + forced-1 + (case + [ + (builtin + unConstrData + ) + a-29 + ] + (lam + l-46 + (lam + r-47 + r-47 + ) + ) ) - a-28 ] - (lam - l-45 - (lam - r-46 - r-46 - ) - ) - ) - ] - ] - ] - ] - (error - - ) - [ - n-31 - eta-23 - ] - ) - ) - [ - (lam - nt-47 - (lam - eta-48 - (case - [ - [ - anyE-12 - isEscrowInput-16 + ] ] - nt-47 ] (error ) - (case - [ - [ - (builtin - equalsInteger - ) - (con - integer - 75000000 - ) - ] + [ + n-32 + eta-24 + ] + ) + ) + [ + (lam + nt-48 + (lam + eta-49 + (case [ [ - lovelacePaidTo-15 - (con - data - (Constr 0 - [ B #aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ]) - ) + anyE-14 + isEscrowInput-17 ] + nt-48 + ] + (error + + ) + (case [ - forced-1 [ - forced-0 - [ - forced-0 - (case - cse-26 + (builtin + equalsInteger + ) + (con + integer + 75000000 + ) + ] + (case + (constr + 0 + (lam + acc-50 (lam - l-49 - (lam - r-50 - r-50 + o-51 + (case + [ + [ + (builtin + equalsData + ) + (con + data + (Constr 0 + [ B #aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ]) + ) + ] + [ + forced-1 + (case + [ + (builtin + unConstrData + ) + [ + forced-1 + (case + [ + (builtin + unConstrData + ) + o-51 + ] + (lam + l-52 + (lam + r-53 + r-53 + ) + ) + ) + ] + ] + (lam + l-54 + (lam + r-55 + r-55 + ) + ) + ) + ] + ] + acc-50 + [ + [ + (builtin + addInteger + ) + acc-50 + ] + [ + lovelaceOf-13 + o-51 + ] + ] ) ) ) - ] - ] + (con + integer + 0 + ) + [ + forced-1 + [ + forced-0 + [ + forced-0 + (case + cse-27 + (lam + l-56 + (lam + r-57 + r-57 + ) + ) + ) + ] + ] + ] + ) + foldE-16 + ) ] - ] - ] - (error + (error - ) - [ - eta-48 - (constr - 0 + ) + [ + eta-49 + (constr + 0 + ) + ] ) - ] + ) ) ) - ) - ) + [ + forced-1 + (case + cse-27 + (lam + l-58 + (lam + r-59 + r-59 + ) + ) + ) + ] + ] + ] + ) + [ + forced-1 [ - forced-1 + forced-0 (case - cse-26 + [ + (builtin + unConstrData + ) + datumEsc-23 + ] (lam - l-51 + l-60 (lam - r-52 - r-52 + r-61 + r-61 ) ) ) @@ -482,150 +578,138 @@ ] ] ) - [ - forced-1 - [ - forced-0 - (case - [ - (builtin - unConstrData - ) - datumEsc-22 - ] - (lam - l-53 - (lam - r-54 - r-54 - ) - ) - ) - ] - ] + ) + [ + forced-1 + s-28 ] - ) + ] ) [ - forced-1 - s-27 + [ + forced-2 + (con + integer + 7 + ) + ] + (case + cse-27 + (lam + l-62 + (lam + r-63 + r-63 + ) + ) + ) ] ] ) [ - [ - forced-2 - (con - integer - 7 - ) - ] - (case - cse-26 - (lam - l-55 - (lam - r-56 - r-56 - ) - ) + (builtin + unConstrData ) + a-8 ] ] ) - [ - (builtin - unConstrData - ) - a-5 - ] - ] + ) ) ) ) - ) + eta-18 + ] ) - eta-17 ] ) - ] - ) - ) - (lam - eta-57 - [ + ) (lam - s-58 + eta-64 [ - (lam - a-59 + [ + escrowDatum-15 [ + forced-1 [ - escrowDatum-14 - [ - forced-1 + forced-0 + (case [ - forced-0 - s-58 + (builtin + unConstrData + ) + a-11 ] - ] + (lam + l-65 + (lam + r-66 + r-66 + ) + ) + ) ] - (lam - a-60 - [ - (case - a-60 + ] + ] + (lam + a-67 + [ + (case + a-67 + (lam + state-68 + (lam + ds-69 (lam - state-61 - (lam - ds-62 - (lam - eta-63 + eta-70 + (case + [ + [ + (builtin + equalsInteger + ) + (con + integer + 0 + ) + ] (case [ - [ - (builtin - equalsInteger - ) - (con - integer - 0 - ) - ] - (case - [ - (builtin - unConstrData - ) - state-61 - ] - (lam - l-64 - (lam - r-65 - l-64 - ) - ) + (builtin + unConstrData ) + state-68 ] - (error - + (lam + l-71 + (lam + r-72 + l-71 + ) ) + ) + ] + (error + + ) + [ + (lam + s-73 [ (lam - cse-66 + a-74 [ (lam - a-67 + s-75 [ (lam - n-68 + a-76 (case [ [ - anyE-12 + anyE-14 (lam - v-69 + v-77 [ [ (builtin @@ -636,451 +720,250 @@ (B #bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb) ) ] - v-69 + v-77 ] ) ] - a-67 + [ + forced-1 + [ + [ + forced-2 + (con + integer + 6 + ) + ] + s-75 + ] + ] ] (error ) - [ - n-68 - eta-63 - ] - ) - ) - [ - (lam - nt-70 [ (lam - nt-71 - [ + n-78 + (case + [ + [ + anyE-14 + isEscrowInput-17 + ] + a-74 + ] + (error + + ) + [ + n-78 + eta-70 + ] + ) + ) + [ + (lam + paidToSeller-79 (lam - nt-72 + eta-80 + (case + [ + [ + (builtin + equalsInteger + ) + (con + integer + 75000000 + ) + ] + paidToSeller-79 + ] + (error + + ) + [ + eta-80 + (constr + 0 + ) + ] + ) + ) + ) + (case + (constr + 0 (lam - eta-73 - (case + acc-81 + (lam + o-82 [ - [ - anyE-12 - (lam - o-74 + (lam + nt-83 + (case [ [ (builtin equalsData ) + (con + data + (Constr 1 + [ B #31313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131 ]) + ) + ] + nt-83 + ] + (case + [ [ - forced-1 - (case - [ - (builtin - unConstrData - ) - [ - forced-1 - (case - [ - (builtin - unConstrData - ) - o-74 - ] - (lam - l-75 - (lam - r-76 - r-76 - ) - ) - ) - ] - ] - (lam - l-77 - (lam - r-78 - r-78 - ) - ) + (builtin + equalsData + ) + (con + data + (Constr 0 + [ B #bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb ]) ) ] + nt-83 ] - nt-71 - ] - ) - ] - nt-72 - ] - (case - [ - [ - anyE-12 - isEscrowInput-16 - ] - nt-70 - ] - (error - - ) - (case - [ - [ - (builtin - equalsInteger - ) - (con - integer - 75000000 - ) - ] - [ + acc-81 [ - lovelacePaidTo-15 - (con - data - (Constr 0 - [ B #bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb ]) - ) + [ + (builtin + addInteger + ) + acc-81 + ] + [ + lovelaceOf-13 + o-82 + ] ] - nt-72 - ] - ] - (error - - ) - [ - eta-73 - (constr - 0 ) - ] - ) - ) - (error + (error - ) - ) - ) - ) - [ - forced-1 - [ - forced-0 - [ - forced-0 - (case - cse-66 - (lam - l-79 - (lam - r-80 - r-80 + ) ) ) - ) - ] - ] - ] - ] - ) - [ - forced-1 - (case - [ - (builtin - unConstrData - ) - [ - forced-1 - (case - [ - (builtin - unConstrData - ) [ forced-1 - [ - forced-0 - (case + (case + [ + (builtin + unConstrData + ) [ - (builtin - unConstrData - ) + forced-1 (case - (constr - 0 - (con - string - "Own input not found" + [ + (builtin + unConstrData ) + o-82 + ] + (lam + l-84 (lam - i-81 - [ - [ - (builtin - equalsData - ) - [ - forced-1 - (case - [ - (builtin - unConstrData - ) - i-81 - ] - (lam - l-82 - (lam - r-83 - r-83 - ) - ) - ) - ] - ] - a-59 - ] + r-85 + r-85 ) - nt-70 ) - findE-13 ) ] + ] + (lam + l-86 (lam - l-84 - (lam - r-85 - r-85 - ) + r-87 + r-87 ) ) - ] + ) ] ] - (lam - l-86 - (lam - r-87 - r-87 - ) - ) ) - ] - ] - (lam - l-88 - (lam - r-89 - r-89 ) + (con + integer + 0 + ) + a-76 ) + foldE-16 ) ] ] ) - [ - forced-1 - (case - cse-66 - (lam - l-90 - (lam - r-91 - r-91 - ) - ) - ) - ] + ) + [ + forced-1 + s-75 ] ] ) [ - forced-1 + forced-0 [ - [ - forced-2 - (con - integer - 8 - ) - ] - (case - cse-66 - (lam - l-92 - (lam - r-93 - r-93 - ) - ) - ) + forced-0 + s-73 ] ] ] ) [ - (builtin - unConstrData - ) - a-5 + forced-1 + s-73 ] ] ) - ) + (case + [ + (builtin + unConstrData + ) + a-8 + ] + (lam + l-88 + (lam + r-89 + r-89 + ) + ) + ) + ] ) ) ) - eta-57 - ] + ) ) + eta-64 ] ) - [ - forced-1 - s-58 - ] - ] - ) - (case - [ - (builtin - unConstrData - ) - a-8 ] - (lam - l-94 - (lam - r-95 - r-95 - ) - ) ) - ] + ) ) - ) - ) - (lam - i-96 - [ (lam - nt-97 - (case - [ - [ - (builtin - equalsData - ) - (con - data - (Constr 1 - [ B #31313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131 ]) - ) - ] - [ - forced-1 - (case + i-90 + [ + (lam + nt-91 + (case + [ [ (builtin - unConstrData + equalsData ) - [ - forced-1 - (case - [ - (builtin - unConstrData - ) - nt-97 - ] - (lam - l-98 - (lam - r-99 - r-99 - ) - ) - ) - ] - ] - (lam - l-100 - (lam - r-101 - r-101 + (con + data + (Constr 1 + [ B #31313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131 ]) ) - ) - ) - ] - ] - (con - bool - False - ) - [ - [ - (builtin - equalsInteger - ) - (con - integer - 75000000 - ) - ] - [ - lovelaceOf-11 - nt-97 - ] - ] - ) - ) - [ - forced-1 - [ - forced-0 - (case - [ - (builtin - unConstrData - ) - i-96 - ] - (lam - l-102 - (lam - r-103 - r-103 - ) - ) - ) - ] - ] - ] - ) - ] - ) - (lam - cred-104 - (lam - outputs-105 - (case - (constr - 0 - (lam - acc-106 - (lam - o-107 - (case - [ - [ - (builtin - equalsData - ) + ] [ forced-1 (case @@ -1095,1111 +978,926 @@ (builtin unConstrData ) - o-107 + nt-91 ] (lam - l-108 + l-92 (lam - r-109 - r-109 + r-93 + r-93 ) ) ) ] ] (lam - l-110 + l-94 (lam - r-111 - r-111 + r-95 + r-95 ) ) ) ] ] - cred-104 + (con + bool + False + ) + [ + [ + (builtin + equalsInteger + ) + (con + integer + 75000000 + ) + ] + [ + lovelaceOf-13 + nt-91 + ] + ] + ) + ) + [ + forced-1 + [ + forced-0 + (case + [ + (builtin + unConstrData + ) + i-90 + ] + (lam + l-96 + (lam + r-97 + r-97 + ) + ) + ) ] - acc-106 + ] + ] + ) + ] + ) + (lam + f-98 + [ + (lam + go-99 + (lam + z-100 + (lam + ds-101 [ [ - (builtin - addInteger - ) - acc-106 + go-99 + z-100 ] [ - lovelaceOf-11 - o-107 + (builtin + unListData + ) + ds-101 ] ] ) ) ) - (con - integer - 0 - ) - outputs-105 - ) - foldE-10 + [ + (lam + s-102 + [ + s-102 + s-102 + ] + ) + (lam + s-103 + (lam + acc-104 + (lam + xs-105 + (case + xs-105 + (lam + h-106 + (lam + t-107 + (case + (constr + 0 + s-103 + [ + [ + f-98 + acc-104 + ] + h-106 + ] + t-107 + ) + s-103 + ) + ) + ) + acc-104 + ) + ) + ) + ) + ] + ] ) - ) + ] ) - ] - ) - (lam - datumJust-112 - (lam - eta-113 - [ + (lam + datumJust-108 (lam - a-114 + eta-109 [ - eta-113 - (constr - 0 + (lam + a-110 [ - forced-1 - (case + eta-109 + (constr + 0 [ - (builtin - unConstrData + forced-1 + (case + [ + (builtin + unConstrData + ) + a-110 + ] + (lam + l-111 + (lam + r-112 + r-112 + ) + ) ) - a-114 ] - (lam - l-115 - (lam - r-116 - r-116 - ) - ) + a-110 ) ] - a-114 ) - ] - ) - [ - forced-1 - (case [ - (builtin - unConstrData + forced-1 + (case + [ + (builtin + unConstrData + ) + datumJust-108 + ] + (lam + l-113 + (lam + r-114 + r-114 + ) + ) ) - datumJust-112 ] - (lam - l-117 - (lam - r-118 - r-118 - ) - ) - ) - ] - ] - ) - ) - ] - (lam - eta-119 - [ + ] + ) + ) + ] (lam - cse-120 + eta-115 [ (lam - s-121 + cse-116 [ (lam - a-122 + s-117 [ (lam - a-123 + a-118 [ (lam - n-124 - (case - [ - [ - anyE-12 - (lam - v-125 + a-119 + [ + (lam + n-120 + (case + [ [ - [ - (builtin - equalsData - ) - (con - data - (B #aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa) - ) - ] - v-125 + anyE-14 + (lam + v-121 + [ + [ + (builtin + equalsData + ) + (con + data + (B #aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa) + ) + ] + v-121 + ] + ) ] - ) - ] - a-123 - ] - (error + a-119 + ] + (error + ) + [ + n-120 + eta-115 + ] + ) ) - [ - n-124 - eta-119 - ] - ) - ) - [ - (lam - nt-126 [ (lam - ds-127 + nt-122 (lam - eta-128 - (case - [ - [ - (builtin - lessThanInteger - ) - (con - integer - 0 - ) - ] + eta-123 + [ + (lam + n-124 (case - ds-127 - (lam - scriptOuts-129 - scriptOuts-129 - ) - ) - ] - (error - - ) - [ - (lam - n-130 - (case + [ [ - [ - (builtin - lessThanInteger - ) - (case - ds-127 - (lam - scriptOuts-131 - scriptOuts-131 - ) - ) - ] + (builtin + equalsInteger + ) (con integer - 2 + 75000000 ) ] - (error - - ) [ - n-130 - eta-128 + lovelaceOf-13 + nt-122 ] + ] + (error + ) + [ + n-124 + eta-123 + ] ) - [ + ) + [ + (lam + nt-125 (lam - nt-132 - (lam - eta-133 - [ - (lam - n-134 - (case + eta-126 + [ + (lam + cse-127 + (case + [ [ - [ - (builtin - equalsInteger - ) - (con - integer - 75000000 - ) - ] - [ - lovelaceOf-11 - nt-132 - ] + (builtin + equalsInteger + ) + (con + integer + 2 + ) ] - (error - + (case + cse-127 + (lam + l-128 + (lam + r-129 + l-128 + ) + ) ) - [ - n-134 - eta-133 - ] + ] + (error + ) - ) - [ - (lam - nt-135 + [ (lam - eta-136 + s-130 [ (lam - cse-137 - (case - [ - [ - (builtin - equalsInteger - ) - (con - integer - 2 - ) - ] + a-131 + [ + (lam + depositTime-132 (case - cse-137 - (lam - l-138 - (lam - r-139 - l-138 - ) - ) - ) - ] - (error - - ) - [ - (lam - s-140 [ - (lam - a-141 + [ + (builtin + equalsInteger + ) + (con + integer + 0 + ) + ] + (case [ + (builtin + unConstrData + ) + a-131 + ] + (lam + l-133 (lam - depositTime-142 - (case - [ - [ - (builtin - equalsInteger - ) - (con - integer - 0 - ) - ] - (case - [ - (builtin - unConstrData - ) - a-141 - ] - (lam - l-143 - (lam - r-144 - l-143 - ) - ) - ) - ] - (error + r-134 + l-133 + ) + ) + ) + ] + (error - ) - (case - [ + ) + (case + [ + [ + (builtin + equalsInteger + ) + [ + (builtin + unIData + ) + depositTime-132 + ] + ] + [ + (lam + cse-135 + [ + (lam + cse-136 + (case [ - (builtin - equalsInteger - ) [ (builtin - unIData + equalsInteger + ) + (con + integer + 1 ) - depositTime-142 ] + (case + cse-136 + (lam + l-137 + (lam + r-138 + l-137 + ) + ) + ) ] + (error + + ) [ (lam - cse-145 - [ - (lam - cse-146 - (case - [ - [ - (builtin - equalsInteger - ) - (con - integer - 1 - ) - ] - (case - cse-146 - (lam - l-147 - (lam - r-148 - l-147 - ) - ) - ) - ] - (error - + t-139 + (case + [ + [ + (builtin + equalsInteger + ) + (con + integer + 1 ) + ] + (case [ - (lam - t-149 - (case - [ - [ - (builtin - equalsInteger - ) - (con - integer - 1 - ) - ] - (case - [ - (builtin - unConstrData - ) - [ - forced-1 - [ - forced-0 - (case - cse-145 - (lam - l-150 - (lam - r-151 - r-151 - ) - ) - ) - ] - ] - ] - (lam - l-152 - (lam - r-153 - l-152 - ) - ) - ) - ] - [ - [ - (builtin - addInteger - ) - (con - integer - -1 - ) - ] - t-149 - ] - t-149 - ) + (builtin + unConstrData ) [ - (builtin - unIData - ) + forced-1 [ - forced-1 + forced-0 (case - cse-146 + cse-135 (lam - l-154 + l-140 (lam - r-155 - r-155 + r-141 + r-141 ) ) ) ] ] ] + (lam + l-142 + (lam + r-143 + l-142 + ) + ) ) - ) + ] [ - (builtin - unConstrData - ) [ - forced-1 - (case - cse-145 - (lam - l-156 - (lam - r-157 - r-157 - ) - ) + (builtin + addInteger + ) + (con + integer + -1 ) ] + t-139 ] - ] + t-139 + ) ) [ (builtin - unConstrData + unIData ) [ forced-1 - [ - forced-0 - (case - [ - (builtin - unConstrData - ) - a-122 - ] + (case + cse-136 + (lam + l-144 (lam - l-158 - (lam - r-159 - r-159 - ) + r-145 + r-145 ) ) - ] + ) ] ] ] - ] - (error - + ) + ) + [ + (builtin + unConstrData ) [ - eta-136 - (constr - 0 + forced-1 + (case + cse-135 + (lam + l-146 + (lam + r-147 + r-147 + ) + ) ) ] - ) - ) + ] + ] ) [ - forced-1 + (builtin + unConstrData + ) [ - forced-0 - s-140 + forced-1 + [ + forced-0 + (case + [ + (builtin + unConstrData + ) + a-118 + ] + (lam + l-148 + (lam + r-149 + r-149 + ) + ) + ) + ] ] ] ] - ) - [ - forced-1 - s-140 ] - ] - ) - (case - [ - (builtin - unConstrData + (error + ) [ - forced-1 - (case - cse-137 - (lam - l-160 - (lam - r-161 - r-161 - ) - ) + eta-126 + (constr + 0 ) ] - ] - (lam - l-162 - (lam - r-163 - r-163 - ) ) ) + ) + [ + forced-1 + [ + forced-0 + s-130 + ] ] - ) + ] ) [ - (builtin - unConstrData - ) - nt-135 + forced-1 + s-130 ] ] ) - ) - [ - forced-1 - [ - forced-0 - [ - forced-0 - (case - [ - (builtin - unConstrData - ) - nt-132 - ] - (lam - l-164 - (lam - r-165 - r-165 - ) - ) - ) - ] - ] - ] - ] - ] - ) - ) - (case - (constr - 0 - (con - string - "No script outputs created" - ) - (lam - o-166 - [ - [ - (builtin - equalsData - ) - (con - data - (Constr 0 - [ Constr 1 - [ B #31313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131 ] - , Constr 1 - [ ] ]) - ) - ] - [ - forced-1 (case [ (builtin unConstrData ) - o-166 + [ + forced-1 + (case + cse-127 + (lam + l-150 + (lam + r-151 + r-151 + ) + ) + ) + ] ] (lam - l-167 + l-152 (lam - r-168 - r-168 + r-153 + r-153 ) ) ) ] - ] - ) - nt-126 - ) - findE-13 - ) - ] - ] - ) - ) - ) - (constr - 0 - (case - (constr - 0 - (lam - n-169 - (lam - o-170 - (case - [ - [ - (builtin - equalsData - ) - (con - data - (Constr 0 - [ Constr 1 - [ B #31313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131 ] - , Constr 1 - [ ] ]) - ) - ] - [ - forced-1 - (case - [ - (builtin - unConstrData - ) - o-170 - ] - (lam - l-171 - (lam - r-172 - r-172 - ) - ) - ) - ] - ] - n-169 - [ - [ - (builtin - addInteger ) - (con - integer - 1 + ) + [ + (builtin + unConstrData ) + nt-125 ] - n-169 ] ) ) - ) - (con - integer - 0 - ) - nt-126 - ) - foldE-10 + [ + forced-1 + [ + forced-0 + [ + forced-0 + (case + [ + (builtin + unConstrData + ) + nt-122 + ] + (lam + l-154 + (lam + r-155 + r-155 + ) + ) + ) + ] + ] + ] + ] + ] ) ) - ] - ) - [ - forced-1 - [ - forced-0 [ - forced-0 - (case - cse-120 - (lam - l-173 - (lam - r-174 - r-174 - ) + go-5 + [ + (builtin + unListData ) - ) + [ + forced-1 + [ + forced-0 + [ + forced-0 + (case + cse-116 + (lam + l-156 + (lam + r-157 + r-157 + ) + ) + ) + ] + ] + ] + ] ] ] ] + ) + [ + forced-1 + [ + forced-0 + s-117 + ] ] ] ) [ forced-1 - [ - forced-0 - s-121 - ] + s-117 ] ] ) [ - forced-1 - s-121 + [ + forced-2 + (con + integer + 7 + ) + ] + (case + cse-116 + (lam + l-158 + (lam + r-159 + r-159 + ) + ) + ) ] ] ) [ - [ - forced-2 - (con - integer 7 - ) - ] - (case - cse-120 - (lam - l-175 - (lam - r-176 - r-176 - ) - ) + (builtin + unConstrData ) + a-8 ] ] ) - [ - (builtin - unConstrData - ) - a-5 - ] - ] - ) - ) - (lam ds-177 (con unit ())) - ] - ) - (lam - msg-178 - (lam - p-179 - [ - (lam - go-180 - (lam - ds-181 - [ - go-180 - [ - (builtin - unListData - ) - ds-181 - ] - ] ) - ) - [ (lam - s-182 - [ s-182 s-182 ] + ds-160 (con unit ()) ) + ] + ) + (lam + p-161 + [ (lam - s-183 + go-162 (lam - xs-184 + ds-163 [ + go-162 + [ + (builtin + unListData + ) + ds-163 + ] + ] + ) + ) + [ + (lam + s-164 + [ s-164 s-164 ] + ) + (lam + s-165 + (lam + xs-166 (case - xs-184 + xs-166 (lam - x-185 + h-167 (lam - xs-186 - (lam - ds-187 - (case - [ - p-179 - x-185 - ] + t-168 + (case + [ + p-161 + h-167 + ] + [ [ - [ - s-183 - s-183 - ] - xs-186 + s-165 + s-165 ] - x-185 + t-168 + ] + (con + bool + True ) ) ) ) - (lam - ds-188 - (error) + (con + bool False ) ) - (constr 0) - ] - ) - ) - ] - ] - ) - ) - ] - ) - (lam - p-189 - [ - (lam - go-190 - (lam - ds-191 - [ - go-190 - [ - (builtin unListData) - ds-191 - ] - ] - ) - ) - [ - (lam s-192 [ s-192 s-192 ]) - (lam - s-193 - (lam - xs-194 - (case - xs-194 - (lam - h-195 - (lam - t-196 - (case - [ p-189 h-195 ] - [ - [ - s-193 s-193 - ] - t-196 - ] - (con bool True) ) ) - ) - (con bool False) - ) - ) - ) - ] - ] - ) - ] - ) - (lam - o-197 - [ - (lam - v-198 - [ - (lam - cse-199 - [ - [ - cse-199 - [ - cse-199 - (lam - ds-200 - [ - (builtin unIData) - ds-200 - ] - ) + ] ] - ] - v-198 + ) ] ) (lam - found-201 + o-169 [ - (lam - go-202 - (lam - ds-203 + (builtin unIData) + (case + [ + forced-1 [ - go-202 - [ - (builtin - unMapData - ) - ds-203 - ] - ] - ) - ) - [ - (lam - s-204 [ s-204 s-204 ] - ) - (lam - s-205 - (lam - xs-206 + (builtin unMapData) (case - xs-206 - (lam - h-207 - (lam - t-208 - (case + [ + forced-1 + [ + (builtin + unMapData + ) + [ + forced-1 [ - [ - (builtin - equalsData - ) - (con - data - (B #) - ) - ] + forced-0 (case - h-207 - (lam - l-209 - (lam - r-210 - l-209 + [ + (builtin + unConstrData ) - ) - ) - ] - [ - [ - s-205 - s-205 - ] - t-208 - ] - [ - found-201 - (case - h-207 + o-169 + ] (lam - l-211 + l-170 (lam - r-212 - r-212 + r-171 + r-171 ) ) ) ] - ) + ] + ] + ] + (lam + l-172 + (lam + r-173 r-173 ) ) - (con integer 0) ) - ) + ] + ] + (lam + l-174 + (lam r-175 r-175) ) - ] + ) ] ) ] ) - [ - forced-1 - [ - forced-0 - (case - [ - (builtin unConstrData) - o-197 - ] - (lam - l-213 (lam r-214 r-214) - ) - ) - ] - ] + [ (builtin unIData) a-10 ] ] ) + [ forced-1 [ forced-0 s-9 ] ] ] ) - (lam - f-215 - [ - (lam - go-216 - (lam - z-217 - (lam - ds-218 - [ - [ go-216 z-217 ] - [ - (builtin unListData) ds-218 - ] - ] - ) - ) - ) - [ - (lam s-219 [ s-219 s-219 ]) - (lam - s-220 - (lam - acc-221 - (lam - xs-222 - (case - xs-222 - (lam - h-223 - (lam - t-224 - (case - (constr - 0 - s-220 - [ - [ f-215 acc-221 ] - h-223 - ] - t-224 - ) - s-220 - ) - ) - ) - acc-221 - ) - ) - ) - ) - ] - ] - ) + [ forced-1 s-9 ] ] ) - [ (builtin unIData) a-7 ] + [ forced-0 s-7 ] ] ) - [ forced-1 [ forced-0 s-6 ] ] + [ forced-1 s-7 ] ] ) - [ forced-1 s-6 ] + (case + [ (builtin unConstrData) ctxData-6 ] + (lam l-176 (lam r-177 r-177)) + ) ] ) - [ forced-0 s-4 ] + ) + [ + (lam s-178 [ s-178 s-178 ]) + (lam + s-179 + (lam + xs-180 + [ + (case + xs-180 + (lam + x-181 + (lam + xs-182 + (lam + ds-183 + (case + [ p-3 x-181 ] + [ [ s-179 s-179 ] xs-182 ] + [ [ seen-4 x-181 ] xs-182 ] + ) + ) + ) + ) + (lam ds-184 (error)) + ) + (constr 0) + ] + ) + ) ] + ] + ) + [ + (lam s-185 [ s-185 s-185 ]) + (lam + s-186 + (lam + found-187 + (lam + xs-188 + (case + xs-188 + (lam + h-189 + (lam + t-190 + (case + [ p-3 h-189 ] + (case (constr 0 s-186 found-187 t-190) s-186) + (error) + ) + ) + ) + found-187 + ) + ) + ) + ) + ] + ] + ) + (lam + o-191 + [ + [ + (builtin equalsData) + (con + data + (Constr 0 + [ Constr 1 + [ B #31313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131 ] + , Constr 1 [] ]) + ) + ] + [ + forced-1 + (case + [ (builtin unConstrData) o-191 ] + (lam l-192 (lam r-193 r-193)) ) - [ forced-1 s-4 ] ] - ) - (case - [ (builtin unConstrData) ctxData-3 ] - (lam l-225 (lam r-226 r-226)) - ) - ] - ) + ] + ) + ] ) ) )