@bsv/templates 1.2.3 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cjs/mod.js CHANGED
@@ -1,11 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.MultiSigPubkeyHash = exports.MultiPushDrop = exports.OpReturn = void 0;
3
+ exports.P2MSKH = exports.MultiPushDrop = exports.OpReturn = void 0;
4
4
  // Script Templates
5
5
  var OpReturn_js_1 = require("./src/OpReturn.js");
6
6
  Object.defineProperty(exports, "OpReturn", { enumerable: true, get: function () { return OpReturn_js_1.OpReturn; } });
7
7
  var MultiPushDrop_js_1 = require("./src/MultiPushDrop.js");
8
8
  Object.defineProperty(exports, "MultiPushDrop", { enumerable: true, get: function () { return MultiPushDrop_js_1.MultiPushDrop; } });
9
- var MultiSigPubkeyHash_js_1 = require("./src/MultiSigPubkeyHash.js");
10
- Object.defineProperty(exports, "MultiSigPubkeyHash", { enumerable: true, get: function () { return MultiSigPubkeyHash_js_1.MultiSigPubkeyHash; } });
9
+ var P2MSKH_js_1 = require("./src/P2MSKH.js");
10
+ Object.defineProperty(exports, "P2MSKH", { enumerable: true, get: function () { return P2MSKH_js_1.P2MSKH; } });
11
11
  //# sourceMappingURL=mod.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mod.js","sourceRoot":"","sources":["../../mod.ts"],"names":[],"mappings":";;;AAAA,mBAAmB;AACnB,iDAA4C;AAAnC,uGAAA,QAAQ,OAAA;AACjB,2DAAsD;AAA7C,iHAAA,aAAa,OAAA;AACtB,qEAAgE;AAAvD,2HAAA,kBAAkB,OAAA"}
