UNPKG

@arklabs/wallet-sdk

Version:

Bitcoin wallet SDK with Taproot and Ark integration

41 lines (40 loc) 1.51 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.DefaultVtxo = void 0; const base_1 = require("./base"); const tapscript_1 = require("./tapscript"); const base_2 = require("@scure/base"); // DefaultVtxo is the default implementation of a VtxoScript. // it contains 1 forfeit path and 1 exit path. // forfeit = (Alice + Server) // exit = (Alice) after csvTimelock var DefaultVtxo; (function (DefaultVtxo) { class Script extends base_1.VtxoScript { constructor(options) { const { pubKey, serverPubKey, csvTimelock = Script.DEFAULT_TIMELOCK, } = options; const forfeitScript = tapscript_1.MultisigTapscript.encode({ pubkeys: [pubKey, serverPubKey], }).script; const exitScript = tapscript_1.CSVMultisigTapscript.encode({ timelock: csvTimelock, pubkeys: [pubKey], }).script; super([forfeitScript, exitScript]); this.options = options; this.forfeitScript = base_2.hex.encode(forfeitScript); this.exitScript = base_2.hex.encode(exitScript); } forfeit() { return this.findLeaf(this.forfeitScript); } exit() { return this.findLeaf(this.exitScript); } } Script.DEFAULT_TIMELOCK = { value: 144n, type: "blocks", }; // 1 day in blocks DefaultVtxo.Script = Script; })(DefaultVtxo || (exports.DefaultVtxo = DefaultVtxo = {}));