@bsv/templates 1.3.0 → 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} +35 -40
- 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} +34 -39
- 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 -224
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,7 +17,7 @@ function numberFromScriptChunk(chunk) {
|
|
|
17
17
|
}
|
|
18
18
|
return returnNum;
|
|
19
19
|
}
|
|
20
|
-
class
|
|
20
|
+
class P2MSKH {
|
|
21
21
|
static address(pubkeys, threshold) {
|
|
22
22
|
if (threshold < 1 || threshold > pubkeys.length)
|
|
23
23
|
throw new Error('threshold must be between 1 and the number of pubkeys');
|
|
@@ -35,7 +35,7 @@ class MultiSigPubkeyHash {
|
|
|
35
35
|
static async addressBRC29(wallet, counterparties, keyID, threshold) {
|
|
36
36
|
const pubkeys = await Promise.all(counterparties.map(async (counterparty) => {
|
|
37
37
|
const { publicKey } = await wallet.getPublicKey({
|
|
38
|
-
protocolID: [1,
|
|
38
|
+
protocolID: [1, 'multi sig brc29'],
|
|
39
39
|
keyID,
|
|
40
40
|
counterparty
|
|
41
41
|
});
|
|
@@ -60,14 +60,14 @@ class MultiSigPubkeyHash {
|
|
|
60
60
|
if (address) {
|
|
61
61
|
if (typeof address !== 'string')
|
|
62
62
|
throw new Error('address must be a string');
|
|
63
|
-
const result =
|
|
63
|
+
const result = P2MSKH.thresholdAndTotalFromAddress(address);
|
|
64
64
|
hash = result.hash;
|
|
65
65
|
total = result.total;
|
|
66
66
|
threshold = result.threshold;
|
|
67
67
|
}
|
|
68
68
|
else {
|
|
69
|
-
if (
|
|
70
|
-
throw new Error(
|
|
69
|
+
if ((pubkeys == null) || total < 2)
|
|
70
|
+
throw new Error('at least 2 pubkeys are required');
|
|
71
71
|
const concat = concatPubkeys(pubkeys);
|
|
72
72
|
hash = sdk_1.Hash.hash160(concat);
|
|
73
73
|
}
|
|
@@ -76,9 +76,6 @@ class MultiSigPubkeyHash {
|
|
|
76
76
|
if (total > 10)
|
|
77
77
|
throw new Error('total must be less than or equal to 10');
|
|
78
78
|
const script = new sdk_1.LockingScript();
|
|
79
|
-
for (let i = 0; i < total - 1; i++) {
|
|
80
|
-
script.writeOpCode(sdk_1.OP.OP_CAT);
|
|
81
|
-
}
|
|
82
79
|
script
|
|
83
80
|
.writeOpCode(sdk_1.OP.OP_DUP)
|
|
84
81
|
.writeOpCode(sdk_1.OP.OP_HASH160)
|
|
@@ -95,25 +92,24 @@ class MultiSigPubkeyHash {
|
|
|
95
92
|
script.writeOpCode(sdk_1.OP.OP_CHECKMULTISIG);
|
|
96
93
|
return script;
|
|
97
94
|
}
|
|
98
|
-
unlock(wallet, customInstructions, workingUnlockingScript, signOutputs =
|
|
95
|
+
unlock(wallet, customInstructions, workingUnlockingScript, signOutputs = 'all', anyoneCanPay = false, sourceSatoshis, lockingScript) {
|
|
99
96
|
return {
|
|
100
97
|
sign: async (tx, inputIndex) => {
|
|
101
98
|
var _a, _b, _c;
|
|
102
|
-
if (
|
|
99
|
+
if (workingUnlockingScript == null) {
|
|
103
100
|
workingUnlockingScript = new sdk_1.UnlockingScript();
|
|
104
101
|
workingUnlockingScript.writeOpCode(sdk_1.OP.OP_0);
|
|
105
|
-
customInstructions.pubkeys.
|
|
106
|
-
|
|
107
|
-
});
|
|
102
|
+
const pubkeys = concatPubkeys(customInstructions.pubkeys.map(p => sdk_1.PublicKey.fromString(p)));
|
|
103
|
+
workingUnlockingScript.writeBin(pubkeys);
|
|
108
104
|
}
|
|
109
105
|
let signatureScope = sdk_1.TransactionSignature.SIGHASH_FORKID;
|
|
110
|
-
if (signOutputs ===
|
|
106
|
+
if (signOutputs === 'all') {
|
|
111
107
|
signatureScope |= sdk_1.TransactionSignature.SIGHASH_ALL;
|
|
112
108
|
}
|
|
113
|
-
if (signOutputs ===
|
|
109
|
+
if (signOutputs === 'none') {
|
|
114
110
|
signatureScope |= sdk_1.TransactionSignature.SIGHASH_NONE;
|
|
115
111
|
}
|
|
116
|
-
if (signOutputs ===
|
|
112
|
+
if (signOutputs === 'single') {
|
|
117
113
|
signatureScope |= sdk_1.TransactionSignature.SIGHASH_SINGLE;
|
|
118
114
|
}
|
|
119
115
|
if (anyoneCanPay) {
|
|
@@ -123,17 +119,17 @@ class MultiSigPubkeyHash {
|
|
|
123
119
|
const otherInputs = tx.inputs.filter((_, index) => index !== inputIndex);
|
|
124
120
|
const sourceTXID = input.sourceTXID
|
|
125
121
|
? input.sourceTXID
|
|
126
|
-
: (_a = input.sourceTransaction) === null || _a === void 0 ? void 0 : _a.id(
|
|
122
|
+
: (_a = input.sourceTransaction) === null || _a === void 0 ? void 0 : _a.id('hex');
|
|
127
123
|
if (!sourceTXID) {
|
|
128
|
-
throw new Error(
|
|
124
|
+
throw new Error('The input sourceTXID or sourceTransaction is required for transaction signing.');
|
|
129
125
|
}
|
|
130
126
|
sourceSatoshis || (sourceSatoshis = (_b = input.sourceTransaction) === null || _b === void 0 ? void 0 : _b.outputs[input.sourceOutputIndex].satoshis);
|
|
131
127
|
if (!sourceSatoshis) {
|
|
132
|
-
throw new Error(
|
|
128
|
+
throw new Error('The sourceSatoshis or input sourceTransaction is required for transaction signing.');
|
|
133
129
|
}
|
|
134
130
|
lockingScript || (lockingScript = (_c = input.sourceTransaction) === null || _c === void 0 ? void 0 : _c.outputs[input.sourceOutputIndex].lockingScript);
|
|
135
|
-
if (
|
|
136
|
-
throw new Error(
|
|
131
|
+
if (lockingScript == null) {
|
|
132
|
+
throw new Error('The lockingScript or input sourceTransaction is required for transaction signing.');
|
|
137
133
|
}
|
|
138
134
|
const preimage = sdk_1.TransactionSignature.format({
|
|
139
135
|
sourceTXID,
|
|
@@ -146,14 +142,14 @@ class MultiSigPubkeyHash {
|
|
|
146
142
|
inputSequence: input.sequence || 0xffffffff,
|
|
147
143
|
subscript: lockingScript,
|
|
148
144
|
lockTime: tx.lockTime,
|
|
149
|
-
scope: signatureScope
|
|
145
|
+
scope: signatureScope
|
|
150
146
|
});
|
|
151
147
|
const hashToDirectlySign = sdk_1.Hash.hash256(preimage);
|
|
152
148
|
const { signature } = await wallet.createSignature({
|
|
153
149
|
hashToDirectlySign,
|
|
154
|
-
protocolID: [1,
|
|
150
|
+
protocolID: [1, 'multi sig brc29'],
|
|
155
151
|
counterparty: customInstructions.counterparty,
|
|
156
|
-
keyID: customInstructions.keyID
|
|
152
|
+
keyID: customInstructions.keyID
|
|
157
153
|
});
|
|
158
154
|
const s = sdk_1.Signature.fromDER(signature);
|
|
159
155
|
const sig = new sdk_1.TransactionSignature(s.r, s.s, signatureScope);
|
|
@@ -161,28 +157,27 @@ class MultiSigPubkeyHash {
|
|
|
161
157
|
workingUnlockingScript.writeBin(sigForScript);
|
|
162
158
|
const chunkforSig = workingUnlockingScript.chunks.pop();
|
|
163
159
|
// add it to the array before the pubkeys, pushing the other content to the right
|
|
164
|
-
workingUnlockingScript.chunks.splice(workingUnlockingScript.chunks.length -
|
|
160
|
+
workingUnlockingScript.chunks.splice(workingUnlockingScript.chunks.length - 1, 0, chunkforSig);
|
|
165
161
|
return workingUnlockingScript;
|
|
166
162
|
},
|
|
167
|
-
estimateLength: (tx, inputIndex) => {
|
|
163
|
+
estimateLength: async (tx, inputIndex) => {
|
|
168
164
|
var _a;
|
|
169
|
-
let numberOfPubkeys
|
|
170
|
-
let numberOfSignatures
|
|
171
|
-
const staticLength =
|
|
165
|
+
let numberOfPubkeys;
|
|
166
|
+
let numberOfSignatures;
|
|
167
|
+
const staticLength = 8;
|
|
172
168
|
const input = tx.inputs[inputIndex];
|
|
173
169
|
const lockingScript = (_a = input.sourceTransaction) === null || _a === void 0 ? void 0 : _a.outputs[input.sourceOutputIndex].lockingScript;
|
|
174
|
-
if (
|
|
175
|
-
return Promise.resolve(1000); // guess
|
|
170
|
+
if (lockingScript == null) {
|
|
171
|
+
return await Promise.resolve(1000); // guess
|
|
176
172
|
}
|
|
177
|
-
const totalChunk = lockingScript
|
|
173
|
+
const totalChunk = lockingScript.chunks.at(-2);
|
|
178
174
|
numberOfPubkeys = numberFromScriptChunk(totalChunk);
|
|
179
|
-
const
|
|
180
|
-
const thresholdChunk = lockingScript === null || lockingScript === void 0 ? void 0 : lockingScript.chunks[thresholdPos];
|
|
175
|
+
const thresholdChunk = lockingScript.chunks[4];
|
|
181
176
|
numberOfSignatures = numberFromScriptChunk(thresholdChunk);
|
|
182
|
-
return Promise.resolve(staticLength + (numberOfSignatures * 74) + (numberOfPubkeys * 34));
|
|
177
|
+
return await Promise.resolve(staticLength + (numberOfSignatures * 74) + (numberOfPubkeys * 34));
|
|
183
178
|
}
|
|
184
179
|
};
|
|
185
180
|
}
|
|
186
181
|
}
|
|
187
|
-
exports.
|
|
188
|
-
//# 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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"}
|