@bsv/templates 1.3.0 → 1.4.1
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 +11 -10
- package/dist/cjs/src/MultiPushDrop.js +4 -9
- package/dist/cjs/src/MultiPushDrop.js.map +1 -1
- package/dist/cjs/src/{MultiSigPubkeyHash.js → P2MSKH.js} +36 -41
- 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/MultiPushDrop.js +4 -9
- package/dist/esm/src/MultiPushDrop.js.map +1 -1
- package/dist/esm/src/{MultiSigPubkeyHash.js → P2MSKH.js} +35 -40
- 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/MultiPushDrop.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 +20 -19
- package/src/MultiPushDrop.ts +5 -10
- 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
|
@@ -143,17 +143,13 @@ export class MultiPushDrop {
|
|
|
143
143
|
}
|
|
144
144
|
// Pick the value on the stack that's right before the locking script.
|
|
145
145
|
// This should be the index of the key to use in the unlock.
|
|
146
|
-
lockPart.push(createMinimallyEncodedScriptChunk([nPublicKeys]));
|
|
147
|
-
lockPart.push({ op: OP.OP_PICK });
|
|
146
|
+
lockPart.push(createMinimallyEncodedScriptChunk([nPublicKeys]), { op: OP.OP_PICK });
|
|
148
147
|
// Now we use the index to get the actual key.
|
|
149
148
|
lockPart.push({ op: OP.OP_PICK });
|
|
150
149
|
// We pull the signature from the bottom of the stack, no matter the number of keys.
|
|
151
|
-
lockPart.push({ op: OP.OP_DEPTH });
|
|
152
|
-
lockPart.push({ op: OP.OP_1SUB });
|
|
153
|
-
lockPart.push({ op: OP.OP_PICK });
|
|
150
|
+
lockPart.push({ op: OP.OP_DEPTH }, { op: OP.OP_1SUB }, { op: OP.OP_PICK });
|
|
154
151
|
// We swap the signature and public key so they're in the correct order, then CHECKSIGVERIFY
|
|
155
|
-
lockPart.push({ op: OP.OP_SWAP });
|
|
156
|
-
lockPart.push({ op: OP.OP_CHECKSIGVERIFY });
|
|
152
|
+
lockPart.push({ op: OP.OP_SWAP }, { op: OP.OP_CHECKSIGVERIFY });
|
|
157
153
|
// Construct PushDrop Part for fields
|
|
158
154
|
const pushDropPart = [];
|
|
159
155
|
for (const field of fields) {
|
|
@@ -259,8 +255,7 @@ export class MultiPushDrop {
|
|
|
259
255
|
const sigForScript = txSignature.toChecksigFormat();
|
|
260
256
|
// Create Unlocking Script Chunks: <Signature> <Index>
|
|
261
257
|
const unlockingChunks = [];
|
|
262
|
-
unlockingChunks.push({ op: sigForScript.length, data: sigForScript });
|
|
263
|
-
unlockingChunks.push(createMinimallyEncodedScriptChunk([unlockerIndex]));
|
|
258
|
+
unlockingChunks.push({ op: sigForScript.length, data: sigForScript }, createMinimallyEncodedScriptChunk([unlockerIndex]));
|
|
264
259
|
return new UnlockingScript(unlockingChunks);
|
|
265
260
|
},
|
|
266
261
|
// Estimate length: Signature (~71-73 bytes) + Index push (1 byte for 0-15, potentially more)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MultiPushDrop.js","sourceRoot":"","sources":["../../../src/MultiPushDrop.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"MultiPushDrop.js","sourceRoot":"","sources":["../../../src/MultiPushDrop.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { LockingScript, UnlockingScript, OP, Hash, PublicKey, TransactionSignature, Signature, Utils } from
|
|
1
|
+
import { LockingScript, UnlockingScript, OP, Hash, PublicKey, TransactionSignature, Signature, Utils } from '@bsv/sdk';
|
|
2
2
|
function concatPubkeys(pubkeys) {
|
|
3
|
-
return pubkeys.map((p) => p.toDER()).
|
|
3
|
+
return pubkeys.map((p) => p.toDER()).flat();
|
|
4
4
|
}
|
|
5
5
|
function numberFromScriptChunk(chunk) {
|
|
6
6
|
let returnNum;
|
|
7
|
-
if (
|
|
8
|
-
returnNum = 1 + chunk.op - OP.OP_1;
|
|
7
|
+
if (chunk.data == null) {
|
|
8
|
+
returnNum = 1 + (chunk.op) - OP.OP_1;
|
|
9
9
|
}
|
|
10
10
|
else {
|
|
11
11
|
const reader = new Utils.Reader(chunk.data);
|
|
@@ -14,7 +14,7 @@ function numberFromScriptChunk(chunk) {
|
|
|
14
14
|
}
|
|
15
15
|
return returnNum;
|
|
16
16
|
}
|
|
17
|
-
export class
|
|
17
|
+
export class P2MSKH {
|
|
18
18
|
static address(pubkeys, threshold) {
|
|
19
19
|
if (threshold < 1 || threshold > pubkeys.length)
|
|
20
20
|
throw new Error('threshold must be between 1 and the number of pubkeys');
|
|
@@ -32,7 +32,7 @@ export class MultiSigPubkeyHash {
|
|
|
32
32
|
static async addressBRC29(wallet, counterparties, keyID, threshold) {
|
|
33
33
|
const pubkeys = await Promise.all(counterparties.map(async (counterparty) => {
|
|
34
34
|
const { publicKey } = await wallet.getPublicKey({
|
|
35
|
-
protocolID: [1,
|
|
35
|
+
protocolID: [1, 'multi sig brc29'],
|
|
36
36
|
keyID,
|
|
37
37
|
counterparty
|
|
38
38
|
});
|
|
@@ -57,14 +57,14 @@ export class MultiSigPubkeyHash {
|
|
|
57
57
|
if (address) {
|
|
58
58
|
if (typeof address !== 'string')
|
|
59
59
|
throw new Error('address must be a string');
|
|
60
|
-
const result =
|
|
60
|
+
const result = P2MSKH.thresholdAndTotalFromAddress(address);
|
|
61
61
|
hash = result.hash;
|
|
62
62
|
total = result.total;
|
|
63
63
|
threshold = result.threshold;
|
|
64
64
|
}
|
|
65
65
|
else {
|
|
66
|
-
if (
|
|
67
|
-
throw new Error(
|
|
66
|
+
if ((pubkeys == null) || total < 2)
|
|
67
|
+
throw new Error('at least 2 pubkeys are required');
|
|
68
68
|
const concat = concatPubkeys(pubkeys);
|
|
69
69
|
hash = Hash.hash160(concat);
|
|
70
70
|
}
|
|
@@ -73,9 +73,6 @@ export class MultiSigPubkeyHash {
|
|
|
73
73
|
if (total > 10)
|
|
74
74
|
throw new Error('total must be less than or equal to 10');
|
|
75
75
|
const script = new LockingScript();
|
|
76
|
-
for (let i = 0; i < total - 1; i++) {
|
|
77
|
-
script.writeOpCode(OP.OP_CAT);
|
|
78
|
-
}
|
|
79
76
|
script
|
|
80
77
|
.writeOpCode(OP.OP_DUP)
|
|
81
78
|
.writeOpCode(OP.OP_HASH160)
|
|
@@ -92,24 +89,23 @@ export class MultiSigPubkeyHash {
|
|
|
92
89
|
script.writeOpCode(OP.OP_CHECKMULTISIG);
|
|
93
90
|
return script;
|
|
94
91
|
}
|
|
95
|
-
unlock(wallet, customInstructions, workingUnlockingScript, signOutputs =
|
|
92
|
+
unlock(wallet, customInstructions, workingUnlockingScript, signOutputs = 'all', anyoneCanPay = false, sourceSatoshis, lockingScript) {
|
|
96
93
|
return {
|
|
97
94
|
sign: async (tx, inputIndex) => {
|
|
98
|
-
if (
|
|
95
|
+
if (workingUnlockingScript == null) {
|
|
99
96
|
workingUnlockingScript = new UnlockingScript();
|
|
100
97
|
workingUnlockingScript.writeOpCode(OP.OP_0);
|
|
101
|
-
customInstructions.pubkeys.
|
|
102
|
-
|
|
103
|
-
});
|
|
98
|
+
const pubkeys = concatPubkeys(customInstructions.pubkeys.map(p => PublicKey.fromString(p)));
|
|
99
|
+
workingUnlockingScript.writeBin(pubkeys);
|
|
104
100
|
}
|
|
105
101
|
let signatureScope = TransactionSignature.SIGHASH_FORKID;
|
|
106
|
-
if (signOutputs ===
|
|
102
|
+
if (signOutputs === 'all') {
|
|
107
103
|
signatureScope |= TransactionSignature.SIGHASH_ALL;
|
|
108
104
|
}
|
|
109
|
-
if (signOutputs ===
|
|
105
|
+
if (signOutputs === 'none') {
|
|
110
106
|
signatureScope |= TransactionSignature.SIGHASH_NONE;
|
|
111
107
|
}
|
|
112
|
-
if (signOutputs ===
|
|
108
|
+
if (signOutputs === 'single') {
|
|
113
109
|
signatureScope |= TransactionSignature.SIGHASH_SINGLE;
|
|
114
110
|
}
|
|
115
111
|
if (anyoneCanPay) {
|
|
@@ -119,17 +115,17 @@ export class MultiSigPubkeyHash {
|
|
|
119
115
|
const otherInputs = tx.inputs.filter((_, index) => index !== inputIndex);
|
|
120
116
|
const sourceTXID = input.sourceTXID
|
|
121
117
|
? input.sourceTXID
|
|
122
|
-
: input.sourceTransaction?.id(
|
|
118
|
+
: input.sourceTransaction?.id('hex');
|
|
123
119
|
if (!sourceTXID) {
|
|
124
|
-
throw new Error(
|
|
120
|
+
throw new Error('The input sourceTXID or sourceTransaction is required for transaction signing.');
|
|
125
121
|
}
|
|
126
122
|
sourceSatoshis ||= input.sourceTransaction?.outputs[input.sourceOutputIndex].satoshis;
|
|
127
123
|
if (!sourceSatoshis) {
|
|
128
|
-
throw new Error(
|
|
124
|
+
throw new Error('The sourceSatoshis or input sourceTransaction is required for transaction signing.');
|
|
129
125
|
}
|
|
130
126
|
lockingScript ||= input.sourceTransaction?.outputs[input.sourceOutputIndex].lockingScript;
|
|
131
|
-
if (
|
|
132
|
-
throw new Error(
|
|
127
|
+
if (lockingScript == null) {
|
|
128
|
+
throw new Error('The lockingScript or input sourceTransaction is required for transaction signing.');
|
|
133
129
|
}
|
|
134
130
|
const preimage = TransactionSignature.format({
|
|
135
131
|
sourceTXID,
|
|
@@ -142,14 +138,14 @@ export class MultiSigPubkeyHash {
|
|
|
142
138
|
inputSequence: input.sequence || 0xffffffff,
|
|
143
139
|
subscript: lockingScript,
|
|
144
140
|
lockTime: tx.lockTime,
|
|
145
|
-
scope: signatureScope
|
|
141
|
+
scope: signatureScope
|
|
146
142
|
});
|
|
147
143
|
const hashToDirectlySign = Hash.hash256(preimage);
|
|
148
144
|
const { signature } = await wallet.createSignature({
|
|
149
145
|
hashToDirectlySign,
|
|
150
|
-
protocolID: [1,
|
|
146
|
+
protocolID: [1, 'multi sig brc29'],
|
|
151
147
|
counterparty: customInstructions.counterparty,
|
|
152
|
-
keyID: customInstructions.keyID
|
|
148
|
+
keyID: customInstructions.keyID
|
|
153
149
|
});
|
|
154
150
|
const s = Signature.fromDER(signature);
|
|
155
151
|
const sig = new TransactionSignature(s.r, s.s, signatureScope);
|
|
@@ -157,26 +153,25 @@ export class MultiSigPubkeyHash {
|
|
|
157
153
|
workingUnlockingScript.writeBin(sigForScript);
|
|
158
154
|
const chunkforSig = workingUnlockingScript.chunks.pop();
|
|
159
155
|
// add it to the array before the pubkeys, pushing the other content to the right
|
|
160
|
-
workingUnlockingScript.chunks.splice(
|
|
156
|
+
workingUnlockingScript.chunks.splice(-1, 0, chunkforSig);
|
|
161
157
|
return workingUnlockingScript;
|
|
162
158
|
},
|
|
163
|
-
estimateLength: (tx, inputIndex) => {
|
|
164
|
-
let numberOfPubkeys
|
|
165
|
-
let numberOfSignatures
|
|
166
|
-
const staticLength =
|
|
159
|
+
estimateLength: async (tx, inputIndex) => {
|
|
160
|
+
let numberOfPubkeys;
|
|
161
|
+
let numberOfSignatures;
|
|
162
|
+
const staticLength = 8;
|
|
167
163
|
const input = tx.inputs[inputIndex];
|
|
168
164
|
const lockingScript = input.sourceTransaction?.outputs[input.sourceOutputIndex].lockingScript;
|
|
169
|
-
if (
|
|
170
|
-
return Promise.resolve(1000); // guess
|
|
165
|
+
if (lockingScript == null) {
|
|
166
|
+
return await Promise.resolve(1000); // guess
|
|
171
167
|
}
|
|
172
|
-
const totalChunk = lockingScript
|
|
168
|
+
const totalChunk = lockingScript.chunks.at(-2);
|
|
173
169
|
numberOfPubkeys = numberFromScriptChunk(totalChunk);
|
|
174
|
-
const
|
|
175
|
-
const thresholdChunk = lockingScript?.chunks[thresholdPos];
|
|
170
|
+
const thresholdChunk = lockingScript.chunks[4];
|
|
176
171
|
numberOfSignatures = numberFromScriptChunk(thresholdChunk);
|
|
177
|
-
return Promise.resolve(staticLength + (numberOfSignatures * 74) + (numberOfPubkeys * 34));
|
|
172
|
+
return await Promise.resolve(staticLength + (numberOfSignatures * 74) + (numberOfPubkeys * 34));
|
|
178
173
|
}
|
|
179
174
|
};
|
|
180
175
|
}
|
|
181
176
|
}
|
|
182
|
-
//# sourceMappingURL=
|
|
177
|
+
//# sourceMappingURL=P2MSKH.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"P2MSKH.js","sourceRoot":"","sources":["../../../src/P2MSKH.ts"],"names":[],"mappings":"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"}
|