@1sat/templates 0.0.4 → 0.0.6
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/bitcom/sigma.d.ts +38 -60
- package/dist/bitcom/sigma.d.ts.map +1 -1
- package/dist/bitcom/sigma.js +271 -101
- package/dist/bitcom/sigma.js.map +1 -1
- package/dist/cosign/cosign.d.ts +47 -0
- package/dist/cosign/cosign.d.ts.map +1 -0
- package/dist/cosign/cosign.js +62 -0
- package/dist/cosign/cosign.js.map +1 -0
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/package.json +43 -35
package/dist/bitcom/sigma.d.ts
CHANGED
|
@@ -1,92 +1,70 @@
|
|
|
1
|
-
import { type LockingScript, type PrivateKey, type PublicKey, Script, type ScriptTemplate,
|
|
1
|
+
import { type LockingScript, type PrivateKey, type PublicKey, Script, type ScriptTemplate, Transaction, type UnlockingScript } from '@bsv/sdk';
|
|
2
2
|
import { type BitComDecoded } from './bitcom.js';
|
|
3
|
-
/**
|
|
4
|
-
* SIGMA protocol identifier
|
|
5
|
-
*/
|
|
6
3
|
export declare const SIGMA_PREFIX = "SIGMA";
|
|
7
|
-
|
|
8
|
-
* Signing algorithm for SIGMA signatures
|
|
9
|
-
*/
|
|
4
|
+
export declare const sigmaHex = "5349474d41";
|
|
10
5
|
export declare enum SigmaAlgorithm {
|
|
11
6
|
BSM = "BSM",
|
|
12
7
|
BRC77 = "BRC77"
|
|
13
8
|
}
|
|
14
|
-
/**
|
|
15
|
-
* SIGMA signature data structure
|
|
16
|
-
*/
|
|
17
9
|
export interface SigmaData {
|
|
18
|
-
/** BitCom protocol index */
|
|
19
10
|
bitcomIndex?: number;
|
|
20
|
-
/** Signing algorithm (BSM or BRC77) */
|
|
21
11
|
algorithm: SigmaAlgorithm;
|
|
22
|
-
/** Bitcoin address of signer */
|
|
23
12
|
address: string;
|
|
24
|
-
/** Cryptographic signature as number array */
|
|
25
13
|
signature: number[];
|
|
26
|
-
/** Input index (vin) that anchors the signature */
|
|
27
14
|
vin: number;
|
|
28
|
-
|
|
15
|
+
targetVout?: number;
|
|
29
16
|
valid?: boolean;
|
|
30
17
|
}
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
18
|
+
export type Sig = {
|
|
19
|
+
address: string;
|
|
20
|
+
signature: string;
|
|
21
|
+
algorithm: SigmaAlgorithm;
|
|
22
|
+
vin: number;
|
|
23
|
+
targetVout: number;
|
|
24
|
+
};
|
|
25
|
+
export interface SignResponse extends Sig {
|
|
26
|
+
sigmaScript: Script;
|
|
27
|
+
signedTx: Transaction;
|
|
28
|
+
}
|
|
34
29
|
export interface SigmaOptions {
|
|
35
|
-
/** Signing algorithm (default: BSM) */
|
|
36
30
|
algorithm?: SigmaAlgorithm;
|
|
37
|
-
/** Input index to anchor signature (default: 0) */
|
|
38
31
|
vin?: number;
|
|
39
|
-
/** For BRC-77: specific verifier public key (private signature) */
|
|
40
32
|
verifier?: PublicKey;
|
|
41
33
|
}
|
|
42
34
|
/**
|
|
43
|
-
* SIGMA (Secure Identity for Global Message Authentication)
|
|
35
|
+
* SIGMA (Secure Identity for Global Message Authentication)
|
|
44
36
|
*
|
|
45
|
-
*
|
|
46
|
-
*
|
|
47
|
-
* -
|
|
37
|
+
* Combines an input hash (SHA256 of an outpoint) with a data hash (SHA256 of
|
|
38
|
+
* script data before the SIGMA marker) to produce a message signed with BSM
|
|
39
|
+
* or BRC-77. Supports multiple signatures per output and both algorithms.
|
|
48
40
|
*
|
|
49
|
-
*
|
|
41
|
+
* Follows the same pattern as AIP: one data shape, static factories for
|
|
42
|
+
* transaction operations, instance methods for ScriptTemplate integration.
|
|
50
43
|
*/
|
|
51
44
|
export default class Sigma implements ScriptTemplate {
|
|
52
|
-
|
|
45
|
+
data: SigmaData;
|
|
53
46
|
constructor(data: SigmaData);
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
47
|
+
static computeInputHash(txidOrTx: string | Transaction, voutOrVin: number, sourceOutputIndex?: number): number[];
|
|
48
|
+
static computeDataHash(script: Script, sigmaInstance?: number): number[];
|
|
49
|
+
static computeMessageHash(inputHash: number[], dataHash: number[]): number[];
|
|
50
|
+
static parseFromScript(script: Script, targetVout?: number): Sig[];
|
|
51
|
+
static countInstances(script: Script): number;
|
|
52
|
+
static findPosition(script: Script, instanceIndex: number): number;
|
|
53
|
+
static signTransaction(tx: Transaction, privateKey: PrivateKey, options?: {
|
|
54
|
+
targetVout?: number;
|
|
55
|
+
sigmaInstance?: number;
|
|
56
|
+
refVin?: number;
|
|
57
|
+
algorithm?: SigmaAlgorithm;
|
|
58
|
+
verifier?: PublicKey;
|
|
59
|
+
}): SignResponse;
|
|
60
|
+
static verifyTransaction(tx: Transaction, targetVout?: number, sigmaInstance?: number, recipientPrivateKey?: PrivateKey): boolean;
|
|
61
|
+
private static applyToTransaction;
|
|
57
62
|
static decode(bitcom: BitComDecoded): Sigma[];
|
|
58
|
-
/**
|
|
59
|
-
* Decode SIGMA signatures directly from a Script
|
|
60
|
-
*/
|
|
61
63
|
static decodeFromScript(script: Script | LockingScript): Sigma[];
|
|
62
|
-
|
|
63
|
-
* Create SIGMA signature for data
|
|
64
|
-
*
|
|
65
|
-
* @param inputHash - SHA256 hash of the input outpoint
|
|
66
|
-
* @param dataHash - SHA256 hash of the script data
|
|
67
|
-
* @param privateKey - Private key for signing
|
|
68
|
-
* @param options - Additional signing options
|
|
69
|
-
*/
|
|
70
|
-
static sign(inputHash: number[], dataHash: number[], privateKey: PrivateKey, options?: SigmaOptions): Sigma;
|
|
71
|
-
/**
|
|
72
|
-
* Verify SIGMA signature against provided hashes
|
|
73
|
-
*
|
|
74
|
-
* @param inputHash - SHA256 hash of the input outpoint
|
|
75
|
-
* @param dataHash - SHA256 hash of the script data
|
|
76
|
-
* @param recipientPrivateKey - For BRC-77 private signatures, the recipient's key
|
|
77
|
-
*/
|
|
78
|
-
verifyWithHashes(inputHash: number[], dataHash: number[], recipientPrivateKey?: PrivateKey): boolean;
|
|
79
|
-
/**
|
|
80
|
-
* Check if signature was previously verified
|
|
81
|
-
*/
|
|
64
|
+
static createSignature(inputHash: number[], dataHash: number[], privateKey: PrivateKey, options?: SigmaOptions): Sigma;
|
|
82
65
|
verify(): boolean;
|
|
83
|
-
|
|
84
|
-
* Generate locking script for SIGMA within BitCom
|
|
85
|
-
*/
|
|
66
|
+
verifyWithHashes(inputHash: number[], dataHash: number[], recipientPrivateKey?: PrivateKey): boolean;
|
|
86
67
|
lock(): LockingScript;
|
|
87
|
-
/**
|
|
88
|
-
* Unlock method is not available for SIGMA scripts
|
|
89
|
-
*/
|
|
90
68
|
unlock(): {
|
|
91
69
|
sign: (tx: Transaction, inputIndex: number) => Promise<UnlockingScript>;
|
|
92
70
|
estimateLength: () => Promise<number>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sigma.d.ts","sourceRoot":"","sources":["../../src/bitcom/sigma.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"sigma.d.ts","sourceRoot":"","sources":["../../src/bitcom/sigma.ts"],"names":[],"mappings":"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"}
|
package/dist/bitcom/sigma.js
CHANGED
|
@@ -1,100 +1,307 @@
|
|
|
1
|
-
import { BSM, BigNumber, Script, Signature, SignedMessage, Utils, } from '@bsv/sdk';
|
|
1
|
+
import { BSM, BigNumber, Hash, OP, Script, Signature, SignedMessage, Transaction, Utils, } from '@bsv/sdk';
|
|
2
2
|
import BitCom from './bitcom.js';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
*/
|
|
3
|
+
const { magicHash } = BSM;
|
|
4
|
+
const { toHex, toArray, toUTF8, toBase64 } = Utils;
|
|
6
5
|
export const SIGMA_PREFIX = 'SIGMA';
|
|
7
|
-
|
|
8
|
-
* Signing algorithm for SIGMA signatures
|
|
9
|
-
*/
|
|
6
|
+
export const sigmaHex = '5349474d41';
|
|
10
7
|
export var SigmaAlgorithm;
|
|
11
8
|
(function (SigmaAlgorithm) {
|
|
12
9
|
SigmaAlgorithm["BSM"] = "BSM";
|
|
13
10
|
SigmaAlgorithm["BRC77"] = "BRC77";
|
|
14
11
|
})(SigmaAlgorithm || (SigmaAlgorithm = {}));
|
|
12
|
+
const EMPTY_OUTPOINT = new Array(32).fill(0);
|
|
13
|
+
const hexToBytes = (hex) => {
|
|
14
|
+
const bytes = [];
|
|
15
|
+
for (let i = 0; i < hex.length; i += 2) {
|
|
16
|
+
bytes.push(Number.parseInt(hex.substring(i, i + 2), 16));
|
|
17
|
+
}
|
|
18
|
+
return bytes;
|
|
19
|
+
};
|
|
20
|
+
const writeUint32LE = (value) => [
|
|
21
|
+
value & 0xff,
|
|
22
|
+
(value >> 8) & 0xff,
|
|
23
|
+
(value >> 16) & 0xff,
|
|
24
|
+
(value >> 24) & 0xff,
|
|
25
|
+
];
|
|
26
|
+
function deduceRecovery(signature, message, address) {
|
|
27
|
+
for (let recovery = 0; recovery < 4; recovery++) {
|
|
28
|
+
try {
|
|
29
|
+
const pubKey = signature.RecoverPublicKey(recovery, new BigNumber(magicHash(message)));
|
|
30
|
+
if (BSM.verify(message, signature, pubKey) &&
|
|
31
|
+
pubKey.toAddress() === address) {
|
|
32
|
+
return recovery;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
catch { }
|
|
36
|
+
}
|
|
37
|
+
return -1;
|
|
38
|
+
}
|
|
39
|
+
function isSigmaChunk(chunk) {
|
|
40
|
+
return !!chunk.data && toUTF8(chunk.data) === SIGMA_PREFIX;
|
|
41
|
+
}
|
|
42
|
+
function isEmbeddedOpReturn(chunk) {
|
|
43
|
+
return chunk.op === OP.OP_RETURN && !!chunk.data && chunk.data.length > 0;
|
|
44
|
+
}
|
|
45
|
+
function tryParseSigAt(chunks, i, targetVout) {
|
|
46
|
+
if (i + 4 >= chunks.length)
|
|
47
|
+
return null;
|
|
48
|
+
const algo = chunks[i + 1];
|
|
49
|
+
const addr = chunks[i + 2];
|
|
50
|
+
const sig = chunks[i + 3];
|
|
51
|
+
const vin = chunks[i + 4];
|
|
52
|
+
if (!algo?.data || !addr?.data || !sig?.data || !vin?.data)
|
|
53
|
+
return null;
|
|
54
|
+
return {
|
|
55
|
+
algorithm: toUTF8(algo.data),
|
|
56
|
+
address: toUTF8(addr.data),
|
|
57
|
+
signature: toBase64(sig.data),
|
|
58
|
+
vin: Number.parseInt(toUTF8(vin.data), 10),
|
|
59
|
+
targetVout,
|
|
60
|
+
};
|
|
61
|
+
}
|
|
15
62
|
/**
|
|
16
|
-
* SIGMA (Secure Identity for Global Message Authentication)
|
|
63
|
+
* SIGMA (Secure Identity for Global Message Authentication)
|
|
17
64
|
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
* -
|
|
65
|
+
* Combines an input hash (SHA256 of an outpoint) with a data hash (SHA256 of
|
|
66
|
+
* script data before the SIGMA marker) to produce a message signed with BSM
|
|
67
|
+
* or BRC-77. Supports multiple signatures per output and both algorithms.
|
|
21
68
|
*
|
|
22
|
-
*
|
|
69
|
+
* Follows the same pattern as AIP: one data shape, static factories for
|
|
70
|
+
* transaction operations, instance methods for ScriptTemplate integration.
|
|
23
71
|
*/
|
|
24
72
|
export default class Sigma {
|
|
25
73
|
data;
|
|
26
74
|
constructor(data) {
|
|
27
75
|
this.data = data;
|
|
28
76
|
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
77
|
+
static computeInputHash(txidOrTx, voutOrVin, sourceOutputIndex) {
|
|
78
|
+
if (typeof txidOrTx === 'string') {
|
|
79
|
+
return Hash.sha256([
|
|
80
|
+
...hexToBytes(txidOrTx),
|
|
81
|
+
...writeUint32LE(sourceOutputIndex ?? 0),
|
|
82
|
+
]);
|
|
83
|
+
}
|
|
84
|
+
const txIn = txidOrTx.inputs[voutOrVin];
|
|
85
|
+
if (txIn?.sourceTXID) {
|
|
86
|
+
return Hash.sha256([
|
|
87
|
+
...hexToBytes(txIn.sourceTXID),
|
|
88
|
+
...writeUint32LE(txIn.sourceOutputIndex),
|
|
89
|
+
]);
|
|
90
|
+
}
|
|
91
|
+
return Hash.sha256(EMPTY_OUTPOINT);
|
|
92
|
+
}
|
|
93
|
+
static computeDataHash(script, sigmaInstance = 0) {
|
|
94
|
+
const chunks = script.chunks;
|
|
95
|
+
let n = 0;
|
|
96
|
+
for (let i = 0; i < chunks.length; i++) {
|
|
97
|
+
const chunk = chunks[i];
|
|
98
|
+
if (isSigmaChunk(chunk)) {
|
|
99
|
+
if (n === sigmaInstance) {
|
|
100
|
+
return Hash.sha256(new Script(chunks.slice(0, i - 1)).toBinary());
|
|
101
|
+
}
|
|
102
|
+
n++;
|
|
103
|
+
}
|
|
104
|
+
else if (isEmbeddedOpReturn(chunk)) {
|
|
105
|
+
try {
|
|
106
|
+
for (const ic of Script.fromBinary(chunk.data).chunks) {
|
|
107
|
+
if (isSigmaChunk(ic)) {
|
|
108
|
+
if (n === sigmaInstance) {
|
|
109
|
+
return Hash.sha256(new Script(chunks.slice(0, i)).toBinary());
|
|
110
|
+
}
|
|
111
|
+
n++;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
catch { }
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
return Hash.sha256(script.toBinary());
|
|
119
|
+
}
|
|
120
|
+
static computeMessageHash(inputHash, dataHash) {
|
|
121
|
+
const combined = new Uint8Array(inputHash.length + dataHash.length);
|
|
122
|
+
combined.set(inputHash, 0);
|
|
123
|
+
combined.set(dataHash, inputHash.length);
|
|
124
|
+
return Hash.sha256(Array.from(combined));
|
|
125
|
+
}
|
|
126
|
+
static parseFromScript(script, targetVout = 0) {
|
|
127
|
+
const instances = [];
|
|
128
|
+
const chunks = script.chunks;
|
|
129
|
+
for (let i = 0; i < chunks.length; i++) {
|
|
130
|
+
const chunk = chunks[i];
|
|
131
|
+
if (isSigmaChunk(chunk)) {
|
|
132
|
+
const parsed = tryParseSigAt(chunks, i, targetVout);
|
|
133
|
+
if (parsed) {
|
|
134
|
+
instances.push(parsed);
|
|
135
|
+
i += 4;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
else if (isEmbeddedOpReturn(chunk)) {
|
|
139
|
+
try {
|
|
140
|
+
const inner = Script.fromBinary(chunk.data).chunks;
|
|
141
|
+
for (let j = 0; j < inner.length; j++) {
|
|
142
|
+
if (isSigmaChunk(inner[j])) {
|
|
143
|
+
const parsed = tryParseSigAt(inner, j, targetVout);
|
|
144
|
+
if (parsed) {
|
|
145
|
+
instances.push(parsed);
|
|
146
|
+
j += 4;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
catch { }
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
return instances;
|
|
155
|
+
}
|
|
156
|
+
static countInstances(script) {
|
|
157
|
+
return Sigma.parseFromScript(script).length;
|
|
158
|
+
}
|
|
159
|
+
static findPosition(script, instanceIndex) {
|
|
160
|
+
const chunks = script.chunks;
|
|
161
|
+
let n = 0;
|
|
162
|
+
for (let i = 0; i < chunks.length; i++) {
|
|
163
|
+
const chunk = chunks[i];
|
|
164
|
+
if (isSigmaChunk(chunk)) {
|
|
165
|
+
if (n === instanceIndex)
|
|
166
|
+
return i;
|
|
167
|
+
n++;
|
|
168
|
+
}
|
|
169
|
+
else if (isEmbeddedOpReturn(chunk)) {
|
|
170
|
+
try {
|
|
171
|
+
for (const ic of Script.fromBinary(chunk.data).chunks) {
|
|
172
|
+
if (isSigmaChunk(ic)) {
|
|
173
|
+
if (n === instanceIndex)
|
|
174
|
+
return i;
|
|
175
|
+
n++;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
catch { }
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
return -1;
|
|
183
|
+
}
|
|
184
|
+
static signTransaction(tx, privateKey, options = {}) {
|
|
185
|
+
const targetVout = options.targetVout ?? 0;
|
|
186
|
+
const sigmaInstance = options.sigmaInstance ?? 0;
|
|
187
|
+
const refVin = options.refVin ?? 0;
|
|
188
|
+
const algorithm = options.algorithm ?? SigmaAlgorithm.BSM;
|
|
189
|
+
const vin = refVin === -1 ? targetVout : refVin;
|
|
190
|
+
const inputHash = Sigma.computeInputHash(tx, vin);
|
|
191
|
+
const dataHash = Sigma.computeDataHash(tx.outputs[targetVout].lockingScript, sigmaInstance);
|
|
192
|
+
const messageHash = Sigma.computeMessageHash(inputHash, dataHash);
|
|
193
|
+
let signedAsm;
|
|
194
|
+
let sig;
|
|
195
|
+
if (algorithm === SigmaAlgorithm.BRC77) {
|
|
196
|
+
const address = privateKey.toAddress();
|
|
197
|
+
const brc77Sig = SignedMessage.sign(messageHash, privateKey, options.verifier);
|
|
198
|
+
signedAsm = `${sigmaHex} ${toHex(toArray(SigmaAlgorithm.BRC77))} ${toHex(toArray(address))} ${toHex(brc77Sig)} ${toHex(toArray(vin.toString()))}`;
|
|
199
|
+
sig = {
|
|
200
|
+
algorithm: SigmaAlgorithm.BRC77,
|
|
201
|
+
address,
|
|
202
|
+
signature: toBase64(brc77Sig),
|
|
203
|
+
vin,
|
|
204
|
+
targetVout,
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
else {
|
|
208
|
+
const signature = BSM.sign(messageHash, privateKey, 'raw');
|
|
209
|
+
const address = privateKey.toAddress();
|
|
210
|
+
const recovery = signature.CalculateRecoveryFactor(privateKey.toPublicKey(), new BigNumber(magicHash(messageHash)));
|
|
211
|
+
signedAsm = `${sigmaHex} ${toHex(toArray(SigmaAlgorithm.BSM))} ${toHex(toArray(address))} ${signature.toCompact(recovery, true, 'hex')} ${toHex(toArray(vin.toString()))}`;
|
|
212
|
+
sig = {
|
|
213
|
+
algorithm: SigmaAlgorithm.BSM,
|
|
214
|
+
address,
|
|
215
|
+
signature: signature.toCompact(recovery, true, 'base64'),
|
|
216
|
+
vin,
|
|
217
|
+
targetVout,
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
return Sigma.applyToTransaction(tx, targetVout, sigmaInstance, signedAsm, sig);
|
|
221
|
+
}
|
|
222
|
+
static verifyTransaction(tx, targetVout = 0, sigmaInstance = 0, recipientPrivateKey) {
|
|
223
|
+
const output = tx.outputs[targetVout];
|
|
224
|
+
if (!output?.lockingScript)
|
|
225
|
+
return false;
|
|
226
|
+
const instances = Sigma.parseFromScript(output.lockingScript, targetVout);
|
|
227
|
+
const sig = instances[sigmaInstance];
|
|
228
|
+
if (!sig)
|
|
229
|
+
return false;
|
|
230
|
+
const inputHash = Sigma.computeInputHash(tx, sig.vin);
|
|
231
|
+
const dataHash = Sigma.computeDataHash(output.lockingScript, sigmaInstance);
|
|
232
|
+
const messageHash = Sigma.computeMessageHash(inputHash, dataHash);
|
|
233
|
+
if (sig.algorithm === SigmaAlgorithm.BRC77) {
|
|
234
|
+
return SignedMessage.verify(messageHash, toArray(sig.signature, 'base64'), recipientPrivateKey);
|
|
235
|
+
}
|
|
236
|
+
return (deduceRecovery(Signature.fromCompact(sig.signature, 'base64'), messageHash, sig.address) !== -1);
|
|
237
|
+
}
|
|
238
|
+
static applyToTransaction(tx, targetVout, sigmaInstance, signedAsm, sig) {
|
|
239
|
+
const sigmaScript = Script.fromASM(signedAsm);
|
|
240
|
+
const output = tx.outputs[targetVout];
|
|
241
|
+
let existingAsm = output.lockingScript.toASM();
|
|
242
|
+
const separator = existingAsm.split(' ').includes('OP_RETURN')
|
|
243
|
+
? '7c'
|
|
244
|
+
: 'OP_RETURN';
|
|
245
|
+
const existingCount = Sigma.countInstances(output.lockingScript);
|
|
246
|
+
if (existingCount > 0 && sigmaInstance === existingCount) {
|
|
247
|
+
const asmTokens = existingAsm.split(' ');
|
|
248
|
+
const pos = Sigma.findPosition(output.lockingScript, sigmaInstance);
|
|
249
|
+
if (pos !== -1) {
|
|
250
|
+
asmTokens.splice(pos, 5, ...signedAsm.split(' '));
|
|
251
|
+
existingAsm = asmTokens.join(' ');
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
const signedTx = new Transaction(tx.version, tx.inputs.map((i) => ({ ...i })), tx.outputs.map((o) => ({ ...o })));
|
|
255
|
+
signedTx.outputs[targetVout] = {
|
|
256
|
+
satoshis: output.satoshis,
|
|
257
|
+
lockingScript: Script.fromASM(`${existingAsm} ${separator} ${signedAsm}`),
|
|
258
|
+
};
|
|
259
|
+
return { sigmaScript, signedTx, ...sig };
|
|
260
|
+
}
|
|
32
261
|
static decode(bitcom) {
|
|
33
262
|
const sigmas = [];
|
|
34
|
-
if (bitcom?.protocols?.length
|
|
263
|
+
if (!bitcom?.protocols?.length)
|
|
35
264
|
return sigmas;
|
|
36
|
-
}
|
|
37
265
|
for (let protoIdx = 0; protoIdx < bitcom.protocols.length; protoIdx++) {
|
|
38
266
|
const protocol = bitcom.protocols[protoIdx];
|
|
39
267
|
if (protocol.protocol === SIGMA_PREFIX) {
|
|
40
268
|
try {
|
|
41
|
-
const
|
|
42
|
-
|
|
43
|
-
if (chunks?.length < 4) {
|
|
269
|
+
const chunks = Script.fromBinary(protocol.script).chunks;
|
|
270
|
+
if (chunks?.length < 4)
|
|
44
271
|
continue;
|
|
45
|
-
|
|
46
|
-
const sigma = new Sigma({
|
|
272
|
+
sigmas.push(new Sigma({
|
|
47
273
|
bitcomIndex: protoIdx,
|
|
48
|
-
algorithm:
|
|
49
|
-
address:
|
|
274
|
+
algorithm: toUTF8(chunks[0].data ?? []),
|
|
275
|
+
address: toUTF8(chunks[1].data ?? []),
|
|
50
276
|
signature: Array.from(chunks[2].data ?? []),
|
|
51
|
-
vin: Number.parseInt(
|
|
277
|
+
vin: Number.parseInt(toUTF8(chunks[3].data ?? []), 10),
|
|
52
278
|
valid: undefined,
|
|
53
|
-
});
|
|
54
|
-
sigmas.push(sigma);
|
|
279
|
+
}));
|
|
55
280
|
}
|
|
56
281
|
catch { }
|
|
57
282
|
}
|
|
58
283
|
}
|
|
59
284
|
return sigmas;
|
|
60
285
|
}
|
|
61
|
-
/**
|
|
62
|
-
* Decode SIGMA signatures directly from a Script
|
|
63
|
-
*/
|
|
64
286
|
static decodeFromScript(script) {
|
|
65
287
|
const bitcom = BitCom.decode(script);
|
|
66
|
-
if (bitcom == null)
|
|
288
|
+
if (bitcom == null)
|
|
67
289
|
return [];
|
|
68
|
-
}
|
|
69
290
|
return Sigma.decode(bitcom);
|
|
70
291
|
}
|
|
71
|
-
|
|
72
|
-
* Create SIGMA signature for data
|
|
73
|
-
*
|
|
74
|
-
* @param inputHash - SHA256 hash of the input outpoint
|
|
75
|
-
* @param dataHash - SHA256 hash of the script data
|
|
76
|
-
* @param privateKey - Private key for signing
|
|
77
|
-
* @param options - Additional signing options
|
|
78
|
-
*/
|
|
79
|
-
static sign(inputHash, dataHash, privateKey, options = {}) {
|
|
292
|
+
static createSignature(inputHash, dataHash, privateKey, options = {}) {
|
|
80
293
|
const algorithm = options.algorithm ?? SigmaAlgorithm.BSM;
|
|
81
294
|
const vin = options.vin ?? 0;
|
|
82
295
|
const address = privateKey.toAddress().toString();
|
|
83
|
-
// Combine hashes to create the message
|
|
84
296
|
const messageHash = [...inputHash, ...dataHash];
|
|
85
297
|
let signatureArray;
|
|
86
298
|
if (algorithm === SigmaAlgorithm.BRC77) {
|
|
87
|
-
|
|
88
|
-
const brc77Sig = SignedMessage.sign(messageHash, privateKey, options.verifier);
|
|
89
|
-
signatureArray = brc77Sig;
|
|
299
|
+
signatureArray = SignedMessage.sign(messageHash, privateKey, options.verifier);
|
|
90
300
|
}
|
|
91
301
|
else {
|
|
92
|
-
// BSM signing
|
|
93
302
|
const sig = BSM.sign(messageHash, privateKey, 'raw');
|
|
94
|
-
const
|
|
95
|
-
|
|
96
|
-
const compactSig = sig.toCompact(recoveryFactor, true, 'base64');
|
|
97
|
-
signatureArray = Array.from(Utils.toArray(compactSig, 'base64'));
|
|
303
|
+
const recovery = sig.CalculateRecoveryFactor(privateKey.toPublicKey(), new BigNumber(BSM.magicHash(messageHash)));
|
|
304
|
+
signatureArray = Array.from(toArray(sig.toCompact(recovery, true, 'base64'), 'base64'));
|
|
98
305
|
}
|
|
99
306
|
return new Sigma({
|
|
100
307
|
algorithm,
|
|
@@ -104,73 +311,36 @@ export default class Sigma {
|
|
|
104
311
|
valid: true,
|
|
105
312
|
});
|
|
106
313
|
}
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
* @param inputHash - SHA256 hash of the input outpoint
|
|
111
|
-
* @param dataHash - SHA256 hash of the script data
|
|
112
|
-
* @param recipientPrivateKey - For BRC-77 private signatures, the recipient's key
|
|
113
|
-
*/
|
|
314
|
+
verify() {
|
|
315
|
+
return this.data.valid === true;
|
|
316
|
+
}
|
|
114
317
|
verifyWithHashes(inputHash, dataHash, recipientPrivateKey) {
|
|
115
318
|
try {
|
|
116
319
|
const messageHash = [...inputHash, ...dataHash];
|
|
117
320
|
if (this.data.algorithm === SigmaAlgorithm.BRC77) {
|
|
118
|
-
// BRC-77 verification using SignedMessage
|
|
119
321
|
this.data.valid = SignedMessage.verify(messageHash, this.data.signature, recipientPrivateKey);
|
|
120
322
|
return this.data.valid;
|
|
121
323
|
}
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
try {
|
|
127
|
-
const publicKey = sig.RecoverPublicKey(recovery, new BigNumber(BSM.magicHash(messageHash)));
|
|
128
|
-
if (BSM.verify(messageHash, sig, publicKey) &&
|
|
129
|
-
publicKey.toAddress().toString() === this.data.address) {
|
|
130
|
-
this.data.valid = true;
|
|
131
|
-
return true;
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
catch {
|
|
135
|
-
// Try next recovery factor
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
this.data.valid = false;
|
|
139
|
-
return false;
|
|
324
|
+
const sig = Signature.fromCompact(toBase64(this.data.signature), 'base64');
|
|
325
|
+
this.data.valid =
|
|
326
|
+
deduceRecovery(sig, messageHash, this.data.address) !== -1;
|
|
327
|
+
return this.data.valid;
|
|
140
328
|
}
|
|
141
329
|
catch {
|
|
142
330
|
this.data.valid = false;
|
|
143
331
|
return false;
|
|
144
332
|
}
|
|
145
333
|
}
|
|
146
|
-
/**
|
|
147
|
-
* Check if signature was previously verified
|
|
148
|
-
*/
|
|
149
|
-
verify() {
|
|
150
|
-
return this.data.valid === true;
|
|
151
|
-
}
|
|
152
|
-
/**
|
|
153
|
-
* Generate locking script for SIGMA within BitCom
|
|
154
|
-
*/
|
|
155
334
|
lock() {
|
|
156
335
|
const script = new Script();
|
|
157
|
-
script.writeBin(
|
|
158
|
-
script.writeBin(
|
|
336
|
+
script.writeBin(toArray(this.data.algorithm, 'utf8'));
|
|
337
|
+
script.writeBin(toArray(this.data.address, 'utf8'));
|
|
159
338
|
script.writeBin(this.data.signature);
|
|
160
|
-
script.writeBin(
|
|
161
|
-
|
|
162
|
-
{
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
pos: 0,
|
|
166
|
-
},
|
|
167
|
-
];
|
|
168
|
-
const bitcom = new BitCom(protocols);
|
|
169
|
-
return bitcom.lock();
|
|
170
|
-
}
|
|
171
|
-
/**
|
|
172
|
-
* Unlock method is not available for SIGMA scripts
|
|
173
|
-
*/
|
|
339
|
+
script.writeBin(toArray(this.data.vin.toString(), 'utf8'));
|
|
340
|
+
return new BitCom([
|
|
341
|
+
{ protocol: SIGMA_PREFIX, script: script.toBinary(), pos: 0 },
|
|
342
|
+
]).lock();
|
|
343
|
+
}
|
|
174
344
|
unlock() {
|
|
175
345
|
throw new Error('SIGMA signatures cannot be unlocked');
|
|
176
346
|
}
|
package/dist/bitcom/sigma.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sigma.js","sourceRoot":"","sources":["../../src/bitcom/sigma.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sigma.js","sourceRoot":"","sources":["../../src/bitcom/sigma.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { type Script } from '@bsv/sdk';
|
|
2
|
+
/**
|
|
3
|
+
* Cosign decoded data structure
|
|
4
|
+
*/
|
|
5
|
+
export interface CosignData {
|
|
6
|
+
/** Owner's address (base58check encoded) */
|
|
7
|
+
address: string;
|
|
8
|
+
/** Cosigner's compressed public key (hex encoded) */
|
|
9
|
+
cosigner: string;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Cosign - Multi-signature template requiring owner + cosigner authorization
|
|
13
|
+
*
|
|
14
|
+
* The Cosign template creates outputs that require both the owner's signature
|
|
15
|
+
* and a cosigner's signature to spend. The owner is identified by their public
|
|
16
|
+
* key hash (address), while the cosigner is identified by their full public key.
|
|
17
|
+
*
|
|
18
|
+
* Script pattern:
|
|
19
|
+
* OP_DUP OP_HASH160 <20-byte PKHash> OP_EQUALVERIFY OP_CHECKSIGVERIFY <33-byte pubkey> OP_CHECKSIG
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```typescript
|
|
23
|
+
* const cosign = Cosign.decode(script)
|
|
24
|
+
* if (cosign) {
|
|
25
|
+
* console.log(`Owner address: ${cosign.address}`)
|
|
26
|
+
* console.log(`Cosigner pubkey: ${cosign.cosigner}`)
|
|
27
|
+
* }
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
export default class Cosign {
|
|
31
|
+
/**
|
|
32
|
+
* Decodes a Cosign from a script
|
|
33
|
+
*
|
|
34
|
+
* @param script - The script to decode
|
|
35
|
+
* @param mainnet - Whether to use mainnet address prefix (default: true)
|
|
36
|
+
* @returns Decoded Cosign data or null if not found/invalid
|
|
37
|
+
*/
|
|
38
|
+
static decode(script: Script, mainnet?: boolean): CosignData | null;
|
|
39
|
+
/**
|
|
40
|
+
* Checks if a script contains a Cosign pattern
|
|
41
|
+
*
|
|
42
|
+
* @param script - The script to check
|
|
43
|
+
* @returns true if the script contains Cosign pattern
|
|
44
|
+
*/
|
|
45
|
+
static isCosign(script: Script): boolean;
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=cosign.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cosign.d.ts","sourceRoot":"","sources":["../../src/cosign/cosign.ts"],"names":[],"mappings":"AAAA,OAAO,EAAM,KAAK,MAAM,EAAS,MAAM,UAAU,CAAA;AAEjD;;GAEG;AACH,MAAM,WAAW,UAAU;IAC1B,4CAA4C;IAC5C,OAAO,EAAE,MAAM,CAAA;IACf,qDAAqD;IACrD,QAAQ,EAAE,MAAM,CAAA;CAChB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,OAAO,OAAO,MAAM;IAC1B;;;;;;OAMG;IACH,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,UAAO,GAAG,UAAU,GAAG,IAAI;IA4BhE;;;;;OAKG;IACH,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;CAGxC"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { OP, Utils } from '@bsv/sdk';
|
|
2
|
+
/**
|
|
3
|
+
* Cosign - Multi-signature template requiring owner + cosigner authorization
|
|
4
|
+
*
|
|
5
|
+
* The Cosign template creates outputs that require both the owner's signature
|
|
6
|
+
* and a cosigner's signature to spend. The owner is identified by their public
|
|
7
|
+
* key hash (address), while the cosigner is identified by their full public key.
|
|
8
|
+
*
|
|
9
|
+
* Script pattern:
|
|
10
|
+
* OP_DUP OP_HASH160 <20-byte PKHash> OP_EQUALVERIFY OP_CHECKSIGVERIFY <33-byte pubkey> OP_CHECKSIG
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```typescript
|
|
14
|
+
* const cosign = Cosign.decode(script)
|
|
15
|
+
* if (cosign) {
|
|
16
|
+
* console.log(`Owner address: ${cosign.address}`)
|
|
17
|
+
* console.log(`Cosigner pubkey: ${cosign.cosigner}`)
|
|
18
|
+
* }
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
export default class Cosign {
|
|
22
|
+
/**
|
|
23
|
+
* Decodes a Cosign from a script
|
|
24
|
+
*
|
|
25
|
+
* @param script - The script to decode
|
|
26
|
+
* @param mainnet - Whether to use mainnet address prefix (default: true)
|
|
27
|
+
* @returns Decoded Cosign data or null if not found/invalid
|
|
28
|
+
*/
|
|
29
|
+
static decode(script, mainnet = true) {
|
|
30
|
+
try {
|
|
31
|
+
const chunks = script.chunks;
|
|
32
|
+
for (let i = 0; i <= chunks.length - 7; i++) {
|
|
33
|
+
if (chunks[i].op === OP.OP_DUP &&
|
|
34
|
+
chunks[i + 1].op === OP.OP_HASH160 &&
|
|
35
|
+
chunks[i + 2].data?.length === 20 &&
|
|
36
|
+
chunks[i + 3].op === OP.OP_EQUALVERIFY &&
|
|
37
|
+
chunks[i + 4].op === OP.OP_CHECKSIGVERIFY &&
|
|
38
|
+
chunks[i + 5].data?.length === 33 &&
|
|
39
|
+
chunks[i + 6].op === OP.OP_CHECKSIG) {
|
|
40
|
+
const addressPrefix = mainnet ? [0x00] : [0x6f];
|
|
41
|
+
const address = Utils.toBase58Check(chunks[i + 2].data, addressPrefix);
|
|
42
|
+
const cosigner = Utils.toHex(chunks[i + 5].data);
|
|
43
|
+
return { address, cosigner };
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
return null;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Checks if a script contains a Cosign pattern
|
|
54
|
+
*
|
|
55
|
+
* @param script - The script to check
|
|
56
|
+
* @returns true if the script contains Cosign pattern
|
|
57
|
+
*/
|
|
58
|
+
static isCosign(script) {
|
|
59
|
+
return Cosign.decode(script) !== null;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=cosign.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cosign.js","sourceRoot":"","sources":["../../src/cosign/cosign.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAe,KAAK,EAAE,MAAM,UAAU,CAAA;AAYjD;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,OAAO,OAAO,MAAM;IAC1B;;;;;;OAMG;IACH,MAAM,CAAC,MAAM,CAAC,MAAc,EAAE,OAAO,GAAG,IAAI;QAC3C,IAAI,CAAC;YACJ,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAA;YAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC7C,IACC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,MAAM;oBAC1B,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,UAAU;oBAClC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,EAAE;oBACjC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,cAAc;oBACtC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,iBAAiB;oBACzC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,EAAE;oBACjC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,WAAW,EAClC,CAAC;oBACF,MAAM,aAAa,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;oBAC/C,MAAM,OAAO,GAAG,KAAK,CAAC,aAAa,CAClC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAgB,EAC9B,aAAa,CACb,CAAA;oBACD,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAgB,CAAC,CAAA;oBAC5D,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAA;gBAC7B,CAAC;YACF,CAAC;YACD,OAAO,IAAI,CAAA;QACZ,CAAC;QAAC,MAAM,CAAC;YACR,OAAO,IAAI,CAAA;QACZ,CAAC;IACF,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,QAAQ,CAAC,MAAc;QAC7B,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI,CAAA;IACtC,CAAC;CACD"}
|
package/dist/index.d.ts
CHANGED
|
@@ -5,6 +5,8 @@ export { default as BSV20 } from './bsv20/bsv20.js';
|
|
|
5
5
|
export { default as BSV21 } from './bsv21/bsv21.js';
|
|
6
6
|
export { default as OrdLock } from './ordlock/ordlock.js';
|
|
7
7
|
export { default as Lock } from './lock/lock.js';
|
|
8
|
+
export { default as Cosign } from './cosign/cosign.js';
|
|
9
|
+
export type { CosignData } from './cosign/cosign.js';
|
|
8
10
|
export { default as BitCom } from './bitcom/bitcom.js';
|
|
9
11
|
export { default as AIP } from './bitcom/aip.js';
|
|
10
12
|
export { default as B } from './bitcom/b.js';
|
|
@@ -28,8 +30,8 @@ export type { BAPData } from './bitcom/bap.js';
|
|
|
28
30
|
export { BAPAttestationType, BAP_PROTOCOL_PREFIX, } from './bitcom/bap.js';
|
|
29
31
|
export type { MAPData } from './bitcom/map.js';
|
|
30
32
|
export { MAP_PREFIX, MAPCommand } from './bitcom/map.js';
|
|
31
|
-
export type { SigmaData, SigmaOptions, } from './bitcom/sigma.js';
|
|
32
|
-
export { SIGMA_PREFIX, SigmaAlgorithm } from './bitcom/sigma.js';
|
|
33
|
+
export type { Sig, SigmaData, SigmaOptions, SignResponse, } from './bitcom/sigma.js';
|
|
34
|
+
export { SIGMA_PREFIX, SigmaAlgorithm, sigmaHex } from './bitcom/sigma.js';
|
|
33
35
|
export { BSocialActionType, BSocialContext, } from './bsocial/bsocial.js';
|
|
34
36
|
export type { BSocialAction, BSocialPost, BSocialLike, BSocialFollow, BSocialMessage, BSocialVideo, BSocialDecoded, } from './bsocial/bsocial.js';
|
|
35
37
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC5D,YAAY,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAGzC,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,8BAA8B,CAAA;AACrE,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,kBAAkB,CAAA;AACnD,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,kBAAkB,CAAA;AACnD,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -6,6 +6,7 @@ export { default as BSV20 } from './bsv20/bsv20.js';
|
|
|
6
6
|
export { default as BSV21 } from './bsv21/bsv21.js';
|
|
7
7
|
export { default as OrdLock } from './ordlock/ordlock.js';
|
|
8
8
|
export { default as Lock } from './lock/lock.js';
|
|
9
|
+
export { default as Cosign } from './cosign/cosign.js';
|
|
9
10
|
// BitCom Protocols
|
|
10
11
|
export { default as BitCom } from './bitcom/bitcom.js';
|
|
11
12
|
export { default as AIP } from './bitcom/aip.js';
|
|
@@ -23,7 +24,7 @@ export { AIP_PREFIX } from './bitcom/aip.js';
|
|
|
23
24
|
export { B_PREFIX, MediaType, Encoding } from './bitcom/b.js';
|
|
24
25
|
export { BAPAttestationType, BAP_PROTOCOL_PREFIX, } from './bitcom/bap.js';
|
|
25
26
|
export { MAP_PREFIX, MAPCommand } from './bitcom/map.js';
|
|
26
|
-
export { SIGMA_PREFIX, SigmaAlgorithm } from './bitcom/sigma.js';
|
|
27
|
+
export { SIGMA_PREFIX, SigmaAlgorithm, sigmaHex } from './bitcom/sigma.js';
|
|
27
28
|
// ============================================================================
|
|
28
29
|
// BSocial Types
|
|
29
30
|
// ============================================================================
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,sBAAsB;AACtB,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAG5D,mBAAmB;AACnB,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,8BAA8B,CAAA;AACrE,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,kBAAkB,CAAA;AACnD,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,kBAAkB,CAAA;AACnD,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,sBAAsB;AACtB,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAG5D,mBAAmB;AACnB,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,8BAA8B,CAAA;AACrE,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,kBAAkB,CAAA;AACnD,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,kBAAkB,CAAA;AACnD,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,gBAAgB,CAAA;AAChD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAGtD,mBAAmB;AACnB,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,iBAAiB,CAAA;AAChD,OAAO,EAAE,OAAO,IAAI,CAAC,EAAE,MAAM,eAAe,CAAA;AAC5C,OAAO,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,iBAAiB,CAAA;AAChD,OAAO,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,iBAAiB,CAAA;AAEhD,UAAU;AACV,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAEzD,qEAAqE;AACrE,kCAAkC;AAClC,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAqCpD,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAMrE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAezD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAM5C,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAM7D,OAAO,EACN,kBAAkB,EAClB,mBAAmB,GACnB,MAAM,iBAAiB,CAAA;AAMxB,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAWxD,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAE1E,+EAA+E;AAC/E,gBAAgB;AAChB,+EAA+E;AAC/E,OAAO,EACN,iBAAiB,EACjB,cAAc,GACd,MAAM,sBAAsB,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,36 +1,44 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
}
|
|
2
|
+
"name": "@1sat/templates",
|
|
3
|
+
"version": "0.0.6",
|
|
4
|
+
"description": "Bitcoin script templates for 1Sat Ordinals SDK",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"import": "./dist/index.js"
|
|
12
|
+
},
|
|
13
|
+
"./sigma": {
|
|
14
|
+
"types": "./dist/bitcom/sigma.d.ts",
|
|
15
|
+
"import": "./dist/bitcom/sigma.js"
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
"files": [
|
|
19
|
+
"dist"
|
|
20
|
+
],
|
|
21
|
+
"scripts": {
|
|
22
|
+
"build": "tsc",
|
|
23
|
+
"dev": "tsc --watch",
|
|
24
|
+
"clean": "rm -rf dist"
|
|
25
|
+
},
|
|
26
|
+
"keywords": [
|
|
27
|
+
"1sat",
|
|
28
|
+
"bsv",
|
|
29
|
+
"ordinals",
|
|
30
|
+
"templates",
|
|
31
|
+
"typescript"
|
|
32
|
+
],
|
|
33
|
+
"license": "MIT",
|
|
34
|
+
"dependencies": {
|
|
35
|
+
"@1sat/types": "0.0.15"
|
|
36
|
+
},
|
|
37
|
+
"peerDependencies": {
|
|
38
|
+
"@bsv/sdk": "^2.0.6"
|
|
39
|
+
},
|
|
40
|
+
"devDependencies": {
|
|
41
|
+
"@bsv/sdk": "^2.0.6",
|
|
42
|
+
"typescript": "^5.9.3"
|
|
43
|
+
}
|
|
44
|
+
}
|