@unlink-xyz/core 0.1.2 → 0.1.3-canary.0877bfe
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/account/{zkAccount.d.ts → account.d.ts} +7 -5
- package/dist/account/account.d.ts.map +1 -0
- package/dist/account/{zkAccount.js → account.js} +57 -43
- package/dist/browser/index.js +108202 -0
- package/dist/browser/index.js.map +1 -0
- package/dist/circuits.json +74 -0
- package/dist/clients/broadcaster.d.ts +7 -2
- package/dist/clients/broadcaster.d.ts.map +1 -1
- package/dist/clients/broadcaster.js +9 -1
- package/dist/clients/http.d.ts +6 -0
- package/dist/clients/http.d.ts.map +1 -1
- package/dist/clients/http.js +24 -9
- package/dist/clients/indexer.d.ts +11 -0
- package/dist/clients/indexer.d.ts.map +1 -1
- package/dist/clients/indexer.js +40 -11
- package/dist/config.d.ts +28 -9
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +33 -26
- package/dist/constants.d.ts +6 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +5 -0
- package/dist/core.d.ts.map +1 -1
- package/dist/core.js +5 -2
- package/dist/crypto-adapters/auto-init.d.ts +2 -0
- package/dist/crypto-adapters/auto-init.d.ts.map +1 -0
- package/dist/crypto-adapters/auto-init.js +7 -0
- package/dist/crypto-adapters/index.d.ts +22 -0
- package/dist/crypto-adapters/index.d.ts.map +1 -0
- package/dist/crypto-adapters/index.js +47 -0
- package/dist/crypto-adapters/polyfills.d.ts +5 -0
- package/dist/crypto-adapters/polyfills.d.ts.map +1 -0
- package/dist/crypto-adapters/polyfills.js +8 -0
- package/dist/errors.d.ts +9 -0
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +18 -0
- package/dist/history/index.d.ts +3 -0
- package/dist/history/index.d.ts.map +1 -0
- package/dist/history/index.js +2 -0
- package/dist/history/service.d.ts +46 -0
- package/dist/history/service.d.ts.map +1 -0
- package/dist/history/service.js +354 -0
- package/dist/history/types.d.ts +21 -0
- package/dist/history/types.d.ts.map +1 -0
- package/dist/index.d.ts +12 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -4
- package/dist/keys/address.d.ts +13 -0
- package/dist/keys/address.d.ts.map +1 -0
- package/dist/keys/address.js +55 -0
- package/dist/keys/derive.d.ts +37 -0
- package/dist/keys/derive.d.ts.map +1 -0
- package/dist/keys/derive.js +112 -0
- package/dist/keys/hex.d.ts +17 -0
- package/dist/keys/hex.d.ts.map +1 -0
- package/dist/keys/hex.js +66 -0
- package/dist/keys/index.d.ts +5 -0
- package/dist/keys/index.d.ts.map +1 -0
- package/dist/keys/index.js +4 -0
- package/dist/keys/mnemonic.d.ts +8 -0
- package/dist/keys/mnemonic.d.ts.map +1 -0
- package/dist/keys/mnemonic.js +23 -0
- package/dist/keys.d.ts +4 -1
- package/dist/keys.d.ts.map +1 -1
- package/dist/keys.js +4 -0
- package/dist/prover/config.d.ts +1 -15
- package/dist/prover/config.d.ts.map +1 -1
- package/dist/prover/config.js +1 -11
- package/dist/prover/prover.d.ts +15 -4
- package/dist/prover/prover.d.ts.map +1 -1
- package/dist/prover/prover.js +115 -98
- package/dist/prover/registry.d.ts +3 -30
- package/dist/prover/registry.d.ts.map +1 -1
- package/dist/prover/registry.js +12 -51
- package/dist/state/merkle/hydrator.d.ts.map +1 -1
- package/dist/state/merkle/hydrator.js +3 -2
- package/dist/state/merkle/index.d.ts +1 -1
- package/dist/state/merkle/index.d.ts.map +1 -1
- package/dist/state/merkle/index.js +1 -1
- package/dist/state/merkle/merkle-tree.d.ts +8 -0
- package/dist/state/merkle/merkle-tree.d.ts.map +1 -1
- package/dist/state/merkle/merkle-tree.js +16 -7
- package/dist/state/store/ciphertext-store.d.ts +4 -0
- package/dist/state/store/ciphertext-store.d.ts.map +1 -1
- package/dist/state/store/ciphertext-store.js +12 -0
- package/dist/state/store/history-store.d.ts +24 -0
- package/dist/state/store/history-store.d.ts.map +1 -0
- package/dist/state/store/history-store.js +53 -0
- package/dist/state/store/index.d.ts +3 -2
- package/dist/state/store/index.d.ts.map +1 -1
- package/dist/state/store/index.js +1 -0
- package/dist/state/store/job-store.d.ts +7 -7
- package/dist/state/store/job-store.d.ts.map +1 -1
- package/dist/state/store/job-store.js +65 -39
- package/dist/state/store/jobs.d.ts +65 -18
- package/dist/state/store/jobs.d.ts.map +1 -1
- package/dist/state/store/leaf-store.d.ts.map +1 -1
- package/dist/state/store/leaf-store.js +0 -3
- package/dist/state/store/note-store.d.ts +7 -7
- package/dist/state/store/note-store.d.ts.map +1 -1
- package/dist/state/store/note-store.js +38 -34
- package/dist/state/store/nullifier-store.d.ts +9 -0
- package/dist/state/store/nullifier-store.d.ts.map +1 -1
- package/dist/state/store/nullifier-store.js +32 -2
- package/dist/state/store/records.d.ts +31 -2
- package/dist/state/store/records.d.ts.map +1 -1
- package/dist/state/store/root-store.d.ts.map +1 -1
- package/dist/state/store/root-store.js +0 -4
- package/dist/state/store/store.d.ts +61 -27
- package/dist/state/store/store.d.ts.map +1 -1
- package/dist/state/store/store.js +92 -1
- package/dist/storage/indexeddb.js +1 -1
- package/dist/storage/memory.d.ts.map +1 -1
- package/dist/storage/memory.js +5 -1
- package/dist/transactions/deposit.d.ts +12 -15
- package/dist/transactions/deposit.d.ts.map +1 -1
- package/dist/transactions/deposit.js +203 -152
- package/dist/transactions/index.d.ts +7 -4
- package/dist/transactions/index.d.ts.map +1 -1
- package/dist/transactions/index.js +7 -2
- package/dist/transactions/note-selection.d.ts +17 -0
- package/dist/transactions/note-selection.d.ts.map +1 -0
- package/dist/transactions/note-selection.js +201 -0
- package/dist/transactions/note-sync.d.ts +5 -33
- package/dist/transactions/note-sync.d.ts.map +1 -1
- package/dist/transactions/note-sync.js +320 -155
- package/dist/transactions/reconcile.d.ts +10 -12
- package/dist/transactions/reconcile.d.ts.map +1 -1
- package/dist/transactions/reconcile.js +53 -7
- package/dist/transactions/transact.d.ts +13 -24
- package/dist/transactions/transact.d.ts.map +1 -1
- package/dist/transactions/transact.js +393 -507
- package/dist/transactions/transaction-planner.d.ts +34 -0
- package/dist/transactions/transaction-planner.d.ts.map +1 -0
- package/dist/transactions/transaction-planner.js +116 -0
- package/dist/transactions/transfer-planner.d.ts +36 -0
- package/dist/transactions/transfer-planner.d.ts.map +1 -0
- package/dist/transactions/transfer-planner.js +85 -0
- package/dist/transactions/types/deposit.d.ts +67 -0
- package/dist/transactions/types/deposit.d.ts.map +1 -0
- package/dist/transactions/types/domain.d.ts +67 -0
- package/dist/transactions/types/domain.d.ts.map +1 -0
- package/dist/transactions/types/domain.js +4 -0
- package/dist/transactions/types/index.d.ts +18 -0
- package/dist/transactions/types/index.d.ts.map +1 -0
- package/dist/transactions/types/index.js +17 -0
- package/dist/transactions/types/options.d.ts +45 -0
- package/dist/transactions/types/options.d.ts.map +1 -0
- package/dist/transactions/types/options.js +1 -0
- package/dist/transactions/types/planning.d.ts +80 -0
- package/dist/transactions/types/planning.d.ts.map +1 -0
- package/dist/transactions/types/planning.js +1 -0
- package/dist/transactions/types/state-stores.d.ts +103 -0
- package/dist/transactions/types/state-stores.d.ts.map +1 -0
- package/dist/transactions/types/state-stores.js +1 -0
- package/dist/transactions/types/transact.d.ts +76 -0
- package/dist/transactions/types/transact.d.ts.map +1 -0
- package/dist/transactions/types/transact.js +1 -0
- package/dist/transactions/withdrawal-planner.d.ts +58 -0
- package/dist/transactions/withdrawal-planner.d.ts.map +1 -0
- package/dist/transactions/withdrawal-planner.js +128 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/tsup.browser.config.d.ts +7 -0
- package/dist/tsup.browser.config.d.ts.map +1 -0
- package/dist/tsup.browser.config.js +34 -0
- package/dist/utils/amounts.d.ts +39 -0
- package/dist/utils/amounts.d.ts.map +1 -0
- package/dist/utils/amounts.js +89 -0
- package/dist/utils/async.d.ts +9 -0
- package/dist/utils/async.d.ts.map +1 -1
- package/dist/utils/async.js +24 -0
- package/dist/utils/bigint.js +7 -7
- package/dist/utils/crypto.d.ts +11 -5
- package/dist/utils/crypto.d.ts.map +1 -1
- package/dist/utils/crypto.js +12 -6
- package/dist/utils/format.d.ts +25 -0
- package/dist/utils/format.d.ts.map +1 -0
- package/dist/utils/format.js +33 -0
- package/dist/utils/json-codec.js +1 -1
- package/dist/utils/notes.d.ts +15 -0
- package/dist/utils/notes.d.ts.map +1 -0
- package/dist/utils/notes.js +14 -0
- package/dist/utils/polling.d.ts +5 -0
- package/dist/utils/polling.d.ts.map +1 -1
- package/dist/utils/polling.js +5 -0
- package/dist/utils/random.d.ts +13 -0
- package/dist/utils/random.d.ts.map +1 -0
- package/dist/utils/random.js +27 -0
- package/dist/utils/secure-memory.d.ts +25 -0
- package/dist/utils/secure-memory.d.ts.map +1 -0
- package/dist/utils/secure-memory.js +28 -0
- package/dist/utils/signature.d.ts +6 -0
- package/dist/utils/signature.d.ts.map +1 -1
- package/dist/utils/signature.js +8 -6
- package/dist/utils/validators.d.ts +21 -10
- package/dist/utils/validators.d.ts.map +1 -1
- package/dist/utils/validators.js +37 -11
- package/dist/vitest.config.d.ts +3 -0
- package/dist/vitest.config.d.ts.map +1 -0
- package/dist/vitest.config.js +13 -0
- package/package.json +28 -11
- package/.eslintrc.json +0 -4
- package/account/zkAccount.test.ts +0 -316
- package/account/zkAccount.ts +0 -222
- package/clients/broadcaster.ts +0 -67
- package/clients/http.ts +0 -94
- package/clients/indexer.ts +0 -150
- package/config.ts +0 -39
- package/core.ts +0 -17
- package/dist/account/railgun-imports-prototype.d.ts +0 -12
- package/dist/account/railgun-imports-prototype.d.ts.map +0 -1
- package/dist/account/railgun-imports-prototype.js +0 -30
- package/dist/account/zkAccount.d.ts.map +0 -1
- package/dist/key-derivation/babyjubjub.d.ts +0 -9
- package/dist/key-derivation/babyjubjub.d.ts.map +0 -1
- package/dist/key-derivation/babyjubjub.js +0 -9
- package/dist/key-derivation/bech32.d.ts +0 -22
- package/dist/key-derivation/bech32.d.ts.map +0 -1
- package/dist/key-derivation/bech32.js +0 -86
- package/dist/key-derivation/bip32.d.ts +0 -17
- package/dist/key-derivation/bip32.d.ts.map +0 -1
- package/dist/key-derivation/bip32.js +0 -41
- package/dist/key-derivation/bip39.d.ts +0 -22
- package/dist/key-derivation/bip39.d.ts.map +0 -1
- package/dist/key-derivation/bip39.js +0 -56
- package/dist/key-derivation/bytes.d.ts +0 -19
- package/dist/key-derivation/bytes.d.ts.map +0 -1
- package/dist/key-derivation/bytes.js +0 -92
- package/dist/key-derivation/hash.d.ts +0 -3
- package/dist/key-derivation/hash.d.ts.map +0 -1
- package/dist/key-derivation/hash.js +0 -10
- package/dist/key-derivation/index.d.ts +0 -8
- package/dist/key-derivation/index.d.ts.map +0 -1
- package/dist/key-derivation/index.js +0 -7
- package/dist/key-derivation/wallet-node.d.ts +0 -45
- package/dist/key-derivation/wallet-node.d.ts.map +0 -1
- package/dist/key-derivation/wallet-node.js +0 -109
- package/dist/state/ciphertext-store.d.ts +0 -12
- package/dist/state/ciphertext-store.d.ts.map +0 -1
- package/dist/state/ciphertext-store.js +0 -25
- package/dist/state/hydrator.d.ts +0 -16
- package/dist/state/hydrator.d.ts.map +0 -1
- package/dist/state/hydrator.js +0 -18
- package/dist/state/job-store.d.ts +0 -12
- package/dist/state/job-store.d.ts.map +0 -1
- package/dist/state/job-store.js +0 -118
- package/dist/state/jobs.d.ts +0 -50
- package/dist/state/jobs.d.ts.map +0 -1
- package/dist/state/jobs.js +0 -1
- package/dist/state/leaf-store.d.ts +0 -17
- package/dist/state/leaf-store.d.ts.map +0 -1
- package/dist/state/leaf-store.js +0 -35
- package/dist/state/merkle-tree.d.ts +0 -34
- package/dist/state/merkle-tree.d.ts.map +0 -1
- package/dist/state/merkle-tree.js +0 -104
- package/dist/state/note-store.d.ts +0 -37
- package/dist/state/note-store.d.ts.map +0 -1
- package/dist/state/note-store.js +0 -133
- package/dist/state/nullifier-store.d.ts +0 -13
- package/dist/state/nullifier-store.d.ts.map +0 -1
- package/dist/state/nullifier-store.js +0 -21
- package/dist/state/records.d.ts +0 -57
- package/dist/state/records.d.ts.map +0 -1
- package/dist/state/root-store.d.ts +0 -13
- package/dist/state/root-store.d.ts.map +0 -1
- package/dist/state/root-store.js +0 -30
- package/dist/state/store.d.ts +0 -26
- package/dist/state/store.d.ts.map +0 -1
- package/dist/state/store.js +0 -19
- package/dist/state.d.ts +0 -83
- package/dist/state.d.ts.map +0 -1
- package/dist/state.js +0 -171
- package/dist/transactions/shield.d.ts +0 -5
- package/dist/transactions/shield.d.ts.map +0 -1
- package/dist/transactions/shield.js +0 -93
- package/dist/transactions/types.d.ts +0 -114
- package/dist/transactions/types.d.ts.map +0 -1
- package/dist/transactions/utils.d.ts +0 -10
- package/dist/transactions/utils.d.ts.map +0 -1
- package/dist/transactions/utils.js +0 -17
- package/dist/utils/time.d.ts +0 -2
- package/dist/utils/time.d.ts.map +0 -1
- package/dist/utils/time.js +0 -3
- package/dist/utils/witness.d.ts +0 -11
- package/dist/utils/witness.d.ts.map +0 -1
- package/dist/utils/witness.js +0 -19
- package/errors.ts +0 -20
- package/index.ts +0 -17
- package/key-derivation/babyjubjub.ts +0 -11
- package/key-derivation/bech32.test.ts +0 -90
- package/key-derivation/bech32.ts +0 -124
- package/key-derivation/bip32.ts +0 -56
- package/key-derivation/bip39.ts +0 -76
- package/key-derivation/bytes.ts +0 -118
- package/key-derivation/hash.ts +0 -13
- package/key-derivation/index.ts +0 -7
- package/key-derivation/wallet-node.ts +0 -155
- package/keys.ts +0 -47
- package/prover/config.ts +0 -104
- package/prover/index.ts +0 -1
- package/prover/prover.integration.test.ts +0 -162
- package/prover/prover.test.ts +0 -309
- package/prover/prover.ts +0 -405
- package/prover/registry.test.ts +0 -90
- package/prover/registry.ts +0 -82
- package/schema.ts +0 -17
- package/setup-artifacts.sh +0 -57
- package/state/index.ts +0 -2
- package/state/merkle/hydrator.ts +0 -69
- package/state/merkle/index.ts +0 -12
- package/state/merkle/merkle-tree.test.ts +0 -50
- package/state/merkle/merkle-tree.ts +0 -163
- package/state/store/ciphertext-store.ts +0 -28
- package/state/store/index.ts +0 -24
- package/state/store/job-store.ts +0 -162
- package/state/store/jobs.ts +0 -64
- package/state/store/leaf-store.ts +0 -39
- package/state/store/note-store.ts +0 -177
- package/state/store/nullifier-store.ts +0 -39
- package/state/store/records.ts +0 -61
- package/state/store/root-store.ts +0 -34
- package/state/store/store.ts +0 -25
- package/state.test.ts +0 -235
- package/storage/index.ts +0 -3
- package/storage/indexeddb.test.ts +0 -99
- package/storage/indexeddb.ts +0 -235
- package/storage/memory.test.ts +0 -59
- package/storage/memory.ts +0 -93
- package/transactions/deposit.test.ts +0 -160
- package/transactions/deposit.ts +0 -227
- package/transactions/index.ts +0 -20
- package/transactions/note-sync.test.ts +0 -155
- package/transactions/note-sync.ts +0 -452
- package/transactions/reconcile.ts +0 -73
- package/transactions/transact.test.ts +0 -451
- package/transactions/transact.ts +0 -811
- package/transactions/types.ts +0 -141
- package/tsconfig.json +0 -14
- package/types/global.d.ts +0 -15
- package/types.ts +0 -24
- package/utils/async.ts +0 -15
- package/utils/bigint.ts +0 -34
- package/utils/crypto.test.ts +0 -69
- package/utils/crypto.ts +0 -58
- package/utils/json-codec.ts +0 -38
- package/utils/polling.ts +0 -6
- package/utils/signature.ts +0 -16
- package/utils/validators.test.ts +0 -64
- package/utils/validators.ts +0 -86
- /package/dist/{transactions → history}/types.js +0 -0
- /package/dist/{state/records.js → transactions/types/deposit.js} +0 -0
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Key derivation for Unlink wallets using SLIP-10.
|
|
3
|
+
*
|
|
4
|
+
* SLIP-10 is a standard for BIP-32-style HD key derivation on non-secp256k1 curves.
|
|
5
|
+
* We use "babyjubjub seed" as the curve identifier (standard convention: "<curve> seed").
|
|
6
|
+
*
|
|
7
|
+
* Derivation paths (BIP-44 style):
|
|
8
|
+
* - Spending: m/44'/1984'/0'/0'/{index}'
|
|
9
|
+
* - Viewing: m/420'/1984'/0'/0'/{index}'
|
|
10
|
+
*
|
|
11
|
+
* @see https://github.com/satoshilabs/slips/blob/master/slip-0010.md
|
|
12
|
+
*/
|
|
13
|
+
import { getPublicKey, hashes } from "@noble/ed25519";
|
|
14
|
+
import { hmac } from "@noble/hashes/hmac.js";
|
|
15
|
+
import { sha512 } from "@noble/hashes/sha2.js";
|
|
16
|
+
import { deriveSpendingPublicKey, poseidon } from "../crypto-adapters/index.js";
|
|
17
|
+
import { ValidationError } from "../errors.js";
|
|
18
|
+
import { Hex } from "./hex.js";
|
|
19
|
+
// Configure ed25519 to use sha512
|
|
20
|
+
hashes.sha512 = sha512;
|
|
21
|
+
hashes.sha512Async = async (m) => sha512(m);
|
|
22
|
+
// SLIP-10 curve identifier (convention: "<curve> seed")
|
|
23
|
+
const CURVE_SEED = new TextEncoder().encode("babyjubjub seed");
|
|
24
|
+
// BIP-44 paths: m/purpose'/coin_type'/account'/change'/{index}'
|
|
25
|
+
// 1984 = coin type for Unlink
|
|
26
|
+
const SPENDING_PATH = [44, 1984, 0, 0]; // + index
|
|
27
|
+
const VIEWING_PATH = [420, 1984, 0, 0]; // + index
|
|
28
|
+
/**
|
|
29
|
+
* SLIP-10 master key derivation from seed.
|
|
30
|
+
* I = HMAC-SHA512(Key = curve_seed, Data = seed)
|
|
31
|
+
* Returns left 32 bytes as key, right 32 bytes as chain code.
|
|
32
|
+
*/
|
|
33
|
+
function deriveMasterKey(seed) {
|
|
34
|
+
const I = hmac(sha512, CURVE_SEED, seed);
|
|
35
|
+
return {
|
|
36
|
+
key: I.slice(0, 32),
|
|
37
|
+
chainCode: I.slice(32, 64),
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* SLIP-10 hardened child key derivation.
|
|
42
|
+
* For hardened keys (index >= 0x80000000), we use:
|
|
43
|
+
* I = HMAC-SHA512(Key = chainCode, Data = 0x00 || key || index)
|
|
44
|
+
*/
|
|
45
|
+
function deriveHardenedChild(key, chainCode, index) {
|
|
46
|
+
// Data = 0x00 || key (32 bytes) || index (4 bytes, big-endian)
|
|
47
|
+
const data = new Uint8Array(37);
|
|
48
|
+
data[0] = 0x00;
|
|
49
|
+
data.set(key, 1);
|
|
50
|
+
// Hardened index: original index + 0x80000000
|
|
51
|
+
const view = new DataView(data.buffer, data.byteOffset, data.byteLength);
|
|
52
|
+
view.setUint32(33, 0x80000000 + index, false); // big-endian
|
|
53
|
+
const I = hmac(sha512, chainCode, data);
|
|
54
|
+
return {
|
|
55
|
+
key: I.slice(0, 32),
|
|
56
|
+
chainCode: I.slice(32, 64),
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Derive a key by traversing a BIP-32 path (all hardened).
|
|
61
|
+
*/
|
|
62
|
+
function deriveKeyFromPath(seed, path) {
|
|
63
|
+
let { key, chainCode } = deriveMasterKey(seed);
|
|
64
|
+
for (const index of path) {
|
|
65
|
+
({ key, chainCode } = deriveHardenedChild(key, chainCode, index));
|
|
66
|
+
}
|
|
67
|
+
return key;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Derive spending key pair (BabyJubJub) for an account.
|
|
71
|
+
*/
|
|
72
|
+
export function deriveSpendingKeyPair(seed, index) {
|
|
73
|
+
const path = [...SPENDING_PATH, index];
|
|
74
|
+
const privateKey = deriveKeyFromPath(seed, path);
|
|
75
|
+
const pubkey = deriveSpendingPublicKey(privateKey);
|
|
76
|
+
return { privateKey, pubkey };
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Derive viewing key pair (Ed25519) for an account.
|
|
80
|
+
*/
|
|
81
|
+
export async function deriveViewingKeyPair(seed, index) {
|
|
82
|
+
const path = [...VIEWING_PATH, index];
|
|
83
|
+
const privateKey = deriveKeyFromPath(seed, path);
|
|
84
|
+
const pubkey = await getPublicKey(privateKey);
|
|
85
|
+
return { privateKey, pubkey };
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Compute nullifying key from viewing private key using Poseidon hash.
|
|
89
|
+
*/
|
|
90
|
+
export function computeNullifyingKey(viewingPrivateKey) {
|
|
91
|
+
if (viewingPrivateKey.length !== 32) {
|
|
92
|
+
throw new ValidationError("Viewing private key must be 32 bytes");
|
|
93
|
+
}
|
|
94
|
+
return poseidon([Hex.toBigInt(Hex.fromBytes(viewingPrivateKey))]);
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Compute master public key from spending public key and nullifying key.
|
|
98
|
+
* MPK = Poseidon(spendingPubkey[0], spendingPubkey[1], nullifyingKey)
|
|
99
|
+
*/
|
|
100
|
+
export function computeMasterPublicKey(spendingPubkey, nullifyingKey) {
|
|
101
|
+
return poseidon([...spendingPubkey, nullifyingKey]);
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Derive all account keys from a seed.
|
|
105
|
+
*/
|
|
106
|
+
export async function deriveAccountKeys(seed, index) {
|
|
107
|
+
const spending = deriveSpendingKeyPair(seed, index);
|
|
108
|
+
const viewing = await deriveViewingKeyPair(seed, index);
|
|
109
|
+
const nullifyingKey = computeNullifyingKey(viewing.privateKey);
|
|
110
|
+
const masterPublicKey = computeMasterPublicKey(spending.pubkey, nullifyingKey);
|
|
111
|
+
return { spending, viewing, nullifyingKey, masterPublicKey };
|
|
112
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export declare enum FieldSize {
|
|
2
|
+
SCALAR = 32,
|
|
3
|
+
SEED = 64
|
|
4
|
+
}
|
|
5
|
+
export type HexInput = string | number | bigint | Uint8Array | ArrayLike<number>;
|
|
6
|
+
export declare class Hex {
|
|
7
|
+
static strip(value: string): string;
|
|
8
|
+
static encode(data: HexInput): string;
|
|
9
|
+
static fromBytes(bytes: Uint8Array): string;
|
|
10
|
+
static toBytes(hex: string): Uint8Array;
|
|
11
|
+
static decode(data: HexInput): Uint8Array;
|
|
12
|
+
static toBigInt(hex: string): bigint;
|
|
13
|
+
static pad(data: HexInput, bytes: number, side?: "left" | "right"): string;
|
|
14
|
+
static padToSize(data: HexInput, size: FieldSize): string;
|
|
15
|
+
static fromBigInt(value: bigint, size: FieldSize, prefix?: boolean): string;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=hex.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hex.d.ts","sourceRoot":"","sources":["../../keys/hex.ts"],"names":[],"mappings":"AAEA,oBAAY,SAAS;IACnB,MAAM,KAAK;IACX,IAAI,KAAK;CACV;AAED,MAAM,MAAM,QAAQ,GAChB,MAAM,GACN,MAAM,GACN,MAAM,GACN,UAAU,GACV,SAAS,CAAC,MAAM,CAAC,CAAC;AAItB,qBAAa,GAAG;IACd,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAInC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM;IAYrC,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM;IAI3C,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU;IAUvC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,GAAG,UAAU;IAQzC,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAIpC,MAAM,CAAC,GAAG,CACR,IAAI,EAAE,QAAQ,EACd,KAAK,EAAE,MAAM,EACb,IAAI,GAAE,MAAM,GAAG,OAAgB,GAC9B,MAAM;IAUT,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,GAAG,MAAM;IAQzD,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,UAAQ,GAAG,MAAM;CAI1E"}
|
package/dist/keys/hex.js
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { ValidationError } from "../errors.js";
|
|
2
|
+
export var FieldSize;
|
|
3
|
+
(function (FieldSize) {
|
|
4
|
+
FieldSize[FieldSize["SCALAR"] = 32] = "SCALAR";
|
|
5
|
+
FieldSize[FieldSize["SEED"] = 64] = "SEED";
|
|
6
|
+
})(FieldSize || (FieldSize = {}));
|
|
7
|
+
const HEX_REGEX = /^[0-9a-f]*$/i;
|
|
8
|
+
export class Hex {
|
|
9
|
+
static strip(value) {
|
|
10
|
+
return value.startsWith("0x") ? value.slice(2) : value;
|
|
11
|
+
}
|
|
12
|
+
static encode(data) {
|
|
13
|
+
if (typeof data === "string")
|
|
14
|
+
return Hex.strip(data).toLowerCase();
|
|
15
|
+
if (typeof data === "number" || typeof data === "bigint") {
|
|
16
|
+
if (data < 0)
|
|
17
|
+
throw new ValidationError("Cannot hexlify negative values");
|
|
18
|
+
const hex = data.toString(16);
|
|
19
|
+
return hex.length % 2 === 0 ? hex : `0${hex}`;
|
|
20
|
+
}
|
|
21
|
+
return Hex.fromBytes(data instanceof Uint8Array ? data : Uint8Array.from(data));
|
|
22
|
+
}
|
|
23
|
+
static fromBytes(bytes) {
|
|
24
|
+
return Array.from(bytes, (b) => b.toString(16).padStart(2, "0")).join("");
|
|
25
|
+
}
|
|
26
|
+
static toBytes(hex) {
|
|
27
|
+
const h = Hex.strip(hex).toLowerCase();
|
|
28
|
+
if (h.length % 2 !== 0)
|
|
29
|
+
throw new ValidationError("Hex string must have an even length");
|
|
30
|
+
if (!HEX_REGEX.test(h))
|
|
31
|
+
throw new ValidationError("Invalid hex string");
|
|
32
|
+
return Uint8Array.from({ length: h.length / 2 }, (_, i) => parseInt(h.slice(i * 2, i * 2 + 2), 16));
|
|
33
|
+
}
|
|
34
|
+
static decode(data) {
|
|
35
|
+
if (data instanceof Uint8Array)
|
|
36
|
+
return new Uint8Array(data);
|
|
37
|
+
if (typeof data === "string")
|
|
38
|
+
return Hex.toBytes(data);
|
|
39
|
+
if (typeof data === "number" || typeof data === "bigint")
|
|
40
|
+
return Hex.toBytes(Hex.encode(data));
|
|
41
|
+
return Uint8Array.from(data);
|
|
42
|
+
}
|
|
43
|
+
static toBigInt(hex) {
|
|
44
|
+
return BigInt(`0x${Hex.strip(hex)}`);
|
|
45
|
+
}
|
|
46
|
+
static pad(data, bytes, side = "left") {
|
|
47
|
+
const hex = Hex.encode(data);
|
|
48
|
+
const target = bytes * 2;
|
|
49
|
+
if (hex.length > target)
|
|
50
|
+
throw new ValidationError("Cannot pad data that exceeds target length");
|
|
51
|
+
return side === "left"
|
|
52
|
+
? hex.padStart(target, "0")
|
|
53
|
+
: hex.padEnd(target, "0");
|
|
54
|
+
}
|
|
55
|
+
static padToSize(data, size) {
|
|
56
|
+
const hex = Hex.encode(data);
|
|
57
|
+
const target = size * 2;
|
|
58
|
+
return hex.length > target
|
|
59
|
+
? hex.slice(0, target)
|
|
60
|
+
: hex.padStart(target, "0");
|
|
61
|
+
}
|
|
62
|
+
static fromBigInt(value, size, prefix = false) {
|
|
63
|
+
const hex = value.toString(16).padStart(size * 2, "0");
|
|
64
|
+
return prefix ? `0x${hex}` : hex;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { Mnemonic } from "./mnemonic.js";
|
|
2
|
+
export { deriveAccountKeys, deriveSpendingKeyPair, deriveViewingKeyPair, computeNullifyingKey, computeMasterPublicKey, type AccountKeys, type SpendingKeyPair, type ViewingKeyPair, type SpendingPublicKey, } from "./derive.js";
|
|
3
|
+
export { encodeAddress, decodeAddress, type AddressData, type Chain, } from "./address.js";
|
|
4
|
+
export { Hex, FieldSize, type HexInput } from "./hex.js";
|
|
5
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../keys/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,sBAAsB,EACtB,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,iBAAiB,GACvB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,aAAa,EACb,aAAa,EACb,KAAK,WAAW,EAChB,KAAK,KAAK,GACX,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { Mnemonic } from "./mnemonic.js";
|
|
2
|
+
export { deriveAccountKeys, deriveSpendingKeyPair, deriveViewingKeyPair, computeNullifyingKey, computeMasterPublicKey, } from "./derive.js";
|
|
3
|
+
export { encodeAddress, decodeAddress, } from "./address.js";
|
|
4
|
+
export { Hex, FieldSize } from "./hex.js";
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare class Mnemonic {
|
|
2
|
+
static generate(strength?: 128 | 192 | 256): string;
|
|
3
|
+
static validate(mnemonic: string): boolean;
|
|
4
|
+
static toSeed(mnemonic: string, password?: string): string;
|
|
5
|
+
static toEntropy(mnemonic: string): string;
|
|
6
|
+
static fromEntropy(entropyHex: string): string;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=mnemonic.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mnemonic.d.ts","sourceRoot":"","sources":["../../keys/mnemonic.ts"],"names":[],"mappings":"AAWA,qBAAa,QAAQ;IACnB,MAAM,CAAC,QAAQ,CAAC,QAAQ,GAAE,GAAG,GAAG,GAAG,GAAG,GAAS,GAAG,MAAM;IAIxD,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAI1C,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAW,GAAG,MAAM;IAK9D,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAK1C,MAAM,CAAC,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM;CAI/C"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { entropyToMnemonic, generateMnemonic, mnemonicToEntropy, mnemonicToSeedSync, validateMnemonic, } from "@scure/bip39";
|
|
2
|
+
import { wordlist } from "@scure/bip39/wordlists/english.js";
|
|
3
|
+
import { Hex } from "./hex.js";
|
|
4
|
+
export class Mnemonic {
|
|
5
|
+
static generate(strength = 128) {
|
|
6
|
+
return generateMnemonic(wordlist, strength);
|
|
7
|
+
}
|
|
8
|
+
static validate(mnemonic) {
|
|
9
|
+
return validateMnemonic(mnemonic, wordlist);
|
|
10
|
+
}
|
|
11
|
+
static toSeed(mnemonic, password = "") {
|
|
12
|
+
const seed = mnemonicToSeedSync(mnemonic, password);
|
|
13
|
+
return Hex.fromBytes(seed);
|
|
14
|
+
}
|
|
15
|
+
static toEntropy(mnemonic) {
|
|
16
|
+
const entropy = mnemonicToEntropy(mnemonic, wordlist);
|
|
17
|
+
return Hex.fromBytes(entropy);
|
|
18
|
+
}
|
|
19
|
+
static fromEntropy(entropyHex) {
|
|
20
|
+
const entropy = Hex.toBytes(entropyHex);
|
|
21
|
+
return entropyToMnemonic(entropy, wordlist);
|
|
22
|
+
}
|
|
23
|
+
}
|
package/dist/keys.d.ts
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
|
-
export declare const RESERVED_PREFIXES: readonly ["meta:", "notes:", "leaves:", "roots:", "nullifiers:", "ciphertexts:", "jobs:", "proof_cache:", "cfg:", "idx:", "locks:"];
|
|
1
|
+
export declare const RESERVED_PREFIXES: readonly ["meta:", "history:", "notes:", "leaves:", "roots:", "nullifiers:", "ciphertexts:", "jobs:", "proof_cache:", "cfg:", "idx:", "locks:"];
|
|
2
2
|
/** Canonical builders for storage key namespaces used across core */
|
|
3
3
|
export declare const keys: {
|
|
4
4
|
note: (c: number, i: number) => string;
|
|
5
|
+
historyEntry: (id: string) => string;
|
|
6
|
+
historyPrefix: (chainId: number, mpk: string) => string;
|
|
7
|
+
historyMeta: (chainId: number, mpk: string) => string;
|
|
5
8
|
leaf: (c: number, i: number) => string;
|
|
6
9
|
ciphertext: (c: number, i: number) => string;
|
|
7
10
|
/** Track note indices that remain unspent for a given master public key (mpk acts as the account identifier). */
|
package/dist/keys.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../keys.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,iBAAiB,
|
|
1
|
+
{"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../keys.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,iBAAiB,iJAapB,CAAC;AAEX,qEAAqE;AACrE,eAAO,MAAM,IAAI;cACL,MAAM,KAAK,MAAM;uBACR,MAAM;6BACA,MAAM,OAAO,MAAM;2BACrB,MAAM,OAAO,MAAM;cAEhC,MAAM,KAAK,MAAM;oBACX,MAAM,KAAK,MAAM;IACjC,iHAAiH;iBACpG,MAAM,OAAO,MAAM,KAAK,MAAM;uBAExB,MAAM,OAAO,MAAM;sBACpB,MAAM,KAAK,MAAM;qBAClB,MAAM,KAAK,MAAM;mBACnB,MAAM,KAAK,MAAM;cACtB,MAAM,SAAS,MAAM;oBACf,MAAM;oBACN,MAAM;gBACV,MAAM;mBACH,MAAM,KAAK,MAAM;mBACjB,MAAM;CACtB,CAAC;AAEF,eAAO,MAAM,WAAW,MAAM,CAAC;AAE/B,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,QAQtC"}
|
package/dist/keys.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { KeyValidationError } from "./errors.js";
|
|
2
2
|
export const RESERVED_PREFIXES = [
|
|
3
3
|
"meta:",
|
|
4
|
+
"history:",
|
|
4
5
|
"notes:",
|
|
5
6
|
"leaves:",
|
|
6
7
|
"roots:",
|
|
@@ -15,6 +16,9 @@ export const RESERVED_PREFIXES = [
|
|
|
15
16
|
/** Canonical builders for storage key namespaces used across core */
|
|
16
17
|
export const keys = {
|
|
17
18
|
note: (c, i) => `notes:${c}:${i}`,
|
|
19
|
+
historyEntry: (id) => `history:${id}`,
|
|
20
|
+
historyPrefix: (chainId, mpk) => `history:${chainId}:${mpk}:`,
|
|
21
|
+
historyMeta: (chainId, mpk) => `history:${chainId}:${mpk}:__meta__`,
|
|
18
22
|
leaf: (c, i) => `leaves:${c}:${i}`,
|
|
19
23
|
ciphertext: (c, i) => `ciphertexts:${c}:${i}`,
|
|
20
24
|
/** Track note indices that remain unspent for a given master public key (mpk acts as the account identifier). */
|
package/dist/prover/config.d.ts
CHANGED
|
@@ -2,20 +2,6 @@
|
|
|
2
2
|
* Configuration for the prover system
|
|
3
3
|
* Handles artifact loading from local files or remote artifact server
|
|
4
4
|
*/
|
|
5
|
-
/**
|
|
6
|
-
* Environment-based configuration for artifact loading
|
|
7
|
-
*/
|
|
8
|
-
export interface ProverConfig {
|
|
9
|
-
/** Base URL for the artifact server (browser mode) */
|
|
10
|
-
rpcUrl: string;
|
|
11
|
-
/** Whether to enable artifact caching */
|
|
12
|
-
enableCache: boolean;
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* Default configuration
|
|
16
|
-
* Can be overridden via environment variables
|
|
17
|
-
*/
|
|
18
|
-
export declare const DEFAULT_CONFIG: ProverConfig;
|
|
19
5
|
/**
|
|
20
6
|
* Artifact file types
|
|
21
7
|
*/
|
|
@@ -31,7 +17,7 @@ export declare enum ArtifactType {
|
|
|
31
17
|
* @param baseUrl Base URL of the artifact server
|
|
32
18
|
* @returns Full URL to the artifact
|
|
33
19
|
*/
|
|
34
|
-
export declare function buildArtifactUrl(circuitName: string, artifactType: ArtifactType, baseUrl
|
|
20
|
+
export declare function buildArtifactUrl(circuitName: string, artifactType: ArtifactType, baseUrl: string): string;
|
|
35
21
|
/**
|
|
36
22
|
* Get relative path for local artifact loading
|
|
37
23
|
* Used in Node.js environment when artifacts are bundled
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../prover/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../prover/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,oBAAY,YAAY;IACtB,IAAI,mBAAmB;IACvB,IAAI,mBAAmB;IACvB,IAAI,wBAAwB;CAC7B;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,YAAY,EAC1B,OAAO,EAAE,MAAM,GACd,MAAM,CAIR;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,YAAY,GACzB,MAAM,EAAE,CAQV;AAED;;GAEG;AACH,eAAO,MAAM,OAAO;IAClB;;OAEG;iBACU,OAAO;IAIpB;;OAEG;cACO,OAAO;IAQjB;;OAEG;sBACe,MAAM;CAKzB,CAAC"}
|
package/dist/prover/config.js
CHANGED
|
@@ -2,16 +2,6 @@
|
|
|
2
2
|
* Configuration for the prover system
|
|
3
3
|
* Handles artifact loading from local files or remote artifact server
|
|
4
4
|
*/
|
|
5
|
-
/**
|
|
6
|
-
* Default configuration
|
|
7
|
-
* Can be overridden via environment variables
|
|
8
|
-
*/
|
|
9
|
-
export const DEFAULT_CONFIG = {
|
|
10
|
-
rpcUrl: typeof process !== "undefined" && process.env?.UNLINK_RPC_URL
|
|
11
|
-
? process.env.UNLINK_RPC_URL
|
|
12
|
-
: "http://localhost:3000",
|
|
13
|
-
enableCache: true,
|
|
14
|
-
};
|
|
15
5
|
/**
|
|
16
6
|
* Artifact file types
|
|
17
7
|
*/
|
|
@@ -28,7 +18,7 @@ export var ArtifactType;
|
|
|
28
18
|
* @param baseUrl Base URL of the artifact server
|
|
29
19
|
* @returns Full URL to the artifact
|
|
30
20
|
*/
|
|
31
|
-
export function buildArtifactUrl(circuitName, artifactType, baseUrl
|
|
21
|
+
export function buildArtifactUrl(circuitName, artifactType, baseUrl) {
|
|
32
22
|
// Remove trailing slash from baseUrl
|
|
33
23
|
const cleanBaseUrl = baseUrl.replace(/\/$/, "");
|
|
34
24
|
return `${cleanBaseUrl}/artifacts/${circuitName}/${artifactType}`;
|
package/dist/prover/prover.d.ts
CHANGED
|
@@ -30,22 +30,30 @@ export interface JoinsplitProofInput {
|
|
|
30
30
|
readonly npkOut: bigint[];
|
|
31
31
|
readonly valueOut: bigint[];
|
|
32
32
|
}
|
|
33
|
-
export declare function proveTransaction(input: JoinsplitProofInput
|
|
33
|
+
export declare function proveTransaction(input: JoinsplitProofInput, options?: {
|
|
34
|
+
rpcUrl?: string;
|
|
35
|
+
}): Promise<JoinsplitProof>;
|
|
34
36
|
/**
|
|
35
37
|
* Get verification key for a specific circuit configuration
|
|
36
38
|
* @param inputs Number of inputs (nullifiers)
|
|
37
39
|
* @param outputs Number of outputs (commitments)
|
|
40
|
+
* @param options Configuration including rpcUrl
|
|
38
41
|
* @returns Verification key for the circuit
|
|
39
42
|
*/
|
|
40
|
-
export declare function getVerificationKey(inputs: number, outputs: number
|
|
43
|
+
export declare function getVerificationKey(inputs: number, outputs: number, options?: {
|
|
44
|
+
rpcUrl?: string;
|
|
45
|
+
}): Promise<VerificationKey>;
|
|
41
46
|
/**
|
|
42
47
|
* Verify a proof with public signals
|
|
43
48
|
* Auto-detects the circuit from the public signals structure
|
|
44
49
|
* @param proof Groth16 proof
|
|
45
50
|
* @param publicSignals Public signals array
|
|
51
|
+
* @param options Optional configuration including rpcUrl
|
|
46
52
|
* @returns True if proof is valid
|
|
47
53
|
*/
|
|
48
|
-
export declare function verifyProof(proof: Groth16Proof, publicSignals: PublicSignals
|
|
54
|
+
export declare function verifyProof(proof: Groth16Proof, publicSignals: PublicSignals, options?: {
|
|
55
|
+
rpcUrl?: string;
|
|
56
|
+
}): Promise<boolean>;
|
|
49
57
|
/**
|
|
50
58
|
* Verify a proof with explicit circuit specification
|
|
51
59
|
* Preferred method when you know the circuit dimensions
|
|
@@ -53,7 +61,10 @@ export declare function verifyProof(proof: Groth16Proof, publicSignals: PublicSi
|
|
|
53
61
|
* @param publicSignals Public signals array
|
|
54
62
|
* @param inputs Number of inputs (nullifiers)
|
|
55
63
|
* @param outputs Number of outputs (commitments)
|
|
64
|
+
* @param options Optional configuration including rpcUrl
|
|
56
65
|
* @returns True if proof is valid
|
|
57
66
|
*/
|
|
58
|
-
export declare function verifyProofWithCircuit(proof: Groth16Proof, publicSignals: PublicSignals, inputs: number, outputs: number
|
|
67
|
+
export declare function verifyProofWithCircuit(proof: Groth16Proof, publicSignals: PublicSignals, inputs: number, outputs: number, options?: {
|
|
68
|
+
rpcUrl?: string;
|
|
69
|
+
}): Promise<boolean>;
|
|
59
70
|
//# sourceMappingURL=prover.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prover.d.ts","sourceRoot":"","sources":["../../prover/prover.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"prover.d.ts","sourceRoot":"","sources":["../../prover/prover.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AA2BtD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;CACvC;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,CAAC;IAC/B,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,CAAC;IAChC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,CAAC;IAChC,QAAQ,CAAC,eAAe,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IACvC,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC;IAC9B,QAAQ,CAAC,cAAc,EAAE,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;IAC3B,QAAQ,CAAC,YAAY,EAAE,MAAM,EAAE,EAAE,CAAC;IAClC,QAAQ,CAAC,aAAa,EAAE,MAAM,EAAE,CAAC;IACjC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;CAC7B;AAiOD,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,mBAAmB,EAC1B,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAC5B,OAAO,CAAC,cAAc,CAAC,CAwCzB;AAED;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAC5B,OAAO,CAAC,eAAe,CAAC,CAU1B;AAED;;;;;;;GAOG;AACH,wBAAsB,WAAW,CAC/B,KAAK,EAAE,YAAY,EACnB,aAAa,EAAE,aAAa,EAC5B,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAC5B,OAAO,CAAC,OAAO,CAAC,CA0ClB;AAED;;;;;;;;;GASG;AACH,wBAAsB,sBAAsB,CAC1C,KAAK,EAAE,YAAY,EACnB,aAAa,EAAE,aAAa,EAC5B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAC5B,OAAO,CAAC,OAAO,CAAC,CAUlB"}
|