@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 +3 -3
- package/dist/cjs/mod.js.map +1 -1
- package/dist/cjs/package.json +1 -1
- package/dist/cjs/src/{MultiSigPubkeyHash.js → P2MSKH.js} +45 -43
- package/dist/cjs/src/P2MSKH.js.map +1 -0
- package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
- package/dist/esm/mod.js +1 -1
- package/dist/esm/mod.js.map +1 -1
- package/dist/esm/src/{MultiSigPubkeyHash.js → P2MSKH.js} +46 -47
- package/dist/esm/src/P2MSKH.js.map +1 -0
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/dist/types/mod.d.ts +1 -1
- package/dist/types/mod.d.ts.map +1 -1
- package/dist/types/src/{MultiSigPubkeyHash.d.ts → P2MSKH.d.ts} +6 -6
- package/dist/types/src/P2MSKH.d.ts.map +1 -0
- package/dist/types/tsconfig.types.tsbuildinfo +1 -1
- package/mod.ts +1 -1
- package/package.json +1 -1
- package/src/MultiPushDrop.ts +1 -1
- package/src/P2MSKH.ts +218 -0
- package/dist/cjs/src/Metanet.js +0 -45
- package/dist/cjs/src/Metanet.js.map +0 -1
- package/dist/cjs/src/MultiSigPubkeyHash.js.map +0 -1
- package/dist/esm/src/Metanet.js +0 -42
- package/dist/esm/src/Metanet.js.map +0 -1
- package/dist/esm/src/MultiSigPubkeyHash.js.map +0 -1
- package/dist/types/src/Metanet.d.ts +0 -29
- package/dist/types/src/Metanet.d.ts.map +0 -1
- package/dist/types/src/MultiSigPubkeyHash.d.ts.map +0 -1
- package/src/MultiSigPubkeyHash.ts +0 -222
package/dist/cjs/mod.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
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
|
|
10
|
-
Object.defineProperty(exports, "
|
|
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
|
package/dist/cjs/mod.js.map
CHANGED
|
@@ -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,
|
|
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"}
|
package/dist/cjs/package.json
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
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 (
|
|
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
|
|
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,
|
|
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 =
|
|
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 (
|
|
66
|
-
throw new Error(
|
|
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 =
|
|
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 (
|
|
99
|
+
if (workingUnlockingScript == null) {
|
|
96
100
|
workingUnlockingScript = new sdk_1.UnlockingScript();
|
|
97
101
|
workingUnlockingScript.writeOpCode(sdk_1.OP.OP_0);
|
|
98
|
-
customInstructions.pubkeys.
|
|
99
|
-
|
|
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 ===
|
|
106
|
+
if (signOutputs === 'all') {
|
|
104
107
|
signatureScope |= sdk_1.TransactionSignature.SIGHASH_ALL;
|
|
105
108
|
}
|
|
106
|
-
if (signOutputs ===
|
|
109
|
+
if (signOutputs === 'none') {
|
|
107
110
|
signatureScope |= sdk_1.TransactionSignature.SIGHASH_NONE;
|
|
108
111
|
}
|
|
109
|
-
if (signOutputs ===
|
|
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(
|
|
122
|
+
: (_a = input.sourceTransaction) === null || _a === void 0 ? void 0 : _a.id('hex');
|
|
120
123
|
if (!sourceTXID) {
|
|
121
|
-
throw new Error(
|
|
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(
|
|
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 (
|
|
129
|
-
throw new Error(
|
|
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,
|
|
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
|
|
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
|
|
163
|
-
let numberOfSignatures
|
|
164
|
-
const staticLength =
|
|
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 (
|
|
168
|
-
return Promise.resolve(1000); // guess
|
|
170
|
+
if (lockingScript == null) {
|
|
171
|
+
return await Promise.resolve(1000); // guess
|
|
169
172
|
}
|
|
170
|
-
const totalChunk = lockingScript
|
|
173
|
+
const totalChunk = lockingScript.chunks.at(-2);
|
|
171
174
|
numberOfPubkeys = numberFromScriptChunk(totalChunk);
|
|
172
|
-
const
|
|
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 *
|
|
177
|
+
return await Promise.resolve(staticLength + (numberOfSignatures * 74) + (numberOfPubkeys * 34));
|
|
176
178
|
}
|
|
177
179
|
};
|
|
178
180
|
}
|
|
179
181
|
}
|
|
180
|
-
exports.
|
|
181
|
-
//# sourceMappingURL=
|
|
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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"}
|