Interface IArkadeBoundScriptBuilder
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>