@btc-vision/bitcoin 7.0.0-alpha.1 → 7.0.0-alpha.3
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/README.md +334 -161
- package/browser/address.d.ts +5 -1
- package/browser/address.d.ts.map +1 -1
- package/browser/branded.d.ts +3 -14
- package/browser/branded.d.ts.map +1 -1
- package/browser/ecc/context.d.ts +22 -21
- package/browser/ecc/context.d.ts.map +1 -1
- package/browser/ecc/index.d.ts +1 -1
- package/browser/ecc/index.d.ts.map +1 -1
- package/browser/ecc/types.d.ts +10 -123
- package/browser/ecc/types.d.ts.map +1 -1
- package/browser/index.d.ts +3 -2
- package/browser/index.d.ts.map +1 -1
- package/browser/index.js +6465 -4692
- package/browser/opcodes.d.ts +11 -0
- package/browser/opcodes.d.ts.map +1 -1
- package/browser/payments/p2tr.d.ts.map +1 -1
- package/browser/psbt/PsbtCache.d.ts +54 -0
- package/browser/psbt/PsbtCache.d.ts.map +1 -0
- package/browser/psbt/PsbtFinalizer.d.ts +21 -0
- package/browser/psbt/PsbtFinalizer.d.ts.map +1 -0
- package/browser/psbt/PsbtSigner.d.ts +32 -0
- package/browser/psbt/PsbtSigner.d.ts.map +1 -0
- package/browser/psbt/PsbtTransaction.d.ts +25 -0
- package/browser/psbt/PsbtTransaction.d.ts.map +1 -0
- package/browser/psbt/types.d.ts +4 -70
- package/browser/psbt/types.d.ts.map +1 -1
- package/browser/psbt/validation.d.ts +1 -1
- package/browser/psbt/validation.d.ts.map +1 -1
- package/browser/psbt.d.ts +26 -40
- package/browser/psbt.d.ts.map +1 -1
- package/browser/script.d.ts.map +1 -1
- package/browser/transaction.d.ts +4 -4
- package/browser/transaction.d.ts.map +1 -1
- package/browser/types.d.ts +5 -3
- package/browser/types.d.ts.map +1 -1
- package/browser/workers/index.d.ts +3 -50
- package/browser/workers/index.d.ts.map +1 -1
- package/browser/workers/index.node.d.ts +24 -0
- package/browser/workers/index.node.d.ts.map +1 -0
- package/build/address.d.ts +5 -1
- package/build/address.d.ts.map +1 -1
- package/build/address.js +29 -17
- package/build/address.js.map +1 -1
- package/build/branded.d.ts +3 -14
- package/build/branded.d.ts.map +1 -1
- package/build/branded.js +0 -5
- package/build/branded.js.map +1 -1
- package/build/ecc/context.d.ts +22 -21
- package/build/ecc/context.d.ts.map +1 -1
- package/build/ecc/context.js +23 -95
- package/build/ecc/context.js.map +1 -1
- package/build/ecc/index.d.ts +1 -1
- package/build/ecc/index.d.ts.map +1 -1
- package/build/ecc/types.d.ts +7 -126
- package/build/ecc/types.d.ts.map +1 -1
- package/build/ecc/types.js +4 -1
- package/build/ecc/types.js.map +1 -1
- package/build/index.d.ts +3 -2
- package/build/index.d.ts.map +1 -1
- package/build/index.js +1 -1
- package/build/index.js.map +1 -1
- package/build/opcodes.d.ts +11 -0
- package/build/opcodes.d.ts.map +1 -1
- package/build/opcodes.js +19 -4
- package/build/opcodes.js.map +1 -1
- package/build/payments/p2tr.d.ts.map +1 -1
- package/build/payments/p2tr.js +2 -3
- package/build/payments/p2tr.js.map +1 -1
- package/build/psbt/PsbtCache.d.ts +54 -0
- package/build/psbt/PsbtCache.d.ts.map +1 -0
- package/build/psbt/PsbtCache.js +249 -0
- package/build/psbt/PsbtCache.js.map +1 -0
- package/build/psbt/PsbtFinalizer.d.ts +21 -0
- package/build/psbt/PsbtFinalizer.d.ts.map +1 -0
- package/build/psbt/PsbtFinalizer.js +157 -0
- package/build/psbt/PsbtFinalizer.js.map +1 -0
- package/build/psbt/PsbtSigner.d.ts +32 -0
- package/build/psbt/PsbtSigner.d.ts.map +1 -0
- package/build/psbt/PsbtSigner.js +192 -0
- package/build/psbt/PsbtSigner.js.map +1 -0
- package/build/psbt/PsbtTransaction.d.ts +25 -0
- package/build/psbt/PsbtTransaction.d.ts.map +1 -0
- package/build/psbt/PsbtTransaction.js +61 -0
- package/build/psbt/PsbtTransaction.js.map +1 -0
- package/build/psbt/types.d.ts +4 -70
- package/build/psbt/types.d.ts.map +1 -1
- package/build/psbt/validation.d.ts +1 -1
- package/build/psbt/validation.d.ts.map +1 -1
- package/build/psbt.d.ts +26 -40
- package/build/psbt.d.ts.map +1 -1
- package/build/psbt.js +177 -799
- package/build/psbt.js.map +1 -1
- package/build/script.d.ts.map +1 -1
- package/build/script.js +2 -2
- package/build/script.js.map +1 -1
- package/build/transaction.d.ts +4 -4
- package/build/transaction.d.ts.map +1 -1
- package/build/transaction.js +5 -4
- package/build/transaction.js.map +1 -1
- package/build/tsconfig.build.tsbuildinfo +1 -1
- package/build/types.d.ts +5 -3
- package/build/types.d.ts.map +1 -1
- package/build/types.js +9 -0
- package/build/types.js.map +1 -1
- package/build/workers/WorkerSigningPool.js +1 -1
- package/build/workers/WorkerSigningPool.js.map +1 -1
- package/build/workers/index.d.ts +3 -3
- package/build/workers/index.d.ts.map +1 -1
- package/build/workers/index.js +0 -3
- package/build/workers/index.js.map +1 -1
- package/build/workers/index.node.d.ts +24 -0
- package/build/workers/index.node.d.ts.map +1 -0
- package/build/workers/index.node.js +26 -0
- package/build/workers/index.node.js.map +1 -0
- package/package.json +27 -8
- package/src/address.ts +41 -18
- package/src/branded.ts +15 -13
- package/src/ecc/context.ts +30 -133
- package/src/ecc/index.ts +2 -2
- package/src/ecc/types.ts +7 -138
- package/src/index.ts +36 -2
- package/src/opcodes.ts +21 -4
- package/src/payments/p2tr.ts +2 -2
- package/src/psbt/PsbtCache.ts +325 -0
- package/src/psbt/PsbtFinalizer.ts +213 -0
- package/src/psbt/PsbtSigner.ts +302 -0
- package/src/psbt/PsbtTransaction.ts +82 -0
- package/src/psbt/types.ts +4 -86
- package/src/psbt/validation.ts +1 -1
- package/src/psbt.ts +348 -1197
- package/src/script.ts +2 -2
- package/src/transaction.ts +9 -8
- package/src/types.ts +14 -1
- package/src/workers/WorkerSigningPool.ts +1 -1
- package/src/workers/index.node.ts +27 -0
- package/src/workers/index.ts +7 -9
- package/test/address.spec.ts +2 -2
- package/test/bitcoin.core.spec.ts +5 -2
- package/test/browser/payments.spec.ts +151 -0
- package/test/browser/psbt.spec.ts +1510 -0
- package/test/browser/script.spec.ts +223 -0
- package/test/browser/setup.ts +13 -0
- package/test/browser/workers-signing.spec.ts +537 -0
- package/test/crypto.spec.ts +2 -2
- package/test/fixtures/core/base58_encode_decode.json +12 -48
- package/test/fixtures/core/base58_keys_invalid.json +50 -150
- package/test/fixtures/core/sighash.json +1 -3
- package/test/fixtures/core/tx_valid.json +133 -501
- package/test/fixtures/embed.json +3 -11
- package/test/fixtures/p2ms.json +21 -91
- package/test/fixtures/p2pk.json +5 -24
- package/test/fixtures/p2pkh.json +7 -36
- package/test/fixtures/p2sh.json +8 -54
- package/test/fixtures/p2tr.json +2 -6
- package/test/fixtures/p2wpkh.json +7 -36
- package/test/fixtures/p2wsh.json +14 -59
- package/test/fixtures/psbt.json +2 -6
- package/test/fixtures/script.json +12 -48
- package/test/integration/addresses.spec.ts +11 -5
- package/test/integration/bip32.spec.ts +1 -1
- package/test/integration/cltv.spec.ts +10 -6
- package/test/integration/csv.spec.ts +10 -9
- package/test/integration/payments.spec.ts +8 -4
- package/test/integration/taproot.spec.ts +26 -6
- package/test/integration/transactions.spec.ts +22 -8
- package/test/payments.spec.ts +1 -1
- package/test/payments.utils.ts +1 -1
- package/test/psbt.spec.ts +250 -64
- package/test/script_signature.spec.ts +1 -1
- package/test/transaction.spec.ts +18 -5
- package/test/tsconfig.json +6 -20
- package/test/workers-pool.spec.ts +22 -23
- package/test/workers-signing.spec.ts +7 -3
- package/test/workers.spec.ts +6 -7
- package/typedoc.json +11 -1
- package/vitest.config.browser.ts +68 -0
- package/browser/ecpair.d.ts +0 -99
- package/src/ecpair.d.ts +0 -99
- package/test/taproot-cache.spec.ts +0 -694
|
@@ -1,55 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
* Worker-based parallel signing module.
|
|
3
|
-
*
|
|
4
|
-
* Provides secure parallel signature computation using worker threads.
|
|
5
|
-
* Works in both Node.js (worker_threads) and browsers (Web Workers).
|
|
6
|
-
*
|
|
7
|
-
* @example
|
|
8
|
-
* ```typescript
|
|
9
|
-
* import { WorkerSigningPool, SignatureType } from '@btc-vision/bitcoin/workers';
|
|
10
|
-
*
|
|
11
|
-
* // Get singleton pool
|
|
12
|
-
* const pool = WorkerSigningPool.getInstance({ workerCount: 4 });
|
|
13
|
-
*
|
|
14
|
-
* // Keep workers alive for multiple signing operations
|
|
15
|
-
* pool.preserveWorkers();
|
|
16
|
-
*
|
|
17
|
-
* // Prepare signing tasks (one per input)
|
|
18
|
-
* const tasks = [
|
|
19
|
-
* {
|
|
20
|
-
* taskId: 'input-0',
|
|
21
|
-
* inputIndex: 0,
|
|
22
|
-
* hash: hash0,
|
|
23
|
-
* signatureType: SignatureType.ECDSA,
|
|
24
|
-
* sighashType: 0x01,
|
|
25
|
-
* },
|
|
26
|
-
* {
|
|
27
|
-
* taskId: 'input-1',
|
|
28
|
-
* inputIndex: 1,
|
|
29
|
-
* hash: hash1,
|
|
30
|
-
* signatureType: SignatureType.Schnorr,
|
|
31
|
-
* sighashType: 0x00,
|
|
32
|
-
* },
|
|
33
|
-
* ];
|
|
34
|
-
*
|
|
35
|
-
* // Sign ALL inputs in parallel
|
|
36
|
-
* const result = await pool.signBatch(tasks, keyPair);
|
|
37
|
-
*
|
|
38
|
-
* if (result.success) {
|
|
39
|
-
* console.log(`Signed ${result.signatures.size} inputs in ${result.durationMs}ms`);
|
|
40
|
-
* }
|
|
41
|
-
*
|
|
42
|
-
* // Cleanup when done (optional)
|
|
43
|
-
* await pool.shutdown();
|
|
44
|
-
* ```
|
|
45
|
-
*
|
|
46
|
-
* @packageDocumentation
|
|
47
|
-
*/
|
|
1
|
+
import { WorkerPoolConfig, SigningTask, ParallelSignerKeyPair, ParallelSigningResult } from './types.js';
|
|
48
2
|
export { SignatureType, type SigningTaskMessage, type BatchSigningMessage, type BatchSigningTask, type BatchSigningResultMessage, type BatchSigningTaskResult, type BatchSigningTaskError, type WorkerInitMessage, type WorkerShutdownMessage, type WorkerMessage, type SigningResultMessage, type SigningErrorMessage, type WorkerReadyMessage, type WorkerShutdownAckMessage, type WorkerResponse, isSigningError, isSigningResult, isBatchResult, isWorkerReady, type WorkerEccLib, type WorkerPoolConfig, type SigningTask, type ParallelSignerKeyPair, type ParallelSigningResult, WorkerState, type PooledWorker, } from './types.js';
|
|
49
3
|
export { WorkerSigningPool, getSigningPool } from './WorkerSigningPool.js';
|
|
50
4
|
export { generateWorkerCode, createWorkerBlobUrl, revokeWorkerBlobUrl } from './signing-worker.js';
|
|
51
5
|
export { ECC_BUNDLE, ECC_BUNDLE_SIZE } from './ecc-bundle.js';
|
|
52
|
-
export { type NodeWorkerPoolConfig } from './WorkerSigningPool.node.js';
|
|
53
6
|
export { signPsbtParallel, prepareSigningTasks, applySignaturesToPsbt, type ParallelSignOptions, type PsbtParallelKeyPair, } from './psbt-parallel.js';
|
|
54
7
|
/**
|
|
55
8
|
* Detects the runtime environment and returns the appropriate signing pool.
|
|
@@ -78,8 +31,8 @@ export declare function detectRuntime(): 'node' | 'browser' | 'unknown';
|
|
|
78
31
|
* await pool.shutdown();
|
|
79
32
|
* ```
|
|
80
33
|
*/
|
|
81
|
-
export declare function createSigningPool(config?:
|
|
82
|
-
signBatch: (tasks: readonly
|
|
34
|
+
export declare function createSigningPool(config?: WorkerPoolConfig): Promise<{
|
|
35
|
+
signBatch: (tasks: readonly SigningTask[], keyPair: ParallelSignerKeyPair) => Promise<ParallelSigningResult>;
|
|
83
36
|
preserveWorkers: () => void;
|
|
84
37
|
releaseWorkers: () => void;
|
|
85
38
|
shutdown: () => Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/workers/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/workers/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAG9G,OAAO,EACH,aAAa,EACb,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACrB,KAAK,yBAAyB,EAC9B,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAC1B,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,aAAa,EAClB,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,wBAAwB,EAC7B,KAAK,cAAc,EACnB,cAAc,EACd,eAAe,EACf,aAAa,EACb,aAAa,EACb,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,WAAW,EAChB,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,EAC1B,WAAW,EACX,KAAK,YAAY,GACpB,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAG3E,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAGnG,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAG9D,OAAO,EACH,gBAAgB,EAChB,mBAAmB,EACnB,qBAAqB,EACrB,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,GAC3B,MAAM,oBAAoB,CAAC;AAE5B;;;;GAIG;AACH,wBAAgB,aAAa,IAAI,MAAM,GAAG,SAAS,GAAG,SAAS,CAQ9D;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,iBAAiB,CAAC,MAAM,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC;IACxE,SAAS,EAAE,CACP,KAAK,EAAE,SAAS,WAAW,EAAE,EAC7B,OAAO,EAAE,qBAAqB,KAC7B,OAAO,CAAC,qBAAqB,CAAC,CAAC;IACpC,eAAe,EAAE,MAAM,IAAI,CAAC;IAC5B,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,mBAAmB,EAAE,OAAO,CAAC;CAChC,CAAC,CAgBD"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Node.js worker pool entry point.
|
|
3
|
+
*
|
|
4
|
+
* This module provides direct access to Node.js-specific worker functionality.
|
|
5
|
+
* It re-exports everything from the base index plus Node.js specific exports.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* import { NodeWorkerSigningPool } from '@btc-vision/bitcoin/workers';
|
|
10
|
+
*
|
|
11
|
+
* const pool = NodeWorkerSigningPool.getInstance({ workerCount: 4 });
|
|
12
|
+
* await pool.initialize();
|
|
13
|
+
* pool.preserveWorkers();
|
|
14
|
+
*
|
|
15
|
+
* const result = await pool.signBatch(tasks, keyPair);
|
|
16
|
+
*
|
|
17
|
+
* await pool.shutdown();
|
|
18
|
+
* ```
|
|
19
|
+
*
|
|
20
|
+
* @packageDocumentation
|
|
21
|
+
*/
|
|
22
|
+
export * from './index.js';
|
|
23
|
+
export { NodeWorkerSigningPool, type NodeWorkerPoolConfig } from './WorkerSigningPool.node.js';
|
|
24
|
+
//# sourceMappingURL=index.node.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.node.d.ts","sourceRoot":"","sources":["../../src/workers/index.node.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAGH,cAAc,YAAY,CAAC;AAG3B,OAAO,EAAE,qBAAqB,EAAE,KAAK,oBAAoB,EAAE,MAAM,6BAA6B,CAAC"}
|
package/build/address.d.ts
CHANGED
|
@@ -40,7 +40,11 @@ export declare function toBase58Check(hash: Bytes20, version: number): string;
|
|
|
40
40
|
*/
|
|
41
41
|
export declare function toBech32(data: Uint8Array, version: number, prefix: string, prefixOpnet?: string): string;
|
|
42
42
|
/**
|
|
43
|
-
* decode address from output script with network, return address if matched
|
|
43
|
+
* decode address from output script with network, return address if matched.
|
|
44
|
+
*
|
|
45
|
+
* Uses fast byte-pattern matching for common script types (P2PKH, P2SH,
|
|
46
|
+
* P2WPKH, P2WSH, P2TR) to avoid constructing payment objects and catching
|
|
47
|
+
* exceptions. Falls back to payment constructors for exotic types.
|
|
44
48
|
*/
|
|
45
49
|
export declare function fromOutputScript(output: Uint8Array, network?: Network): string;
|
|
46
50
|
/**
|
package/build/address.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"address.d.ts","sourceRoot":"","sources":["../src/address.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,KAAK,YAAY,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEjE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAU7C,OAAO,EACH,KAAK,OAAO,
|
|
1
|
+
{"version":3,"file":"address.d.ts","sourceRoot":"","sources":["../src/address.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,KAAK,YAAY,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEjE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAU7C,OAAO,EACH,KAAK,OAAO,EAMf,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,UAAU,EAAE,KAAK,YAAY,EAAE,CAAC;AAEzC,gCAAgC;AAChC,MAAM,WAAW,iBAAiB;IAC9B,mBAAmB;IACnB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,qDAAqD;IACrD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC5B;AAED,eAAO,MAAM,sBAAsB,EAAE,MAAW,CAAC;AACjD,eAAO,MAAM,sBAAsB,EAAE,MAAU,CAAC;AAChD,eAAO,MAAM,yBAAyB,EAAE,MAAW,CAAC;AACpD,eAAO,MAAM,kBAAkB,EAAE,MAAW,CAAC;AAC7C,eAAO,MAAM,oBAAoB,EAAE,MAAW,CAAC;AAC/C,eAAO,MAAM,yBAAyB,EAAE,MAAU,CAAC;AACnD,eAAO,MAAM,0BAA0B,EAAE,MAAa,CAAC;AAOvD,eAAO,MAAM,sBAAsB,GAAI,QAAQ,UAAU,KAAG,OAkB3D,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,CAoCjF;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,CAgBnF;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,iBAAiB,CAWlE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CASpE;AAED;;GAEG;AACH,wBAAgB,QAAQ,CACpB,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,WAAW,CAAC,EAAE,MAAM,GACrB,MAAM,CASR;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,MAAM,CA+C9E;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IAClC;;OAEG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B;;;;;OAKG;IACH,QAAQ,CAAC,qBAAqB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAC9D;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAC1B,OAAO,EAAE,MAAM,EACf,gBAAgB,CAAC,EAAE,OAAO,GAAG,qBAAqB,GACnD,UAAU,CAwEZ"}
|
package/build/address.js
CHANGED
|
@@ -143,31 +143,43 @@ export function toBech32(data, version, prefix, prefixOpnet) {
|
|
|
143
143
|
return version === 0 ? bech32.encode(prefix, words) : bech32m.encode(prefix, words);
|
|
144
144
|
}
|
|
145
145
|
/**
|
|
146
|
-
* decode address from output script with network, return address if matched
|
|
146
|
+
* decode address from output script with network, return address if matched.
|
|
147
|
+
*
|
|
148
|
+
* Uses fast byte-pattern matching for common script types (P2PKH, P2SH,
|
|
149
|
+
* P2WPKH, P2WSH, P2TR) to avoid constructing payment objects and catching
|
|
150
|
+
* exceptions. Falls back to payment constructors for exotic types.
|
|
147
151
|
*/
|
|
148
152
|
export function fromOutputScript(output, network) {
|
|
149
|
-
// TODO: Network
|
|
150
153
|
network = network || networks.bitcoin;
|
|
151
|
-
|
|
152
|
-
|
|
154
|
+
const len = output.length;
|
|
155
|
+
// P2PKH: OP_DUP(0x76) OP_HASH160(0xa9) 0x14 <20-byte hash> OP_EQUALVERIFY(0x88) OP_CHECKSIG(0xac)
|
|
156
|
+
if (len === 25 &&
|
|
157
|
+
output[0] === 0x76 &&
|
|
158
|
+
output[1] === 0xa9 &&
|
|
159
|
+
output[2] === 0x14 &&
|
|
160
|
+
output[23] === 0x88 &&
|
|
161
|
+
output[24] === 0xac) {
|
|
162
|
+
return toBase58Check(output.subarray(3, 23), network.pubKeyHash);
|
|
153
163
|
}
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
return
|
|
164
|
+
// P2SH: OP_HASH160(0xa9) 0x14 <20-byte hash> OP_EQUAL(0x87)
|
|
165
|
+
if (len === 23 && output[0] === 0xa9 && output[1] === 0x14 && output[22] === 0x87) {
|
|
166
|
+
return toBase58Check(output.subarray(2, 22), network.scriptHash);
|
|
157
167
|
}
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
return
|
|
168
|
+
// P2WPKH: OP_0(0x00) 0x14 <20-byte hash>
|
|
169
|
+
if (len === 22 && output[0] === 0x00 && output[1] === 0x14) {
|
|
170
|
+
return toBech32(output.subarray(2, 22), 0, network.bech32);
|
|
161
171
|
}
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
return
|
|
172
|
+
// P2WSH: OP_0(0x00) 0x20 <32-byte hash>
|
|
173
|
+
if (len === 34 && output[0] === 0x00 && output[1] === 0x20) {
|
|
174
|
+
return toBech32(output.subarray(2, 34), 0, network.bech32);
|
|
165
175
|
}
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
176
|
+
// P2TR: OP_1(0x51) 0x20 <32-byte x-only pubkey>
|
|
177
|
+
if (len === 34 && output[0] === 0x51 && output[1] === 0x20) {
|
|
178
|
+
const words = bech32m.toWords(output.subarray(2, 34));
|
|
179
|
+
words.unshift(1);
|
|
180
|
+
return bech32m.encode(network.bech32, words);
|
|
169
181
|
}
|
|
170
|
-
|
|
182
|
+
// Fallback for exotic types
|
|
171
183
|
try {
|
|
172
184
|
return toFutureOPNetAddress(output, network);
|
|
173
185
|
}
|
package/build/address.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"address.js","sourceRoot":"","sources":["../src/address.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACzC,OAAO,KAAK,SAAS,MAAM,WAAW,CAAC;AACvC,OAAO,EAAqB,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEtC,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,OAAO,KAAK,OAAO,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAEH,SAAS,EACT,OAAO,
|
|
1
|
+
{"version":3,"file":"address.js","sourceRoot":"","sources":["../src/address.ts"],"names":[],"mappings":"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"}
|
package/build/branded.d.ts
CHANGED
|
@@ -1,20 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Branded type definitions for type-safe primitives.
|
|
3
3
|
*
|
|
4
|
+
* Re-exported from @btc-vision/ecpair to ensure cross-package type compatibility.
|
|
5
|
+
*
|
|
4
6
|
* @packageDocumentation
|
|
5
7
|
*/
|
|
6
|
-
|
|
7
|
-
type Brand<T, B extends string> = T & {
|
|
8
|
-
readonly [__brand]: B;
|
|
9
|
-
};
|
|
10
|
-
export type Bytes32 = Brand<Uint8Array, 'Bytes32'>;
|
|
11
|
-
export type Bytes20 = Brand<Uint8Array, 'Bytes20'>;
|
|
12
|
-
export type PublicKey = Brand<Uint8Array, 'PublicKey'>;
|
|
13
|
-
export type XOnlyPublicKey = Brand<Uint8Array, 'XOnlyPublicKey'>;
|
|
14
|
-
export type Satoshi = Brand<bigint, 'Satoshi'>;
|
|
15
|
-
export type PrivateKey = Brand<Uint8Array, 'PrivateKey'>;
|
|
16
|
-
export type Signature = Brand<Uint8Array, 'Signature'>;
|
|
17
|
-
export type SchnorrSignature = Brand<Uint8Array, 'SchnorrSignature'>;
|
|
18
|
-
export type Script = Brand<Uint8Array, 'Script'>;
|
|
19
|
-
export {};
|
|
8
|
+
export type { Brand, Bytes32, Bytes20, PublicKey, XOnlyPublicKey, Satoshi, PrivateKey, Signature, SchnorrSignature, MessageHash, Script, } from '@btc-vision/ecpair';
|
|
20
9
|
//# sourceMappingURL=branded.d.ts.map
|
package/build/branded.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"branded.d.ts","sourceRoot":"","sources":["../src/branded.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"branded.d.ts","sourceRoot":"","sources":["../src/branded.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,YAAY,EACR,KAAK,EACL,OAAO,EACP,OAAO,EACP,SAAS,EACT,cAAc,EACd,OAAO,EACP,UAAU,EACV,SAAS,EACT,gBAAgB,EAChB,WAAW,EACX,MAAM,GACT,MAAM,oBAAoB,CAAC"}
|
package/build/branded.js
CHANGED
package/build/branded.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"branded.js","sourceRoot":"","sources":["../src/branded.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"branded.js","sourceRoot":"","sources":["../src/branded.ts"],"names":[],"mappings":""}
|
package/build/ecc/context.d.ts
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*
|
|
5
5
|
* @packageDocumentation
|
|
6
6
|
*/
|
|
7
|
-
import type {
|
|
7
|
+
import type { CryptoBackend } from '@btc-vision/ecpair';
|
|
8
8
|
/**
|
|
9
9
|
* Context class for managing the ECC library instance.
|
|
10
10
|
* Uses dependency injection pattern instead of global singleton.
|
|
@@ -12,10 +12,11 @@ import type { EccLib } from './types.js';
|
|
|
12
12
|
* @example
|
|
13
13
|
* ```typescript
|
|
14
14
|
* import { EccContext } from '@btc-vision/bitcoin';
|
|
15
|
-
* import
|
|
15
|
+
* import { createNobleBackend } from '@btc-vision/ecpair';
|
|
16
16
|
*
|
|
17
17
|
* // Initialize once at app startup
|
|
18
|
-
*
|
|
18
|
+
* const backend = createNobleBackend();
|
|
19
|
+
* EccContext.init(backend);
|
|
19
20
|
*
|
|
20
21
|
* // Get instance anywhere in your code
|
|
21
22
|
* const ecc = EccContext.get();
|
|
@@ -30,24 +31,24 @@ export declare class EccContext {
|
|
|
30
31
|
/**
|
|
31
32
|
* The underlying ECC library instance.
|
|
32
33
|
*/
|
|
33
|
-
get lib():
|
|
34
|
+
get lib(): CryptoBackend;
|
|
34
35
|
/**
|
|
35
36
|
* Initializes the ECC context with the provided library.
|
|
36
37
|
* The library is verified before being set as active.
|
|
37
38
|
*
|
|
38
|
-
* @param lib - The
|
|
39
|
+
* @param lib - The CryptoBackend instance to initialize
|
|
39
40
|
* @returns The initialized EccContext instance
|
|
40
|
-
* @throws Error if the
|
|
41
|
+
* @throws Error if the CryptoBackend fails verification
|
|
41
42
|
*
|
|
42
43
|
* @example
|
|
43
44
|
* ```typescript
|
|
44
45
|
* import { EccContext } from '@btc-vision/bitcoin';
|
|
45
|
-
* import
|
|
46
|
+
* import { createNobleBackend } from '@btc-vision/ecpair';
|
|
46
47
|
*
|
|
47
|
-
* const context = EccContext.init(
|
|
48
|
+
* const context = EccContext.init(createNobleBackend());
|
|
48
49
|
* ```
|
|
49
50
|
*/
|
|
50
|
-
static init(lib:
|
|
51
|
+
static init(lib: CryptoBackend): EccContext;
|
|
51
52
|
/**
|
|
52
53
|
* Gets the initialized ECC context.
|
|
53
54
|
*
|
|
@@ -59,7 +60,7 @@ export declare class EccContext {
|
|
|
59
60
|
* import { EccContext } from '@btc-vision/bitcoin';
|
|
60
61
|
*
|
|
61
62
|
* const context = EccContext.get();
|
|
62
|
-
* const
|
|
63
|
+
* const tweaked = context.lib.xOnlyPointAddTweak(key, tweak);
|
|
63
64
|
* ```
|
|
64
65
|
*/
|
|
65
66
|
static get(): EccContext;
|
|
@@ -86,7 +87,7 @@ export declare class EccContext {
|
|
|
86
87
|
* import { EccContext } from '@btc-vision/bitcoin';
|
|
87
88
|
*
|
|
88
89
|
* if (!EccContext.isInitialized()) {
|
|
89
|
-
* EccContext.init(
|
|
90
|
+
* EccContext.init(createNobleBackend());
|
|
90
91
|
* }
|
|
91
92
|
* ```
|
|
92
93
|
*/
|
|
@@ -97,39 +98,39 @@ export declare class EccContext {
|
|
|
97
98
|
* This is a convenience function that wraps EccContext.init().
|
|
98
99
|
* Pass `undefined` to clear the library.
|
|
99
100
|
*
|
|
100
|
-
* @param eccLib - The
|
|
101
|
-
* @throws Error if the
|
|
101
|
+
* @param eccLib - The CryptoBackend instance to initialize, or undefined to clear
|
|
102
|
+
* @throws Error if the CryptoBackend fails verification
|
|
102
103
|
*
|
|
103
104
|
* @example
|
|
104
105
|
* ```typescript
|
|
105
106
|
* import { initEccLib } from '@btc-vision/bitcoin';
|
|
106
|
-
* import
|
|
107
|
+
* import { createNobleBackend } from '@btc-vision/ecpair';
|
|
107
108
|
*
|
|
108
109
|
* // Initialize the ECC library
|
|
109
|
-
* initEccLib(
|
|
110
|
+
* initEccLib(createNobleBackend());
|
|
110
111
|
*
|
|
111
112
|
* // Clear the library
|
|
112
113
|
* initEccLib(undefined);
|
|
113
114
|
* ```
|
|
114
115
|
*/
|
|
115
|
-
export declare function initEccLib(eccLib:
|
|
116
|
+
export declare function initEccLib(eccLib: CryptoBackend | undefined): void;
|
|
116
117
|
/**
|
|
117
118
|
* Retrieves the initialized ECC library instance.
|
|
118
119
|
* This is a convenience function that wraps EccContext.get().lib.
|
|
119
120
|
*
|
|
120
|
-
* @returns The
|
|
121
|
+
* @returns The CryptoBackend instance
|
|
121
122
|
* @throws Error if the ECC library has not been initialized
|
|
122
123
|
*
|
|
123
124
|
* @example
|
|
124
125
|
* ```typescript
|
|
125
126
|
* import { getEccLib, initEccLib } from '@btc-vision/bitcoin';
|
|
126
|
-
* import
|
|
127
|
+
* import { createNobleBackend } from '@btc-vision/ecpair';
|
|
127
128
|
*
|
|
128
|
-
* initEccLib(
|
|
129
|
+
* initEccLib(createNobleBackend());
|
|
129
130
|
*
|
|
130
131
|
* const ecc = getEccLib();
|
|
131
|
-
* const
|
|
132
|
+
* const tweaked = ecc.xOnlyPointAddTweak(pubkey, tweak);
|
|
132
133
|
* ```
|
|
133
134
|
*/
|
|
134
|
-
export declare function getEccLib():
|
|
135
|
+
export declare function getEccLib(): CryptoBackend;
|
|
135
136
|
//# sourceMappingURL=context.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/ecc/context.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/ecc/context.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGxD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,UAAU;;IAInB,OAAO;IAIP;;OAEG;IACH,IAAI,GAAG,IAAI,aAAa,CAEvB;IAED;;;;;;;;;;;;;;;OAeG;IACH,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,GAAG,UAAU;IAU3C;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,GAAG,IAAI,UAAU;IASxB;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,KAAK,IAAI,IAAI;IAIpB;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,aAAa,IAAI,OAAO;CAGlC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,aAAa,GAAG,SAAS,GAAG,IAAI,CAMlE;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,SAAS,IAAI,aAAa,CAEzC"}
|
package/build/ecc/context.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { verifyCryptoBackend } from '@btc-vision/ecpair';
|
|
2
2
|
/**
|
|
3
3
|
* Context class for managing the ECC library instance.
|
|
4
4
|
* Uses dependency injection pattern instead of global singleton.
|
|
@@ -6,10 +6,11 @@ import { equals, fromHex } from '../io/index.js';
|
|
|
6
6
|
* @example
|
|
7
7
|
* ```typescript
|
|
8
8
|
* import { EccContext } from '@btc-vision/bitcoin';
|
|
9
|
-
* import
|
|
9
|
+
* import { createNobleBackend } from '@btc-vision/ecpair';
|
|
10
10
|
*
|
|
11
11
|
* // Initialize once at app startup
|
|
12
|
-
*
|
|
12
|
+
* const backend = createNobleBackend();
|
|
13
|
+
* EccContext.init(backend);
|
|
13
14
|
*
|
|
14
15
|
* // Get instance anywhere in your code
|
|
15
16
|
* const ecc = EccContext.get();
|
|
@@ -34,20 +35,24 @@ export class EccContext {
|
|
|
34
35
|
* Initializes the ECC context with the provided library.
|
|
35
36
|
* The library is verified before being set as active.
|
|
36
37
|
*
|
|
37
|
-
* @param lib - The
|
|
38
|
+
* @param lib - The CryptoBackend instance to initialize
|
|
38
39
|
* @returns The initialized EccContext instance
|
|
39
|
-
* @throws Error if the
|
|
40
|
+
* @throws Error if the CryptoBackend fails verification
|
|
40
41
|
*
|
|
41
42
|
* @example
|
|
42
43
|
* ```typescript
|
|
43
44
|
* import { EccContext } from '@btc-vision/bitcoin';
|
|
44
|
-
* import
|
|
45
|
+
* import { createNobleBackend } from '@btc-vision/ecpair';
|
|
45
46
|
*
|
|
46
|
-
* const context = EccContext.init(
|
|
47
|
+
* const context = EccContext.init(createNobleBackend());
|
|
47
48
|
* ```
|
|
48
49
|
*/
|
|
49
50
|
static init(lib) {
|
|
50
|
-
|
|
51
|
+
// Skip re-verification if same lib is already initialized
|
|
52
|
+
if (EccContext.#instance && EccContext.#instance.#lib === lib) {
|
|
53
|
+
return EccContext.#instance;
|
|
54
|
+
}
|
|
55
|
+
verifyCryptoBackend(lib);
|
|
51
56
|
EccContext.#instance = new EccContext(lib);
|
|
52
57
|
return EccContext.#instance;
|
|
53
58
|
}
|
|
@@ -62,7 +67,7 @@ export class EccContext {
|
|
|
62
67
|
* import { EccContext } from '@btc-vision/bitcoin';
|
|
63
68
|
*
|
|
64
69
|
* const context = EccContext.get();
|
|
65
|
-
* const
|
|
70
|
+
* const tweaked = context.lib.xOnlyPointAddTweak(key, tweak);
|
|
66
71
|
* ```
|
|
67
72
|
*/
|
|
68
73
|
static get() {
|
|
@@ -96,7 +101,7 @@ export class EccContext {
|
|
|
96
101
|
* import { EccContext } from '@btc-vision/bitcoin';
|
|
97
102
|
*
|
|
98
103
|
* if (!EccContext.isInitialized()) {
|
|
99
|
-
* EccContext.init(
|
|
104
|
+
* EccContext.init(createNobleBackend());
|
|
100
105
|
* }
|
|
101
106
|
* ```
|
|
102
107
|
*/
|
|
@@ -109,16 +114,16 @@ export class EccContext {
|
|
|
109
114
|
* This is a convenience function that wraps EccContext.init().
|
|
110
115
|
* Pass `undefined` to clear the library.
|
|
111
116
|
*
|
|
112
|
-
* @param eccLib - The
|
|
113
|
-
* @throws Error if the
|
|
117
|
+
* @param eccLib - The CryptoBackend instance to initialize, or undefined to clear
|
|
118
|
+
* @throws Error if the CryptoBackend fails verification
|
|
114
119
|
*
|
|
115
120
|
* @example
|
|
116
121
|
* ```typescript
|
|
117
122
|
* import { initEccLib } from '@btc-vision/bitcoin';
|
|
118
|
-
* import
|
|
123
|
+
* import { createNobleBackend } from '@btc-vision/ecpair';
|
|
119
124
|
*
|
|
120
125
|
* // Initialize the ECC library
|
|
121
|
-
* initEccLib(
|
|
126
|
+
* initEccLib(createNobleBackend());
|
|
122
127
|
*
|
|
123
128
|
* // Clear the library
|
|
124
129
|
* initEccLib(undefined);
|
|
@@ -135,98 +140,21 @@ export function initEccLib(eccLib) {
|
|
|
135
140
|
* Retrieves the initialized ECC library instance.
|
|
136
141
|
* This is a convenience function that wraps EccContext.get().lib.
|
|
137
142
|
*
|
|
138
|
-
* @returns The
|
|
143
|
+
* @returns The CryptoBackend instance
|
|
139
144
|
* @throws Error if the ECC library has not been initialized
|
|
140
145
|
*
|
|
141
146
|
* @example
|
|
142
147
|
* ```typescript
|
|
143
148
|
* import { getEccLib, initEccLib } from '@btc-vision/bitcoin';
|
|
144
|
-
* import
|
|
149
|
+
* import { createNobleBackend } from '@btc-vision/ecpair';
|
|
145
150
|
*
|
|
146
|
-
* initEccLib(
|
|
151
|
+
* initEccLib(createNobleBackend());
|
|
147
152
|
*
|
|
148
153
|
* const ecc = getEccLib();
|
|
149
|
-
* const
|
|
154
|
+
* const tweaked = ecc.xOnlyPointAddTweak(pubkey, tweak);
|
|
150
155
|
* ```
|
|
151
156
|
*/
|
|
152
157
|
export function getEccLib() {
|
|
153
158
|
return EccContext.get().lib;
|
|
154
159
|
}
|
|
155
|
-
const TWEAK_ADD_VECTORS = [
|
|
156
|
-
{
|
|
157
|
-
pubkey: '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',
|
|
158
|
-
tweak: 'fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364140',
|
|
159
|
-
parity: -1,
|
|
160
|
-
result: null,
|
|
161
|
-
},
|
|
162
|
-
{
|
|
163
|
-
pubkey: '1617d38ed8d8657da4d4761e8057bc396ea9e4b9d29776d4be096016dbd2509b',
|
|
164
|
-
tweak: 'a8397a935f0dfceba6ba9618f6451ef4d80637abf4e6af2669fbc9de6a8fd2ac',
|
|
165
|
-
parity: 1,
|
|
166
|
-
result: 'e478f99dab91052ab39a33ea35fd5e6e4933f4d28023cd597c9a1f6760346adf',
|
|
167
|
-
},
|
|
168
|
-
{
|
|
169
|
-
pubkey: '2c0b7cf95324a07d05398b240174dc0c2be444d96b159aa6c7f7b1e668680991',
|
|
170
|
-
tweak: '823c3cd2142744b075a87eade7e1b8678ba308d566226a0056ca2b7a76f86b47',
|
|
171
|
-
parity: 0,
|
|
172
|
-
result: '9534f8dc8c6deda2dc007655981c78b49c5d96c778fbf363462a11ec9dfd948c',
|
|
173
|
-
},
|
|
174
|
-
];
|
|
175
|
-
/**
|
|
176
|
-
* Verifies that the ECC library implementation is correct.
|
|
177
|
-
* Tests `isXOnlyPoint` and `xOnlyPointAddTweak` with known test vectors.
|
|
178
|
-
*
|
|
179
|
-
* @param ecc - The ECC library to verify
|
|
180
|
-
* @throws Error if any verification test fails
|
|
181
|
-
*/
|
|
182
|
-
function verifyEcc(ecc) {
|
|
183
|
-
if (typeof ecc.isXOnlyPoint !== 'function') {
|
|
184
|
-
throw new Error('ECC library missing isXOnlyPoint function');
|
|
185
|
-
}
|
|
186
|
-
// Test isXOnlyPoint with valid points
|
|
187
|
-
const validPoints = [
|
|
188
|
-
'79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',
|
|
189
|
-
'fffffffffffffffffffffffffffffffffffffffffffffffffffffffeeffffc2e',
|
|
190
|
-
'f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9',
|
|
191
|
-
'0000000000000000000000000000000000000000000000000000000000000001',
|
|
192
|
-
];
|
|
193
|
-
for (const hex of validPoints) {
|
|
194
|
-
if (!ecc.isXOnlyPoint(fromHex(hex))) {
|
|
195
|
-
throw new Error(`ECC library isXOnlyPoint failed for valid point: ${hex}`);
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
// Test isXOnlyPoint with invalid points
|
|
199
|
-
const invalidPoints = [
|
|
200
|
-
'0000000000000000000000000000000000000000000000000000000000000000',
|
|
201
|
-
'fffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f',
|
|
202
|
-
];
|
|
203
|
-
for (const hex of invalidPoints) {
|
|
204
|
-
if (ecc.isXOnlyPoint(fromHex(hex))) {
|
|
205
|
-
throw new Error(`ECC library isXOnlyPoint should reject invalid point: ${hex}`);
|
|
206
|
-
}
|
|
207
|
-
}
|
|
208
|
-
// Test xOnlyPointAddTweak
|
|
209
|
-
if (typeof ecc.xOnlyPointAddTweak !== 'function') {
|
|
210
|
-
throw new Error('ECC library missing xOnlyPointAddTweak function');
|
|
211
|
-
}
|
|
212
|
-
for (const vector of TWEAK_ADD_VECTORS) {
|
|
213
|
-
const result = ecc.xOnlyPointAddTweak(fromHex(vector.pubkey), fromHex(vector.tweak));
|
|
214
|
-
if (vector.result === null) {
|
|
215
|
-
if (result !== null) {
|
|
216
|
-
throw new Error(`ECC library xOnlyPointAddTweak should return null for: ${vector.pubkey}`);
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
|
-
else {
|
|
220
|
-
if (result === null) {
|
|
221
|
-
throw new Error(`ECC library xOnlyPointAddTweak returned null unexpectedly for: ${vector.pubkey}`);
|
|
222
|
-
}
|
|
223
|
-
if (result.parity !== vector.parity) {
|
|
224
|
-
throw new Error(`ECC library xOnlyPointAddTweak parity mismatch for: ${vector.pubkey}`);
|
|
225
|
-
}
|
|
226
|
-
if (!equals(result.xOnlyPubkey, fromHex(vector.result))) {
|
|
227
|
-
throw new Error(`ECC library xOnlyPointAddTweak result mismatch for: ${vector.pubkey}`);
|
|
228
|
-
}
|
|
229
|
-
}
|
|
230
|
-
}
|
|
231
|
-
}
|
|
232
160
|
//# sourceMappingURL=context.js.map
|
package/build/ecc/context.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/ecc/context.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/ecc/context.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAEzD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,OAAO,UAAU;IACnB,MAAM,CAAC,SAAS,CAAyB;IAChC,IAAI,CAAgB;IAE7B,YAAoB,GAAkB;QAClC,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;IACpB,CAAC;IAED;;OAEG;IACH,IAAI,GAAG;QACH,OAAO,IAAI,CAAC,IAAI,CAAC;IACrB,CAAC;IAED;;;;;;;;;;;;;;;OAeG;IACH,MAAM,CAAC,IAAI,CAAC,GAAkB;QAC1B,0DAA0D;QAC1D,IAAI,UAAU,CAAC,SAAS,IAAI,UAAU,CAAC,SAAS,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;YAC5D,OAAO,UAAU,CAAC,SAAS,CAAC;QAChC,CAAC;QACD,mBAAmB,CAAC,GAAG,CAAC,CAAC;QACzB,UAAU,CAAC,SAAS,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;QAC3C,OAAO,UAAU,CAAC,SAAS,CAAC;IAChC,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,GAAG;QACN,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CACX,4EAA4E,CAC/E,CAAC;QACN,CAAC;QACD,OAAO,UAAU,CAAC,SAAS,CAAC;IAChC,CAAC;IAED;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,KAAK;QACR,UAAU,CAAC,SAAS,GAAG,SAAS,CAAC;IACrC,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,aAAa;QAChB,OAAO,UAAU,CAAC,SAAS,KAAK,SAAS,CAAC;IAC9C,CAAC;CACJ;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,UAAU,CAAC,MAAiC;IACxD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACvB,UAAU,CAAC,KAAK,EAAE,CAAC;QACnB,OAAO;IACX,CAAC;IACD,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5B,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,SAAS;IACrB,OAAO,UAAU,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC;AAChC,CAAC"}
|
package/build/ecc/index.d.ts
CHANGED
|
@@ -6,6 +6,6 @@
|
|
|
6
6
|
*
|
|
7
7
|
* @packageDocumentation
|
|
8
8
|
*/
|
|
9
|
-
export type { EccLib, XOnlyPointAddTweakResult, Parity } from './types.js';
|
|
9
|
+
export type { CryptoBackend, EccLib, XOnlyPointAddTweakResult, Parity } from './types.js';
|
|
10
10
|
export { EccContext, initEccLib, getEccLib } from './context.js';
|
|
11
11
|
//# sourceMappingURL=index.d.ts.map
|
package/build/ecc/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ecc/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,YAAY,EAAE,MAAM,EAAE,wBAAwB,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ecc/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,YAAY,EAAE,aAAa,EAAE,MAAM,EAAE,wBAAwB,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAG1F,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC"}
|