createFromUri now derives ML-DSA pairs from the mnemonic along a hardened BIP44 path rather than from a seed along a junction chain. Lattice keys have no public derivability, so there is no soft junction to emulate and the chain's own Pair::derive refuses for the same reason. The path is m/44'/189189'/<account>'/0'/<0 for 87 | 1 for 65>'. Two things about it are unusual and both are deliberate: the account index sits at the third level rather than the last, and the trailing index carries the scheme rather than an address index. It is what quantus-cli and the mobile wallet already derive, so anything else produces addresses no other Quantus tool can find. The ML-DSA branch sits before the existing seeding, not after, because that seeding is the wrong one for us. mnemonicToMiniSecret is Substrate's variant and the default reach in this file; using it here yields a perfectly well-formed key for an account nobody owns. We need the 64-byte BIP39 seed and the HMAC-SHA512 chain keyed with "Dilithium seed", which is what the hdwallet crate does. Accepted suri forms are nothing (account 0, matching quantus-cli's default), //<n> for an account index, and //m/44'/… for a full path. Everything else throws. That matters more than it looks: the syntax was built for curve junctions, where /foo is soft and //foo hard over arbitrary bytes, and quietly reinterpreting //Alice as something would hand back an address no other tool derives and no seed phrase obviously recovers. A raw hex seed is taken undederived — that is how the dev-genesis accounts are defined — and combining one with a derivation path is refused rather than guessed, since whether such a seed is the master or already derived is unanswerable. pair.derive() refuses with its own message. Not "not implemented" but not possible: a child would have to come from this pair's key material, and ML-DSA keys are not derivable from one another at all. The caller needs the mnemonic, so the error says so rather than being generically unhelpful. Verified against quantus-cli for both schemes from the public Substrate dev phrase, plus index separation, explicit paths agreeing with indices, passphrase sensitivity, and every refusal. Refs quantus/common#4 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012uDUodEcRbBwNRi3UCmw8f
@polkadot/keyring
Key management of user accounts including generation and retrieval of keyring pairs from a variety of input combinations.
Usage
Installation -
yarn add @polkadot/keyring
Classes and Functions can be imported as follows:
import Keyring from '@polkadot/keyring';