Table of Contents

Class ArkadeNofNMultisigTapScript

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

An N-of-N multisig tapscript leaf that binds an ArkadeScript body to the emulator's signing authority. The leaf's owner set is the base multisig owners plus one tweaked pubkey per emulator — each tweak computed as emulator_pubkey + tagged_hash("ArkScriptHash", arkadeScript) · G (see Tweak(TaprootPubKey, ReadOnlySpan<byte>)).

public sealed class ArkadeNofNMultisigTapScript : ScriptBuilder, IArkadeBoundScriptBuilder
Inheritance
ArkadeNofNMultisigTapScript
Implements
Inherited Members

Remarks

The emulator co-signs only when the script attached to the input hashes to the tweak it computed for its key. By wrapping a base multisig this way we get the cleanest equivalent of the ts-sdk's ArkadeVtxoScript in .NET-idiomatic terms: existing ArkContract subclasses can yield instances of this class from GetScriptBuilders() exactly as they already yield NofNMultisigTapScript today.

Other tapscript variants (CSV multisig, condition multisig, etc.) follow the same augment-the-pubkey-set pattern; add wrappers as needed when those flavours are wanted in production.

Constructors

ArkadeNofNMultisigTapScript(byte[], IEnumerable<ECXOnlyPubKey>, IEnumerable<TaprootPubKey>, WitScript?)

public ArkadeNofNMultisigTapScript(byte[] arkadeScript, IEnumerable<ECXOnlyPubKey> baseOwners, IEnumerable<TaprootPubKey> emulatorKeys, WitScript? arkadeScriptWitness = null)

Parameters

arkadeScript byte[]
baseOwners IEnumerable<ECXOnlyPubKey>
emulatorKeys IEnumerable<TaprootPubKey>
arkadeScriptWitness WitScript

Properties

ArkadeScript

The ArkadeScript bytecode this leaf is bound to.

public 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.

public WitScript? ArkadeScriptWitness { get; }

Property Value

WitScript

AugmentedOwners

Owners of the augmented multisig: base owners followed by tweaked emulator keys.

public IReadOnlyList<ECXOnlyPubKey> AugmentedOwners { get; }

Property Value

IReadOnlyList<ECXOnlyPubKey>

EmulatorKeys

The emulators whose tweaked keys were appended to the owner set.

public IReadOnlyList<TaprootPubKey> EmulatorKeys { get; }

Property Value

IReadOnlyList<TaprootPubKey>

TweakedEmulatorKeys

The post-tweak emulator keys actually present in the multisig owner set.

public IReadOnlyList<TaprootPubKey> TweakedEmulatorKeys { get; }

Property Value

IReadOnlyList<TaprootPubKey>

Methods

BuildScript()

Returns the opcodes for this tapscript leaf.

public override IEnumerable<Op> BuildScript()

Returns

IEnumerable<Op>