@miradexio/client 0.1.1 → 0.1.2
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 +57 -292
- package/dist/address/base58.d.ts.map +1 -1
- package/dist/address/base58.js +1 -2
- package/dist/address/base58.js.map +1 -1
- package/dist/address/bech32.d.ts +0 -8
- package/dist/address/bech32.d.ts.map +1 -1
- package/dist/address/bech32.js +3 -9
- package/dist/address/bech32.js.map +1 -1
- package/dist/address/evm.d.ts.map +1 -1
- package/dist/address/evm.js +1 -2
- package/dist/address/evm.js.map +1 -1
- package/dist/address/index.d.ts +0 -6
- package/dist/address/index.d.ts.map +1 -1
- package/dist/address/index.js +6 -9
- package/dist/address/index.js.map +1 -1
- package/dist/address/monero.d.ts +0 -10
- package/dist/address/monero.d.ts.map +1 -1
- package/dist/address/monero.js +4 -10
- package/dist/address/monero.js.map +1 -1
- package/dist/address/polkadot.d.ts +0 -5
- package/dist/address/polkadot.d.ts.map +1 -1
- package/dist/address/polkadot.js +2 -6
- package/dist/address/polkadot.js.map +1 -1
- package/dist/address/ton.d.ts +0 -6
- package/dist/address/ton.d.ts.map +1 -1
- package/dist/address/ton.js +3 -8
- package/dist/address/ton.js.map +1 -1
- package/dist/api/index.d.ts +0 -19
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js +18 -37
- package/dist/api/index.js.map +1 -1
- package/dist/atomic-swap/drive.d.ts +0 -13
- package/dist/atomic-swap/drive.d.ts.map +1 -1
- package/dist/atomic-swap/drive.js +66 -111
- package/dist/atomic-swap/drive.js.map +1 -1
- package/dist/atomic-swap/extract.d.ts +0 -23
- package/dist/atomic-swap/extract.d.ts.map +1 -1
- package/dist/atomic-swap/extract.js +6 -16
- package/dist/atomic-swap/extract.js.map +1 -1
- package/dist/atomic-swap/index.d.ts +0 -7
- package/dist/atomic-swap/index.d.ts.map +1 -1
- package/dist/atomic-swap/index.js +1 -7
- package/dist/atomic-swap/index.js.map +1 -1
- package/dist/atomic-swap/monero-sweep/errors.d.ts.map +1 -1
- package/dist/atomic-swap/monero-sweep/errors.js +5 -20
- package/dist/atomic-swap/monero-sweep/errors.js.map +1 -1
- package/dist/atomic-swap/monero-sweep/index.d.ts +0 -13
- package/dist/atomic-swap/monero-sweep/index.d.ts.map +1 -1
- package/dist/atomic-swap/monero-sweep/index.js +30 -56
- package/dist/atomic-swap/monero-sweep/index.js.map +1 -1
- package/dist/atomic-swap/monero-sweep/ring-select.d.ts +0 -4
- package/dist/atomic-swap/monero-sweep/ring-select.d.ts.map +1 -1
- package/dist/atomic-swap/monero-sweep/ring-select.js +9 -21
- package/dist/atomic-swap/monero-sweep/ring-select.js.map +1 -1
- package/dist/atomic-swap/presign.d.ts +0 -63
- package/dist/atomic-swap/presign.d.ts.map +1 -1
- package/dist/atomic-swap/presign.js +30 -90
- package/dist/atomic-swap/presign.js.map +1 -1
- package/dist/atomic-swap/refund.d.ts +0 -18
- package/dist/atomic-swap/refund.d.ts.map +1 -1
- package/dist/atomic-swap/refund.js +16 -32
- package/dist/atomic-swap/refund.js.map +1 -1
- package/dist/atomic-swap/run.d.ts +0 -17
- package/dist/atomic-swap/run.d.ts.map +1 -1
- package/dist/atomic-swap/run.js +11 -25
- package/dist/atomic-swap/run.js.map +1 -1
- package/dist/atomic-swap/snapshot.d.ts +0 -30
- package/dist/atomic-swap/snapshot.d.ts.map +1 -1
- package/dist/atomic-swap/snapshot.js +8 -23
- package/dist/atomic-swap/snapshot.js.map +1 -1
- package/dist/atomic-swap/submit-encsig.d.ts +0 -7
- package/dist/atomic-swap/submit-encsig.d.ts.map +1 -1
- package/dist/atomic-swap/submit-encsig.js +2 -11
- package/dist/atomic-swap/submit-encsig.js.map +1 -1
- package/dist/atomic-swap/types.d.ts +2 -55
- package/dist/atomic-swap/types.d.ts.map +1 -1
- package/dist/atomic-swap/types.js +2 -3
- package/dist/atomic-swap/types.js.map +1 -1
- package/dist/blockchain/quorum-provider.d.ts +0 -15
- package/dist/blockchain/quorum-provider.d.ts.map +1 -1
- package/dist/blockchain/quorum-provider.js +7 -9
- package/dist/blockchain/quorum-provider.js.map +1 -1
- package/dist/cooperative-redeem.d.ts +5 -14
- package/dist/cooperative-redeem.d.ts.map +1 -1
- package/dist/cooperative-redeem.js +3 -20
- package/dist/cooperative-redeem.js.map +1 -1
- package/dist/engine/blockchain-querier.d.ts +0 -22
- package/dist/engine/blockchain-querier.d.ts.map +1 -1
- package/dist/engine/engine-state.d.ts +0 -8
- package/dist/engine/engine-state.d.ts.map +1 -1
- package/dist/engine/engine-state.js.map +1 -1
- package/dist/engine/flow-context.d.ts +0 -20
- package/dist/engine/flow-context.d.ts.map +1 -1
- package/dist/engine/flow-context.js +17 -41
- package/dist/engine/flow-context.js.map +1 -1
- package/dist/engine/flows/atomic-flow.d.ts +0 -28
- package/dist/engine/flows/atomic-flow.d.ts.map +1 -1
- package/dist/engine/flows/atomic-flow.js +64 -121
- package/dist/engine/flows/atomic-flow.js.map +1 -1
- package/dist/engine/flows/swap-flow.d.ts +0 -19
- package/dist/engine/flows/swap-flow.d.ts.map +1 -1
- package/dist/engine/flows/swap-flow.js +41 -83
- package/dist/engine/flows/swap-flow.js.map +1 -1
- package/dist/engine/miradex-engine.d.ts +1 -62
- package/dist/engine/miradex-engine.d.ts.map +1 -1
- package/dist/engine/miradex-engine.js +18 -50
- package/dist/engine/miradex-engine.js.map +1 -1
- package/dist/engine/pipeline.d.ts +0 -11
- package/dist/engine/pipeline.d.ts.map +1 -1
- package/dist/engine/pipeline.js +9 -21
- package/dist/engine/pipeline.js.map +1 -1
- package/dist/engine/platform.d.ts +0 -160
- package/dist/engine/platform.d.ts.map +1 -1
- package/dist/engine/platform.js +2 -0
- package/dist/engine/platform.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -11
- package/dist/index.js.map +1 -1
- package/dist/interfaces/blockchain.d.ts +1 -13
- package/dist/interfaces/blockchain.d.ts.map +1 -1
- package/dist/interfaces/blockchain.js +1 -0
- package/dist/interfaces/blockchain.js.map +1 -1
- package/dist/interfaces/logger.d.ts +0 -6
- package/dist/interfaces/logger.d.ts.map +1 -1
- package/dist/interfaces/logger.js.map +1 -1
- package/dist/lib/bitcoin/deposit-watcher.d.ts +0 -23
- package/dist/lib/bitcoin/deposit-watcher.d.ts.map +1 -1
- package/dist/lib/bitcoin/deposit-watcher.js +7 -31
- package/dist/lib/bitcoin/deposit-watcher.js.map +1 -1
- package/dist/lib/bitcoin/script-hash.d.ts.map +1 -1
- package/dist/lib/bitcoin/script-hash.js +2 -6
- package/dist/lib/bitcoin/script-hash.js.map +1 -1
- package/dist/lib/bitcoin/sweep.d.ts +0 -30
- package/dist/lib/bitcoin/sweep.d.ts.map +1 -1
- package/dist/lib/bitcoin/sweep.js +11 -40
- package/dist/lib/bitcoin/sweep.js.map +1 -1
- package/dist/lib/bitcoin/tx-verify.d.ts +0 -28
- package/dist/lib/bitcoin/tx-verify.d.ts.map +1 -1
- package/dist/lib/bitcoin/tx-verify.js +20 -61
- package/dist/lib/bitcoin/tx-verify.js.map +1 -1
- package/dist/lib/bitcoin/wallet.d.ts +0 -38
- package/dist/lib/bitcoin/wallet.d.ts.map +1 -1
- package/dist/lib/bitcoin/wallet.js +13 -38
- package/dist/lib/bitcoin/wallet.js.map +1 -1
- package/dist/lib/crypto/bytes.d.ts +0 -14
- package/dist/lib/crypto/bytes.d.ts.map +1 -1
- package/dist/lib/crypto/bytes.js +5 -14
- package/dist/lib/crypto/bytes.js.map +1 -1
- package/dist/lib/crypto/errors.d.ts +0 -5
- package/dist/lib/crypto/errors.d.ts.map +1 -1
- package/dist/lib/crypto/errors.js +2 -5
- package/dist/lib/crypto/errors.js.map +1 -1
- package/dist/lib/crypto/libp2p-identity.d.ts +0 -15
- package/dist/lib/crypto/libp2p-identity.d.ts.map +1 -1
- package/dist/lib/crypto/libp2p-identity.js +16 -28
- package/dist/lib/crypto/libp2p-identity.js.map +1 -1
- package/dist/lib/crypto/mnemonic.d.ts +0 -9
- package/dist/lib/crypto/mnemonic.d.ts.map +1 -1
- package/dist/lib/crypto/mnemonic.js +11 -27
- package/dist/lib/crypto/mnemonic.js.map +1 -1
- package/dist/lib/crypto/platform.d.ts +0 -6
- package/dist/lib/crypto/platform.d.ts.map +1 -1
- package/dist/lib/crypto/platform.js +2 -6
- package/dist/lib/crypto/platform.js.map +1 -1
- package/dist/lib/crypto/scalars.d.ts +0 -23
- package/dist/lib/crypto/scalars.d.ts.map +1 -1
- package/dist/lib/crypto/scalars.js +10 -23
- package/dist/lib/crypto/scalars.js.map +1 -1
- package/dist/lib/crypto/types.d.ts +0 -4
- package/dist/lib/crypto/types.d.ts.map +1 -1
- package/dist/lib/crypto/wasm.d.ts +0 -23
- package/dist/lib/crypto/wasm.d.ts.map +1 -1
- package/dist/lib/crypto/wasm.js +9 -16
- package/dist/lib/crypto/wasm.js.map +1 -1
- package/dist/lib/default-config.d.ts +1 -59
- package/dist/lib/default-config.d.ts.map +1 -1
- package/dist/lib/default-config.js +22 -61
- package/dist/lib/default-config.js.map +1 -1
- package/dist/lib/errors.d.ts +0 -54
- package/dist/lib/errors.d.ts.map +1 -1
- package/dist/lib/errors.js +12 -35
- package/dist/lib/errors.js.map +1 -1
- package/dist/lib/keystore.d.ts +0 -24
- package/dist/lib/keystore.d.ts.map +1 -1
- package/dist/lib/keystore.js +3 -10
- package/dist/lib/keystore.js.map +1 -1
- package/dist/lib/monero/output-scanner.d.ts +0 -18
- package/dist/lib/monero/output-scanner.d.ts.map +1 -1
- package/dist/lib/monero/output-scanner.js +17 -40
- package/dist/lib/monero/output-scanner.js.map +1 -1
- package/dist/lib/monero/rpc.d.ts +0 -64
- package/dist/lib/monero/rpc.d.ts.map +1 -1
- package/dist/lib/monero/rpc.js +17 -59
- package/dist/lib/monero/rpc.js.map +1 -1
- package/dist/lib/monero/verify-lock.d.ts +0 -12
- package/dist/lib/monero/verify-lock.d.ts.map +1 -1
- package/dist/lib/monero/verify-lock.js +9 -24
- package/dist/lib/monero/verify-lock.js.map +1 -1
- package/dist/lib/monero/verify-sweep.d.ts +0 -20
- package/dist/lib/monero/verify-sweep.d.ts.map +1 -1
- package/dist/lib/monero/verify-sweep.js +7 -25
- package/dist/lib/monero/verify-sweep.js.map +1 -1
- package/dist/lib/pow-solver.d.ts.map +1 -1
- package/dist/lib/pow-solver.js +3 -8
- package/dist/lib/pow-solver.js.map +1 -1
- package/dist/lib/retry.d.ts +7 -64
- package/dist/lib/retry.d.ts.map +1 -1
- package/dist/lib/retry.js +13 -13
- package/dist/lib/retry.js.map +1 -1
- package/dist/portable.d.ts.map +1 -1
- package/dist/portable.js +3 -4
- package/dist/portable.js.map +1 -1
- package/dist/quote-binding.d.ts +0 -13
- package/dist/quote-binding.d.ts.map +1 -1
- package/dist/quote-binding.js +3 -18
- package/dist/quote-binding.js.map +1 -1
- package/dist/swap-executor.d.ts +1 -5
- package/dist/swap-executor.d.ts.map +1 -1
- package/dist/swap-executor.js +1 -1
- package/dist/swap-executor.js.map +1 -1
- package/dist/types/api.d.ts +0 -6
- package/dist/types/api.d.ts.map +1 -1
- package/dist/types/api.js +6 -9
- package/dist/types/api.js.map +1 -1
- package/dist/types/errors.d.ts +0 -7
- package/dist/types/errors.d.ts.map +1 -1
- package/dist/types/errors.js +2 -7
- package/dist/types/errors.js.map +1 -1
- package/dist/types/index.js +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/types/keys.d.ts +0 -15
- package/dist/types/keys.d.ts.map +1 -1
- package/dist/types/protocol.d.ts +0 -51
- package/dist/types/protocol.d.ts.map +1 -1
- package/dist/types/protocol.js +3 -8
- package/dist/types/protocol.js.map +1 -1
- package/dist/types/status.d.ts.map +1 -1
- package/dist/types/status.js +9 -14
- package/dist/types/status.js.map +1 -1
- package/dist/types/verification.d.ts +0 -10
- package/dist/types/verification.d.ts.map +1 -1
- package/dist/types/verification.js +7 -15
- package/dist/types/verification.js.map +1 -1
- package/dist/verification/chainflip-networks.d.ts +2 -35
- package/dist/verification/chainflip-networks.d.ts.map +1 -1
- package/dist/verification/chainflip-networks.js +12 -4
- package/dist/verification/chainflip-networks.js.map +1 -1
- package/dist/verification/chainflip.d.ts +0 -40
- package/dist/verification/chainflip.d.ts.map +1 -1
- package/dist/verification/chainflip.js +49 -129
- package/dist/verification/chainflip.js.map +1 -1
- package/dist/verification/constants.d.ts +0 -40
- package/dist/verification/constants.d.ts.map +1 -1
- package/dist/verification/constants.js +14 -40
- package/dist/verification/constants.js.map +1 -1
- package/dist/verification/index.d.ts +0 -26
- package/dist/verification/index.d.ts.map +1 -1
- package/dist/verification/index.js +8 -12
- package/dist/verification/index.js.map +1 -1
- package/dist/verification/memo.d.ts +0 -15
- package/dist/verification/memo.d.ts.map +1 -1
- package/dist/verification/memo.js +9 -27
- package/dist/verification/memo.js.map +1 -1
- package/dist/verification/near-intents.d.ts +0 -63
- package/dist/verification/near-intents.d.ts.map +1 -1
- package/dist/verification/near-intents.js +25 -67
- package/dist/verification/near-intents.js.map +1 -1
- package/dist/verification/rate-oracle.d.ts +0 -22
- package/dist/verification/rate-oracle.d.ts.map +1 -1
- package/dist/verification/rate-oracle.js +6 -11
- package/dist/verification/rate-oracle.js.map +1 -1
- package/dist/verification/thorchain-networks.d.ts +0 -27
- package/dist/verification/thorchain-networks.d.ts.map +1 -1
- package/dist/verification/thorchain-networks.js +13 -15
- package/dist/verification/thorchain-networks.js.map +1 -1
- package/dist/verification/thorchain.d.ts +0 -30
- package/dist/verification/thorchain.d.ts.map +1 -1
- package/dist/verification/thorchain.js +24 -47
- package/dist/verification/thorchain.js.map +1 -1
- package/dist/wasm-pins.d.ts +3 -3
- package/dist/wasm-pins.js +1 -1
- package/dist/wire/near-intents.zod.d.ts +0 -27
- package/dist/wire/near-intents.zod.d.ts.map +1 -1
- package/dist/wire/near-intents.zod.js +15 -23
- package/dist/wire/near-intents.zod.js.map +1 -1
- package/dist/wire/server/action.zod.d.ts +0 -10
- package/dist/wire/server/action.zod.d.ts.map +1 -1
- package/dist/wire/server/action.zod.js +8 -14
- package/dist/wire/server/action.zod.js.map +1 -1
- package/dist/wire/server/common.zod.d.ts +0 -13
- package/dist/wire/server/common.zod.d.ts.map +1 -1
- package/dist/wire/server/common.zod.js +6 -14
- package/dist/wire/server/common.zod.js.map +1 -1
- package/dist/wire/server/swap.zod.d.ts +0 -42
- package/dist/wire/server/swap.zod.d.ts.map +1 -1
- package/dist/wire/server/swap.zod.js +12 -26
- package/dist/wire/server/swap.zod.js.map +1 -1
- package/dist/wire/thorchain.zod.d.ts +0 -8
- package/dist/wire/thorchain.zod.d.ts.map +1 -1
- package/dist/wire/thorchain.zod.js +3 -8
- package/dist/wire/thorchain.zod.js.map +1 -1
- package/package.json +4 -4
- package/wasm/miradex-rust/README.md +3 -4
- package/wasm/miradex-rust/miradex_rust.d.ts +4 -6
- package/wasm/miradex-rust/miradex_rust.js +4 -6
- package/wasm/miradex-rust/miradex_rust_bg.wasm +0 -0
|
@@ -11,16 +11,7 @@ export interface MnemonicKeys {
|
|
|
11
11
|
readonly b_seed: string;
|
|
12
12
|
readonly derivation: KeystoreDerivation;
|
|
13
13
|
}
|
|
14
|
-
/**
|
|
15
|
-
* Generate a fresh 24-word BIP39 mnemonic (256 bits of entropy, sourced from
|
|
16
|
-
* the platform's `crypto.getRandomValues` via @scure/bip39) and derive every
|
|
17
|
-
* downstream swap key.
|
|
18
|
-
*/
|
|
19
14
|
export declare function generateMnemonicKeys(network?: 'mainnet' | 'testnet' | 'regtest'): MnemonicKeys;
|
|
20
|
-
/**
|
|
21
|
-
* Derive all keys from an existing mnemonic.
|
|
22
|
-
* Throws if the mnemonic is invalid.
|
|
23
|
-
*/
|
|
24
15
|
export declare function deriveFromMnemonic(mnemonic: string, network?: 'mainnet' | 'testnet' | 'regtest'): MnemonicKeys;
|
|
25
16
|
export declare class MnemonicError extends Error {
|
|
26
17
|
readonly name = "MnemonicError";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mnemonic.d.ts","sourceRoot":"","sources":["../../../src/lib/crypto/mnemonic.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mnemonic.d.ts","sourceRoot":"","sources":["../../../src/lib/crypto/mnemonic.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAczD,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,6EAA6E;IAC7E,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,6EAA6E;IAC7E,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,oEAAoE;IACpE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,kBAAkB,CAAC;CACzC;AAGD,wBAAgB,oBAAoB,CAAC,OAAO,GAAE,SAAS,GAAG,SAAS,GAAG,SAAqB,GAAG,YAAY,CAGzG;AAGD,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,SAAS,GAAG,SAAS,GAAG,SAAqB,GACrD,YAAY,CAsDd;AAED,qBAAa,aAAc,SAAQ,KAAK;IACtC,QAAQ,CAAC,IAAI,mBAAmB;CACjC"}
|
|
@@ -1,19 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
* -> v_b: HMAC-SHA512(seed, "miradex/v_b/v0") -> first 32 bytes -> reduce mod L
|
|
10
|
-
*
|
|
11
|
-
* The mnemonic is THE master recovery key. From it, the user can reconstruct:
|
|
12
|
-
* - BTC funding wallet (WIF + address)
|
|
13
|
-
* - Swap scalar s_b (for XMR sweep after maker redeems)
|
|
14
|
-
* - View key v_b (for Monero view-only wallet)
|
|
15
|
-
* - DLEQ proof (regenerated via WASM from s_b)
|
|
16
|
-
*/
|
|
1
|
+
// Derivation scheme miradex-v0:
|
|
2
|
+
// 24-word BIP39 mnemonic (256-bit entropy)
|
|
3
|
+
// -> BIP32 seed (PBKDF2)
|
|
4
|
+
// -> BTC: m/84'/0'/0'/0/0 (BIP84 P2WPKH)
|
|
5
|
+
// -> s_b: HMAC-SHA512(seed, "miradex/s_b/v0")[:32] mod L
|
|
6
|
+
// -> v_b: HMAC-SHA512(seed, "miradex/v_b/v0")[:32] mod L
|
|
7
|
+
// The mnemonic is the master recovery key for the BTC wallet, s_b, v_b, and
|
|
8
|
+
// the DLEQ proof (re-derived via WASM).
|
|
17
9
|
import * as bip39 from 'bip39';
|
|
18
10
|
import { BIP32Factory } from 'bip32';
|
|
19
11
|
import * as ecc from 'tiny-secp256k1';
|
|
@@ -30,19 +22,12 @@ const BTC_KEY_DOMAIN = 'miradex/b/v0';
|
|
|
30
22
|
function btcDerivationPath(network) {
|
|
31
23
|
return network === 'mainnet' ? "m/84'/0'/0'/0/0" : "m/84'/1'/0'/0/0";
|
|
32
24
|
}
|
|
33
|
-
|
|
34
|
-
* Generate a fresh 24-word BIP39 mnemonic (256 bits of entropy, sourced from
|
|
35
|
-
* the platform's `crypto.getRandomValues` via @scure/bip39) and derive every
|
|
36
|
-
* downstream swap key.
|
|
37
|
-
*/
|
|
25
|
+
// 24-word BIP39, entropy from crypto.getRandomValues via @scure/bip39.
|
|
38
26
|
export function generateMnemonicKeys(network = 'mainnet') {
|
|
39
27
|
const mnemonic = bip39.generateMnemonic(256);
|
|
40
28
|
return deriveFromMnemonic(mnemonic, network);
|
|
41
29
|
}
|
|
42
|
-
|
|
43
|
-
* Derive all keys from an existing mnemonic.
|
|
44
|
-
* Throws if the mnemonic is invalid.
|
|
45
|
-
*/
|
|
30
|
+
// Throws MnemonicError on an invalid mnemonic.
|
|
46
31
|
export function deriveFromMnemonic(mnemonic, network = 'mainnet') {
|
|
47
32
|
const words = mnemonic.trim().split(/\s+/);
|
|
48
33
|
if (words.length !== 12 && words.length !== 24) {
|
|
@@ -70,8 +55,7 @@ export function deriveFromMnemonic(mnemonic, network = 'mainnet') {
|
|
|
70
55
|
const v_b_seed = bytesToHex(v_b_raw.subarray(0, 32));
|
|
71
56
|
const b_raw = hmac(sha512, seed, new TextEncoder().encode(BTC_KEY_DOMAIN));
|
|
72
57
|
const b_seed = bytesToHex(b_raw.subarray(0, 32));
|
|
73
|
-
// AV-G.2: wipe
|
|
74
|
-
// hex string is captured. Best-effort; V8 may copy internally.
|
|
58
|
+
// AV-G.2: wipe scratch + root seed as soon as the derived hex is captured.
|
|
75
59
|
wipe(s_b_raw);
|
|
76
60
|
wipe(v_b_raw);
|
|
77
61
|
wipe(b_raw);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mnemonic.js","sourceRoot":"","sources":["../../../src/lib/crypto/mnemonic.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"mnemonic.js","sourceRoot":"","sources":["../../../src/lib/crypto/mnemonic.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,4 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Runtime environment detection for the WASM loader.
|
|
3
|
-
* Result is cached after the first call; call `__resetPlatformCache`
|
|
4
|
-
* from tests to observe a freshly-detected platform.
|
|
5
|
-
*/
|
|
6
1
|
export type Platform = 'node' | 'browser' | 'react-native' | 'electron-renderer' | 'electron-main' | 'worker' | 'unknown';
|
|
7
2
|
export declare function detectPlatform(): Platform;
|
|
8
|
-
/** Test-only; not for production code paths. */
|
|
9
3
|
export declare function __resetPlatformCache(): void;
|
|
10
4
|
//# sourceMappingURL=platform.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../../../src/lib/crypto/platform.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../../../src/lib/crypto/platform.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,QAAQ,GAChB,MAAM,GACN,SAAS,GACT,cAAc,GACd,mBAAmB,GACnB,eAAe,GACf,QAAQ,GACR,SAAS,CAAC;AAId,wBAAgB,cAAc,IAAI,QAAQ,CAIzC;AAyBD,wBAAgB,oBAAoB,IAAI,IAAI,CAE3C"}
|
|
@@ -1,8 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
* Runtime environment detection for the WASM loader.
|
|
3
|
-
* Result is cached after the first call; call `__resetPlatformCache`
|
|
4
|
-
* from tests to observe a freshly-detected platform.
|
|
5
|
-
*/
|
|
1
|
+
// Result is cached after the first call; tests can call __resetPlatformCache.
|
|
6
2
|
let cached = null;
|
|
7
3
|
export function detectPlatform() {
|
|
8
4
|
if (cached)
|
|
@@ -31,7 +27,7 @@ function computePlatform() {
|
|
|
31
27
|
return 'browser';
|
|
32
28
|
return 'unknown';
|
|
33
29
|
}
|
|
34
|
-
|
|
30
|
+
// Test-only.
|
|
35
31
|
export function __resetPlatformCache() {
|
|
36
32
|
cached = null;
|
|
37
33
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"platform.js","sourceRoot":"","sources":["../../../src/lib/crypto/platform.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"platform.js","sourceRoot":"","sources":["../../../src/lib/crypto/platform.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAW9E,IAAI,MAAM,GAAoB,IAAI,CAAC;AAEnC,MAAM,UAAU,cAAc;IAC5B,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAC1B,MAAM,GAAG,eAAe,EAAE,CAAC;IAC3B,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,eAAe;IACtB,MAAM,CAAC,GAAG,UAAqC,CAAC;IAEhD,MAAM,SAAS,GAAG,CAAC,CAAC,WAAW,CAAqC,CAAC;IACrE,IAAI,SAAS,EAAE,OAAO,KAAK,aAAa;QAAE,OAAO,cAAc,CAAC;IAEhE,IAAI,OAAO,OAAO,KAAK,WAAW,EAAE,CAAC;QACnC,MAAM,IAAI,GAAI,OAA6B,CAAC,IAAI,CAAC;QACjD,IAAI,IAAI,KAAK,UAAU;YAAE,OAAO,mBAAmB,CAAC;QACpD,IAAI,IAAI,KAAK,SAAS;YAAE,OAAO,eAAe,CAAC;IACjD,CAAC;IAED,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAA4C,CAAC;IACxE,IAAI,UAAU,IAAI,OAAO,UAAU,CAAC,aAAa,KAAK,UAAU;QAAE,OAAO,QAAQ,CAAC;IAElF,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,QAAQ,EAAE,IAAI;QAAE,OAAO,MAAM,CAAC;IAE5E,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,SAAS,IAAI,CAAC,CAAC,UAAU,CAAC,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAE/E,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,aAAa;AACb,MAAM,UAAU,oBAAoB;IAClC,MAAM,GAAG,IAAI,CAAC;AAChB,CAAC"}
|
|
@@ -1,33 +1,10 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Ed25519 scalar arithmetic for atomic-swap key combination.
|
|
3
|
-
*
|
|
4
|
-
* All Monero scalars are encoded little-endian per the protocol spec; Bitcoin
|
|
5
|
-
* sighash machinery is big-endian. Each function names its endianness.
|
|
6
|
-
*/
|
|
7
|
-
/** Ed25519 scalar-field prime (2^252 + 27742317777372353535851937790883648493). */
|
|
8
1
|
export declare const ED25519_GROUP_ORDER: bigint;
|
|
9
|
-
/**
|
|
10
|
-
* Decode a byte sequence as a little-endian bigint (byte[0] is the
|
|
11
|
-
* least-significant byte). This is the Monero / ed25519 convention.
|
|
12
|
-
*/
|
|
13
2
|
export declare function bytesToBigIntLE(bytes: Uint8Array): bigint;
|
|
14
|
-
/**
|
|
15
|
-
* Decode a byte sequence as a big-endian bigint (byte[0] is the
|
|
16
|
-
* most-significant byte). This is the Bitcoin sighash convention.
|
|
17
|
-
*/
|
|
18
3
|
export declare function bytesToBigIntBE(bytes: Uint8Array): bigint;
|
|
19
|
-
/**
|
|
20
|
-
* Back-compat alias for `bytesToBigIntLE`. Every call site should prefer the
|
|
21
|
-
* endian-suffixed variant so the byte order is visible at the call site.
|
|
22
|
-
*/
|
|
23
4
|
export declare function bytesToBigInt(bytes: Uint8Array): bigint;
|
|
24
|
-
/** Encode a non-negative bigint as a 32-byte little-endian buffer, reduced mod L. */
|
|
25
5
|
export declare function bigIntToBytes(num: bigint): Uint8Array;
|
|
26
|
-
/** Decode a hex-encoded little-endian scalar and reduce it mod L. */
|
|
27
6
|
export declare function hexToScalarLE(hex: string): bigint;
|
|
28
|
-
/** Sum two 32-byte little-endian scalars mod L, returning a 32-byte LE buffer. */
|
|
29
7
|
export declare function addScalars(a: Uint8Array, b: Uint8Array): Uint8Array;
|
|
30
|
-
/** Back-compat hex/byte helpers used by older call sites. */
|
|
31
8
|
export declare function bytesToHex(bytes: Uint8Array): string;
|
|
32
9
|
export declare function hexToBytes(hex: string): Uint8Array;
|
|
33
10
|
//# sourceMappingURL=scalars.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scalars.d.ts","sourceRoot":"","sources":["../../../src/lib/crypto/scalars.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"scalars.d.ts","sourceRoot":"","sources":["../../../src/lib/crypto/scalars.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,mBAAmB,QACkC,CAAC;AAGnE,wBAAgB,eAAe,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAQzD;AAGD,wBAAgB,eAAe,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAMzD;AAGD,wBAAgB,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAEvD;AAGD,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAQrD;AAGD,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAIjD;AAGD,wBAAgB,UAAU,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,GAAG,UAAU,CAEnE;AAgBD,wBAAgB,UAAU,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAEpD;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAElD"}
|
|
@@ -1,15 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
* All Monero scalars are encoded little-endian per the protocol spec; Bitcoin
|
|
5
|
-
* sighash machinery is big-endian. Each function names its endianness.
|
|
6
|
-
*/
|
|
7
|
-
/** Ed25519 scalar-field prime (2^252 + 27742317777372353535851937790883648493). */
|
|
1
|
+
// Monero scalars are little-endian; Bitcoin sighash is big-endian. Each
|
|
2
|
+
// function names its endianness explicitly.
|
|
3
|
+
// 2^252 + 27_742_317_777_372_353_535_851_937_790_883_648_493.
|
|
8
4
|
export const ED25519_GROUP_ORDER = 2n ** 252n + 27742317777372353535851937790883648493n;
|
|
9
|
-
|
|
10
|
-
* Decode a byte sequence as a little-endian bigint (byte[0] is the
|
|
11
|
-
* least-significant byte). This is the Monero / ed25519 convention.
|
|
12
|
-
*/
|
|
5
|
+
// Monero / ed25519: byte[0] is least-significant.
|
|
13
6
|
export function bytesToBigIntLE(bytes) {
|
|
14
7
|
let result = 0n;
|
|
15
8
|
for (let i = bytes.length - 1; i >= 0; i--) {
|
|
@@ -20,10 +13,7 @@ export function bytesToBigIntLE(bytes) {
|
|
|
20
13
|
}
|
|
21
14
|
return result;
|
|
22
15
|
}
|
|
23
|
-
|
|
24
|
-
* Decode a byte sequence as a big-endian bigint (byte[0] is the
|
|
25
|
-
* most-significant byte). This is the Bitcoin sighash convention.
|
|
26
|
-
*/
|
|
16
|
+
// Bitcoin sighash: byte[0] is most-significant.
|
|
27
17
|
export function bytesToBigIntBE(bytes) {
|
|
28
18
|
let result = 0n;
|
|
29
19
|
for (const b of bytes) {
|
|
@@ -31,14 +21,11 @@ export function bytesToBigIntBE(bytes) {
|
|
|
31
21
|
}
|
|
32
22
|
return result;
|
|
33
23
|
}
|
|
34
|
-
|
|
35
|
-
* Back-compat alias for `bytesToBigIntLE`. Every call site should prefer the
|
|
36
|
-
* endian-suffixed variant so the byte order is visible at the call site.
|
|
37
|
-
*/
|
|
24
|
+
// Back-compat alias. New call sites: prefer bytesToBigIntLE.
|
|
38
25
|
export function bytesToBigInt(bytes) {
|
|
39
26
|
return bytesToBigIntLE(bytes);
|
|
40
27
|
}
|
|
41
|
-
|
|
28
|
+
// 32B LE, reduced mod L.
|
|
42
29
|
export function bigIntToBytes(num) {
|
|
43
30
|
const bytes = new Uint8Array(32);
|
|
44
31
|
let n = ((num % ED25519_GROUP_ORDER) + ED25519_GROUP_ORDER) % ED25519_GROUP_ORDER;
|
|
@@ -48,13 +35,13 @@ export function bigIntToBytes(num) {
|
|
|
48
35
|
}
|
|
49
36
|
return bytes;
|
|
50
37
|
}
|
|
51
|
-
|
|
38
|
+
// Decode hex LE scalar, reduce mod L.
|
|
52
39
|
export function hexToScalarLE(hex) {
|
|
53
40
|
const bytes = hexToBytesLocal(hex);
|
|
54
41
|
const raw = bytesToBigIntLE(bytes);
|
|
55
42
|
return ((raw % ED25519_GROUP_ORDER) + ED25519_GROUP_ORDER) % ED25519_GROUP_ORDER;
|
|
56
43
|
}
|
|
57
|
-
|
|
44
|
+
// Sum two 32B LE scalars mod L; returns 32B LE.
|
|
58
45
|
export function addScalars(a, b) {
|
|
59
46
|
return bigIntToBytes((bytesToBigIntLE(a) + bytesToBigIntLE(b)) % ED25519_GROUP_ORDER);
|
|
60
47
|
}
|
|
@@ -71,7 +58,7 @@ function hexToBytesLocal(hex) {
|
|
|
71
58
|
}
|
|
72
59
|
return out;
|
|
73
60
|
}
|
|
74
|
-
|
|
61
|
+
// Back-compat hex/byte helpers for older call sites.
|
|
75
62
|
export function bytesToHex(bytes) {
|
|
76
63
|
return Array.from(bytes, (b) => b.toString(16).padStart(2, '0')).join('');
|
|
77
64
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scalars.js","sourceRoot":"","sources":["../../../src/lib/crypto/scalars.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"scalars.js","sourceRoot":"","sources":["../../../src/lib/crypto/scalars.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,4CAA4C;AAE5C,8DAA8D;AAC9D,MAAM,CAAC,MAAM,mBAAmB,GAC9B,EAAE,IAAI,IAAI,GAAG,uCAAmD,CAAC;AAEnE,kDAAkD;AAClD,MAAM,UAAU,eAAe,CAAC,KAAiB;IAC/C,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3C,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACnB,IAAI,CAAC,KAAK,SAAS;YAAE,SAAS;QAC9B,MAAM,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACtC,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,gDAAgD;AAChD,MAAM,UAAU,eAAe,CAAC,KAAiB;IAC/C,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,MAAM,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACtC,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,6DAA6D;AAC7D,MAAM,UAAU,aAAa,CAAC,KAAiB;IAC7C,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;AAChC,CAAC;AAED,yBAAyB;AACzB,MAAM,UAAU,aAAa,CAAC,GAAW;IACvC,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;IACjC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,mBAAmB,CAAC,GAAG,mBAAmB,CAAC,GAAG,mBAAmB,CAAC;IAClF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;QAC7B,CAAC,KAAK,EAAE,CAAC;IACX,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,sCAAsC;AACtC,MAAM,UAAU,aAAa,CAAC,GAAW;IACvC,MAAM,KAAK,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;IACnC,MAAM,GAAG,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;IACnC,OAAO,CAAC,CAAC,GAAG,GAAG,mBAAmB,CAAC,GAAG,mBAAmB,CAAC,GAAG,mBAAmB,CAAC;AACnF,CAAC;AAED,gDAAgD;AAChD,MAAM,UAAU,UAAU,CAAC,CAAa,EAAE,CAAa;IACrD,OAAO,aAAa,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,GAAG,mBAAmB,CAAC,CAAC;AACxF,CAAC;AAED,SAAS,eAAe,CAAC,GAAW;IAClC,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACnD,CAAC;IACD,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC3C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC9D,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QACtE,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAChB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,qDAAqD;AACrD,MAAM,UAAU,UAAU,CAAC,KAAiB;IAC1C,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC5E,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,GAAW;IACpC,OAAO,eAAe,CAAC,GAAG,CAAC,CAAC;AAC9B,CAAC"}
|
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Shape of the compiled miradex-rust module after `init()` runs.
|
|
3
|
-
* Mirrors #[wasm_bindgen] exports in ../../../miradex-rust/src/lib.rs.
|
|
4
|
-
*/
|
|
5
1
|
export interface WasmModule {
|
|
6
2
|
readonly generate_client_keys: () => string;
|
|
7
3
|
readonly generate_client_keys_from_seed: (s_b_hex: string, v_b_hex: string, b_hex: string) => string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/crypto/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/crypto/types.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,UAAU;IAEzB,QAAQ,CAAC,oBAAoB,EAAE,MAAM,MAAM,CAAC;IAC5C,QAAQ,CAAC,8BAA8B,EAAE,CACvC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,KACV,MAAM,CAAC;IACZ,QAAQ,CAAC,iBAAiB,EAAE,CAC1B,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,KACd,OAAO,CAAC;IAGb,QAAQ,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,MAAM,CAAC;IACpE,QAAQ,CAAC,cAAc,EAAE,CACvB,KAAK,EAAE,MAAM,EACb,kBAAkB,EAAE,MAAM,EAC1B,UAAU,EAAE,MAAM,KACf,MAAM,CAAC;IACZ,QAAQ,CAAC,iBAAiB,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,MAAM,CAAC;IAC/E,QAAQ,CAAC,aAAa,EAAE,CACtB,oBAAoB,EAAE,MAAM,EAC5B,kBAAkB,EAAE,MAAM,EAC1B,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,KACf,OAAO,CAAC;IACb,QAAQ,CAAC,sBAAsB,EAAE,CAC/B,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,kBAAkB,EAAE,MAAM,KACvB,MAAM,CAAC;IAGZ,QAAQ,CAAC,iBAAiB,EAAE,CAC1B,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,MAAM,KAClB,MAAM,CAAC;IACZ,QAAQ,CAAC,aAAa,EAAE,CACtB,iBAAiB,EAAE,MAAM,EACzB,4BAA4B,EAAE,MAAM,EACpC,SAAS,EAAE,MAAM,KACd,MAAM,CAAC;IACZ,QAAQ,CAAC,aAAa,EAAE,CACtB,sBAAsB,EAAE,MAAM,EAC9B,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,MAAM,KACjB,MAAM,CAAC;IACZ,QAAQ,CAAC,uBAAuB,EAAE,CAChC,YAAY,EAAE,MAAM,EACpB,iBAAiB,EAAE,MAAM,EACzB,YAAY,EAAE,MAAM,KACjB,MAAM,CAAC;IACZ,QAAQ,CAAC,iBAAiB,EAAE,CAC1B,YAAY,EAAE,MAAM,EACpB,iBAAiB,EAAE,MAAM,EACzB,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,EACd,uBAAuB,EAAE,MAAM,KAC5B,OAAO,CAAC;IACb,QAAQ,CAAC,cAAc,EAAE,CACvB,YAAY,EAAE,MAAM,EACpB,iBAAiB,EAAE,MAAM,EACzB,YAAY,EAAE,MAAM,EACpB,oBAAoB,EAAE,MAAM,KACzB,MAAM,CAAC;IAGZ,QAAQ,CAAC,2BAA2B,EAAE,CAAC,eAAe,EAAE,MAAM,KAAK,MAAM,CAAC;IAC1E,QAAQ,CAAC,kBAAkB,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,KAAK,MAAM,CAAC;IAGpF,QAAQ,CAAC,OAAO,EAAE,MAAM,MAAM,CAAC;CAChC"}
|
|
@@ -1,30 +1,8 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Unified WASM loader + synchronous crypto wrappers.
|
|
3
|
-
*
|
|
4
|
-
* Callers invoke `await ensureWasm()` once (typically at the entry of an
|
|
5
|
-
* atomic-swap flow) and then call the synchronous wrappers afterwards.
|
|
6
|
-
* Thorchain, Chainflip, and NEAR-Intents verification paths never call this
|
|
7
|
-
* file, so the WASM binary is never loaded when those providers are used.
|
|
8
|
-
*/
|
|
9
1
|
import type { WasmModule } from './types.js';
|
|
10
2
|
import type { ClientKeys } from '../../types/index.js';
|
|
11
3
|
export interface EnsureWasmOptions {
|
|
12
|
-
/**
|
|
13
|
-
* When true, hash the loaded bytes and compare to SWAP_WASM_SHA256.
|
|
14
|
-
* When undefined, falls back to process.env.MIRADEX_VERIFY_WASM === '1'.
|
|
15
|
-
* Default: unverified (matches today's keygen-wasm behaviour).
|
|
16
|
-
*/
|
|
17
4
|
readonly verifyIntegrity?: boolean;
|
|
18
|
-
/**
|
|
19
|
-
* Custom byte reader — used when the default platform reader cannot locate
|
|
20
|
-
* the binary (e.g., browser with a non-default asset path).
|
|
21
|
-
* Ignored if `overrideBytes` is provided.
|
|
22
|
-
*/
|
|
23
5
|
readonly loadBytes?: () => Promise<Uint8Array>;
|
|
24
|
-
/**
|
|
25
|
-
* Pre-loaded bytes. Required on React Native. When provided, no byte
|
|
26
|
-
* reader runs; integrity still runs if `verifyIntegrity` is true.
|
|
27
|
-
*/
|
|
28
6
|
readonly overrideBytes?: Uint8Array;
|
|
29
7
|
}
|
|
30
8
|
export declare function ensureWasm(options?: EnsureWasmOptions): Promise<void>;
|
|
@@ -46,6 +24,5 @@ export declare function verifyCommitment(viewKeyHex: string, txPublicKeyHex: str
|
|
|
46
24
|
export declare function decryptAmount(viewKeyHex: string, txPublicKeyHex: string, outputIndex: number, encryptedAmountHex: string): bigint;
|
|
47
25
|
export declare function secp256k1ScalarToEd25519(secpScalarHex: string): string;
|
|
48
26
|
export declare function ed25519ScalarAdd(scalarAHex: string, scalarBHex: string): string;
|
|
49
|
-
/** Test-only: reset the cache so successive tests can re-init the module. */
|
|
50
27
|
export declare function __resetWasmCache(): void;
|
|
51
28
|
//# sourceMappingURL=wasm.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wasm.d.ts","sourceRoot":"","sources":["../../../src/lib/crypto/wasm.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"wasm.d.ts","sourceRoot":"","sources":["../../../src/lib/crypto/wasm.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAKvD,MAAM,WAAW,iBAAiB;IAGhC,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;IAGnC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC;IAE/C,QAAQ,CAAC,aAAa,CAAC,EAAE,UAAU,CAAC;CACrC;AAED,wBAAsB,UAAU,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsC3E;AA6FD,wBAAgB,iBAAiB,IAAI,OAAO,CAE3C;AACD,wBAAgB,UAAU,CAAC,GAAG,EAAE,UAAU,GAAG,IAAI,CAEhD;AAyBD,wBAAgB,kBAAkB,IAAI,UAAU,CAE/C;AAED,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,GACX,UAAU,CAEZ;AAED,wBAAgB,eAAe,CAC7B,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GACf,OAAO,CAET;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAElE;AAED,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,gBAAgB,EAAE,MAAM,EACxB,SAAS,EAAE,MAAM,GAChB,MAAM,CAER;AAED,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAE7E;AAED,wBAAgB,YAAY,CAC1B,kBAAkB,EAAE,MAAM,EAC1B,gBAAgB,EAAE,MAAM,EACxB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAChB,OAAO,CAET;AAED,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,gBAAgB,EAAE,MAAM,GACvB,MAAM,CAER;AAED,wBAAgB,eAAe,CAC7B,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,GAClB,MAAM,CAER;AAED,wBAAgB,YAAY,CAC1B,eAAe,EAAE,MAAM,EACvB,gBAAgB,EAAE,MAAM,EACxB,QAAQ,EAAE,MAAM,GACf,MAAM,CAER;AAED,wBAAgB,WAAW,CACzB,oBAAoB,EAAE,MAAM,EAC5B,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,GACjB,MAAM,CAER;AAED,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,MAAM,EACtB,WAAW,EAAE,MAAM,GAClB,MAAM,CAER;AAED,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,MAAM,EACtB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,oBAAoB,EAAE,MAAM,GAC3B,OAAO,CAQT;AAED,wBAAgB,aAAa,CAC3B,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,MAAM,EACtB,WAAW,EAAE,MAAM,EACnB,kBAAkB,EAAE,MAAM,GACzB,MAAM,CAOR;AAED,wBAAgB,wBAAwB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAEtE;AAED,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAE/E;AAGD,wBAAgB,gBAAgB,IAAI,IAAI,CAGvC"}
|
package/dist/lib/crypto/wasm.js
CHANGED
|
@@ -1,11 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
* Callers invoke `await ensureWasm()` once (typically at the entry of an
|
|
5
|
-
* atomic-swap flow) and then call the synchronous wrappers afterwards.
|
|
6
|
-
* Thorchain, Chainflip, and NEAR-Intents verification paths never call this
|
|
7
|
-
* file, so the WASM binary is never loaded when those providers are used.
|
|
8
|
-
*/
|
|
1
|
+
// `await ensureWasm()` once at the entry of an atomic-swap flow, then call
|
|
2
|
+
// the sync wrappers below. Thorchain / Chainflip / NEAR-Intents verification
|
|
3
|
+
// never touches this file, so non-atomicswap providers don't load the binary.
|
|
9
4
|
import { z } from 'zod';
|
|
10
5
|
import { detectPlatform } from './platform.js';
|
|
11
6
|
import { WasmError } from './errors.js';
|
|
@@ -107,23 +102,21 @@ async function verifyIntegrity(bytes) {
|
|
|
107
102
|
}
|
|
108
103
|
}
|
|
109
104
|
async function instantiate(bytes) {
|
|
110
|
-
// Relative import
|
|
111
|
-
// wasm/miradex-rust/. A separate
|
|
112
|
-
//
|
|
113
|
-
// the consumer instead of the package, breaking installs in workspaces.
|
|
105
|
+
// Relative import: wasm ships inside this package's tarball under
|
|
106
|
+
// wasm/miradex-rust/. A separate npm package would need a file: dep that
|
|
107
|
+
// pnpm resolves relative to the consumer, breaking workspace installs.
|
|
114
108
|
const wasmBindgen = (await import('../../../wasm/miradex-rust/miradex_rust.js'));
|
|
115
109
|
await wasmBindgen.default({ module_or_path: bytes });
|
|
116
110
|
return wasmBindgen;
|
|
117
111
|
}
|
|
118
|
-
//
|
|
119
|
-
// production code only ever reaches the cache through `ensureWasm`.
|
|
112
|
+
// initKeygen is the testing seam; production code reaches the cache via ensureWasm.
|
|
120
113
|
export function isKeygenAvailable() {
|
|
121
114
|
return cached !== null;
|
|
122
115
|
}
|
|
123
116
|
export function initKeygen(mod) {
|
|
124
117
|
cached = mod;
|
|
125
118
|
}
|
|
126
|
-
//
|
|
119
|
+
// Sync wrappers below: callers must await ensureWasm() first.
|
|
127
120
|
const ClientKeysSchema = z.object({
|
|
128
121
|
s_b_bitcoin: z.string(),
|
|
129
122
|
s_b_monero: z.string(),
|
|
@@ -188,7 +181,7 @@ export function secp256k1ScalarToEd25519(secpScalarHex) {
|
|
|
188
181
|
export function ed25519ScalarAdd(scalarAHex, scalarBHex) {
|
|
189
182
|
return getModule().ed25519_scalar_add(scalarAHex, scalarBHex);
|
|
190
183
|
}
|
|
191
|
-
|
|
184
|
+
// Test-only.
|
|
192
185
|
export function __resetWasmCache() {
|
|
193
186
|
cached = null;
|
|
194
187
|
initInFlight = null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wasm.js","sourceRoot":"","sources":["../../../src/lib/crypto/wasm.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"wasm.js","sourceRoot":"","sources":["../../../src/lib/crypto/wasm.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Centralized default configuration values.
|
|
3
|
-
*
|
|
4
|
-
* Every hardcoded default used across the codebase lives here.
|
|
5
|
-
* Individual modules import what they need — no magic strings scattered
|
|
6
|
-
* across files. When adding new infrastructure defaults, put them here.
|
|
7
|
-
*/
|
|
8
1
|
export declare const API_URL = "http://127.0.0.1:7001/";
|
|
9
2
|
export declare const API_TOR_URL = "http://miradextor.onion:7001";
|
|
10
3
|
export declare const API_TIMEOUT_MS = 30000;
|
|
@@ -23,7 +16,6 @@ export interface ElectrumServerEntry {
|
|
|
23
16
|
export declare const ELECTRUM_PRIMARY_URL = "ssl://electrum.blockstream.info:50002";
|
|
24
17
|
/** Testnet Electrum server URL. */
|
|
25
18
|
export declare const ELECTRUM_TESTNET_URL = "ssl://electrum.blockstream.info:60002";
|
|
26
|
-
/** Resolve the correct Electrum server URL for a given network. */
|
|
27
19
|
export declare function electrumUrlForNetwork(configuredUrl: string, network: 'mainnet' | 'testnet' | 'regtest'): string;
|
|
28
20
|
/** Ordered list of Electrum servers. First entry is the primary. */
|
|
29
21
|
export declare const ELECTRUM_SERVERS: readonly ElectrumServerEntry[];
|
|
@@ -31,66 +23,16 @@ export declare const ELECTRUM_CONNECT_TIMEOUT_MS = 8000;
|
|
|
31
23
|
export declare const ELECTRUM_REQUEST_TIMEOUT_MS = 10000;
|
|
32
24
|
/** Chain the node list applies to. */
|
|
33
25
|
export type DefaultNodeBlockchain = 'bitcoin' | 'monero';
|
|
34
|
-
/**
|
|
35
|
-
* Curated Monero mainnet RPC endpoints. Browser-hit directly (no proxy)
|
|
36
|
-
* by design — for real-money swaps the client must not trust a single
|
|
37
|
-
* server-side proxy. Every entry below was probed (2026-05) and confirmed
|
|
38
|
-
* to:
|
|
39
|
-
* - return `Access-Control-Allow-Origin: *` (browser-fetchable),
|
|
40
|
-
* - serve `nettype=mainnet`,
|
|
41
|
-
* - present a valid TLS chain.
|
|
42
|
-
*
|
|
43
|
-
* Mainnet stays out of the crypto-server proxy on purpose — see
|
|
44
|
-
* `apps/crypto-server/src/swap/routes/monero-proxy.routes.ts`. Only
|
|
45
|
-
* stagenet/testnet runs through the proxy because there's no real-money
|
|
46
|
-
* trust to preserve in test flows.
|
|
47
|
-
*/
|
|
48
26
|
export declare const MONERO_MAINNET_NODES: readonly string[];
|
|
49
|
-
/**
|
|
50
|
-
* Curated Monero stagenet RPC endpoints. Stagenet is Monero's public test
|
|
51
|
-
* network (the Monero analogue of Bitcoin testnet).
|
|
52
|
-
*/
|
|
53
27
|
export declare const MONERO_STAGENET_NODES: readonly string[];
|
|
54
|
-
/**
|
|
55
|
-
* Default node URLs per network per chain. URLs use the `scheme://host:port`
|
|
56
|
-
* form that Electrum / monerod clients accept directly. For Monero, the
|
|
57
|
-
* `testnet` key holds stagenet endpoints (Monero has no parallel-to-Bitcoin
|
|
58
|
-
* 'testnet' notion — the closest public net is stagenet).
|
|
59
|
-
*/
|
|
60
28
|
export declare const DEFAULT_NODES: Readonly<Record<'mainnet' | 'testnet' | 'regtest', Readonly<Record<DefaultNodeBlockchain, readonly string[]>>>>;
|
|
61
29
|
export declare const MEMPOOL_API = "https://mempool.space/api";
|
|
62
30
|
export declare const MEMPOOL_TESTNET_API = "https://mempool.space/testnet/api";
|
|
63
|
-
/** Estimated vbytes for a 1-input P2WPKH → 1-output P2WSH transaction.
|
|
64
|
-
* Header(10.5) + P2WPKH input(68) + P2WSH output(43) ≈ 122 vbytes.
|
|
65
|
-
* Rounded up to 130 for safety margin (signature size variance). */
|
|
66
31
|
export declare const LOCK_TX_VBYTES = 130;
|
|
67
32
|
/** Fallback feerate when all fee sources are unreachable (sat/vbyte). */
|
|
68
33
|
export declare const FALLBACK_FEE_RATE = 10;
|
|
69
|
-
/**
|
|
70
|
-
* Minimum feerate for the funding tx (sat/vbyte). Bitcoin Core's default
|
|
71
|
-
* `minrelaytxfee` is 1.0, but many public and testnet nodes raise this to
|
|
72
|
-
* 1.5–3.0 sat/vB. Setting this floor below 3 produces sporadic
|
|
73
|
-
* "min relay fee not met" rejections that force a re-sign. 3 sat/vB covers
|
|
74
|
-
* every sane operator policy we've observed with negligible extra cost.
|
|
75
|
-
*/
|
|
76
34
|
export declare const MIN_FEE_RATE = 3;
|
|
77
|
-
/**
|
|
78
|
-
* Safety margin applied to the estimated feerate. Covers the race between
|
|
79
|
-
* estimate-at-deposit-time and broadcast-at-fund-time when mempool pressure
|
|
80
|
-
* changes. 1.25 = +25% headroom on top of the estimate.
|
|
81
|
-
*/
|
|
82
35
|
export declare const FEE_MARGIN_MULTIPLIER = 1.25;
|
|
83
|
-
/**
|
|
84
|
-
* Sanity ceilings on the broadcast feerate (sat/vbyte). Without this cap,
|
|
85
|
-
* a misbehaving fee oracle can drive the lock-tx fee above the deposit
|
|
86
|
-
* value itself. Testnet is especially prone: its mempool has no real
|
|
87
|
-
* fee market, electrum servers and mempool.space/testnet routinely
|
|
88
|
-
* return absurd `halfHourFee` values (we've seen >250 sat/vB on a chain
|
|
89
|
-
* where 1 sat/vB confirms in one block).
|
|
90
|
-
*
|
|
91
|
-
* Mainnet ceiling is set conservatively above historical peak conditions
|
|
92
|
-
* — it catches oracle bugs without gating real high-fee periods.
|
|
93
|
-
*/
|
|
94
36
|
export declare const MAX_FEE_RATE_MAINNET = 100;
|
|
95
37
|
export declare const MAX_FEE_RATE_TESTNET = 10;
|
|
96
38
|
export declare const DEPOSIT_POLL_MS = 5000;
|
|
@@ -101,7 +43,7 @@ export declare const SWEEP_POLL_MS = 30000;
|
|
|
101
43
|
export declare const SWEEP_TIMEOUT_MS = 3600000;
|
|
102
44
|
export declare const POW_MAX_RETRIES = 3;
|
|
103
45
|
export declare const POW_BACKOFF_MS = 2000;
|
|
104
|
-
export declare const DEFAULT_SLIPPAGE_BPS =
|
|
46
|
+
export declare const DEFAULT_SLIPPAGE_BPS = 300;
|
|
105
47
|
export declare const DEFAULT_MAX_DEVIATION_BPS = 300;
|
|
106
48
|
export declare const DEFAULT_FROM_TOKEN = "BTC";
|
|
107
49
|
export declare const DEFAULT_TO_TOKEN = "XMR";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"default-config.d.ts","sourceRoot":"","sources":["../../src/lib/default-config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"default-config.d.ts","sourceRoot":"","sources":["../../src/lib/default-config.ts"],"names":[],"mappings":"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"}
|