@sip-protocol/sdk 0.7.3 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +267 -0
- package/dist/{TransportWebUSB-TQ7WZ4LE.mjs → TransportWebUSB-YQMAGJAJ.mjs} +12 -9
- package/dist/browser.d.mts +10 -4
- package/dist/browser.d.ts +10 -4
- package/dist/browser.js +47556 -19603
- package/dist/browser.mjs +628 -48
- package/dist/chunk-4GRJ5MAW.mjs +152 -0
- package/dist/chunk-5D7A3L3W.mjs +717 -0
- package/dist/chunk-64AYA5F5.mjs +7834 -0
- package/dist/chunk-GMDGB22A.mjs +379 -0
- package/dist/chunk-I534WKN7.mjs +328 -0
- package/dist/chunk-IBZVA5Y7.mjs +1003 -0
- package/dist/chunk-PRRZAWJE.mjs +223 -0
- package/dist/{chunk-UJCSKKID.mjs → chunk-XGB3TDIC.mjs} +13 -1
- package/dist/{chunk-3M3HNQCW.mjs → chunk-YWGJ77A2.mjs} +28656 -13103
- package/dist/{chunk-6WGN57S2.mjs → chunk-Z3K7W5S3.mjs} +48 -0
- package/dist/constants-LHAAUC2T.mjs +51 -0
- package/dist/dist-2OGQ7FED.mjs +3957 -0
- package/dist/dist-IFHPYLDX.mjs +254 -0
- package/dist/fulfillment_proof-ANHVPKTB.mjs +21 -0
- package/dist/funding_proof-ICFZ5LHY.mjs +21 -0
- package/dist/{index-DIBZHOOQ.d.ts → index-DXh2IGkz.d.ts} +21239 -10304
- package/dist/{index-8MQz13eJ.d.mts → index-DeE1ZzA4.d.mts} +21239 -10304
- package/dist/index.d.mts +9 -3
- package/dist/index.d.ts +9 -3
- package/dist/index.js +48396 -19623
- package/dist/index.mjs +537 -19
- package/dist/interface-Bf7w1PLW.d.mts +679 -0
- package/dist/interface-Bf7w1PLW.d.ts +679 -0
- package/dist/{noir-DKfEzWy9.d.mts → noir-kzbLVTei.d.mts} +31 -21
- package/dist/{noir-DKfEzWy9.d.ts → noir-kzbLVTei.d.ts} +31 -21
- package/dist/proofs/halo2.d.mts +151 -0
- package/dist/proofs/halo2.d.ts +151 -0
- package/dist/proofs/halo2.js +350 -0
- package/dist/proofs/halo2.mjs +11 -0
- package/dist/proofs/kimchi.d.mts +160 -0
- package/dist/proofs/kimchi.d.ts +160 -0
- package/dist/proofs/kimchi.js +431 -0
- package/dist/proofs/kimchi.mjs +13 -0
- package/dist/proofs/noir.d.mts +1 -1
- package/dist/proofs/noir.d.ts +1 -1
- package/dist/proofs/noir.js +74 -18
- package/dist/proofs/noir.mjs +84 -24
- package/dist/solana-U3MEGU7W.mjs +280 -0
- package/dist/validity_proof-3POXLPNY.mjs +21 -0
- package/package.json +44 -11
- package/src/adapters/index.ts +41 -0
- package/src/adapters/jupiter.ts +571 -0
- package/src/adapters/near-intents.ts +135 -0
- package/src/advisor/advisor.ts +653 -0
- package/src/advisor/index.ts +54 -0
- package/src/advisor/tools.ts +303 -0
- package/src/advisor/types.ts +164 -0
- package/src/chains/ethereum/announcement.ts +536 -0
- package/src/chains/ethereum/bnb-optimizations.ts +474 -0
- package/src/chains/ethereum/commitment.ts +522 -0
- package/src/chains/ethereum/constants.ts +462 -0
- package/src/chains/ethereum/deployment.ts +596 -0
- package/src/chains/ethereum/gas-estimation.ts +538 -0
- package/src/chains/ethereum/index.ts +268 -0
- package/src/chains/ethereum/optimizations.ts +614 -0
- package/src/chains/ethereum/privacy-adapter.ts +855 -0
- package/src/chains/ethereum/registry.ts +584 -0
- package/src/chains/ethereum/rpc.ts +905 -0
- package/src/chains/ethereum/stealth.ts +491 -0
- package/src/chains/ethereum/token.ts +790 -0
- package/src/chains/ethereum/transfer.ts +637 -0
- package/src/chains/ethereum/types.ts +456 -0
- package/src/chains/ethereum/viewing-key.ts +455 -0
- package/src/chains/near/commitment.ts +608 -0
- package/src/chains/near/constants.ts +284 -0
- package/src/chains/near/function-call.ts +871 -0
- package/src/chains/near/history.ts +654 -0
- package/src/chains/near/implicit-account.ts +840 -0
- package/src/chains/near/index.ts +393 -0
- package/src/chains/near/native-transfer.ts +658 -0
- package/src/chains/near/nep141.ts +775 -0
- package/src/chains/near/privacy-adapter.ts +889 -0
- package/src/chains/near/resolver.ts +971 -0
- package/src/chains/near/rpc.ts +1016 -0
- package/src/chains/near/stealth.ts +419 -0
- package/src/chains/near/types.ts +317 -0
- package/src/chains/near/viewing-key.ts +876 -0
- package/src/chains/solana/anchor-transfer.ts +386 -0
- package/src/chains/solana/commitment.ts +577 -0
- package/src/chains/solana/constants.ts +126 -12
- package/src/chains/solana/ephemeral-keys.ts +543 -0
- package/src/chains/solana/index.ts +252 -1
- package/src/chains/solana/key-derivation.ts +418 -0
- package/src/chains/solana/kit-compat.ts +334 -0
- package/src/chains/solana/optimizations.ts +560 -0
- package/src/chains/solana/privacy-adapter.ts +605 -0
- package/src/chains/solana/providers/generic.ts +47 -6
- package/src/chains/solana/providers/helius-enhanced-types.ts +336 -0
- package/src/chains/solana/providers/helius-enhanced.ts +623 -0
- package/src/chains/solana/providers/helius.ts +186 -33
- package/src/chains/solana/providers/index.ts +31 -0
- package/src/chains/solana/providers/interface.ts +61 -18
- package/src/chains/solana/providers/quicknode.ts +409 -0
- package/src/chains/solana/providers/triton.ts +426 -0
- package/src/chains/solana/providers/webhook.ts +338 -67
- package/src/chains/solana/rpc-client.ts +1150 -0
- package/src/chains/solana/scan.ts +83 -66
- package/src/chains/solana/sol-transfer.ts +732 -0
- package/src/chains/solana/spl-transfer.ts +886 -0
- package/src/chains/solana/stealth-scanner.ts +703 -0
- package/src/chains/solana/sunspot-verifier.ts +453 -0
- package/src/chains/solana/transaction-builder.ts +755 -0
- package/src/chains/solana/transfer.ts +74 -5
- package/src/chains/solana/types.ts +57 -6
- package/src/chains/solana/utils.ts +110 -0
- package/src/chains/solana/viewing-key.ts +807 -0
- package/src/compliance/fireblocks.ts +921 -0
- package/src/compliance/index.ts +23 -0
- package/src/compliance/range-sas.ts +398 -33
- package/src/config/endpoints.ts +100 -0
- package/src/crypto.ts +11 -8
- package/src/errors.ts +82 -0
- package/src/evm/erc4337-relayer.ts +830 -0
- package/src/evm/index.ts +47 -0
- package/src/fees/calculator.ts +396 -0
- package/src/fees/index.ts +87 -0
- package/src/fees/near-contract.ts +429 -0
- package/src/fees/types.ts +268 -0
- package/src/index.ts +686 -1
- package/src/intent.ts +6 -3
- package/src/logger.ts +324 -0
- package/src/network/index.ts +80 -0
- package/src/network/proxy.ts +691 -0
- package/src/optimizations/index.ts +541 -0
- package/src/oracle/types.ts +1 -0
- package/src/privacy-backends/arcium-types.ts +727 -0
- package/src/privacy-backends/arcium.ts +719 -0
- package/src/privacy-backends/combined-privacy.ts +866 -0
- package/src/privacy-backends/cspl-token.ts +595 -0
- package/src/privacy-backends/cspl-types.ts +512 -0
- package/src/privacy-backends/cspl.ts +907 -0
- package/src/privacy-backends/health.ts +488 -0
- package/src/privacy-backends/inco-types.ts +323 -0
- package/src/privacy-backends/inco.ts +616 -0
- package/src/privacy-backends/index.ts +254 -4
- package/src/privacy-backends/interface.ts +649 -6
- package/src/privacy-backends/lru-cache.ts +343 -0
- package/src/privacy-backends/magicblock.ts +458 -0
- package/src/privacy-backends/mock.ts +258 -0
- package/src/privacy-backends/privacycash.ts +13 -17
- package/src/privacy-backends/private-swap.ts +570 -0
- package/src/privacy-backends/rate-limiter.ts +683 -0
- package/src/privacy-backends/registry.ts +414 -2
- package/src/privacy-backends/router.ts +283 -3
- package/src/privacy-backends/shadowwire.ts +449 -0
- package/src/privacy-backends/sip-native.ts +3 -0
- package/src/privacy-logger.ts +191 -0
- package/src/production-safety.ts +373 -0
- package/src/proofs/aggregator.ts +1029 -0
- package/src/proofs/browser-composer.ts +1150 -0
- package/src/proofs/browser.ts +113 -25
- package/src/proofs/cache/index.ts +127 -0
- package/src/proofs/cache/interface.ts +545 -0
- package/src/proofs/cache/key-generator.ts +188 -0
- package/src/proofs/cache/lru-cache.ts +481 -0
- package/src/proofs/cache/multi-tier-cache.ts +575 -0
- package/src/proofs/cache/persistent-cache.ts +788 -0
- package/src/proofs/compliance-proof.ts +872 -0
- package/src/proofs/composer/base.ts +923 -0
- package/src/proofs/composer/index.ts +25 -0
- package/src/proofs/composer/interface.ts +518 -0
- package/src/proofs/composer/types.ts +383 -0
- package/src/proofs/converters/halo2.ts +452 -0
- package/src/proofs/converters/index.ts +208 -0
- package/src/proofs/converters/interface.ts +363 -0
- package/src/proofs/converters/kimchi.ts +462 -0
- package/src/proofs/converters/noir.ts +451 -0
- package/src/proofs/fallback.ts +888 -0
- package/src/proofs/halo2.ts +42 -0
- package/src/proofs/index.ts +471 -0
- package/src/proofs/interface.ts +13 -0
- package/src/proofs/kimchi.ts +42 -0
- package/src/proofs/lazy.ts +1004 -0
- package/src/proofs/mock.ts +25 -1
- package/src/proofs/noir.ts +110 -29
- package/src/proofs/orchestrator.ts +960 -0
- package/src/proofs/parallel/concurrency.ts +297 -0
- package/src/proofs/parallel/dependency-graph.ts +602 -0
- package/src/proofs/parallel/executor.ts +420 -0
- package/src/proofs/parallel/index.ts +131 -0
- package/src/proofs/parallel/interface.ts +685 -0
- package/src/proofs/parallel/worker-pool.ts +644 -0
- package/src/proofs/providers/halo2.ts +560 -0
- package/src/proofs/providers/index.ts +34 -0
- package/src/proofs/providers/kimchi.ts +641 -0
- package/src/proofs/validator.ts +881 -0
- package/src/proofs/verifier.ts +867 -0
- package/src/quantum/index.ts +112 -0
- package/src/quantum/winternitz-vault.ts +639 -0
- package/src/quantum/wots.ts +611 -0
- package/src/settlement/backends/direct-chain.ts +1 -0
- package/src/settlement/index.ts +9 -0
- package/src/settlement/router.ts +732 -46
- package/src/solana/index.ts +72 -0
- package/src/solana/jito-relayer.ts +687 -0
- package/src/solana/noir-verifier-types.ts +430 -0
- package/src/solana/noir-verifier.ts +816 -0
- package/src/stealth/address-derivation.ts +193 -0
- package/src/stealth/ed25519.ts +431 -0
- package/src/stealth/index.ts +233 -0
- package/src/stealth/meta-address.ts +221 -0
- package/src/stealth/secp256k1.ts +368 -0
- package/src/stealth/utils.ts +194 -0
- package/src/stealth.ts +50 -1504
- package/src/sync/index.ts +106 -0
- package/src/sync/manager.ts +504 -0
- package/src/sync/mock-provider.ts +318 -0
- package/src/sync/oblivious.ts +625 -0
- package/src/tokens/index.ts +15 -0
- package/src/tokens/registry.ts +301 -0
- package/src/utils/deprecation.ts +94 -0
- package/src/utils/index.ts +9 -0
- package/src/wallet/ethereum/index.ts +68 -0
- package/src/wallet/ethereum/metamask-privacy.ts +420 -0
- package/src/wallet/ethereum/multi-wallet.ts +646 -0
- package/src/wallet/ethereum/privacy-adapter.ts +700 -0
- package/src/wallet/ethereum/types.ts +3 -1
- package/src/wallet/ethereum/walletconnect-adapter.ts +675 -0
- package/src/wallet/hardware/index.ts +10 -0
- package/src/wallet/hardware/ledger-privacy.ts +414 -0
- package/src/wallet/index.ts +71 -0
- package/src/wallet/near/adapter.ts +626 -0
- package/src/wallet/near/index.ts +86 -0
- package/src/wallet/near/meteor-wallet.ts +1153 -0
- package/src/wallet/near/my-near-wallet.ts +790 -0
- package/src/wallet/near/wallet-selector.ts +702 -0
- package/src/wallet/solana/adapter.ts +6 -4
- package/src/wallet/solana/index.ts +13 -0
- package/src/wallet/solana/privacy-adapter.ts +567 -0
- package/src/wallet/sui/types.ts +6 -4
- package/src/zcash/rpc-client.ts +13 -6
- package/dist/chunk-2XIVXWHA.mjs +0 -1930
- package/dist/chunk-3INS3PR5.mjs +0 -884
- package/dist/chunk-3OVABDRH.mjs +0 -17096
- package/dist/chunk-7RFRWDCW.mjs +0 -1504
- package/dist/chunk-DLDWZFYC.mjs +0 -1495
- package/dist/chunk-E6SZWREQ.mjs +0 -57
- package/dist/chunk-F6F73W35.mjs +0 -16166
- package/dist/chunk-G33LB27A.mjs +0 -16166
- package/dist/chunk-HGU6HZRC.mjs +0 -231
- package/dist/chunk-L2K34JCU.mjs +0 -1496
- package/dist/chunk-OFDBEIEK.mjs +0 -16166
- package/dist/chunk-SF7YSLF5.mjs +0 -1515
- package/dist/chunk-SN4ZDTVW.mjs +0 -16166
- package/dist/chunk-WWUSGOXE.mjs +0 -17129
- package/dist/constants-VOI7BSLK.mjs +0 -27
- package/dist/index-B71aXVzk.d.ts +0 -13264
- package/dist/index-BYZbDjal.d.ts +0 -11390
- package/dist/index-CHB3KuOB.d.mts +0 -11859
- package/dist/index-CzWPI6Le.d.ts +0 -11859
- package/dist/index-pOIIuwfV.d.mts +0 -13264
- package/dist/index-xbWjohNq.d.mts +0 -11390
- package/dist/solana-4O4K45VU.mjs +0 -46
- package/dist/solana-5EMCTPTS.mjs +0 -46
- package/dist/solana-NDABAZ6P.mjs +0 -56
- package/dist/solana-Q4NAVBTS.mjs +0 -46
- package/dist/solana-ZYO63LY5.mjs +0 -46
|
@@ -162,6 +162,18 @@ interface ProofProvider {
|
|
|
162
162
|
* @throws Error if initialization fails
|
|
163
163
|
*/
|
|
164
164
|
initialize(): Promise<void>;
|
|
165
|
+
/**
|
|
166
|
+
* Wait for the provider to be ready, with optional timeout
|
|
167
|
+
*
|
|
168
|
+
* This method blocks until initialization is complete or the timeout is reached.
|
|
169
|
+
* If initialization is already complete, resolves immediately.
|
|
170
|
+
* If initialization hasn't started, this method will start it.
|
|
171
|
+
*
|
|
172
|
+
* @param timeoutMs - Maximum time to wait in milliseconds (default: 30000)
|
|
173
|
+
* @throws ProofError if timeout is reached before ready
|
|
174
|
+
* @throws ProofError if initialization fails
|
|
175
|
+
*/
|
|
176
|
+
waitUntilReady(timeoutMs?: number): Promise<void>;
|
|
165
177
|
/**
|
|
166
178
|
* Generate a Funding Proof
|
|
167
179
|
*
|
|
@@ -277,31 +289,13 @@ interface NoirProviderConfig {
|
|
|
277
289
|
*/
|
|
278
290
|
strictMode?: boolean;
|
|
279
291
|
}
|
|
280
|
-
/**
|
|
281
|
-
* Noir Proof Provider
|
|
282
|
-
*
|
|
283
|
-
* Production ZK proof provider using Noir circuits.
|
|
284
|
-
*
|
|
285
|
-
* @example
|
|
286
|
-
* ```typescript
|
|
287
|
-
* const provider = new NoirProofProvider()
|
|
288
|
-
*
|
|
289
|
-
* await provider.initialize()
|
|
290
|
-
*
|
|
291
|
-
* const result = await provider.generateFundingProof({
|
|
292
|
-
* balance: 100n,
|
|
293
|
-
* minimumRequired: 50n,
|
|
294
|
-
* blindingFactor: new Uint8Array(32),
|
|
295
|
-
* assetId: '0xABCD',
|
|
296
|
-
* userAddress: '0x1234...',
|
|
297
|
-
* ownershipSignature: new Uint8Array(64),
|
|
298
|
-
* })
|
|
299
|
-
* ```
|
|
300
|
-
*/
|
|
301
292
|
declare class NoirProofProvider implements ProofProvider {
|
|
302
293
|
readonly framework: ProofFramework;
|
|
303
294
|
private _isReady;
|
|
295
|
+
private _initPromise;
|
|
296
|
+
private _initError;
|
|
304
297
|
private config;
|
|
298
|
+
private barretenberg;
|
|
305
299
|
private fundingNoir;
|
|
306
300
|
private fundingBackend;
|
|
307
301
|
private validityNoir;
|
|
@@ -346,6 +340,22 @@ declare class NoirProofProvider implements ProofProvider {
|
|
|
346
340
|
* Loads circuit artifacts and initializes the proving backend.
|
|
347
341
|
*/
|
|
348
342
|
initialize(): Promise<void>;
|
|
343
|
+
/**
|
|
344
|
+
* Wait for the provider to be ready, with optional timeout
|
|
345
|
+
*
|
|
346
|
+
* This method blocks until initialization is complete or the timeout is reached.
|
|
347
|
+
* If initialization is already complete, resolves immediately.
|
|
348
|
+
* If initialization hasn't started, this method will start it.
|
|
349
|
+
*
|
|
350
|
+
* @param timeoutMs - Maximum time to wait in milliseconds (default: 30000)
|
|
351
|
+
* @throws ProofError if timeout is reached before ready
|
|
352
|
+
* @throws ProofError if initialization fails
|
|
353
|
+
*/
|
|
354
|
+
waitUntilReady(timeoutMs?: number): Promise<void>;
|
|
355
|
+
/**
|
|
356
|
+
* Internal initialization logic
|
|
357
|
+
*/
|
|
358
|
+
private _doInitialize;
|
|
349
359
|
/**
|
|
350
360
|
* Generate a Funding Proof using Noir circuits
|
|
351
361
|
*
|
|
@@ -162,6 +162,18 @@ interface ProofProvider {
|
|
|
162
162
|
* @throws Error if initialization fails
|
|
163
163
|
*/
|
|
164
164
|
initialize(): Promise<void>;
|
|
165
|
+
/**
|
|
166
|
+
* Wait for the provider to be ready, with optional timeout
|
|
167
|
+
*
|
|
168
|
+
* This method blocks until initialization is complete or the timeout is reached.
|
|
169
|
+
* If initialization is already complete, resolves immediately.
|
|
170
|
+
* If initialization hasn't started, this method will start it.
|
|
171
|
+
*
|
|
172
|
+
* @param timeoutMs - Maximum time to wait in milliseconds (default: 30000)
|
|
173
|
+
* @throws ProofError if timeout is reached before ready
|
|
174
|
+
* @throws ProofError if initialization fails
|
|
175
|
+
*/
|
|
176
|
+
waitUntilReady(timeoutMs?: number): Promise<void>;
|
|
165
177
|
/**
|
|
166
178
|
* Generate a Funding Proof
|
|
167
179
|
*
|
|
@@ -277,31 +289,13 @@ interface NoirProviderConfig {
|
|
|
277
289
|
*/
|
|
278
290
|
strictMode?: boolean;
|
|
279
291
|
}
|
|
280
|
-
/**
|
|
281
|
-
* Noir Proof Provider
|
|
282
|
-
*
|
|
283
|
-
* Production ZK proof provider using Noir circuits.
|
|
284
|
-
*
|
|
285
|
-
* @example
|
|
286
|
-
* ```typescript
|
|
287
|
-
* const provider = new NoirProofProvider()
|
|
288
|
-
*
|
|
289
|
-
* await provider.initialize()
|
|
290
|
-
*
|
|
291
|
-
* const result = await provider.generateFundingProof({
|
|
292
|
-
* balance: 100n,
|
|
293
|
-
* minimumRequired: 50n,
|
|
294
|
-
* blindingFactor: new Uint8Array(32),
|
|
295
|
-
* assetId: '0xABCD',
|
|
296
|
-
* userAddress: '0x1234...',
|
|
297
|
-
* ownershipSignature: new Uint8Array(64),
|
|
298
|
-
* })
|
|
299
|
-
* ```
|
|
300
|
-
*/
|
|
301
292
|
declare class NoirProofProvider implements ProofProvider {
|
|
302
293
|
readonly framework: ProofFramework;
|
|
303
294
|
private _isReady;
|
|
295
|
+
private _initPromise;
|
|
296
|
+
private _initError;
|
|
304
297
|
private config;
|
|
298
|
+
private barretenberg;
|
|
305
299
|
private fundingNoir;
|
|
306
300
|
private fundingBackend;
|
|
307
301
|
private validityNoir;
|
|
@@ -346,6 +340,22 @@ declare class NoirProofProvider implements ProofProvider {
|
|
|
346
340
|
* Loads circuit artifacts and initializes the proving backend.
|
|
347
341
|
*/
|
|
348
342
|
initialize(): Promise<void>;
|
|
343
|
+
/**
|
|
344
|
+
* Wait for the provider to be ready, with optional timeout
|
|
345
|
+
*
|
|
346
|
+
* This method blocks until initialization is complete or the timeout is reached.
|
|
347
|
+
* If initialization is already complete, resolves immediately.
|
|
348
|
+
* If initialization hasn't started, this method will start it.
|
|
349
|
+
*
|
|
350
|
+
* @param timeoutMs - Maximum time to wait in milliseconds (default: 30000)
|
|
351
|
+
* @throws ProofError if timeout is reached before ready
|
|
352
|
+
* @throws ProofError if initialization fails
|
|
353
|
+
*/
|
|
354
|
+
waitUntilReady(timeoutMs?: number): Promise<void>;
|
|
355
|
+
/**
|
|
356
|
+
* Internal initialization logic
|
|
357
|
+
*/
|
|
358
|
+
private _doInitialize;
|
|
349
359
|
/**
|
|
350
360
|
* Generate a Funding Proof using Noir circuits
|
|
351
361
|
*
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import { b as ComposableProofProvider, g as ProofGenerationRequest, h as ProofGenerationResult } from '../interface-Bf7w1PLW.mjs';
|
|
2
|
+
import { ProofSystem, ProofProviderCapabilities, ProofProviderStatus, SingleProof } from '@sip-protocol/types';
|
|
3
|
+
export { ProofMetadata, ProofProviderCapabilities, ProofProviderStatus, ProofSystem, SingleProof } from '@sip-protocol/types';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Halo2 Proof Provider
|
|
7
|
+
*
|
|
8
|
+
* Implements ComposableProofProvider interface for Halo2 proof system.
|
|
9
|
+
* Halo2 is used by Zcash for Orchard shielded transactions and provides
|
|
10
|
+
* recursive proof composition capabilities.
|
|
11
|
+
*
|
|
12
|
+
* This provider supports:
|
|
13
|
+
* - PLONK-based proving system (PLONKish arithmetization)
|
|
14
|
+
* - Recursive proof composition (IPA-based)
|
|
15
|
+
* - Batch verification for efficiency
|
|
16
|
+
*
|
|
17
|
+
* @see https://zcash.github.io/halo2/ for Halo2 documentation
|
|
18
|
+
* @packageDocumentation
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Halo2 proving key parameters
|
|
23
|
+
*/
|
|
24
|
+
interface Halo2ProvingKey {
|
|
25
|
+
/** Circuit identifier */
|
|
26
|
+
circuitId: string;
|
|
27
|
+
/** Parameters K (circuit size) */
|
|
28
|
+
k: number;
|
|
29
|
+
/** Proving key bytes (lazy-loaded) */
|
|
30
|
+
pkBytes?: Uint8Array;
|
|
31
|
+
/** Verifying key bytes */
|
|
32
|
+
vkBytes?: Uint8Array;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Halo2 circuit configuration
|
|
36
|
+
*/
|
|
37
|
+
interface Halo2CircuitConfig {
|
|
38
|
+
/** Circuit identifier */
|
|
39
|
+
id: string;
|
|
40
|
+
/** Circuit name */
|
|
41
|
+
name: string;
|
|
42
|
+
/** K parameter (determines circuit size: 2^k rows) */
|
|
43
|
+
k: number;
|
|
44
|
+
/** Number of columns */
|
|
45
|
+
numColumns: number;
|
|
46
|
+
/** Number of public inputs */
|
|
47
|
+
numPublicInputs: number;
|
|
48
|
+
/** Whether circuit supports recursion */
|
|
49
|
+
supportsRecursion: boolean;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Halo2 provider configuration
|
|
53
|
+
*/
|
|
54
|
+
interface Halo2ProviderConfig {
|
|
55
|
+
/**
|
|
56
|
+
* Path to compiled circuit artifacts
|
|
57
|
+
*/
|
|
58
|
+
artifactsPath?: string;
|
|
59
|
+
/**
|
|
60
|
+
* Pre-configured circuits
|
|
61
|
+
*/
|
|
62
|
+
circuits?: Halo2CircuitConfig[];
|
|
63
|
+
/**
|
|
64
|
+
* Enable verbose logging
|
|
65
|
+
* @default false
|
|
66
|
+
*/
|
|
67
|
+
verbose?: boolean;
|
|
68
|
+
/**
|
|
69
|
+
* Number of threads for parallel proving
|
|
70
|
+
* @default 4
|
|
71
|
+
*/
|
|
72
|
+
numThreads?: number;
|
|
73
|
+
/**
|
|
74
|
+
* Enable recursive proving capabilities
|
|
75
|
+
* @default false
|
|
76
|
+
*/
|
|
77
|
+
enableRecursion?: boolean;
|
|
78
|
+
/**
|
|
79
|
+
* Backend implementation
|
|
80
|
+
* @default 'wasm'
|
|
81
|
+
*/
|
|
82
|
+
backend?: 'wasm' | 'native';
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Halo2 Proof Provider
|
|
86
|
+
*
|
|
87
|
+
* Implements ComposableProofProvider for Halo2 proof system.
|
|
88
|
+
*
|
|
89
|
+
* @example
|
|
90
|
+
* ```typescript
|
|
91
|
+
* const provider = new Halo2Provider({
|
|
92
|
+
* enableRecursion: true,
|
|
93
|
+
* numThreads: 8,
|
|
94
|
+
* })
|
|
95
|
+
*
|
|
96
|
+
* await provider.initialize()
|
|
97
|
+
*
|
|
98
|
+
* const result = await provider.generateProof({
|
|
99
|
+
* circuitId: 'orchard_spend',
|
|
100
|
+
* privateInputs: { note: '...', nullifier: '...' },
|
|
101
|
+
* publicInputs: { commitment: '...' },
|
|
102
|
+
* })
|
|
103
|
+
* ```
|
|
104
|
+
*/
|
|
105
|
+
declare class Halo2Provider implements ComposableProofProvider {
|
|
106
|
+
readonly system: ProofSystem;
|
|
107
|
+
private _config;
|
|
108
|
+
private _status;
|
|
109
|
+
private _capabilities;
|
|
110
|
+
private _metrics;
|
|
111
|
+
private _circuits;
|
|
112
|
+
private _provingKeys;
|
|
113
|
+
private _initPromise;
|
|
114
|
+
private _initError;
|
|
115
|
+
constructor(config?: Halo2ProviderConfig);
|
|
116
|
+
get capabilities(): ProofProviderCapabilities;
|
|
117
|
+
get status(): ProofProviderStatus;
|
|
118
|
+
initialize(): Promise<void>;
|
|
119
|
+
private doInitialize;
|
|
120
|
+
waitUntilReady(timeoutMs?: number): Promise<void>;
|
|
121
|
+
dispose(): Promise<void>;
|
|
122
|
+
getAvailableCircuits(): string[];
|
|
123
|
+
hasCircuit(circuitId: string): boolean;
|
|
124
|
+
/**
|
|
125
|
+
* Register a circuit configuration
|
|
126
|
+
*/
|
|
127
|
+
registerCircuit(config: Halo2CircuitConfig): void;
|
|
128
|
+
/**
|
|
129
|
+
* Load proving/verifying keys for a circuit
|
|
130
|
+
*/
|
|
131
|
+
loadCircuitKeys(circuitId: string): Promise<void>;
|
|
132
|
+
generateProof(request: ProofGenerationRequest): Promise<ProofGenerationResult>;
|
|
133
|
+
private generateMockProof;
|
|
134
|
+
verifyProof(proof: SingleProof): Promise<boolean>;
|
|
135
|
+
verifyBatch(proofs: SingleProof[]): Promise<boolean[]>;
|
|
136
|
+
private validateProofFormat;
|
|
137
|
+
private simulateAsyncLoad;
|
|
138
|
+
private loadCircuitArtifacts;
|
|
139
|
+
private delay;
|
|
140
|
+
private generateProviderId;
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Create a Halo2 provider with standard configuration
|
|
144
|
+
*/
|
|
145
|
+
declare function createHalo2Provider(config?: Halo2ProviderConfig): Halo2Provider;
|
|
146
|
+
/**
|
|
147
|
+
* Create a Halo2 provider configured for Zcash Orchard circuits
|
|
148
|
+
*/
|
|
149
|
+
declare function createOrchardProvider(): Halo2Provider;
|
|
150
|
+
|
|
151
|
+
export { ComposableProofProvider, type Halo2CircuitConfig, Halo2Provider, type Halo2ProviderConfig, type Halo2ProvingKey, createHalo2Provider, createOrchardProvider };
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import { b as ComposableProofProvider, g as ProofGenerationRequest, h as ProofGenerationResult } from '../interface-Bf7w1PLW.js';
|
|
2
|
+
import { ProofSystem, ProofProviderCapabilities, ProofProviderStatus, SingleProof } from '@sip-protocol/types';
|
|
3
|
+
export { ProofMetadata, ProofProviderCapabilities, ProofProviderStatus, ProofSystem, SingleProof } from '@sip-protocol/types';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Halo2 Proof Provider
|
|
7
|
+
*
|
|
8
|
+
* Implements ComposableProofProvider interface for Halo2 proof system.
|
|
9
|
+
* Halo2 is used by Zcash for Orchard shielded transactions and provides
|
|
10
|
+
* recursive proof composition capabilities.
|
|
11
|
+
*
|
|
12
|
+
* This provider supports:
|
|
13
|
+
* - PLONK-based proving system (PLONKish arithmetization)
|
|
14
|
+
* - Recursive proof composition (IPA-based)
|
|
15
|
+
* - Batch verification for efficiency
|
|
16
|
+
*
|
|
17
|
+
* @see https://zcash.github.io/halo2/ for Halo2 documentation
|
|
18
|
+
* @packageDocumentation
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Halo2 proving key parameters
|
|
23
|
+
*/
|
|
24
|
+
interface Halo2ProvingKey {
|
|
25
|
+
/** Circuit identifier */
|
|
26
|
+
circuitId: string;
|
|
27
|
+
/** Parameters K (circuit size) */
|
|
28
|
+
k: number;
|
|
29
|
+
/** Proving key bytes (lazy-loaded) */
|
|
30
|
+
pkBytes?: Uint8Array;
|
|
31
|
+
/** Verifying key bytes */
|
|
32
|
+
vkBytes?: Uint8Array;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Halo2 circuit configuration
|
|
36
|
+
*/
|
|
37
|
+
interface Halo2CircuitConfig {
|
|
38
|
+
/** Circuit identifier */
|
|
39
|
+
id: string;
|
|
40
|
+
/** Circuit name */
|
|
41
|
+
name: string;
|
|
42
|
+
/** K parameter (determines circuit size: 2^k rows) */
|
|
43
|
+
k: number;
|
|
44
|
+
/** Number of columns */
|
|
45
|
+
numColumns: number;
|
|
46
|
+
/** Number of public inputs */
|
|
47
|
+
numPublicInputs: number;
|
|
48
|
+
/** Whether circuit supports recursion */
|
|
49
|
+
supportsRecursion: boolean;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Halo2 provider configuration
|
|
53
|
+
*/
|
|
54
|
+
interface Halo2ProviderConfig {
|
|
55
|
+
/**
|
|
56
|
+
* Path to compiled circuit artifacts
|
|
57
|
+
*/
|
|
58
|
+
artifactsPath?: string;
|
|
59
|
+
/**
|
|
60
|
+
* Pre-configured circuits
|
|
61
|
+
*/
|
|
62
|
+
circuits?: Halo2CircuitConfig[];
|
|
63
|
+
/**
|
|
64
|
+
* Enable verbose logging
|
|
65
|
+
* @default false
|
|
66
|
+
*/
|
|
67
|
+
verbose?: boolean;
|
|
68
|
+
/**
|
|
69
|
+
* Number of threads for parallel proving
|
|
70
|
+
* @default 4
|
|
71
|
+
*/
|
|
72
|
+
numThreads?: number;
|
|
73
|
+
/**
|
|
74
|
+
* Enable recursive proving capabilities
|
|
75
|
+
* @default false
|
|
76
|
+
*/
|
|
77
|
+
enableRecursion?: boolean;
|
|
78
|
+
/**
|
|
79
|
+
* Backend implementation
|
|
80
|
+
* @default 'wasm'
|
|
81
|
+
*/
|
|
82
|
+
backend?: 'wasm' | 'native';
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Halo2 Proof Provider
|
|
86
|
+
*
|
|
87
|
+
* Implements ComposableProofProvider for Halo2 proof system.
|
|
88
|
+
*
|
|
89
|
+
* @example
|
|
90
|
+
* ```typescript
|
|
91
|
+
* const provider = new Halo2Provider({
|
|
92
|
+
* enableRecursion: true,
|
|
93
|
+
* numThreads: 8,
|
|
94
|
+
* })
|
|
95
|
+
*
|
|
96
|
+
* await provider.initialize()
|
|
97
|
+
*
|
|
98
|
+
* const result = await provider.generateProof({
|
|
99
|
+
* circuitId: 'orchard_spend',
|
|
100
|
+
* privateInputs: { note: '...', nullifier: '...' },
|
|
101
|
+
* publicInputs: { commitment: '...' },
|
|
102
|
+
* })
|
|
103
|
+
* ```
|
|
104
|
+
*/
|
|
105
|
+
declare class Halo2Provider implements ComposableProofProvider {
|
|
106
|
+
readonly system: ProofSystem;
|
|
107
|
+
private _config;
|
|
108
|
+
private _status;
|
|
109
|
+
private _capabilities;
|
|
110
|
+
private _metrics;
|
|
111
|
+
private _circuits;
|
|
112
|
+
private _provingKeys;
|
|
113
|
+
private _initPromise;
|
|
114
|
+
private _initError;
|
|
115
|
+
constructor(config?: Halo2ProviderConfig);
|
|
116
|
+
get capabilities(): ProofProviderCapabilities;
|
|
117
|
+
get status(): ProofProviderStatus;
|
|
118
|
+
initialize(): Promise<void>;
|
|
119
|
+
private doInitialize;
|
|
120
|
+
waitUntilReady(timeoutMs?: number): Promise<void>;
|
|
121
|
+
dispose(): Promise<void>;
|
|
122
|
+
getAvailableCircuits(): string[];
|
|
123
|
+
hasCircuit(circuitId: string): boolean;
|
|
124
|
+
/**
|
|
125
|
+
* Register a circuit configuration
|
|
126
|
+
*/
|
|
127
|
+
registerCircuit(config: Halo2CircuitConfig): void;
|
|
128
|
+
/**
|
|
129
|
+
* Load proving/verifying keys for a circuit
|
|
130
|
+
*/
|
|
131
|
+
loadCircuitKeys(circuitId: string): Promise<void>;
|
|
132
|
+
generateProof(request: ProofGenerationRequest): Promise<ProofGenerationResult>;
|
|
133
|
+
private generateMockProof;
|
|
134
|
+
verifyProof(proof: SingleProof): Promise<boolean>;
|
|
135
|
+
verifyBatch(proofs: SingleProof[]): Promise<boolean[]>;
|
|
136
|
+
private validateProofFormat;
|
|
137
|
+
private simulateAsyncLoad;
|
|
138
|
+
private loadCircuitArtifacts;
|
|
139
|
+
private delay;
|
|
140
|
+
private generateProviderId;
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Create a Halo2 provider with standard configuration
|
|
144
|
+
*/
|
|
145
|
+
declare function createHalo2Provider(config?: Halo2ProviderConfig): Halo2Provider;
|
|
146
|
+
/**
|
|
147
|
+
* Create a Halo2 provider configured for Zcash Orchard circuits
|
|
148
|
+
*/
|
|
149
|
+
declare function createOrchardProvider(): Halo2Provider;
|
|
150
|
+
|
|
151
|
+
export { ComposableProofProvider, type Halo2CircuitConfig, Halo2Provider, type Halo2ProviderConfig, type Halo2ProvingKey, createHalo2Provider, createOrchardProvider };
|