Table of Contents

Namespace NArk.Arkade.Contracts

Classes

ArkProgramContract

An ArkContract whose spending paths come from a compiled ArkadeProgram rather than a hardcoded script shape. Compiles once at construction; GetScriptBuilders() hands the compiled leaves to the base class, which assembles them into a taproot tree exactly like every other contract (GetTaprootSpendInfo()).

ArkProgramContractTransformer

Materializes an ArkProgramContract VTXO into a spendable ArkCoin, mirroring HashLockedContractTransformer/DelegateContractTransformer: picks a compiled function and resolves its witness at coin-materialization time (SpendingService then spends any ArkCoin uniformly). Two entry points: the IContractTransformer Transform(string, ArkContract, ArkVtxo) auto-selects the single fully-args-bound path, and the explicit Transform(string, ArkProgramContract, ArkVtxo, string, IReadOnlyDictionary<string, AsmToken>?) overload spends a named path with call-time witness values (preimage, signature, …).

VHTLCv2Asset

The Arkade asset a VHTLCv2Contract's covenant leaves bind, as the pair the introspection opcodes take.

VHTLCv2Contract

The VHTLC the Lightning and off-board swap corridors settle into: the six leaves of the reference VHTLC construction, plus up to three whose co-signer is an emulator key tweaked by a covenant that pins where the spend may pay — a claim leaf, a refund leaf, and that refund's timelocked twin, the last two sharing one covenant key because they pin one destination.

VHTLCv2NonInteractiveClaim

The optional nonInteractiveClaim leaf: the Arkade server plus a covenant-tweaked emulator co-signer, pinned to ReceiverPkScript. Lets the receiver's claim be pushed by the emulator without the receiver being online.

VHTLCv2NonInteractiveRefund

The optional nonInteractiveRefund leaf: server + receiver + a covenant-tweaked emulator co-signer, pinned to SenderPkScript, no timelock.

VHTLCv2StrictClaim

The opt-in bound that makes a non-interactive claim pay at least the quoted amounts, enforced in script rather than at the consumer's own admission layer.