- Lots of improvements and new features:
- Add implementation of SLIP-0010
- Add support for nist256p1, ed25519, ed25519-blake2b and sr25519 curves
- Add support for new coins based on the new curves (see below)
- Add support for Substrate (Polkadot ecosystem) keys derivation and addresses generation
- Add support for Monero mnemonic generation and validation
- Add support for Monero keys derivation and addresses/subaddresses generation
- Usage of *coincurve* library for secp256k1 curve (still possible to use *ecdsa*, anyway)
- Better usage of private and public keys:
- Improved and more complete class hierarchy and design
- Easier construction (from bytes, from point, from object)
- Possibility to pass as argument the key object in addition to key raw bytes (e.g. to methods of Bip and address classes)
- Keys validation
- Possibility to use both compressed/uncompressed public keys without the need of converting
- General code refactoring and re-design to keep everything neat and tidy
- New supported coins:
- BIP44 coins:
- Algorand
- Elrond
- Filecoin
- Kusama (based on BIP44 and ed25519 SLIP-0010, like TrustWallet, it won't generate the same addresses of Polkadot-JS)
- Monero (based on BIP44 and secp256k1 or ed25519 SLIP-0010, it won't generate the same addresses of the official wallets but it supports subaddresses generation)
- Nano
- NEO
- Ontology
- Polkadot (based on BIP44 and ed25519 SLIP-0010, like TrustWallet, it won't generate the same addresses of Polkadot-JS)
- Solana
- Stellar
- Tezos
- Theta Network
- Zilliqa
- Substrate coins (based on the official wallet, e.g. Polkadot-JS):
- Acala
- Bifrost
- Chainx
- Edgeware
- Karura
- Kusama
- Moonbeam
- Moonriver
- Phala Network
- Plasm Network
- Sora
- Stafi
- Polkadot
- Generic Substrate coin
- Monero (based on the official wallet)
- **Breaking changes**:
- `Bip32` class does not exist anymore. It has been replaced by different classes depending on the underlying elliptic curve: `Bip32Ed25519Slip`, `Bip32Ed25519Blake2bSlip`, `Bip32Nist256p1`, `Bip32Secp256k1`
- `Bip49` and `Bip84` now have their own coin types: `Bip49Coins` and `Bip84Coins`
- `Bip39MnemonicValidator.GetEntropy` method has been replaced by `Bip39MnemonicDecoder.Decode` method
- The mnemonic in `Bip39MnemonicValidator` class is passed as argument to the methods instead of the constructor (e.g. `Bip39MnemonicValidator(mnemonic).IsValid()` -> `Bip39MnemonicValidator().IsValid(mnemonic)`)
- `P2PKH, P2SH and P2WPKH` address classes now have an "Addr" suffix (i.e. `P2PKHAddr, P2SHAddr and P2WPKHAddr`, same for BCH versions)
- In address classes, the `ToAddress` method now is called `EncodeKey` (e.g. `EthAddr.ToAddress` -> `EthAddr.EncodeKey`) and the additional parameters shall be explicitly named
- `AtomBech32Decoder`/`AtomBech32Encoder` is now simply called `Bech32Decoder`/`Bech32Encoder`
- `P2PKHAddr`/`P2SHAddr`/`P2WPKHAddr` classes do not have anymore Bitcoin net versions as default parameter