@bsv/templates 1.1.0 → 1.2.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.
Files changed (38) hide show
  1. package/README.md +1 -0
  2. package/dist/cjs/mod.js +4 -40
  3. package/dist/cjs/mod.js.map +1 -1
  4. package/dist/cjs/package.json +6 -5
  5. package/dist/cjs/src/MultiPushDrop.js +2 -1
  6. package/dist/cjs/src/MultiPushDrop.js.map +1 -1
  7. package/dist/cjs/src/MultiSigPubkeyHash.js +173 -0
  8. package/dist/cjs/src/MultiSigPubkeyHash.js.map +1 -0
  9. package/dist/cjs/src/OpReturn.js +2 -1
  10. package/dist/cjs/src/OpReturn.js.map +1 -1
  11. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  12. package/dist/esm/mod.js +2 -3
  13. package/dist/esm/mod.js.map +1 -1
  14. package/dist/esm/src/MultiPushDrop.js +1 -1
  15. package/dist/esm/src/MultiPushDrop.js.map +1 -1
  16. package/dist/esm/src/MultiSigPubkeyHash.js +170 -0
  17. package/dist/esm/src/MultiSigPubkeyHash.js.map +1 -0
  18. package/dist/esm/src/OpReturn.js +1 -1
  19. package/dist/esm/src/OpReturn.js.map +1 -1
  20. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  21. package/dist/types/mod.d.ts +2 -3
  22. package/dist/types/mod.d.ts.map +1 -1
  23. package/dist/types/src/MultiPushDrop.d.ts +1 -1
  24. package/dist/types/src/MultiPushDrop.d.ts.map +1 -1
  25. package/dist/types/src/MultiSigPubkeyHash.d.ts +24 -0
  26. package/dist/types/src/MultiSigPubkeyHash.d.ts.map +1 -0
  27. package/dist/types/src/OpReturn.d.ts +1 -1
  28. package/dist/types/src/OpReturn.d.ts.map +1 -1
  29. package/dist/types/tsconfig.types.tsbuildinfo +1 -1
  30. package/mod.ts +2 -3
  31. package/package.json +6 -5
  32. package/src/MultiPushDrop.ts +1 -1
  33. package/src/MultiSigPubkeyHash.ts +214 -0
  34. package/src/OpReturn.ts +1 -1
  35. package/src/Metanet.ts +0 -49
  36. package/src/__tests/Metanet.test.ts +0 -21
  37. package/src/__tests/MultiPushDrop.test.ts +0 -256
  38. package/src/__tests/OpReturn.test.ts +0 -11
