Skip to content

Releases: en7angled/toa

TOA v1 0.2.0 — canonical byte-level R derivation

Choose a tag to compare

@mariusgeorgescu mariusgeorgescu released this 26 May 10:07

Summary

Introduces the canonical byte-level R derivation alongside a cardano-api-compatible application path. The validator's parameter is now applied as a single UPLC Constant Data term — matching cardano-api's applyArguments semantics — and the applied script bytes can be reconstructed by any implementation with bytestring concatenation and blake2b-224 from two pinned normative artifacts plus the canonical PlutusData CBOR of the parameter.

R is executable on-chain using only standard Plutus V3 builtins: appendByteString, consByteString, lengthOfByteString, serialiseData, blake2b_224.

New normative artifacts

New / updated code

  • Onchain.Derivation.R (Plinth, onchain-lib) — on-chain R derivation.
  • TxBuilding.Toa.DerivationR (offchain-lib) — pure-Haskell mirror.
  • toa-verify-reconstruction (new executable) — empirically verifies (a) byte-aligned decomposition of applied UPLC, (b) encoder identity with serialiseData, (c) end-to-end hash match between R reassembly and apply_params + serialiseUPLC + blake2b_224.

Updated artifacts

  • validators/ToaV1.uplc — 529 bytes, blake2b-256 60e2e90cd3b48b3daab28a409b257cfa0554bd24b4c552b985df9aee654fbda0. Template hash b4e7310faacb77c9e5a68f325eb348a93d2025ecf472bc43007d5e1c.
  • test-vectors/toa-v1.json — every expected_script_hash and expected_address_* is different from 0.1.1; params_cbor_hex UNCHANGED. New per-vector field flat_body_length.

Breaking change

Every derived TOA address differs from 0.1.1. TOA v1 status is Proposed; no production mainnet deployments exist beyond the en7angled/toa demo, so the address change is in-scope.