1
+ {"version":3,"file":"mod.js","sourceRoot":"","sources":["../../mod.ts"],"names":[],"mappings":";;;AAAA,mBAAmB;AACnB,iDAA4C;AAAnC,uGAAA,QAAQ,OAAA;AACjB,2DAAsD;AAA7C,iHAAA,aAAa,OAAA;AACtB,6CAAwC;AAA/B,mGAAA,MAAM,OAAA"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bsv/templates",
3
- "version": "1.2.2",
3
+ "version": "1.4.0",
4
4
  "type": "commonjs",
5
5
  "description": "BSV Blockchain Script Templates",
6
6
  "files": [
@@ -1,14 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.MultiSigPubkeyHash = void 0;
3
+ exports.P2MSKH = void 0;
4
4
  const sdk_1 = require("@bsv/sdk");
5
5
  function concatPubkeys(pubkeys) {
6
6
  return pubkeys.map((p) => p.toDER()).reduce((a, b) => a.concat(b), []);
7
7
  }
8
8
  function numberFromScriptChunk(chunk) {
9
9
  let returnNum;
10
- if (!chunk.data) {
11
- returnNum = 1 + chunk.op - sdk_1.OP.OP_1;
10
+ if (chunk.data == null) {
11
+ returnNum = 1 + (chunk.op) - sdk_1.OP.OP_1;
12
12
  }
13
13
  else {
14
14
  const reader = new sdk_1.Utils.Reader(chunk.data);
@@ -17,8 +17,12 @@ function numberFromScriptChunk(chunk) {
17
17
  }
18
18
  return returnNum;
19
19
  }
20
- class MultiSigPubkeyHash {
20
+ class P2MSKH {
21
21
  static address(pubkeys, threshold) {
22
+ if (threshold < 1 || threshold > pubkeys.length)
23
+ throw new Error('threshold must be between 1 and the number of pubkeys');
24
+ if (!pubkeys || pubkeys.length < 2 || pubkeys.length < threshold)
25
+ throw new Error(`at least ${threshold || 2} pubkeys are required`);
22
26
  const concat = concatPubkeys(pubkeys);
23
27
  const hash = sdk_1.Hash.hash160(concat);
24
28
  const writer = new sdk_1.Utils.Writer();
@@ -31,7 +35,7 @@ class MultiSigPubkeyHash {
31
35
  static async addressBRC29(wallet, counterparties, keyID, threshold) {
32
36
  const pubkeys = await Promise.all(counterparties.map(async (counterparty) => {
33
37
  const { publicKey } = await wallet.getPublicKey({
34
- protocolID: [1, "multi sig brc29"],
38
+ protocolID: [1, 'multi sig brc29'],
35
39
  keyID,
36
40
  counterparty
37
41
  });
@@ -52,26 +56,26 @@ class MultiSigPubkeyHash {
52
56
  }
53
57
  lock(address, pubkeys, threshold = 1) {
54
58
  let hash;
55
- let total;
59
+ let total = (pubkeys === null || pubkeys === void 0 ? void 0 : pubkeys.length) || 0;
56
60
  if (address) {
57
61
  if (typeof address !== 'string')
58
62
  throw new Error('address must be a string');
59
- const result = MultiSigPubkeyHash.thresholdAndTotalFromAddress(address);
63
+ const result = P2MSKH.thresholdAndTotalFromAddress(address);
60
64
  hash = result.hash;
61
65
  total = result.total;
62
66
  threshold = result.threshold;
63
67
  }
64
68
  else {
65
- if (!pubkeys || pubkeys.length < 2 || pubkeys.length < threshold)
66
- throw new Error(`at least ${threshold} pubkeys are required, or use an address`);
69
+ if ((pubkeys == null) || total < 2)
70
+ throw new Error('at least 2 pubkeys are required');
67
71
  const concat = concatPubkeys(pubkeys);
68
72
  hash = sdk_1.Hash.hash160(concat);
69
- total = pubkeys.length;
70
73
  }
74
+ if (!threshold || threshold < 1 || threshold > total)
75
+ throw new Error('threshold must be between 1 and the number of pubkeys');
76
+ if (total > 10)
77
+ throw new Error('total must be less than or equal to 10');
71
78
  const script = new sdk_1.LockingScript();
72
- for (let i = 0; i < total - 1; i++) {
73
- script.writeOpCode(sdk_1.OP.OP_CAT);
74
- }
75
79
  script
76
80
  .writeOpCode(sdk_1.OP.OP_DUP)
77
81
  .writeOpCode(sdk_1.OP.OP_HASH160)
@@ -88,25 +92,24 @@ class MultiSigPubkeyHash {
88
92
  script.writeOpCode(sdk_1.OP.OP_CHECKMULTISIG);
89
93
  return script;
90
94
  }
91
- unlock(wallet, customInstructions, workingUnlockingScript, signOutputs = "all", anyoneCanPay = false, sourceSatoshis, lockingScript) {
95
+ unlock(wallet, customInstructions, workingUnlockingScript, signOutputs = 'all', anyoneCanPay = false, sourceSatoshis, lockingScript) {
92
96
  return {
93
97
  sign: async (tx, inputIndex) => {
94
98
  var _a, _b, _c;
95
- if (!workingUnlockingScript) {
99
+ if (workingUnlockingScript == null) {
96
100
  workingUnlockingScript = new sdk_1.UnlockingScript();
97
101
  workingUnlockingScript.writeOpCode(sdk_1.OP.OP_0);
98
- customInstructions.pubkeys.forEach((pubkey) => {
99
- workingUnlockingScript.writeBin(sdk_1.PublicKey.fromString(pubkey).toDER());
100
- });
102
+ const pubkeys = concatPubkeys(customInstructions.pubkeys.map(p => sdk_1.PublicKey.fromString(p)));
103
+ workingUnlockingScript.writeBin(pubkeys);
101
104
  }
102
105
  let signatureScope = sdk_1.TransactionSignature.SIGHASH_FORKID;
103
- if (signOutputs === "all") {
106
+ if (signOutputs === 'all') {
104
107
  signatureScope |= sdk_1.TransactionSignature.SIGHASH_ALL;
105
108
  }
106
- if (signOutputs === "none") {
109
+ if (signOutputs === 'none') {
107
110
  signatureScope |= sdk_1.TransactionSignature.SIGHASH_NONE;
108
111
  }
109
- if (signOutputs === "single") {
112
+ if (signOutputs === 'single') {
110
113
  signatureScope |= sdk_1.TransactionSignature.SIGHASH_SINGLE;
111
114
  }
112
115
  if (anyoneCanPay) {
@@ -116,17 +119,17 @@ class MultiSigPubkeyHash {
116
119
  const otherInputs = tx.inputs.filter((_, index) => index !== inputIndex);
117
120
  const sourceTXID = input.sourceTXID
118
121
  ? input.sourceTXID
119
- : (_a = input.sourceTransaction) === null || _a === void 0 ? void 0 : _a.id("hex");
122
+ : (_a = input.sourceTransaction) === null || _a === void 0 ? void 0 : _a.id('hex');
120
123
  if (!sourceTXID) {
121
- throw new Error("The input sourceTXID or sourceTransaction is required for transaction signing.");
124
+ throw new Error('The input sourceTXID or sourceTransaction is required for transaction signing.');
122
125
  }
123
126
  sourceSatoshis || (sourceSatoshis = (_b = input.sourceTransaction) === null || _b === void 0 ? void 0 : _b.outputs[input.sourceOutputIndex].satoshis);
124
127
  if (!sourceSatoshis) {
125
- throw new Error("The sourceSatoshis or input sourceTransaction is required for transaction signing.");
128
+ throw new Error('The sourceSatoshis or input sourceTransaction is required for transaction signing.');
126
129
  }
127
130
  lockingScript || (lockingScript = (_c = input.sourceTransaction) === null || _c === void 0 ? void 0 : _c.outputs[input.sourceOutputIndex].lockingScript);
128
- if (!lockingScript) {
129
- throw new Error("The lockingScript or input sourceTransaction is required for transaction signing.");
131
+ if (lockingScript == null) {
132
+ throw new Error('The lockingScript or input sourceTransaction is required for transaction signing.');
130
133
  }
131
134
  const preimage = sdk_1.TransactionSignature.format({
132
135
  sourceTXID,
@@ -139,43 +142,42 @@ class MultiSigPubkeyHash {
139
142
  inputSequence: input.sequence || 0xffffffff,
140
143
  subscript: lockingScript,
141
144
  lockTime: tx.lockTime,
142
- scope: signatureScope,
145
+ scope: signatureScope
143
146
  });
144
147
  const hashToDirectlySign = sdk_1.Hash.hash256(preimage);
145
148
  const { signature } = await wallet.createSignature({
146
149
  hashToDirectlySign,
147
- protocolID: [1, "multi sig brc29"],
150
+ protocolID: [1, 'multi sig brc29'],
148
151
  counterparty: customInstructions.counterparty,
149
- keyID: customInstructions.keyID,
152
+ keyID: customInstructions.keyID
150
153
  });
151
154
  const s = sdk_1.Signature.fromDER(signature);
152
155
  const sig = new sdk_1.TransactionSignature(s.r, s.s, signatureScope);
153
156
  const sigForScript = sig.toChecksigFormat();
154
157
  workingUnlockingScript.writeBin(sigForScript);
155
158
  const chunkforSig = workingUnlockingScript.chunks.pop();
156
- // add it to the array at position 1, pushing the other content to the right
157
- workingUnlockingScript.chunks.splice(1, 0, chunkforSig);
159
+ // add it to the array before the pubkeys, pushing the other content to the right
160
+ workingUnlockingScript.chunks.splice(workingUnlockingScript.chunks.length - 1, 0, chunkforSig);
158
161
  return workingUnlockingScript;
159
162
  },
160
- estimateLength: (tx, inputIndex) => {
163
+ estimateLength: async (tx, inputIndex) => {
161
164
  var _a;
162
- let numberOfPubkeys = 2;
163
- let numberOfSignatures = 1;
164
- const staticLength = 1;
165
+ let numberOfPubkeys;
166
+ let numberOfSignatures;
167
+ const staticLength = 8;
165
168
  const input = tx.inputs[inputIndex];
166
169
  const lockingScript = (_a = input.sourceTransaction) === null || _a === void 0 ? void 0 : _a.outputs[input.sourceOutputIndex].lockingScript;
167
- if (!lockingScript) {
168
- return Promise.resolve(1000); // guess
170
+ if (lockingScript == null) {
171
+ return await Promise.resolve(1000); // guess
169
172
  }
170
- const totalChunk = lockingScript === null || lockingScript === void 0 ? void 0 : lockingScript.chunks[lockingScript.chunks.length - 2];
173
+ const totalChunk = lockingScript.chunks.at(-2);
171
174
  numberOfPubkeys = numberFromScriptChunk(totalChunk);
172
- const thresholdPos = lockingScript.chunks.map(chunk => chunk.op === sdk_1.OP.OP_EQUALVERIFY).indexOf(true) + 1;
173
- const thresholdChunk = lockingScript === null || lockingScript === void 0 ? void 0 : lockingScript.chunks[thresholdPos];
175
+ const thresholdChunk = lockingScript.chunks[4];
174
176
  numberOfSignatures = numberFromScriptChunk(thresholdChunk);
175
- return Promise.resolve(staticLength + (numberOfSignatures * 73) + (numberOfPubkeys * 34));
177
+ return await Promise.resolve(staticLength + (numberOfSignatures * 74) + (numberOfPubkeys * 34));
176
178
  }
177
179
  };
178
180
  }
179
181
  }
180
- exports.MultiSigPubkeyHash = MultiSigPubkeyHash;
181
- //# sourceMappingURL=MultiSigPubkeyHash.js.map
182
+ exports.P2MSKH = P2MSKH;
183
+ //# sourceMappingURL=P2MSKH.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"P2MSKH.js","sourceRoot":"","sources":["../../../src/P2MSKH.ts"],"names":[],"mappings":"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"}