Links: API, Interfaces, Classes, Functions, Types, Enums, Variables
ScriptChunk |
ScriptTemplate |
ScriptTemplateUnlock |
Links: API, Interfaces, Classes, Functions, Types, Enums, Variables
A representation of a chunk of a script, which includes an opcode. For push operations, the associated data to push onto the stack is also included.
export default interface ScriptChunk {
op: number;
data?: number[];
}
Links: API, Interfaces, Classes, Functions, Types, Enums, Variables
export default interface ScriptTemplate {
lock: (...params: any[]) => LockingScript | Promise<LockingScript>;
unlock: (...params: any[]) => ScriptTemplateUnlock;
}
See also: LockingScript, ScriptTemplateUnlock
Creates a locking script with the given parameters.
lock: (...params: any[]) => LockingScript | Promise<LockingScript>
See also: LockingScript
Creates a function that generates an unlocking script along with its signature and length estimation.
This method returns an object containing two functions:
sign
- A function that, when called with a transaction and an input index, returns an UnlockingScript instance.estimateLength
- A function that returns the estimated length of the unlocking script in bytes.unlock: (...params: any[]) => ScriptTemplateUnlock
See also: ScriptTemplateUnlock
Links: API, Interfaces, Classes, Functions, Types, Enums, Variables
export default interface ScriptTemplateUnlock {
sign: (tx: Transaction, inputIndex: number) => Promise<UnlockingScript>;
estimateLength: (tx: Transaction, inputIndex: number) => Promise<number>;
}
See also: Transaction, UnlockingScript, sign
Links: API, Interfaces, Classes, Functions, Types, Enums, Variables
LockingScript |
P2PKH |
PushDrop |
RPuzzle |
Script |
Spend |
UnlockingScript |
Links: API, Interfaces, Classes, Functions, Types, Enums, Variables
The LockingScript class represents a locking script in a Bitcoin SV transaction. It extends the Script class and is used specifically for output scripts that lock funds.
Inherits all properties and methods from the Script class.
export default class LockingScript extends Script {
isLockingScript(): boolean
isUnlockingScript(): boolean
}
See also: Script
isLockingScript(): boolean
Returns
Always returns true for a LockingScript instance.
isUnlockingScript(): boolean
Returns
Always returns false for a LockingScript instance.
Links: API, Interfaces, Classes, Functions, Types, Enums, Variables
P2PKH (Pay To Public Key Hash) class implementing ScriptTemplate.
This class provides methods to create Pay To Public Key Hash locking and unlocking scripts, including the unlocking of P2PKH UTXOs with the private key.
export default class P2PKH implements ScriptTemplate {
lock(pubkeyhash: string | number[]): LockingScript
unlock(privateKey: PrivateKey, signOutputs: "all" | "none" | "single" = "all", anyoneCanPay: boolean = false, sourceSatoshis?: number, lockingScript?: Script): {
sign: (tx: Transaction, inputIndex: number) => Promise<UnlockingScript>;
estimateLength: () => Promise<108>;
}
}
See also: LockingScript, PrivateKey, Script, ScriptTemplate, Transaction, UnlockingScript, sign
Creates a P2PKH locking script for a given public key hash or address string
lock(pubkeyhash: string | number[]): LockingScript
See also: LockingScript
Returns
Argument Details
Creates a function that generates a P2PKH unlocking script along with its signature and length estimation.
The returned object contains:
sign
- A function that, when invoked with a transaction and an input index,
produces an unlocking script suitable for a P2PKH locked output.estimateLength
- A function that returns the estimated length of the unlocking script in bytes.unlock(privateKey: PrivateKey, signOutputs: "all" | "none" | "single" = "all", anyoneCanPay: boolean = false, sourceSatoshis?: number, lockingScript?: Script): {
sign: (tx: Transaction, inputIndex: number) => Promise<UnlockingScript>;
estimateLength: () => Promise<108>;
}
See also: PrivateKey, Script, Transaction, UnlockingScript, sign
Returns
sign
and estimateLength
functions.Argument Details
Links: API, Interfaces, Classes, Functions, Types, Enums, Variables
export default class PushDrop implements ScriptTemplate {
wallet: WalletInterface;
static decode(script: LockingScript): {
lockingPublicKey: PublicKey;
fields: number[][];
}
constructor(wallet: WalletInterface)
async lock(fields: number[][], protocolID: [
SecurityLevel,
string
], keyID: string, counterparty: string, forSelf = false, includeSignature = true, lockPosition: "before" | "after" = "before"): Promise<LockingScript>
unlock(protocolID: [
SecurityLevel,
string
], keyID: string, counterparty: string, signOutputs: "all" | "none" | "single" = "all", anyoneCanPay = false, sourceSatoshis?: number, lockingScript?: LockingScript): {
sign: (tx: Transaction, inputIndex: number) => Promise<UnlockingScript>;
estimateLength: () => Promise<73>;
}
}
See also: LockingScript, PublicKey, ScriptTemplate, SecurityLevel, Transaction, UnlockingScript, WalletInterface, sign
Constructs a new instance of the PushDrop class.
constructor(wallet: WalletInterface)
See also: WalletInterface
Argument Details
Decodes a PushDrop script back into its token fields and the locking public key. If a signature was present, it will be the last field returned. Warning: Only works with a P2PK lock at the beginning of the script.
static decode(script: LockingScript): {
lockingPublicKey: PublicKey;
fields: number[][];
}
See also: LockingScript, PublicKey
Returns
An object containing PushDrop token fields and the locking public key. If a signature was included, it will be the last field.
Argument Details
Creates a PushDrop locking script with arbitrary data fields and a public key lock.
async lock(fields: number[][], protocolID: [
SecurityLevel,
string
], keyID: string, counterparty: string, forSelf = false, includeSignature = true, lockPosition: "before" | "after" = "before"): Promise<LockingScript>
See also: LockingScript, SecurityLevel
Returns
The generated PushDrop locking script.
Argument Details
Creates an unlocking script for spending a PushDrop token output.
unlock(protocolID: [
SecurityLevel,
string
], keyID: string, counterparty: string, signOutputs: "all" | "none" | "single" = "all", anyoneCanPay = false, sourceSatoshis?: number, lockingScript?: LockingScript): {
sign: (tx: Transaction, inputIndex: number) => Promise<UnlockingScript>;
estimateLength: () => Promise<73>;
}
See also: LockingScript, SecurityLevel, Transaction, UnlockingScript, sign
Returns
An object containing functions to sign the transaction and estimate the script length.
Argument Details
Links: API, Interfaces, Classes, Functions, Types, Enums, Variables
RPuzzle class implementing ScriptTemplate.
This class provides methods to create R Puzzle and R Puzzle Hash locking and unlocking scripts, including the unlocking of UTXOs with the correct K value.
export default class RPuzzle implements ScriptTemplate {
type: "raw" | "SHA1" | "SHA256" | "HASH256" | "RIPEMD160" | "HASH160" = "raw";
constructor(type: "raw" | "SHA1" | "SHA256" | "HASH256" | "RIPEMD160" | "HASH160" = "raw")
lock(value: number[]): LockingScript
unlock(k: BigNumber, privateKey: PrivateKey, signOutputs: "all" | "none" | "single" = "all", anyoneCanPay: boolean = false): {
sign: (tx: Transaction, inputIndex: number) => Promise<UnlockingScript>;
estimateLength: () => Promise<108>;
}
}
See also: BigNumber, LockingScript, PrivateKey, ScriptTemplate, Transaction, UnlockingScript, sign
constructor(type: "raw" | "SHA1" | "SHA256" | "HASH256" | "RIPEMD160" | "HASH160" = "raw")
Argument Details
Creates an R puzzle locking script for a given R value or R value hash.
lock(value: number[]): LockingScript
See also: LockingScript
Returns
Argument Details
Creates a function that generates an R puzzle unlocking script along with its signature and length estimation.
The returned object contains:
sign
- A function that, when invoked with a transaction and an input index,
produces an unlocking script suitable for an R puzzle locked output.estimateLength
- A function that returns the estimated length of the unlocking script in bytes.unlock(k: BigNumber, privateKey: PrivateKey, signOutputs: "all" | "none" | "single" = "all", anyoneCanPay: boolean = false): {
sign: (tx: Transaction, inputIndex: number) => Promise<UnlockingScript>;
estimateLength: () => Promise<108>;
}
See also: BigNumber, PrivateKey, Transaction, UnlockingScript, sign
Returns
sign
and estimateLength
functions.Argument Details
Links: API, Interfaces, Classes, Functions, Types, Enums, Variables
The Script class represents a script in a Bitcoin SV transaction, encapsulating the functionality to construct, parse, and serialize scripts used in both locking (output) and unlocking (input) scripts.
export default class Script {
chunks: ScriptChunk[];
static fromASM(asm: string): Script
static fromHex(hex: string): Script
static fromBinary(bin: number[]): Script
constructor(chunks: ScriptChunk[] = [])
toASM(): string
toHex(): string
toBinary(): number[]
writeScript(script: Script): Script
writeOpCode(op: number): Script
setChunkOpCode(i: number, op: number): Script
writeBn(bn: BigNumber): Script
writeBin(bin: number[]): Script
writeNumber(num: number): Script
removeCodeseparators(): Script
findAndDelete(script: Script): Script
isPushOnly(): boolean
isLockingScript(): boolean
isUnlockingScript(): boolean
}
See also: BigNumber, ScriptChunk, toHex
constructor(chunks: ScriptChunk[] = [])
See also: ScriptChunk
Argument Details
Deletes the given item wherever it appears in the current script.
findAndDelete(script: Script): Script
See also: Script
Returns
This script instance for chaining.
Argument Details
static fromASM(asm: string): Script
See also: Script
Returns
A new Script instance.
Argument Details
Example
const script = Script.fromASM("OP_DUP OP_HASH160 abcd... OP_EQUALVERIFY OP_CHECKSIG")
static fromBinary(bin: number[]): Script
See also: Script
Returns
A new Script instance.
Argument Details
Example
const script = Script.fromBinary([0x76, 0xa9, ...])
static fromHex(hex: string): Script
See also: Script
Returns
A new Script instance.
Argument Details
Example
const script = Script.fromHex("76a9...");
isLockingScript(): boolean
Returns
True if the script is a locking script, otherwise false.
isPushOnly(): boolean
Returns
True if the script is push-only, otherwise false.
isUnlockingScript(): boolean
Returns
True if the script is an unlocking script, otherwise false.
removeCodeseparators(): Script
See also: Script
Returns
This script instance for chaining.
setChunkOpCode(i: number, op: number): Script
See also: Script
Returns
This script instance for chaining.
Argument Details
toASM(): string
Returns
The script in ASM string format.
toBinary(): number[]
Returns
The script in binary array format.
toHex(): string
Returns
The script in hexadecimal format.
writeBin(bin: number[]): Script
See also: Script
Returns
This script instance for chaining.
Argument Details
Throws
Throws an error if the data is too large to be pushed.
writeBn(bn: BigNumber): Script
Returns
This script instance for chaining.
Argument Details
writeNumber(num: number): Script
See also: Script
Returns
This script instance for chaining.
Argument Details
writeOpCode(op: number): Script
See also: Script
Returns
This script instance for chaining.
Argument Details
writeScript(script: Script): Script
See also: Script
Returns
This script instance for chaining.
Argument Details
Links: API, Interfaces, Classes, Functions, Types, Enums, Variables
The Spend class represents a spend action within a Bitcoin SV transaction. It encapsulates all the necessary data required for spending a UTXO (Unspent Transaction Output) and includes details about the source transaction, output, and the spending transaction itself.
export default class Spend {
sourceTXID: string;
sourceOutputIndex: number;
sourceSatoshis: number;
lockingScript: LockingScript;
transactionVersion: number;
otherInputs: TransactionInput[];
outputs: TransactionOutput[];
inputIndex: number;
unlockingScript: UnlockingScript;
inputSequence: number;
lockTime: number;
context: "UnlockingScript" | "LockingScript";
programCounter: number;
lastCodeSeparator: number | null;
stack: number[][];
altStack: number[][];
ifStack: boolean[];
constructor(params: {
sourceTXID: string;
sourceOutputIndex: number;
sourceSatoshis: number;
lockingScript: LockingScript;
transactionVersion: number;
otherInputs: TransactionInput[];
outputs: TransactionOutput[];
unlockingScript: UnlockingScript;
inputSequence: number;
inputIndex: number;
lockTime: number;
})
reset(): void
step(): void
validate(): boolean
}
See also: LockingScript, TransactionInput, TransactionOutput, UnlockingScript
constructor(params: {
sourceTXID: string;
sourceOutputIndex: number;
sourceSatoshis: number;
lockingScript: LockingScript;
transactionVersion: number;
otherInputs: TransactionInput[];
outputs: TransactionOutput[];
unlockingScript: UnlockingScript;
inputSequence: number;
inputIndex: number;
lockTime: number;
})
See also: LockingScript, TransactionInput, TransactionOutput, UnlockingScript
Argument Details
Example
const spend = new Spend({
sourceTXID: "abcd1234", // sourceTXID
sourceOutputIndex: 0, // sourceOutputIndex
sourceSatoshis: new BigNumber(1000), // sourceSatoshis
lockingScript: LockingScript.fromASM("OP_DUP OP_HASH160 abcd1234... OP_EQUALVERIFY OP_CHECKSIG"),
transactionVersion: 1, // transactionVersion
otherInputs: [{ sourceTXID: "abcd1234", sourceOutputIndex: 1, sequence: 0xffffffff }], // otherInputs
outputs: [{ satoshis: new BigNumber(500), lockingScript: LockingScript.fromASM("OP_DUP...") }], // outputs
inputIndex: 0, // inputIndex
unlockingScript: UnlockingScript.fromASM("3045... 02ab..."),
inputSequence: 0xffffffff // inputSequence
});
validate(): boolean
Returns
Returns true if the scripts are valid and the spend is legitimate, otherwise false.
Example
if (spend.validate()) {
console.log("Spend is valid!");
} else {
console.log("Invalid spend!");
}
Links: API, Interfaces, Classes, Functions, Types, Enums, Variables
The UnlockingScript class represents an unlocking script in a Bitcoin SV transaction. It extends the Script class and is used specifically for input scripts that unlock funds.
Inherits all properties and methods from the Script class.
export default class UnlockingScript extends Script {
isLockingScript(): boolean
isUnlockingScript(): boolean
}
See also: Script
isLockingScript(): boolean
Returns
Always returns false for an UnlockingScript instance.
isUnlockingScript(): boolean
Returns
Always returns true for an UnlockingScript instance.
Links: API, Interfaces, Classes, Functions, Types, Enums, Variables