bip_utils

Generation of mnemonics, seeds, private/public keys and addresses for different types of cryptocurrencies

MIT License

Downloads
61.6K
Stars
267
Committers
7

Bot releases are visible (Hide)

bip_utils - Version 2.9.2 Latest Release

Published by ebellocchia 8 months ago

  • Fix dependencies depending on the Python version
  • Fix dependencies for Python 3.12
bip_utils - Version 2.9.1

Published by ebellocchia 9 months ago

  • Update dependencies for Python 3.12
bip_utils - Version 2.9.0

Published by ebellocchia 10 months ago

  • Add support for the following coins:
Coin Main net enum Test net enum
Arbitrum Bip44Coins.ARBITRUM -
Fetch.ai Bip44Coins.FETCH_AI -
Fetch.ai (Ethereum coin type) Bip44Coins.FETCH_AI_ETH -
Metis Bip44Coins.METIS -
Optimism Bip44Coins.OPTIMISM -
Sui Bip44Coins.SUI -
Stafi (Cosmos) Bip44Coins.STAFI -
  • Add Brainwallet module to create brainwallets with different algorithms (wallets whose passphrase is chosen by the user)
bip_utils - Version 2.8.0

Published by ebellocchia about 1 year ago

  • Fix coincurve version
  • Add support for Injective
bip_utils - Version 2.7.1

Published by ebellocchia over 1 year ago

  • Fix bug in Bitcoin Taproot address encoding, when the tweaked public key had leading zeros
bip_utils - Version 2.7.0

Published by ebellocchia about 2 years ago

  • Add support for Icon
  • Use pynacl library for Monero ed25519 arithmetics, speeding it up a lot (around 5 times faster on my machine)
bip_utils - Version 2.6.1

Published by ebellocchia about 2 years ago

  • Fix CIP1852 Cardano Icarus/Ledger extended key prefix
  • Fix Bip32ChainCode.Length and Bip32FingerPrint.Length methods that were conflicting with the base class method
  • Reformat files with isort
bip_utils - Version 2.6.0

Published by ebellocchia about 2 years ago

  • Add support for Cardano:

    • Cardano Byron legacy (old Daedalus addresses, i.e. Ddz...)
    • Cardano Byron-Icarus (Yoroi addresses in the Ae2... format)
    • Cardano Shelley (Yoroi addresses in the addr1... format)
  • Add support for Ergo (Bip44Coins.ERGO, Bip44Coins.ERGO_TESTNET)

  • Add ChainCode method to Bip32 and Bip44 key classes to quickly get it

  • Add PublicKey method to Bip44PrivateKey

  • Bip32Base class:

    • Add Curve method
    • Remove IsPrivateUnhardenedDerivationSupported method (same meaning of IsPublicDerivationSupported)
  • Bip32KeyIndex class:

    • Bip32Utils methods move to Bip32KeyIndex
    • Add Harden/Unharden methods to Bip32KeyIndex
  • DataBytes class:

    • Add possibility to get length (Length, Size, __len__)
    • Add possibility to check for equality (__eq__)
    • Add possibility to iterate over bytes (__iter__)
  • Add Curve method to Bip32PublicKey/Bip32PrivateKey classes

  • Add possibility to create a Bip32PublicKey class from an IPoint instance

  • Add CurveType method to IPoint classes

  • BIP32 classes were renamed in a consistent way:

    • Bip32Ed25519Slip -> Bip32Slip10Ed25519
    • Bip32Ed25519Blake2bSlip -> Bip32Slip10Ed25519Blake2b
    • Bip32Nist256p1 -> Bip32Slip10Nist256p1
    • Bip32Secp256k1 -> Bip32Slip10Secp256k1
    • Bip32Ed25519Kholaw -> Bip32KholawEd25519

    Old classes kept for compatibility

  • Update key net version to get xprv prefix for BIP32 Kholaw private extended keys

bip_utils - Version 2.5.1

Published by ebellocchia over 2 years ago

  • Fix public derivation for ElectrumV1 and ElectrumV2 classes
  • Check for master key object when constructing a ElectrumV2Base class
  • Add some utility methods to ElectrumV1 class (FromPrivateKey, FromPublicKey)
bip_utils - Version 2.5.0

Published by ebellocchia over 2 years ago

  • Add support for Electrum mnemonics and keys derivation (both v1 and v2)
  • Module for BIP32 keys serialization/deserialization available for external use
  • Add support for Axelar coin
  • Add support for uncompressed public keys to P2PKHAddrEncoder
  • Add support for SLIP-0032
  • Bip32Path can distinguish between absolute and relative paths
  • Bip32PathParser discards empty elements
  • Some rework on the bech32 and bip32_key_ser modules
bip_utils - Version 2.4.0

