Class ArkadeNofNMultisigTapScript
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
arkadeScriptbyte[]baseOwnersIEnumerable<ECXOnlyPubKey>emulatorKeysIEnumerable<TaprootPubKey>arkadeScriptWitnessWitScript
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>