UNPKG

@node-dlc/messaging

Version:
64 lines (50 loc) 1.52 kB
import { BufferReader, BufferWriter } from '@node-dlc/bufio'; /** * ScriptWitness is the data for a witness element in a witness stack. * An empty witness_stack is an error, as every input must be Segwit. * Witness elements should not include their length as part of the witness * data. */ export class ScriptWitnessV0 { /** * Deserializes an script_witness_v0 message * @param buf */ public static deserialize(buf: Buffer): ScriptWitnessV0 { const instance = new ScriptWitnessV0(); const reader = new BufferReader(buf); instance.length = Number(reader.readBigSize()); instance.witness = reader.readBytes(instance.length); return instance; } public static getWitness(reader: BufferReader): Buffer { const length = Number(reader.readBigSize()); const body = reader.readBytes(Number(length)); const writer = new BufferWriter(); writer.writeBigSize(length); writer.writeBytes(body); return writer.toBuffer(); } public length: number; public witness: Buffer; /** * Converts script_witness_v0 to JSON */ public toJSON(): IScriptWitnessV0JSON { return { witness: this.witness.toString('hex'), }; } /** * Serializes the script_witness_v0 message into a Buffer */ public serialize(): Buffer { const writer = new BufferWriter(); writer.writeBigSize(this.witness.length); writer.writeBytes(this.witness); return writer.toBuffer(); } } export interface IScriptWitnessV0JSON { witness: string; }