@@ -0,0 +1,170 @@
1
+ import { LockingScript, UnlockingScript, OP, Hash, PublicKey, TransactionSignature, Signature, Utils } from "@bsv/sdk";
2
+ export class MultiSigPubkeyHash {
3
+ static address(pubkeys, threshold) {
4
+ const concat = pubkeys.map((p) => p.toDER()).reduce((a, b) => a.concat(b), []);
5
+ const hash = Hash.hash160(concat);
6
+ const writer = new Utils.Writer();
7
+ writer.write(hash);
8
+ writer.writeVarIntNum(threshold);
9
+ writer.writeVarIntNum(pubkeys.length);
10
+ const data = writer.toArray();
11
+ return Utils.toBase58Check(data, [0x98]);
12
+ }
13
+ static async addressBRC29(wallet, counterparties, keyID, threshold) {
14
+ const pubkeys = await Promise.all(counterparties.map(async (counterparty) => {
15
+ const { publicKey } = await wallet.getPublicKey({
16
+ protocolID: [1, "multi sig brc29"],
17
+ keyID,
18
+ counterparty
19
+ });
20
+ return PublicKey.fromString(publicKey);
21
+ }));
22
+ return { pubkeys: pubkeys.map(p => p.toString()), address: this.address(pubkeys, threshold) };
23
+ }
24
+ static thresholdAndTotalFromAddress(address) {
25
+ const h = Utils.fromBase58Check(address);
26
+ if (h.prefix[0] !== 0x98) {
27
+ throw new Error('only P2MSH is supported, set your prefix byte to 0x98');
28
+ }
29
+ const reader = new Utils.Reader(h.data);
30
+ const hash = reader.read(20);
31
+ const threshold = reader.readVarIntNum();
32
+ const total = reader.readVarIntNum();
33
+ return { hash, threshold, total };
34
+ }
35
+ lock(address, pubkeys, threshold = 1) {
36
+ let hash;
37
+ let total;
38
+ if (address) {
39
+ if (typeof address !== 'string')
40
+ throw new Error('address must be a string');
41
+ const result = MultiSigPubkeyHash.thresholdAndTotalFromAddress(address);
42
+ hash = result.hash;
43
+ total = result.total;
44
+ threshold = result.threshold;
45
+ }
46
+ else {
47
+ if (!pubkeys || pubkeys.length < 2 || pubkeys.length < threshold)
48
+ throw new Error(`at least ${threshold} pubkeys are required, or use an address`);
49
+ const concat = pubkeys.map((p) => p.encode(true)).reduce((a, b) => a.concat(b), []);
50
+ hash = Hash.hash160(concat);
51
+ total = pubkeys.length;
52
+ }
53
+ const script = new LockingScript();
54
+ for (let i = 0; i < total - 1; i++) {
55
+ script.writeOpCode(OP.OP_CAT);
56
+ }
57
+ script
58
+ .writeOpCode(OP.OP_DUP)
59
+ .writeOpCode(OP.OP_HASH160)
60
+ .writeBin(hash)
61
+ .writeOpCode(OP.OP_EQUALVERIFY)
62
+ .writeNumber(threshold)
63
+ .writeOpCode(OP.OP_SWAP);
64
+ for (let i = 0; i < total - 1; i++) {
65
+ script
66
+ .writeNumber(33)
67
+ .writeOpCode(OP.OP_SPLIT);
68
+ }
69
+ script.writeNumber(total);
70
+ script.writeOpCode(OP.OP_CHECKMULTISIG);
71
+ return script;
72
+ }
73
+ unlock(wallet, customInstructions, workingUnlockingScript, signOutputs = "all", anyoneCanPay = false, sourceSatoshis, lockingScript) {
74
+ return {
75
+ sign: async (tx, inputIndex) => {
76
+ if (!workingUnlockingScript) {
77
+ workingUnlockingScript = new UnlockingScript();
78
+ workingUnlockingScript.writeOpCode(OP.OP_0);
79
+ customInstructions.pubkeys.forEach((pubkey) => {
80
+ workingUnlockingScript.writeBin(PublicKey.fromString(pubkey).toDER());
81
+ });
82
+ }
83
+ let signatureScope = TransactionSignature.SIGHASH_FORKID;
84
+ if (signOutputs === "all") {
85
+ signatureScope |= TransactionSignature.SIGHASH_ALL;
86
+ }
87
+ if (signOutputs === "none") {
88
+ signatureScope |= TransactionSignature.SIGHASH_NONE;
89
+ }
90
+ if (signOutputs === "single") {
91
+ signatureScope |= TransactionSignature.SIGHASH_SINGLE;
92
+ }
93
+ if (anyoneCanPay) {
94
+ signatureScope |= TransactionSignature.SIGHASH_ANYONECANPAY;
95
+ }
96
+ const input = tx.inputs[inputIndex];
97
+ const otherInputs = tx.inputs.filter((_, index) => index !== inputIndex);
98
+ const sourceTXID = input.sourceTXID
99
+ ? input.sourceTXID
100
+ : input.sourceTransaction?.id("hex");
101
+ if (!sourceTXID) {
102
+ throw new Error("The input sourceTXID or sourceTransaction is required for transaction signing.");
103
+ }
104
+ sourceSatoshis ||=
105
+ input.sourceTransaction?.outputs[input.sourceOutputIndex].satoshis;
106
+ if (!sourceSatoshis) {
107
+ throw new Error("The sourceSatoshis or input sourceTransaction is required for transaction signing.");
108
+ }
109
+ lockingScript ||=
110
+ input.sourceTransaction?.outputs[input.sourceOutputIndex]
111
+ .lockingScript;
112
+ if (!lockingScript) {
113
+ throw new Error("The lockingScript or input sourceTransaction is required for transaction signing.");
114
+ }
115
+ const preimage = TransactionSignature.format({
116
+ sourceTXID,
117
+ sourceOutputIndex: input.sourceOutputIndex,
118
+ sourceSatoshis,
119
+ transactionVersion: tx.version,
120
+ otherInputs,
121
+ inputIndex,
122
+ outputs: tx.outputs,
123
+ inputSequence: input.sequence || 0xffffffff,
124
+ subscript: lockingScript,
125
+ lockTime: tx.lockTime,
126
+ scope: signatureScope,
127
+ });
128
+ const hashToDirectlySign = Hash.hash256(preimage);
129
+ const { signature } = await wallet.createSignature({
130
+ hashToDirectlySign,
131
+ protocolID: [1, "multi sig brc29"],
132
+ counterparty: customInstructions.counterparty,
133
+ keyID: customInstructions.keyID,
134
+ });
135
+ const s = Signature.fromDER(signature);
136
+ const sig = new TransactionSignature(s.r, s.s, signatureScope);
137
+ const sigForScript = sig.toChecksigFormat();
138
+ workingUnlockingScript.writeBin(sigForScript);
139
+ const chunkforSig = workingUnlockingScript.chunks.pop();
140
+ // add it to the array at position 1, pushing the other content to the right
141
+ workingUnlockingScript.chunks.splice(1, 0, chunkforSig);
142
+ return workingUnlockingScript;
143
+ },
144
+ estimateLength: (tx, inputIndex) => {
145
+ let numberOfPubkeys = 2;
146
+ let numberOfSignatures = 1;
147
+ const staticLength = 6;
148
+ const input = tx.inputs[inputIndex];
149
+ const lockingScript = input.sourceTransaction?.outputs[input.sourceOutputIndex].lockingScript;
150
+ if (!lockingScript) {
151
+ return Promise.resolve(1000); // guess
152
+ }
153
+ let chunks = lockingScript.chunks.length - 6; // remove static opcodes
154
+ const numPubKeys = chunks / 4;
155
+ const thresholdPos = 6 + ((numPubKeys - 1) * 3);
156
+ const n = lockingScript?.chunks[thresholdPos];
157
+ if (!n.data) {
158
+ numberOfSignatures = 1 + n.op - OP.OP_1;
159
+ }
160
+ else {
161
+ const reader = new Utils.Reader(n.data);
162
+ const threshold = reader.readInt64LEBn();
163
+ numberOfSignatures = threshold.toNumber();
164
+ }
165
+ return Promise.resolve(staticLength + (numberOfPubkeys * 33) + (numberOfSignatures * 72));
166
+ }
167
+ };
168
+ }
169
+ }
170
+ //# sourceMappingURL=MultiSigPubkeyHash.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MultiSigPubkeyHash.js","sourceRoot":"","sources":["../../../src/MultiSigPubkeyHash.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@ import { OP, LockingScript, Utils } from '@bsv/sdk';
4
4
  *
