@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
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bsv/templates",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.4.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "BSV Blockchain Script Templates",
|
|
6
6
|
"main": "dist/cjs/mod.js",
|
|
@@ -24,18 +24,10 @@
|
|
|
24
24
|
"require": "./dist/cjs/src/*.js"
|
|
25
25
|
}
|
|
26
26
|
},
|
|
27
|
-
"scripts": {
|
|
28
|
-
"test": "npm run build && jest",
|
|
29
|
-
"test:watch": "npm run build && jest --watch",
|
|
30
|
-
"test:coverage": "npm run build && jest --coverage",
|
|
31
|
-
"lint": "ts-standard --fix 'src/**/*.ts'",
|
|
32
|
-
"build": "tsc -b && tsconfig-to-dual-package tsconfig.cjs.json",
|
|
33
|
-
"dev": "tsc -b -w",
|
|
34
|
-
"prepublish": "npm run build"
|
|
35
|
-
},
|
|
36
27
|
"repository": {
|
|
37
28
|
"type": "git",
|
|
38
|
-
"url": "git+https://github.com/bsv-blockchain/ts-
|
|
29
|
+
"url": "git+https://github.com/bsv-blockchain/ts-stack.git",
|
|
30
|
+
"directory": "packages/helpers/ts-templates"
|
|
39
31
|
},
|
|
40
32
|
"keywords": [
|
|
41
33
|
"BSV",
|
|
@@ -48,19 +40,28 @@
|
|
|
48
40
|
"author": "BSV Association",
|
|
49
41
|
"license": "SEE LICENSE IN LICENSE.txt",
|
|
50
42
|
"bugs": {
|
|
51
|
-
"url": "https://github.com/bsv-blockchain/ts-
|
|
43
|
+
"url": "https://github.com/bsv-blockchain/ts-stack/issues"
|
|
52
44
|
},
|
|
53
|
-
"homepage": "https://github.com/bsv-blockchain/ts-templates#readme",
|
|
45
|
+
"homepage": "https://github.com/bsv-blockchain/ts-stack/tree/main/packages/helpers/ts-templates#readme",
|
|
54
46
|
"devDependencies": {
|
|
55
|
-
"@bsv/wallet-toolbox": "^1.
|
|
56
|
-
"@types/jest": "^
|
|
57
|
-
"jest": "^
|
|
58
|
-
"ts-jest": "^29.
|
|
47
|
+
"@bsv/wallet-toolbox": "^2.1.27",
|
|
48
|
+
"@types/jest": "^30.0.0",
|
|
49
|
+
"jest": "^30.3.0",
|
|
50
|
+
"ts-jest": "^29.4.9",
|
|
59
51
|
"ts-standard": "^12.0.2",
|
|
60
52
|
"tsconfig-to-dual-package": "^1.2.0",
|
|
61
53
|
"typescript": "^5.2.2"
|
|
62
54
|
},
|
|
63
55
|
"dependencies": {
|
|
64
|
-
"@bsv/sdk": "^1.
|
|
56
|
+
"@bsv/sdk": "^2.1.2"
|
|
57
|
+
},
|
|
58
|
+
"scripts": {
|
|
59
|
+
"test": "npm run build && jest --passWithNoTests",
|
|
60
|
+
"test:watch": "npm run build && jest --watch",
|
|
61
|
+
"test:coverage": "npm run build && jest --coverage",
|
|
62
|
+
"lint": "ts-standard --fix 'src/**/*.ts'",
|
|
63
|
+
"build": "tsc -b && tsconfig-to-dual-package tsconfig.cjs.json",
|
|
64
|
+
"dev": "tsc -b -w",
|
|
65
|
+
"prepublish": "npm run build"
|
|
65
66
|
}
|
|
66
|
-
}
|
|
67
|
+
}
|
package/src/MultiPushDrop.ts
CHANGED
|
@@ -52,7 +52,7 @@ export interface MultiPushDropDecoded {
|
|
|
52
52
|
* there is no constraint enforcing that any group members are kept in the loop. Any group
|
|
53
53
|
* member can trivially destroy the token. For more practical non-trusted arrangements,
|
|
54
54
|
* techniques like OP_PUSH_TX should be used instead.
|
|
55
|
-
*
|
|
55
|
+
*
|
|
56
56
|
* There's also a known bug in this implementation where it won't work with over around 120
|
|
57
57
|
* keys but involving more than a few people than just a few into a FULLY TRUST BASED exchange
|
|
58
58
|
* is never a good idea. Use a more robust, application-specific mechanism.
|
|
@@ -173,20 +173,16 @@ export class MultiPushDrop implements ScriptTemplate {
|
|
|
173
173
|
|
|
174
174
|
// Pick the value on the stack that's right before the locking script.
|
|
175
175
|
// This should be the index of the key to use in the unlock.
|
|
176
|
-
lockPart.push(createMinimallyEncodedScriptChunk([nPublicKeys]))
|
|
177
|
-
lockPart.push({ op: OP.OP_PICK })
|
|
176
|
+
lockPart.push(createMinimallyEncodedScriptChunk([nPublicKeys]), { op: OP.OP_PICK })
|
|
178
177
|
|
|
179
178
|
// Now we use the index to get the actual key.
|
|
180
179
|
lockPart.push({ op: OP.OP_PICK })
|
|
181
180
|
|
|
182
181
|
// We pull the signature from the bottom of the stack, no matter the number of keys.
|
|
183
|
-
lockPart.push({ op: OP.OP_DEPTH })
|
|
184
|
-
lockPart.push({ op: OP.OP_1SUB })
|
|
185
|
-
lockPart.push({ op: OP.OP_PICK })
|
|
182
|
+
lockPart.push({ op: OP.OP_DEPTH }, { op: OP.OP_1SUB }, { op: OP.OP_PICK })
|
|
186
183
|
|
|
187
184
|
// We swap the signature and public key so they're in the correct order, then CHECKSIGVERIFY
|
|
188
|
-
lockPart.push({ op: OP.OP_SWAP })
|
|
189
|
-
lockPart.push({ op: OP.OP_CHECKSIGVERIFY })
|
|
185
|
+
lockPart.push({ op: OP.OP_SWAP }, { op: OP.OP_CHECKSIGVERIFY })
|
|
190
186
|
|
|
191
187
|
// Construct PushDrop Part for fields
|
|
192
188
|
const pushDropPart: Array<{ op: number, data?: number[] }> = []
|
|
@@ -302,8 +298,7 @@ export class MultiPushDrop implements ScriptTemplate {
|
|
|
302
298
|
|
|
303
299
|
// Create Unlocking Script Chunks: <Signature> <Index>
|
|
304
300
|
const unlockingChunks: Array<{ op: number, data?: number[] }> = []
|
|
305
|
-
unlockingChunks.push({ op: sigForScript.length, data: sigForScript })
|
|
306
|
-
unlockingChunks.push(createMinimallyEncodedScriptChunk([unlockerIndex]))
|
|
301
|
+
unlockingChunks.push({ op: sigForScript.length, data: sigForScript }, createMinimallyEncodedScriptChunk([unlockerIndex]))
|
|
307
302
|
return new UnlockingScript(unlockingChunks)
|
|
308
303
|
},
|
|
309
304
|
// Estimate length: Signature (~71-73 bytes) + Index push (1 byte for 0-15, potentially more)
|
package/src/P2MSKH.ts
ADDED
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
import { ScriptTemplate, LockingScript, UnlockingScript, OP, Hash, PublicKey, TransactionSignature, Signature, Utils, WalletInterface, Transaction, ScriptChunk } from '@bsv/sdk'
|
|
2
|
+
|
|
3
|
+
export interface MultiSigInstructions {
|
|
4
|
+
keyID: string
|
|
5
|
+
counterparty: string
|
|
6
|
+
pubkeys: string[]
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
function concatPubkeys (pubkeys: PublicKey[]): number[] {
|
|
10
|
+
return pubkeys.map((p) => p.toDER() as number[]).flat()
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
function numberFromScriptChunk (chunk: ScriptChunk): number {
|
|
14
|
+
let returnNum: number
|
|
15
|
+
if (chunk.data == null) {
|
|
16
|
+
returnNum = 1 + (chunk.op) - OP.OP_1
|
|
17
|
+
} else {
|
|
18
|
+
const reader = new Utils.Reader(chunk.data)
|
|
19
|
+
const threshold = reader.readInt64LEBn()
|
|
20
|
+
returnNum = threshold.toNumber()
|
|
21
|
+
}
|
|
22
|
+
return returnNum
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export class P2MSKH implements ScriptTemplate {
|
|
26
|
+
static address (pubkeys: PublicKey[], threshold: number): string {
|
|
27
|
+
if (threshold < 1 || threshold > pubkeys.length) throw new Error('threshold must be between 1 and the number of pubkeys')
|
|
28
|
+
if (!pubkeys || pubkeys.length < 2 || pubkeys.length < threshold) throw new Error(`at least ${threshold || 2} pubkeys are required`)
|
|
29
|
+
const concat = concatPubkeys(pubkeys)
|
|
30
|
+
const hash = Hash.hash160(concat)
|
|
31
|
+
const writer = new Utils.Writer()
|
|
32
|
+
writer.write(hash)
|
|
33
|
+
writer.writeVarIntNum(threshold)
|
|
34
|
+
writer.writeVarIntNum(pubkeys.length)
|
|
35
|
+
const data = writer.toArray()
|
|
36
|
+
return Utils.toBase58Check(data, [0x98])
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
static async addressBRC29 (wallet: WalletInterface, counterparties: string[], keyID: string, threshold: number): Promise<{ pubkeys: string[], address: string }> {
|
|
40
|
+
const pubkeys = await Promise.all(counterparties.map(async (counterparty) => {
|
|
41
|
+
const { publicKey } = await wallet.getPublicKey({
|
|
42
|
+
protocolID: [1, 'multi sig brc29'],
|
|
43
|
+
keyID,
|
|
44
|
+
counterparty
|
|
45
|
+
})
|
|
46
|
+
return PublicKey.fromString(publicKey)
|
|
47
|
+
}))
|
|
48
|
+
return { pubkeys: pubkeys.map(p => p.toString()), address: this.address(pubkeys, threshold) }
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
static thresholdAndTotalFromAddress (address: string): { hash: number[], threshold: number, total: number } {
|
|
52
|
+
const h = Utils.fromBase58Check(address)
|
|
53
|
+
if (h.prefix[0] !== 0x98) {
|
|
54
|
+
throw new Error('only P2MSH is supported, set your prefix byte to 0x98')
|
|
55
|
+
}
|
|
56
|
+
const reader = new Utils.Reader(h.data as number[])
|
|
57
|
+
const hash = reader.read(20)
|
|
58
|
+
const threshold = reader.readVarIntNum()
|
|
59
|
+
const total = reader.readVarIntNum()
|
|
60
|
+
return { hash, threshold, total }
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
lock (
|
|
64
|
+
address?: string,
|
|
65
|
+
pubkeys?: PublicKey[],
|
|
66
|
+
threshold: number = 1
|
|
67
|
+
): LockingScript {
|
|
68
|
+
let hash: number[]
|
|
69
|
+
let total: number = pubkeys?.length || 0
|
|
70
|
+
if (address) {
|
|
71
|
+
if (typeof address !== 'string') throw new Error('address must be a string')
|
|
72
|
+
const result = P2MSKH.thresholdAndTotalFromAddress(address)
|
|
73
|
+
hash = result.hash
|
|
74
|
+
total = result.total
|
|
75
|
+
threshold = result.threshold
|
|
76
|
+
} else {
|
|
77
|
+
if ((pubkeys == null) || total < 2) throw new Error('at least 2 pubkeys are required')
|
|
78
|
+
const concat = concatPubkeys(pubkeys)
|
|
79
|
+
hash = Hash.hash160(concat)
|
|
80
|
+
}
|
|
81
|
+
if (!threshold || threshold < 1 || threshold > total) throw new Error('threshold must be between 1 and the number of pubkeys')
|
|
82
|
+
if (total > 10) throw new Error('total must be less than or equal to 10')
|
|
83
|
+
|
|
84
|
+
const script = new LockingScript()
|
|
85
|
+
script
|
|
86
|
+
.writeOpCode(OP.OP_DUP)
|
|
87
|
+
.writeOpCode(OP.OP_HASH160)
|
|
88
|
+
.writeBin(hash)
|
|
89
|
+
.writeOpCode(OP.OP_EQUALVERIFY)
|
|
90
|
+
.writeNumber(threshold)
|
|
91
|
+
.writeOpCode(OP.OP_SWAP)
|
|
92
|
+
for (let i = 0; i < total - 1; i++) {
|
|
93
|
+
script
|
|
94
|
+
.writeNumber(33)
|
|
95
|
+
.writeOpCode(OP.OP_SPLIT)
|
|
96
|
+
}
|
|
97
|
+
script.writeNumber(total)
|
|
98
|
+
script.writeOpCode(OP.OP_CHECKMULTISIG)
|
|
99
|
+
|
|
100
|
+
return script
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
unlock (
|
|
104
|
+
wallet: WalletInterface,
|
|
105
|
+
customInstructions: MultiSigInstructions,
|
|
106
|
+
workingUnlockingScript?: UnlockingScript,
|
|
107
|
+
signOutputs: 'all' | 'none' | 'single' = 'all',
|
|
108
|
+
anyoneCanPay = false,
|
|
109
|
+
sourceSatoshis?: number,
|
|
110
|
+
lockingScript?: LockingScript
|
|
111
|
+
): {
|
|
112
|
+
sign: (tx: Transaction, inputIndex: number) => Promise<UnlockingScript>
|
|
113
|
+
estimateLength: (tx: Transaction, inputIndex: number) => Promise<number>
|
|
114
|
+
} {
|
|
115
|
+
return {
|
|
116
|
+
sign: async (tx: Transaction, inputIndex: number) => {
|
|
117
|
+
if (workingUnlockingScript == null) {
|
|
118
|
+
workingUnlockingScript = new UnlockingScript()
|
|
119
|
+
workingUnlockingScript.writeOpCode(OP.OP_0)
|
|
120
|
+
const pubkeys = concatPubkeys(customInstructions.pubkeys.map(p => PublicKey.fromString(p)))
|
|
121
|
+
workingUnlockingScript.writeBin(pubkeys)
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
let signatureScope = TransactionSignature.SIGHASH_FORKID
|
|
125
|
+
if (signOutputs === 'all') {
|
|
126
|
+
signatureScope |= TransactionSignature.SIGHASH_ALL
|
|
127
|
+
}
|
|
128
|
+
if (signOutputs === 'none') {
|
|
129
|
+
signatureScope |= TransactionSignature.SIGHASH_NONE
|
|
130
|
+
}
|
|
131
|
+
if (signOutputs === 'single') {
|
|
132
|
+
signatureScope |= TransactionSignature.SIGHASH_SINGLE
|
|
133
|
+
}
|
|
134
|
+
if (anyoneCanPay) {
|
|
135
|
+
signatureScope |= TransactionSignature.SIGHASH_ANYONECANPAY
|
|
136
|
+
}
|
|
137
|
+
const input = tx.inputs[inputIndex]
|
|
138
|
+
|
|
139
|
+
const otherInputs = tx.inputs.filter(
|
|
140
|
+
(_, index) => index !== inputIndex
|
|
141
|
+
)
|
|
142
|
+
|
|
143
|
+
const sourceTXID = input.sourceTXID
|
|
144
|
+
? input.sourceTXID
|
|
145
|
+
: input.sourceTransaction?.id('hex')
|
|
146
|
+
|
|
147
|
+
if (!sourceTXID) {
|
|
148
|
+
throw new Error(
|
|
149
|
+
'The input sourceTXID or sourceTransaction is required for transaction signing.'
|
|
150
|
+
)
|
|
151
|
+
}
|
|
152
|
+
sourceSatoshis ||= input.sourceTransaction?.outputs[input.sourceOutputIndex].satoshis
|
|
153
|
+
if (!sourceSatoshis) {
|
|
154
|
+
throw new Error(
|
|
155
|
+
'The sourceSatoshis or input sourceTransaction is required for transaction signing.'
|
|
156
|
+
)
|
|
157
|
+
}
|
|
158
|
+
lockingScript ||= input.sourceTransaction?.outputs[input.sourceOutputIndex].lockingScript
|
|
159
|
+
if (lockingScript == null) {
|
|
160
|
+
throw new Error(
|
|
161
|
+
'The lockingScript or input sourceTransaction is required for transaction signing.'
|
|
162
|
+
)
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
const preimage = TransactionSignature.format({
|
|
166
|
+
sourceTXID,
|
|
167
|
+
sourceOutputIndex: input.sourceOutputIndex,
|
|
168
|
+
sourceSatoshis,
|
|
169
|
+
transactionVersion: tx.version,
|
|
170
|
+
otherInputs,
|
|
171
|
+
inputIndex,
|
|
172
|
+
outputs: tx.outputs,
|
|
173
|
+
inputSequence: input.sequence || 0xffffffff,
|
|
174
|
+
subscript: lockingScript,
|
|
175
|
+
lockTime: tx.lockTime,
|
|
176
|
+
scope: signatureScope
|
|
177
|
+
})
|
|
178
|
+
|
|
179
|
+
const hashToDirectlySign = Hash.hash256(preimage)
|
|
180
|
+
|
|
181
|
+
const { signature } = await wallet.createSignature({
|
|
182
|
+
hashToDirectlySign,
|
|
183
|
+
protocolID: [1, 'multi sig brc29'],
|
|
184
|
+
counterparty: customInstructions.counterparty,
|
|
185
|
+
keyID: customInstructions.keyID
|
|
186
|
+
})
|
|
187
|
+
|
|
188
|
+
const s = Signature.fromDER(signature)
|
|
189
|
+
const sig = new TransactionSignature(s.r, s.s, signatureScope)
|
|
190
|
+
const sigForScript = sig.toChecksigFormat()
|
|
191
|
+
|
|
192
|
+
workingUnlockingScript.writeBin(sigForScript)
|
|
193
|
+
const chunkforSig = workingUnlockingScript.chunks.pop() as ScriptChunk
|
|
194
|
+
// add it to the array before the pubkeys, pushing the other content to the right
|
|
195
|
+
workingUnlockingScript.chunks.splice(-1, 0, chunkforSig)
|
|
196
|
+
return workingUnlockingScript
|
|
197
|
+
},
|
|
198
|
+
|
|
199
|
+
estimateLength: async (tx: Transaction, inputIndex: number) => {
|
|
200
|
+
let numberOfPubkeys
|
|
201
|
+
let numberOfSignatures
|
|
202
|
+
const staticLength = 8
|
|
203
|
+
const input = tx.inputs[inputIndex]
|
|
204
|
+
const lockingScript = input.sourceTransaction?.outputs[input.sourceOutputIndex].lockingScript
|
|
205
|
+
if (lockingScript == null) {
|
|
206
|
+
return await Promise.resolve(1000) // guess
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
const totalChunk = lockingScript.chunks.at(-2) as { op: number, data: number[] }
|
|
210
|
+
numberOfPubkeys = numberFromScriptChunk(totalChunk)
|
|
211
|
+
|
|
212
|
+
const thresholdChunk = lockingScript.chunks[4] as { op: number, data: number[] }
|
|
213
|
+
numberOfSignatures = numberFromScriptChunk(thresholdChunk)
|
|
214
|
+
return await Promise.resolve(staticLength + (numberOfSignatures * 74) + (numberOfPubkeys * 34))
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
}
|
package/dist/cjs/src/Metanet.js
DELETED
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const sdk_1 = require("@bsv/sdk");
|
|
4
|
-
/**
|
|
5
|
-
* Metanet class implementing ScriptTemplate.
|
|
6
|
-
*
|
|
7
|
-
* This class provides methods to create Metanet outputs from data. Only lock script is available.
|
|
8
|
-
*/
|
|
9
|
-
class Metanet {
|
|
10
|
-
/**
|
|
11
|
-
* Creates a Metanet output script
|
|
12
|
-
*
|
|
13
|
-
* @param {PublicKey} pubkey the public key responsible for the metanet node
|
|
14
|
-
* @param {string} parentTXID the TXID of the parent metanet transaction or null for root node
|
|
15
|
-
* @param {string[]} data the output data, an array of metadata ending in data payload
|
|
16
|
-
* @returns {LockingScript} - A Metanet locking script.
|
|
17
|
-
*
|
|
18
|
-
* @example
|
|
19
|
-
* // creates a root metanet output with 'subprotocol' and 'filename' metadata followed by data
|
|
20
|
-
* lock(pubkey, null, txid, ['subprotocol', 'filename', data ])
|
|
21
|
-
*/
|
|
22
|
-
lock(pubkey, parentTXID, data = []) {
|
|
23
|
-
const script = [
|
|
24
|
-
{ op: sdk_1.OP.OP_FALSE },
|
|
25
|
-
{ op: sdk_1.OP.OP_RETURN }
|
|
26
|
-
];
|
|
27
|
-
const fields = [
|
|
28
|
-
'meta',
|
|
29
|
-
pubkey.toString(),
|
|
30
|
-
parentTXID !== null && parentTXID !== void 0 ? parentTXID : 'null'
|
|
31
|
-
].concat(data);
|
|
32
|
-
for (const field of fields.filter(Boolean)) {
|
|
33
|
-
script.push({ op: field.length, data: sdk_1.Utils.toArray(field) });
|
|
34
|
-
}
|
|
35
|
-
return new sdk_1.LockingScript(script);
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* Unlock method is not available for Metanet scripts, throws exception.
|
|
39
|
-
*/
|
|
40
|
-
unlock() {
|
|
41
|
-
throw new Error('Unlock is not supported for Metanet scripts');
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
exports.default = Metanet;
|
|
45
|
-
//# sourceMappingURL=Metanet.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Metanet.js","sourceRoot":"","sources":["../../../src/Metanet.ts"],"names":[],"mappings":";;AAAA,kCAA4G;AAE5G;;;;GAIG;AACH,MAAqB,OAAO;IAC1B;;;;;;;;;;;KAWC;IACD,IAAI,CAAE,MAAiB,EAAE,UAAyB,EAAE,OAA0B,EAAE;QAC9E,MAAM,MAAM,GAA2C;YACrD,EAAE,EAAE,EAAE,QAAE,CAAC,QAAQ,EAAE;YACnB,EAAE,EAAE,EAAE,QAAE,CAAC,SAAS,EAAE;SACrB,CAAA;QAED,MAAM,MAAM,GAAG;YACb,MAAM;YACN,MAAM,CAAC,QAAQ,EAAE;YACjB,UAAU,aAAV,UAAU,cAAV,UAAU,GAAI,MAAM;SACrB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QAEd,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3C,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,WAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;QAC/D,CAAC;QAED,OAAO,IAAI,mBAAa,CAAC,MAAM,CAAC,CAAA;IAClC,CAAC;IAED;;QAEI;IACJ,MAAM;QAIJ,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAA;IAChE,CAAC;CACF;AAzCD,0BAyCC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MultiSigPubkeyHash.js","sourceRoot":"","sources":["../../../src/MultiSigPubkeyHash.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/src/Metanet.js
DELETED
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import { OP, LockingScript, Utils } from '@bsv/sdk';
|
|
2
|
-
/**
|
|
3
|
-
* Metanet class implementing ScriptTemplate.
|
|
4
|
-
*
|
|
5
|
-
* This class provides methods to create Metanet outputs from data. Only lock script is available.
|
|
6
|
-
*/
|
|
7
|
-
export default class Metanet {
|
|
8
|
-
/**
|
|
9
|
-
* Creates a Metanet output script
|
|
10
|
-
*
|
|
11
|
-
* @param {PublicKey} pubkey the public key responsible for the metanet node
|
|
12
|
-
* @param {string} parentTXID the TXID of the parent metanet transaction or null for root node
|
|
13
|
-
* @param {string[]} data the output data, an array of metadata ending in data payload
|
|
14
|
-
* @returns {LockingScript} - A Metanet locking script.
|
|
15
|
-
*
|
|
16
|
-
* @example
|
|
17
|
-
* // creates a root metanet output with 'subprotocol' and 'filename' metadata followed by data
|
|
18
|
-
* lock(pubkey, null, txid, ['subprotocol', 'filename', data ])
|
|
19
|
-
*/
|
|
20
|
-
lock(pubkey, parentTXID, data = []) {
|
|
21
|
-
const script = [
|
|
22
|
-
{ op: OP.OP_FALSE },
|
|
23
|
-
{ op: OP.OP_RETURN }
|
|
24
|
-
];
|
|
25
|
-
const fields = [
|
|
26
|
-
'meta',
|
|
27
|
-
pubkey.toString(),
|
|
28
|
-
parentTXID ?? 'null'
|
|
29
|
-
].concat(data);
|
|
30
|
-
for (const field of fields.filter(Boolean)) {
|
|
31
|
-
script.push({ op: field.length, data: Utils.toArray(field) });
|
|
32
|
-
}
|
|
33
|
-
return new LockingScript(script);
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* Unlock method is not available for Metanet scripts, throws exception.
|
|
37
|
-
*/
|
|
38
|
-
unlock() {
|
|
39
|
-
throw new Error('Unlock is not supported for Metanet scripts');
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
//# sourceMappingURL=Metanet.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Metanet.js","sourceRoot":"","sources":["../../../src/Metanet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAA6B,aAAa,EAAgC,KAAK,EAAE,MAAM,UAAU,CAAA;AAE5G;;;;GAIG;AACH,MAAM,CAAC,OAAO,OAAO,OAAO;IAC1B;;;;;;;;;;;KAWC;IACD,IAAI,CAAE,MAAiB,EAAE,UAAyB,EAAE,OAA0B,EAAE;QAC9E,MAAM,MAAM,GAA2C;YACrD,EAAE,EAAE,EAAE,EAAE,CAAC,QAAQ,EAAE;YACnB,EAAE,EAAE,EAAE,EAAE,CAAC,SAAS,EAAE;SACrB,CAAA;QAED,MAAM,MAAM,GAAG;YACb,MAAM;YACN,MAAM,CAAC,QAAQ,EAAE;YACjB,UAAU,IAAI,MAAM;SACrB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QAEd,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3C,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;QAC/D,CAAC;QAED,OAAO,IAAI,aAAa,CAAC,MAAM,CAAC,CAAA;IAClC,CAAC;IAED;;QAEI;IACJ,MAAM;QAIJ,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAA;IAChE,CAAC;CACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MultiSigPubkeyHash.js","sourceRoot":"","sources":["../../../src/MultiSigPubkeyHash.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { PublicKey, ScriptTemplate, LockingScript, UnlockingScript, Transaction } from '@bsv/sdk';
|
|
2
|
-
/**
|
|
3
|
-
* Metanet class implementing ScriptTemplate.
|
|
4
|
-
*
|
|
5
|
-
* This class provides methods to create Metanet outputs from data. Only lock script is available.
|
|
6
|
-
*/
|
|
7
|
-
export default class Metanet implements ScriptTemplate {
|
|
8
|
-
/**
|
|
9
|
-
* Creates a Metanet output script
|
|
10
|
-
*
|
|
11
|
-
* @param {PublicKey} pubkey the public key responsible for the metanet node
|
|
12
|
-
* @param {string} parentTXID the TXID of the parent metanet transaction or null for root node
|
|
13
|
-
* @param {string[]} data the output data, an array of metadata ending in data payload
|
|
14
|
-
* @returns {LockingScript} - A Metanet locking script.
|
|
15
|
-
*
|
|
16
|
-
* @example
|
|
17
|
-
* // creates a root metanet output with 'subprotocol' and 'filename' metadata followed by data
|
|
18
|
-
* lock(pubkey, null, txid, ['subprotocol', 'filename', data ])
|
|
19
|
-
*/
|
|
20
|
-
lock(pubkey: PublicKey, parentTXID: string | null, data?: string[] | string): LockingScript;
|
|
21
|
-
/**
|
|
22
|
-
* Unlock method is not available for Metanet scripts, throws exception.
|
|
23
|
-
*/
|
|
24
|
-
unlock(): {
|
|
25
|
-
sign: (tx: Transaction, inputIndex: number) => Promise<UnlockingScript>;
|
|
26
|
-
estimateLength: () => Promise<number>;
|
|
27
|
-
};
|
|
28
|
-
}
|
|
29
|
-
//# sourceMappingURL=Metanet.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Metanet.d.ts","sourceRoot":"","sources":["../../../src/Metanet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAM,SAAS,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,EAAE,WAAW,EAAS,MAAM,UAAU,CAAA;AAE5G;;;;GAIG;AACH,MAAM,CAAC,OAAO,OAAO,OAAQ,YAAW,cAAc;IACpD;;;;;;;;;;;KAWC;IACD,IAAI,CAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,EAAE,IAAI,GAAE,MAAM,EAAE,GAAG,MAAW,GAAG,aAAa;IAmBhG;;QAEI;IACJ,MAAM,IAAK;QACT,IAAI,EAAE,CAAC,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,eAAe,CAAC,CAAA;QACvE,cAAc,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAA;KACtC;CAGF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MultiSigPubkeyHash.d.ts","sourceRoot":"","sources":["../../../src/MultiSigPubkeyHash.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,EAAY,SAAS,EAA0C,eAAe,EAAE,WAAW,EAAe,MAAM,UAAU,CAAA;AAEjL,MAAM,MAAM,oBAAoB,GAAG;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,YAAY,EAAE,MAAM,CAAA;IACpB,OAAO,EAAE,MAAM,EAAE,CAAA;CACpB,CAAA;AAkBD,qBAAa,kBAAmB,YAAW,cAAc;IAErD,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,SAAS,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;WAalD,YAAY,CAAC,MAAM,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAY/J,MAAM,CAAC,4BAA4B,CAAC,OAAO,EAAE,MAAM,GAAG;QAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE;IAY1G,IAAI,CACA,OAAO,CAAC,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,SAAS,EAAE,EACrB,SAAS,GAAE,MAAU,GACtB,aAAa;IAuChB,MAAM,CACF,MAAM,EAAE,eAAe,EACvB,kBAAkB,EAAE,oBAAoB,EACxC,sBAAsB,CAAC,EAAE,eAAe,EACxC,WAAW,GAAE,KAAK,GAAG,MAAM,GAAG,QAAgB,EAC9C,YAAY,UAAQ,EACpB,cAAc,CAAC,EAAE,MAAM,EACvB,aAAa,CAAC,EAAE,aAAa,GAC9B;QACC,IAAI,EAAE,CAAC,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,eAAe,CAAC,CAAC;QACxE,cAAc,EAAE,CAAC,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;KAC1E;CA0GN"}
|