Table of Contents

Interface IArkadeBoundScriptBuilder

Namespace
NArk.Arkade.Scripts
Assembly
NArk.Arkade.dll

Marker interface for ScriptBuilders that produce a tapscript leaf bound to an ArkadeScript body — i.e. leaves the emulator co-signs only after executing the attached script.

public interface IArkadeBoundScriptBuilder

Remarks

Both layers of the emulator integration use this interface:

  • The PSBT co-signing helper (slice 2) walks an ArkContract's GetScriptBuilders(), type-checks against this interface, and builds an EmulatorEntry per match — so the OP_RETURN packet that travels with the transaction tells the emulator exactly which script to execute for each input.
  • The signer dispatch (slice 2) checks "does this contract have any arkade-bound leaves at all?" via the same interface — if no, the PSBT skips the emulator REST round-trip entirely.

New arkade-bound script flavours (CSV multisig, condition multisig, ...) just implement this interface — the dispatch and packet-assembly code doesn't need to know the concrete type.

Properties

ArkadeScript

The ArkadeScript bytecode the emulator executes for this leaf.

byte[] ArkadeScript { get; }

Property Value

byte[]

ArkadeScriptWitness

The witness the emulator pushes before executing ArkadeScript (e.g. the inspected output index). Distinct from the on-chain ArkCoin.SpendingConditionWitness — a leaf can carry an on-chain condition (a hashlock preimage) AND an arkade-script witness at once. Null when the arkade script needs no witness.

WitScript? ArkadeScriptWitness { get; }

Property Value

WitScript

EmulatorKeys

Pre-tweak emulator pubkeys (one per emulator). The tapscript leaf's signing set carries the post-tweak versions of these — the pre-tweak forms are kept so the dispatch layer can decide whether to call out to a specific emulator instance.

IReadOnlyList<TaprootPubKey> EmulatorKeys { get; }

Property Value

IReadOnlyList<TaprootPubKey>