mirror of
https://github.com/luxfi/wallet.git
synced 2026-07-27 03:37:41 +00:00
TypeScript module under pkgs/wallet/src/features/wallet/pq/ that mirrors the PQAccount shape, the cSHAKE-256 AccountID derivation, the HD-path formatters, and the role/customization mappings defined on the Go side in github.com/luxfi/sdk/wallet/account. The TS side intentionally does NOT pull in an ML-DSA-65 implementation. ML-DSA itself is software-in-browser; the cost of bundling FIPS 204 is not worth paying for read-only consumers (UI list views, route handlers). Consumers that need to sign in-browser supply a concrete MLDSAProvider implementation (typically backed by @noble/post-quantum mlDsa65 or a hardware-wallet bridge). Browser keys are session-scoped; long-lived keys MUST live in a native wallet. Wire compatibility: AccountID KAT cross-checked against the Go side. For the canonical vector (chainID=9000, scheme=0x42, pubkey="test- pubkey-for-accountid-kat-vector-stable-across-runs") both implementations produce 76a03630148103ec558cf4d8f7e8a2d8766ea205d96a4529249c3aaf9c5d078cc9f9fdb8f21a5e7ef6bb4c4ea29c9654. Adds @noble/hashes ^1.7.1 to pkgs/wallet dependencies (already transitively present via @scure/bip32; declaration is for strict node_modules resolution). pnpm-lock.yaml refresh on next install. Patch-bump.