Published by ebellocchia over 2 years ago

  • Add local implementation of Substrate SCALE encoding (remove dependency from scalecodec)
  • Add support to BIP32-Ed25519 (Khovratovich/Law) derivation scheme
  • Bip32Base.FromPrivateKey and Bip32Base.FromPublicKey can now recover the full derivation data (if specified)
  • Bip44Base.FromPrivateKey can now recover the full derivation data (if specified)
  • Add Bip44Base.FromPublicKey method
  • Always use Cryptodome for RIPEMD160
bip_utils - Version 2.3.0

Published by ebellocchia over 2 years ago

  • Add support for Bitcoin Taproot addresses (P2TR)
  • Add support for BIP-0086
  • Add support for bech32m
  • Add support for Algorand 25-word mnemonic
  • Add support for Solana SPL token
  • P2WPKH decoding/encoding methods don't need anymore the witness version as parameter, since it's fixed to zero internally (it can still be passed without errors though, it's just ignored)
  • Use Cryptodome if ripemd160 and sha512_256 algorithms are not available in hashlib
  • Add documentation using sphinx
  • Some refactoring for mnemonic module
  • Breaking changes:
    • Mnemonic-specific checksum exceptions (i.e. Bip39ChecksumError and MoneroChecksumError) were replaced by the common MnemonicChecksumError
bip_utils - Version 2.2.1

Published by ebellocchia over 2 years ago

  • Exported some missing utility classes
bip_utils - Version 2.2.0

Published by ebellocchia over 2 years ago

  • Add support for the following coins: Akash Network, Certik, Near Protocol, Osmosis, Secret Network:
Coin Main net enum Test net enum
Akash Network Bip44Coins.AKASH_NETWORK -
Certik Bip44Coins.CERTIK -
Near Protocol Bip44Coins.NEAR_PROTOCOL -
Osmosis Bip44Coins.OSMOSIS -
Secret Network (old path) Bip44Coins.SECRET_NETWORK_OLD -
Secret Network (new path) Bip44Coins.SECRET_NETWORK_NEW -
  • Add possibility to decode and validate addresses. The old address classes are split into decoder/encoder classes to maintain the same design of the other decoding/encoding modules (e.g. AlgoAddrDecoder, AlgoAddrEncoder). The old address classes are kept for compatibility but they are just aliases for the correspondent encoder class (e.g. AlgoAddr -> AlgoAddrEncoder) .
  • Add support to BIP-0038 (with and without EC multiplication)
  • Some minor improvements and refactoring
bip_utils - Version 2.1.0

Published by ebellocchia almost 3 years ago

  • Add support for Celo, eCash and Bitcoin Cash Simple Ledger Protocol:
Coin Main net enum Test net enum
Bitcoin Cash SLP Bip44Coins.BITCOIN_CASH_SLP Bip44Coins.BITCOIN_CASH_SLP_TESTNET
Celo Bip44Coins.CELO -
eCash Bip44Coins.ECASH Bip44Coins.ECASH_TESTNET
Coin Main net enum Test net enum
Bitcoin Cash SLP Bip49Coins.BITCOIN_CASH_SLP Bip49Coins.BITCOIN_CASH_SLP_TESTNET
eCash Bip49Coins.ECASH Bip49Coins.ECASH_TESTNET
  • Add class BchAddrConverter for converting Bitcoin Cash addresses
  • Fix point from/to bytes conversion when using ecdsa < 0.17
bip_utils - Version 2.0.2

Published by ebellocchia almost 3 years ago

  • Add configuration files for flake8 and prospector
  • Fix all flake8 warnings
  • Fix the vast majority of prospector warnings
  • Remove all star imports (import *)
bip_utils - Version 2.0.1

Published by ebellocchia about 3 years ago

  • Fix setup.py so that it doesn't include the tests folder in the final distribution
bip_utils - Version 2.0.0

Published by ebellocchia about 3 years ago

  • 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
bip_utils - Version 1.11.1

Published by ebellocchia over 3 years ago

  • Add missing MANIFEST.in file, that was preventing the package to be installed from pip
bip_utils - Version 1.11.0

Published by ebellocchia over 3 years ago

  • Add new BIP-0039 languages:
Language Enum
Chinese (simplified) Bip39Languages.CHINESE_SIMPLIFIED
Chinese (traditional) Bip39Languages.CHINESE_TRADITIONAL
Korean Bip39Languages.KOREAN
  • Add support for the following coins:
Coin Main net enum
Polygon Bip44Coins.POLYGON
Fantom Opera Bip44Coins.FANTOM_OPERA
Harmony One (Metamask address) Bip44Coins.HARMONY_ONE_METAMASK
Harmony One (Ethereum address) Bip44Coins.HARMONY_ONE_ETH
Harmony One (Cosmos address) Bip44Coins.HARMONY_ONE_ATOM
Huobi Chain Bip44Coins.HUOBI_CHAIN
OKEx Chain (Ethereum address) Bip44Coins.OKEX_CHAIN_ETH
OKEx Chain (Cosmos address) Bip44Coins.OKEX_CHAIN_ATOM
OKEx Chain (Old Cosmos address before mainnet upgrade) Bip44Coins.OKEX_CHAIN_ATOM_OLD