Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 | 1x 1x 1x 1x 9x 9x 9x 8x 8x 110x 110x 1x 1x 101x 101x 101x 101x 46x | import { BufferWriter, StreamReader } from "@node-lightning/bufio"; import { ICloneable } from "./ICloneable"; import { Script } from "./Script"; import { Value } from "./Value"; export class TxOut implements ICloneable<TxOut> { /** * Parses a TxOut from a stream and returns a new instance of TxOut * @param reader */ public static parse(reader: StreamReader): TxOut { const value = Value.fromSats(reader.readBigUInt64LE()); const scriptPubKey = Script.parse(reader); return new TxOut(value, scriptPubKey); } /** * Parses a hex string serialization of a transaction output. This * is a helper function instead of having to do `StreamReader.fromHex` * on a string directly. * @param hex */ public static fromHex(hex: string): TxOut { const reader = StreamReader.fromHex(hex); return TxOut.parse(reader); } /** * Value (often in satoshi or bitcoin) that will be locked into the * output using the provided scriptPubKey. The combined outputs must * be lte the combined input value for in transaction. */ public value: Value; /** * The locking script used to encumbered the value in the output. * To claim these funds as an input in another transaction requires * providing a ScriptSig that successfully evaluates when combined * with the ScriptPubKey. */ public scriptPubKey: Script; /** * Constructs a new TxOut from the supplied arguments * @param value * @param scriptPubKey */ constructor(value: Value, scriptPubKey: Script) { this.value = value; this.scriptPubKey = scriptPubKey; } /** * Returns the TxOut as a string */ public toString() { return `value="${this.value.sats}", scriptPubKey="${this.scriptPubKey}"`; } /** * Returns the TxOut as a JSON object */ public toJSON() { return { value: this.value.sats.toString(), scriptPubKey: this.scriptPubKey.toJSON(), }; } /** * Returns the serialization of the transaction output into a buffer */ public serialize(): Buffer { const writer = new BufferWriter(); writer.writeUInt64LE(this.value.sats); writer.writeBytes(this.scriptPubKey.serialize()); return writer.toBuffer(); } /** * Clone via deep copy */ public clone(): TxOut { return new TxOut(this.value.clone(), this.scriptPubKey.clone()); } } |