5
5
  * This class provides methods to create OpReturn scripts from data. Only lock script is available.
6
6
  */
7
- export default class OpReturn {
7
+ export class OpReturn {
8
8
  /**
9
9
  * Creates an OpReturn script
10
10
  *
@@ -1 +1 @@
1
- {"version":3,"file":"OpReturn.js","sourceRoot":"","sources":["../../../src/OpReturn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAA0B,aAAa,EAAgC,KAAK,EAAE,MAAM,UAAU,CAAA;AAEzG;;;;GAIG;AACH,MAAM,CAAC,OAAO,OAAO,QAAQ;IAC3B;;;;;;SAMK;IACL,IAAI,CAAE,IAAkC,EAAE,GAA+B;QACvE,MAAM,MAAM,GAA2C;YACrD,EAAE,EAAE,EAAE,EAAE,CAAC,QAAQ,EAAE;YACnB,EAAE,EAAE,EAAE,EAAE,CAAC,SAAS,EAAE;SACrB,CAAA;QAED,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,IAAI,GAAG,CAAC,IAAI,CAAC,CAAA;QACf,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;YACrD,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,IAAgB,EAAE,CAAC,CAAA;QAC1D,CAAC;aAAM,CAAC;YACN,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;gBACzC,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;gBACrC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAA;YAC5C,CAAC;QACH,CAAC;QAED,OAAO,IAAI,aAAa,CAAC,MAAM,CAAC,CAAA;IAClC,CAAC;IAED;;SAEK;IACL,MAAM;QAIJ,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAA;IACjE,CAAC;IAED;;;;KAIC;IACD,MAAM,CAAC,MAAM,CAAE,MAAc;QAC3B,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QACjD,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAA;IACvE,CAAC;CACF"}
1
+ {"version":3,"file":"OpReturn.js","sourceRoot":"","sources":["../../../src/OpReturn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAA0B,aAAa,EAAgC,KAAK,EAAE,MAAM,UAAU,CAAA;AAEzG;;;;GAIG;AACH,MAAM,OAAO,QAAQ;IACnB;;;;;;SAMK;IACL,IAAI,CAAE,IAAkC,EAAE,GAA+B;QACvE,MAAM,MAAM,GAA2C;YACrD,EAAE,EAAE,EAAE,EAAE,CAAC,QAAQ,EAAE;YACnB,EAAE,EAAE,EAAE,EAAE,CAAC,SAAS,EAAE;SACrB,CAAA;QAED,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,IAAI,GAAG,CAAC,IAAI,CAAC,CAAA;QACf,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;YACrD,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,IAAgB,EAAE,CAAC,CAAA;QAC1D,CAAC;aAAM,CAAC;YACN,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;gBACzC,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;gBACrC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAA;YAC5C,CAAC;QACH,CAAC;QAED,OAAO,IAAI,aAAa,CAAC,MAAM,CAAC,CAAA;IAClC,CAAC;IAED;;SAEK;IACL,MAAM;QAIJ,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAA;IACjE,CAAC;IAED;;;;KAIC;IACD,MAAM,CAAC,MAAM,CAAE,MAAc;QAC3B,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QACjD,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAA;IACvE,CAAC;CACF"}