bitmart 0.0.116__py3-none-any.whl
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.
- bitmart/__init__.py +7 -0
- bitmart/ccxt/__init__.py +102 -0
- bitmart/ccxt/abstract/bitmart.py +117 -0
- bitmart/ccxt/async_support/__init__.py +81 -0
- bitmart/ccxt/async_support/base/__init__.py +1 -0
- bitmart/ccxt/async_support/base/exchange.py +2315 -0
- bitmart/ccxt/async_support/base/throttler.py +88 -0
- bitmart/ccxt/async_support/base/ws/__init__.py +38 -0
- bitmart/ccxt/async_support/base/ws/cache.py +219 -0
- bitmart/ccxt/async_support/base/ws/client.py +350 -0
- bitmart/ccxt/async_support/base/ws/functions.py +59 -0
- bitmart/ccxt/async_support/base/ws/future.py +46 -0
- bitmart/ccxt/async_support/base/ws/order_book.py +78 -0
- bitmart/ccxt/async_support/base/ws/order_book_side.py +174 -0
- bitmart/ccxt/async_support/bitmart.py +5361 -0
- bitmart/ccxt/base/__init__.py +27 -0
- bitmart/ccxt/base/decimal_to_precision.py +178 -0
- bitmart/ccxt/base/errors.py +273 -0
- bitmart/ccxt/base/exchange.py +7642 -0
- bitmart/ccxt/base/precise.py +297 -0
- bitmart/ccxt/base/types.py +619 -0
- bitmart/ccxt/bitmart.py +5361 -0
- bitmart/ccxt/pro/__init__.py +66 -0
- bitmart/ccxt/pro/bitmart.py +1917 -0
- bitmart/ccxt/static_dependencies/README.md +1 -0
- bitmart/ccxt/static_dependencies/__init__.py +1 -0
- bitmart/ccxt/static_dependencies/bip/__init__.py +6 -0
- bitmart/ccxt/static_dependencies/bip/addr/P2PKH_addr.py +205 -0
- bitmart/ccxt/static_dependencies/bip/addr/__init__.py +5 -0
- bitmart/ccxt/static_dependencies/bip/addr/addr_dec_utils.py +125 -0
- bitmart/ccxt/static_dependencies/bip/addr/addr_key_validator.py +162 -0
- bitmart/ccxt/static_dependencies/bip/addr/iaddr_decoder.py +48 -0
- bitmart/ccxt/static_dependencies/bip/addr/iaddr_encoder.py +50 -0
- bitmart/ccxt/static_dependencies/bip/base58/__init__.py +3 -0
- bitmart/ccxt/static_dependencies/bip/base58/base58.py +207 -0
- bitmart/ccxt/static_dependencies/bip/base58/base58_ex.py +25 -0
- bitmart/ccxt/static_dependencies/bip/base58/base58_xmr.py +155 -0
- bitmart/ccxt/static_dependencies/bip/bech32/__init__.py +4 -0
- bitmart/ccxt/static_dependencies/bip/bech32/bch_bech32.py +220 -0
- bitmart/ccxt/static_dependencies/bip/bech32/bech32.py +235 -0
- bitmart/ccxt/static_dependencies/bip/bech32/bech32_base.py +246 -0
- bitmart/ccxt/static_dependencies/bip/bech32/bech32_ex.py +25 -0
- bitmart/ccxt/static_dependencies/bip/bech32/segwit_bech32.py +173 -0
- bitmart/ccxt/static_dependencies/bip/bip32/__init__.py +14 -0
- bitmart/ccxt/static_dependencies/bip/bip32/base/__init__.py +3 -0
- bitmart/ccxt/static_dependencies/bip/bip32/base/bip32_base.py +581 -0
- bitmart/ccxt/static_dependencies/bip/bip32/base/ibip32_key_derivator.py +83 -0
- bitmart/ccxt/static_dependencies/bip/bip32/base/ibip32_mst_key_generator.py +47 -0
- bitmart/ccxt/static_dependencies/bip/bip32/bip32_const.py +35 -0
- bitmart/ccxt/static_dependencies/bip/bip32/bip32_ex.py +29 -0
- bitmart/ccxt/static_dependencies/bip/bip32/bip32_key_data.py +500 -0
- bitmart/ccxt/static_dependencies/bip/bip32/bip32_key_net_ver.py +83 -0
- bitmart/ccxt/static_dependencies/bip/bip32/bip32_key_ser.py +294 -0
- bitmart/ccxt/static_dependencies/bip/bip32/bip32_keys.py +457 -0
- bitmart/ccxt/static_dependencies/bip/bip32/bip32_path.py +247 -0
- bitmart/ccxt/static_dependencies/bip/bip32/bip32_utils.py +72 -0
- bitmart/ccxt/static_dependencies/bip/bip32/kholaw/__init__.py +4 -0
- bitmart/ccxt/static_dependencies/bip/bip32/kholaw/bip32_kholaw_ed25519.py +82 -0
- bitmart/ccxt/static_dependencies/bip/bip32/kholaw/bip32_kholaw_ed25519_key_derivator.py +118 -0
- bitmart/ccxt/static_dependencies/bip/bip32/kholaw/bip32_kholaw_key_derivator_base.py +204 -0
- bitmart/ccxt/static_dependencies/bip/bip32/kholaw/bip32_kholaw_mst_key_generator.py +119 -0
- bitmart/ccxt/static_dependencies/bip/bip32/slip10/__init__.py +1 -0
- bitmart/ccxt/static_dependencies/bip/bip32/slip10/bip32_slip10_key_derivator.py +200 -0
- bitmart/ccxt/static_dependencies/bip/bip32/slip10/bip32_slip10_mst_key_generator.py +168 -0
- bitmart/ccxt/static_dependencies/bip/bip32/slip10/bip32_slip10_secp256k1.py +82 -0
- bitmart/ccxt/static_dependencies/bip/bip44/__init__.py +1 -0
- bitmart/ccxt/static_dependencies/bip/bip44/bip44.py +265 -0
- bitmart/ccxt/static_dependencies/bip/bip44_base/__init__.py +3 -0
- bitmart/ccxt/static_dependencies/bip/bip44_base/bip44_base.py +624 -0
- bitmart/ccxt/static_dependencies/bip/bip44_base/bip44_base_ex.py +25 -0
- bitmart/ccxt/static_dependencies/bip/bip44_base/bip44_keys.py +225 -0
- bitmart/ccxt/static_dependencies/bip/coin_conf/__init__.py +2 -0
- bitmart/ccxt/static_dependencies/bip/coin_conf/coin_conf.py +68 -0
- bitmart/ccxt/static_dependencies/bip/coin_conf/coins_conf.py +890 -0
- bitmart/ccxt/static_dependencies/bip/conf/__init__.py +0 -0
- bitmart/ccxt/static_dependencies/bip/conf/bip44/__init__.py +3 -0
- bitmart/ccxt/static_dependencies/bip/conf/bip44/bip44_coins.py +126 -0
- bitmart/ccxt/static_dependencies/bip/conf/bip44/bip44_conf.py +1360 -0
- bitmart/ccxt/static_dependencies/bip/conf/bip44/bip44_conf_getter.py +153 -0
- bitmart/ccxt/static_dependencies/bip/conf/bip49/__init__.py +3 -0
- bitmart/ccxt/static_dependencies/bip/conf/bip49/bip49_coins.py +53 -0
- bitmart/ccxt/static_dependencies/bip/conf/bip49/bip49_conf.py +366 -0
- bitmart/ccxt/static_dependencies/bip/conf/bip49/bip49_conf_getter.py +80 -0
- bitmart/ccxt/static_dependencies/bip/conf/bip84/__init__.py +3 -0
- bitmart/ccxt/static_dependencies/bip/conf/bip84/bip84_coins.py +39 -0
- bitmart/ccxt/static_dependencies/bip/conf/bip84/bip84_conf.py +113 -0
- bitmart/ccxt/static_dependencies/bip/conf/bip84/bip84_conf_getter.py +66 -0
- bitmart/ccxt/static_dependencies/bip/conf/bip86/__init__.py +3 -0
- bitmart/ccxt/static_dependencies/bip/conf/bip86/bip86_coins.py +37 -0
- bitmart/ccxt/static_dependencies/bip/conf/bip86/bip86_conf.py +83 -0
- bitmart/ccxt/static_dependencies/bip/conf/bip86/bip86_conf_getter.py +64 -0
- bitmart/ccxt/static_dependencies/bip/conf/common/__init__.py +8 -0
- bitmart/ccxt/static_dependencies/bip/conf/common/atom_addr.py +104 -0
- bitmart/ccxt/static_dependencies/bip/conf/common/bip_bitcoin_cash_conf.py +106 -0
- bitmart/ccxt/static_dependencies/bip/conf/common/bip_coin_conf.py +217 -0
- bitmart/ccxt/static_dependencies/bip/conf/common/bip_coins.py +28 -0
- bitmart/ccxt/static_dependencies/bip/conf/common/bip_conf_const.py +30 -0
- bitmart/ccxt/static_dependencies/bip/conf/common/bip_litecoin_conf.py +121 -0
- bitmart/ccxt/static_dependencies/bip/ecc/__init__.py +42 -0
- bitmart/ccxt/static_dependencies/bip/ecc/common/__init__.py +0 -0
- bitmart/ccxt/static_dependencies/bip/ecc/common/dummy_point.py +219 -0
- bitmart/ccxt/static_dependencies/bip/ecc/common/ikeys.py +263 -0
- bitmart/ccxt/static_dependencies/bip/ecc/common/ipoint.py +190 -0
- bitmart/ccxt/static_dependencies/bip/ecc/conf.py +28 -0
- bitmart/ccxt/static_dependencies/bip/ecc/curve/__init__.py +0 -0
- bitmart/ccxt/static_dependencies/bip/ecc/curve/elliptic_curve.py +121 -0
- bitmart/ccxt/static_dependencies/bip/ecc/curve/elliptic_curve_getter.py +74 -0
- bitmart/ccxt/static_dependencies/bip/ecc/curve/elliptic_curve_types.py +37 -0
- bitmart/ccxt/static_dependencies/bip/ecc/ecdsa/__init__.py +0 -0
- bitmart/ccxt/static_dependencies/bip/ecc/ecdsa/ecdsa_keys.py +36 -0
- bitmart/ccxt/static_dependencies/bip/ecc/secp256k1/__init__.py +0 -0
- bitmart/ccxt/static_dependencies/bip/ecc/secp256k1/secp256k1.py +36 -0
- bitmart/ccxt/static_dependencies/bip/ecc/secp256k1/secp256k1_const.py +59 -0
- bitmart/ccxt/static_dependencies/bip/ecc/secp256k1/secp256k1_keys_ecdsa.py +248 -0
- bitmart/ccxt/static_dependencies/bip/ecc/secp256k1/secp256k1_point_ecdsa.py +234 -0
- bitmart/ccxt/static_dependencies/bip/slip/__init__.py +0 -0
- bitmart/ccxt/static_dependencies/bip/slip/slip173/__init__.py +1 -0
- bitmart/ccxt/static_dependencies/bip/slip/slip173/slip173.py +60 -0
- bitmart/ccxt/static_dependencies/bip/slip/slip32/__init__.py +4 -0
- bitmart/ccxt/static_dependencies/bip/slip/slip32/slip32.py +322 -0
- bitmart/ccxt/static_dependencies/bip/slip/slip32/slip32_key_net_ver.py +62 -0
- bitmart/ccxt/static_dependencies/bip/slip/slip44/__init__.py +1 -0
- bitmart/ccxt/static_dependencies/bip/slip/slip44/slip44.py +81 -0
- bitmart/ccxt/static_dependencies/bip/utils/__init__.py +0 -0
- bitmart/ccxt/static_dependencies/bip/utils/conf/__init__.py +1 -0
- bitmart/ccxt/static_dependencies/bip/utils/conf/coin_names.py +59 -0
- bitmart/ccxt/static_dependencies/bip/utils/crypto/__init__.py +10 -0
- bitmart/ccxt/static_dependencies/bip/utils/crypto/aes_ecb.py +152 -0
- bitmart/ccxt/static_dependencies/bip/utils/crypto/blake2.py +191 -0
- bitmart/ccxt/static_dependencies/bip/utils/crypto/chacha20_poly1305.py +101 -0
- bitmart/ccxt/static_dependencies/bip/utils/crypto/hash160.py +57 -0
- bitmart/ccxt/static_dependencies/bip/utils/crypto/hmac.py +118 -0
- bitmart/ccxt/static_dependencies/bip/utils/crypto/pbkdf2.py +66 -0
- bitmart/ccxt/static_dependencies/bip/utils/crypto/ripemd.py +58 -0
- bitmart/ccxt/static_dependencies/bip/utils/crypto/scrypt.py +66 -0
- bitmart/ccxt/static_dependencies/bip/utils/crypto/sha2.py +182 -0
- bitmart/ccxt/static_dependencies/bip/utils/crypto/sha3.py +99 -0
- bitmart/ccxt/static_dependencies/bip/utils/misc/__init__.py +7 -0
- bitmart/ccxt/static_dependencies/bip/utils/misc/algo.py +108 -0
- bitmart/ccxt/static_dependencies/bip/utils/misc/base32.py +151 -0
- bitmart/ccxt/static_dependencies/bip/utils/misc/bit.py +115 -0
- bitmart/ccxt/static_dependencies/bip/utils/misc/bytes.py +200 -0
- bitmart/ccxt/static_dependencies/bip/utils/misc/data_bytes.py +181 -0
- bitmart/ccxt/static_dependencies/bip/utils/misc/integer.py +97 -0
- bitmart/ccxt/static_dependencies/bip/utils/misc/string.py +54 -0
- bitmart/ccxt/static_dependencies/bip/utils/typing/__init__.py +1 -0
- bitmart/ccxt/static_dependencies/bip/utils/typing/literal.py +27 -0
- bitmart/ccxt/static_dependencies/bip/wif/__init__.py +1 -0
- bitmart/ccxt/static_dependencies/bip/wif/wif.py +144 -0
- bitmart/ccxt/static_dependencies/dydx_v4_client/amino/amino_pb2.py +31 -0
- bitmart/ccxt/static_dependencies/dydx_v4_client/cosmos/base/v1beta1/coin_pb2.py +47 -0
- bitmart/ccxt/static_dependencies/dydx_v4_client/cosmos/crypto/multisig/keys_pb2.py +33 -0
- bitmart/ccxt/static_dependencies/dydx_v4_client/cosmos/crypto/multisig/v1beta1/multisig_pb2.py +33 -0
- bitmart/ccxt/static_dependencies/dydx_v4_client/cosmos/crypto/secp256k1/keys_pb2.py +34 -0
- bitmart/ccxt/static_dependencies/dydx_v4_client/cosmos/msg/v1/msg_pb2.py +27 -0
- bitmart/ccxt/static_dependencies/dydx_v4_client/cosmos/tx/signing/v1beta1/signing_pb2.py +38 -0
- bitmart/ccxt/static_dependencies/dydx_v4_client/cosmos/tx/v1beta1/tx_pb2.py +75 -0
- bitmart/ccxt/static_dependencies/dydx_v4_client/cosmos_proto/cosmos_pb2.py +36 -0
- bitmart/ccxt/static_dependencies/dydx_v4_client/dydxprotocol/accountplus/accountplus_pb2.py +31 -0
- bitmart/ccxt/static_dependencies/dydx_v4_client/dydxprotocol/accountplus/genesis_pb2.py +40 -0
- bitmart/ccxt/static_dependencies/dydx_v4_client/dydxprotocol/accountplus/models_pb2.py +26 -0
- bitmart/ccxt/static_dependencies/dydx_v4_client/dydxprotocol/accountplus/params_pb2.py +29 -0
- bitmart/ccxt/static_dependencies/dydx_v4_client/dydxprotocol/accountplus/query_pb2.py +57 -0
- bitmart/ccxt/static_dependencies/dydx_v4_client/dydxprotocol/accountplus/tx_pb2.py +51 -0
- bitmart/ccxt/static_dependencies/dydx_v4_client/dydxprotocol/clob/block_rate_limit_config_pb2.py +37 -0
- bitmart/ccxt/static_dependencies/dydx_v4_client/dydxprotocol/clob/clob_pair_pb2.py +41 -0
- bitmart/ccxt/static_dependencies/dydx_v4_client/dydxprotocol/clob/equity_tier_limit_config_pb2.py +35 -0
- bitmart/ccxt/static_dependencies/dydx_v4_client/dydxprotocol/clob/finalize_block_pb2.py +27 -0
- bitmart/ccxt/static_dependencies/dydx_v4_client/dydxprotocol/clob/liquidations_config_pb2.py +39 -0
- bitmart/ccxt/static_dependencies/dydx_v4_client/dydxprotocol/clob/liquidations_pb2.py +38 -0
- bitmart/ccxt/static_dependencies/dydx_v4_client/dydxprotocol/clob/matches_pb2.py +55 -0
- bitmart/ccxt/static_dependencies/dydx_v4_client/dydxprotocol/clob/mev_pb2.py +49 -0
- bitmart/ccxt/static_dependencies/dydx_v4_client/dydxprotocol/clob/operation_pb2.py +32 -0
- bitmart/ccxt/static_dependencies/dydx_v4_client/dydxprotocol/clob/order_pb2.py +86 -0
- bitmart/ccxt/static_dependencies/dydx_v4_client/dydxprotocol/clob/order_removals_pb2.py +32 -0
- bitmart/ccxt/static_dependencies/dydx_v4_client/dydxprotocol/clob/process_proposer_matches_events_pb2.py +42 -0
- bitmart/ccxt/static_dependencies/dydx_v4_client/dydxprotocol/clob/query_pb2.py +124 -0
- bitmart/ccxt/static_dependencies/dydx_v4_client/dydxprotocol/clob/streaming_pb2.py +29 -0
- bitmart/ccxt/static_dependencies/dydx_v4_client/dydxprotocol/clob/tx_pb2.py +117 -0
- bitmart/ccxt/static_dependencies/dydx_v4_client/dydxprotocol/sending/genesis_pb2.py +26 -0
- bitmart/ccxt/static_dependencies/dydx_v4_client/dydxprotocol/sending/query_pb2.py +26 -0
- bitmart/ccxt/static_dependencies/dydx_v4_client/dydxprotocol/sending/transfer_pb2.py +61 -0
- bitmart/ccxt/static_dependencies/dydx_v4_client/dydxprotocol/sending/tx_pb2.py +37 -0
- bitmart/ccxt/static_dependencies/dydx_v4_client/dydxprotocol/subaccounts/asset_position_pb2.py +29 -0
- bitmart/ccxt/static_dependencies/dydx_v4_client/dydxprotocol/subaccounts/genesis_pb2.py +30 -0
- bitmart/ccxt/static_dependencies/dydx_v4_client/dydxprotocol/subaccounts/perpetual_position_pb2.py +33 -0
- bitmart/ccxt/static_dependencies/dydx_v4_client/dydxprotocol/subaccounts/query_pb2.py +63 -0
- bitmart/ccxt/static_dependencies/dydx_v4_client/dydxprotocol/subaccounts/streaming_pb2.py +31 -0
- bitmart/ccxt/static_dependencies/dydx_v4_client/dydxprotocol/subaccounts/subaccount_pb2.py +33 -0
- bitmart/ccxt/static_dependencies/dydx_v4_client/gogoproto/gogo_pb2.py +102 -0
- bitmart/ccxt/static_dependencies/dydx_v4_client/registry.py +38 -0
- bitmart/ccxt/static_dependencies/ecdsa/__init__.py +14 -0
- bitmart/ccxt/static_dependencies/ecdsa/_version.py +520 -0
- bitmart/ccxt/static_dependencies/ecdsa/curves.py +56 -0
- bitmart/ccxt/static_dependencies/ecdsa/der.py +221 -0
- bitmart/ccxt/static_dependencies/ecdsa/ecdsa.py +310 -0
- bitmart/ccxt/static_dependencies/ecdsa/ellipticcurve.py +1039 -0
- bitmart/ccxt/static_dependencies/ecdsa/keys.py +343 -0
- bitmart/ccxt/static_dependencies/ecdsa/numbertheory.py +531 -0
- bitmart/ccxt/static_dependencies/ecdsa/rfc6979.py +100 -0
- bitmart/ccxt/static_dependencies/ecdsa/util.py +266 -0
- bitmart/ccxt/static_dependencies/ethereum/__init__.py +7 -0
- bitmart/ccxt/static_dependencies/ethereum/abi/__init__.py +16 -0
- bitmart/ccxt/static_dependencies/ethereum/abi/abi.py +19 -0
- bitmart/ccxt/static_dependencies/ethereum/abi/base.py +152 -0
- bitmart/ccxt/static_dependencies/ethereum/abi/codec.py +217 -0
- bitmart/ccxt/static_dependencies/ethereum/abi/constants.py +3 -0
- bitmart/ccxt/static_dependencies/ethereum/abi/decoding.py +565 -0
- bitmart/ccxt/static_dependencies/ethereum/abi/encoding.py +720 -0
- bitmart/ccxt/static_dependencies/ethereum/abi/exceptions.py +139 -0
- bitmart/ccxt/static_dependencies/ethereum/abi/grammar.py +443 -0
- bitmart/ccxt/static_dependencies/ethereum/abi/packed.py +13 -0
- bitmart/ccxt/static_dependencies/ethereum/abi/py.typed +0 -0
- bitmart/ccxt/static_dependencies/ethereum/abi/registry.py +643 -0
- bitmart/ccxt/static_dependencies/ethereum/abi/tools/__init__.py +3 -0
- bitmart/ccxt/static_dependencies/ethereum/abi/tools/_strategies.py +230 -0
- bitmart/ccxt/static_dependencies/ethereum/abi/utils/__init__.py +0 -0
- bitmart/ccxt/static_dependencies/ethereum/abi/utils/numeric.py +83 -0
- bitmart/ccxt/static_dependencies/ethereum/abi/utils/padding.py +27 -0
- bitmart/ccxt/static_dependencies/ethereum/abi/utils/string.py +19 -0
- bitmart/ccxt/static_dependencies/ethereum/account/__init__.py +3 -0
- bitmart/ccxt/static_dependencies/ethereum/account/encode_typed_data/__init__.py +4 -0
- bitmart/ccxt/static_dependencies/ethereum/account/encode_typed_data/encoding_and_hashing.py +239 -0
- bitmart/ccxt/static_dependencies/ethereum/account/encode_typed_data/helpers.py +40 -0
- bitmart/ccxt/static_dependencies/ethereum/account/messages.py +263 -0
- bitmart/ccxt/static_dependencies/ethereum/account/py.typed +0 -0
- bitmart/ccxt/static_dependencies/ethereum/hexbytes/__init__.py +5 -0
- bitmart/ccxt/static_dependencies/ethereum/hexbytes/_utils.py +54 -0
- bitmart/ccxt/static_dependencies/ethereum/hexbytes/main.py +65 -0
- bitmart/ccxt/static_dependencies/ethereum/hexbytes/py.typed +0 -0
- bitmart/ccxt/static_dependencies/ethereum/typing/__init__.py +63 -0
- bitmart/ccxt/static_dependencies/ethereum/typing/abi.py +6 -0
- bitmart/ccxt/static_dependencies/ethereum/typing/bls.py +7 -0
- bitmart/ccxt/static_dependencies/ethereum/typing/discovery.py +5 -0
- bitmart/ccxt/static_dependencies/ethereum/typing/encoding.py +7 -0
- bitmart/ccxt/static_dependencies/ethereum/typing/enums.py +17 -0
- bitmart/ccxt/static_dependencies/ethereum/typing/ethpm.py +9 -0
- bitmart/ccxt/static_dependencies/ethereum/typing/evm.py +20 -0
- bitmart/ccxt/static_dependencies/ethereum/typing/networks.py +1122 -0
- bitmart/ccxt/static_dependencies/ethereum/typing/py.typed +0 -0
- bitmart/ccxt/static_dependencies/ethereum/utils/__init__.py +115 -0
- bitmart/ccxt/static_dependencies/ethereum/utils/abi.py +72 -0
- bitmart/ccxt/static_dependencies/ethereum/utils/address.py +171 -0
- bitmart/ccxt/static_dependencies/ethereum/utils/applicators.py +151 -0
- bitmart/ccxt/static_dependencies/ethereum/utils/conversions.py +190 -0
- bitmart/ccxt/static_dependencies/ethereum/utils/currency.py +107 -0
- bitmart/ccxt/static_dependencies/ethereum/utils/curried/__init__.py +269 -0
- bitmart/ccxt/static_dependencies/ethereum/utils/debug.py +20 -0
- bitmart/ccxt/static_dependencies/ethereum/utils/decorators.py +132 -0
- bitmart/ccxt/static_dependencies/ethereum/utils/encoding.py +6 -0
- bitmart/ccxt/static_dependencies/ethereum/utils/exceptions.py +4 -0
- bitmart/ccxt/static_dependencies/ethereum/utils/functional.py +75 -0
- bitmart/ccxt/static_dependencies/ethereum/utils/hexadecimal.py +74 -0
- bitmart/ccxt/static_dependencies/ethereum/utils/humanize.py +188 -0
- bitmart/ccxt/static_dependencies/ethereum/utils/logging.py +159 -0
- bitmart/ccxt/static_dependencies/ethereum/utils/module_loading.py +31 -0
- bitmart/ccxt/static_dependencies/ethereum/utils/numeric.py +43 -0
- bitmart/ccxt/static_dependencies/ethereum/utils/py.typed +0 -0
- bitmart/ccxt/static_dependencies/ethereum/utils/toolz.py +76 -0
- bitmart/ccxt/static_dependencies/ethereum/utils/types.py +54 -0
- bitmart/ccxt/static_dependencies/ethereum/utils/typing/__init__.py +18 -0
- bitmart/ccxt/static_dependencies/ethereum/utils/typing/misc.py +14 -0
- bitmart/ccxt/static_dependencies/ethereum/utils/units.py +31 -0
- bitmart/ccxt/static_dependencies/keccak/__init__.py +3 -0
- bitmart/ccxt/static_dependencies/keccak/keccak.py +197 -0
- bitmart/ccxt/static_dependencies/lark/__init__.py +38 -0
- bitmart/ccxt/static_dependencies/lark/__pyinstaller/__init__.py +6 -0
- bitmart/ccxt/static_dependencies/lark/__pyinstaller/hook-lark.py +14 -0
- bitmart/ccxt/static_dependencies/lark/ast_utils.py +59 -0
- bitmart/ccxt/static_dependencies/lark/common.py +86 -0
- bitmart/ccxt/static_dependencies/lark/exceptions.py +292 -0
- bitmart/ccxt/static_dependencies/lark/grammar.py +130 -0
- bitmart/ccxt/static_dependencies/lark/grammars/__init__.py +0 -0
- bitmart/ccxt/static_dependencies/lark/grammars/common.lark +59 -0
- bitmart/ccxt/static_dependencies/lark/grammars/lark.lark +62 -0
- bitmart/ccxt/static_dependencies/lark/grammars/python.lark +302 -0
- bitmart/ccxt/static_dependencies/lark/grammars/unicode.lark +7 -0
- bitmart/ccxt/static_dependencies/lark/indenter.py +143 -0
- bitmart/ccxt/static_dependencies/lark/lark.py +658 -0
- bitmart/ccxt/static_dependencies/lark/lexer.py +678 -0
- bitmart/ccxt/static_dependencies/lark/load_grammar.py +1428 -0
- bitmart/ccxt/static_dependencies/lark/parse_tree_builder.py +391 -0
- bitmart/ccxt/static_dependencies/lark/parser_frontends.py +257 -0
- bitmart/ccxt/static_dependencies/lark/parsers/__init__.py +0 -0
- bitmart/ccxt/static_dependencies/lark/parsers/cyk.py +340 -0
- bitmart/ccxt/static_dependencies/lark/parsers/earley.py +314 -0
- bitmart/ccxt/static_dependencies/lark/parsers/earley_common.py +42 -0
- bitmart/ccxt/static_dependencies/lark/parsers/earley_forest.py +801 -0
- bitmart/ccxt/static_dependencies/lark/parsers/grammar_analysis.py +203 -0
- bitmart/ccxt/static_dependencies/lark/parsers/lalr_analysis.py +332 -0
- bitmart/ccxt/static_dependencies/lark/parsers/lalr_interactive_parser.py +158 -0
- bitmart/ccxt/static_dependencies/lark/parsers/lalr_parser.py +122 -0
- bitmart/ccxt/static_dependencies/lark/parsers/lalr_parser_state.py +110 -0
- bitmart/ccxt/static_dependencies/lark/parsers/xearley.py +165 -0
- bitmart/ccxt/static_dependencies/lark/py.typed +0 -0
- bitmart/ccxt/static_dependencies/lark/reconstruct.py +107 -0
- bitmart/ccxt/static_dependencies/lark/tools/__init__.py +70 -0
- bitmart/ccxt/static_dependencies/lark/tools/nearley.py +202 -0
- bitmart/ccxt/static_dependencies/lark/tools/serialize.py +32 -0
- bitmart/ccxt/static_dependencies/lark/tools/standalone.py +196 -0
- bitmart/ccxt/static_dependencies/lark/tree.py +267 -0
- bitmart/ccxt/static_dependencies/lark/tree_matcher.py +186 -0
- bitmart/ccxt/static_dependencies/lark/tree_templates.py +180 -0
- bitmart/ccxt/static_dependencies/lark/utils.py +343 -0
- bitmart/ccxt/static_dependencies/lark/visitors.py +596 -0
- bitmart/ccxt/static_dependencies/marshmallow/__init__.py +81 -0
- bitmart/ccxt/static_dependencies/marshmallow/base.py +65 -0
- bitmart/ccxt/static_dependencies/marshmallow/class_registry.py +94 -0
- bitmart/ccxt/static_dependencies/marshmallow/decorators.py +231 -0
- bitmart/ccxt/static_dependencies/marshmallow/error_store.py +60 -0
- bitmart/ccxt/static_dependencies/marshmallow/exceptions.py +71 -0
- bitmart/ccxt/static_dependencies/marshmallow/fields.py +2114 -0
- bitmart/ccxt/static_dependencies/marshmallow/orderedset.py +89 -0
- bitmart/ccxt/static_dependencies/marshmallow/py.typed +0 -0
- bitmart/ccxt/static_dependencies/marshmallow/schema.py +1228 -0
- bitmart/ccxt/static_dependencies/marshmallow/types.py +12 -0
- bitmart/ccxt/static_dependencies/marshmallow/utils.py +378 -0
- bitmart/ccxt/static_dependencies/marshmallow/validate.py +678 -0
- bitmart/ccxt/static_dependencies/marshmallow/warnings.py +2 -0
- bitmart/ccxt/static_dependencies/marshmallow_dataclass/__init__.py +1047 -0
- bitmart/ccxt/static_dependencies/marshmallow_dataclass/collection_field.py +51 -0
- bitmart/ccxt/static_dependencies/marshmallow_dataclass/lazy_class_attribute.py +45 -0
- bitmart/ccxt/static_dependencies/marshmallow_dataclass/mypy.py +71 -0
- bitmart/ccxt/static_dependencies/marshmallow_dataclass/py.typed +0 -0
- bitmart/ccxt/static_dependencies/marshmallow_dataclass/typing.py +14 -0
- bitmart/ccxt/static_dependencies/marshmallow_dataclass/union_field.py +82 -0
- bitmart/ccxt/static_dependencies/marshmallow_oneofschema/__init__.py +1 -0
- bitmart/ccxt/static_dependencies/marshmallow_oneofschema/one_of_schema.py +193 -0
- bitmart/ccxt/static_dependencies/marshmallow_oneofschema/py.typed +0 -0
- bitmart/ccxt/static_dependencies/mnemonic/__init__.py +4 -0
- bitmart/ccxt/static_dependencies/mnemonic/mnemonic.py +282 -0
- bitmart/ccxt/static_dependencies/mnemonic/py.typed +1 -0
- bitmart/ccxt/static_dependencies/mnemonic/wordlist/chinese_simplified.txt +2048 -0
- bitmart/ccxt/static_dependencies/mnemonic/wordlist/chinese_traditional.txt +2048 -0
- bitmart/ccxt/static_dependencies/mnemonic/wordlist/czech.txt +2048 -0
- bitmart/ccxt/static_dependencies/mnemonic/wordlist/english.txt +2048 -0
- bitmart/ccxt/static_dependencies/mnemonic/wordlist/french.txt +2048 -0
- bitmart/ccxt/static_dependencies/mnemonic/wordlist/italian.txt +2048 -0
- bitmart/ccxt/static_dependencies/mnemonic/wordlist/japanese.txt +2048 -0
- bitmart/ccxt/static_dependencies/mnemonic/wordlist/korean.txt +2048 -0
- bitmart/ccxt/static_dependencies/mnemonic/wordlist/portuguese.txt +2048 -0
- bitmart/ccxt/static_dependencies/mnemonic/wordlist/russian.txt +2048 -0
- bitmart/ccxt/static_dependencies/mnemonic/wordlist/spanish.txt +2048 -0
- bitmart/ccxt/static_dependencies/mnemonic/wordlist/turkish.txt +2048 -0
- bitmart/ccxt/static_dependencies/msgpack/__init__.py +55 -0
- bitmart/ccxt/static_dependencies/msgpack/_cmsgpack.pyx +11 -0
- bitmart/ccxt/static_dependencies/msgpack/_packer.pyx +374 -0
- bitmart/ccxt/static_dependencies/msgpack/_unpacker.pyx +547 -0
- bitmart/ccxt/static_dependencies/msgpack/buff_converter.h +8 -0
- bitmart/ccxt/static_dependencies/msgpack/exceptions.py +48 -0
- bitmart/ccxt/static_dependencies/msgpack/ext.py +168 -0
- bitmart/ccxt/static_dependencies/msgpack/fallback.py +951 -0
- bitmart/ccxt/static_dependencies/msgpack/pack.h +89 -0
- bitmart/ccxt/static_dependencies/msgpack/pack_template.h +820 -0
- bitmart/ccxt/static_dependencies/msgpack/sysdep.h +194 -0
- bitmart/ccxt/static_dependencies/msgpack/unpack.h +391 -0
- bitmart/ccxt/static_dependencies/msgpack/unpack_define.h +95 -0
- bitmart/ccxt/static_dependencies/msgpack/unpack_template.h +464 -0
- bitmart/ccxt/static_dependencies/parsimonious/__init__.py +10 -0
- bitmart/ccxt/static_dependencies/parsimonious/exceptions.py +105 -0
- bitmart/ccxt/static_dependencies/parsimonious/expressions.py +479 -0
- bitmart/ccxt/static_dependencies/parsimonious/grammar.py +487 -0
- bitmart/ccxt/static_dependencies/parsimonious/nodes.py +325 -0
- bitmart/ccxt/static_dependencies/parsimonious/utils.py +40 -0
- bitmart/ccxt/static_dependencies/starknet/__init__.py +0 -0
- bitmart/ccxt/static_dependencies/starknet/abi/v0/__init__.py +2 -0
- bitmart/ccxt/static_dependencies/starknet/abi/v0/model.py +44 -0
- bitmart/ccxt/static_dependencies/starknet/abi/v0/parser.py +216 -0
- bitmart/ccxt/static_dependencies/starknet/abi/v0/schemas.py +72 -0
- bitmart/ccxt/static_dependencies/starknet/abi/v0/shape.py +63 -0
- bitmart/ccxt/static_dependencies/starknet/abi/v1/__init__.py +2 -0
- bitmart/ccxt/static_dependencies/starknet/abi/v1/core_structures.json +14 -0
- bitmart/ccxt/static_dependencies/starknet/abi/v1/model.py +39 -0
- bitmart/ccxt/static_dependencies/starknet/abi/v1/parser.py +220 -0
- bitmart/ccxt/static_dependencies/starknet/abi/v1/parser_transformer.py +179 -0
- bitmart/ccxt/static_dependencies/starknet/abi/v1/schemas.py +66 -0
- bitmart/ccxt/static_dependencies/starknet/abi/v1/shape.py +47 -0
- bitmart/ccxt/static_dependencies/starknet/abi/v2/__init__.py +2 -0
- bitmart/ccxt/static_dependencies/starknet/abi/v2/model.py +89 -0
- bitmart/ccxt/static_dependencies/starknet/abi/v2/parser.py +293 -0
- bitmart/ccxt/static_dependencies/starknet/abi/v2/parser_transformer.py +192 -0
- bitmart/ccxt/static_dependencies/starknet/abi/v2/schemas.py +132 -0
- bitmart/ccxt/static_dependencies/starknet/abi/v2/shape.py +107 -0
- bitmart/ccxt/static_dependencies/starknet/cairo/__init__.py +0 -0
- bitmart/ccxt/static_dependencies/starknet/cairo/data_types.py +123 -0
- bitmart/ccxt/static_dependencies/starknet/cairo/deprecated_parse/__init__.py +0 -0
- bitmart/ccxt/static_dependencies/starknet/cairo/deprecated_parse/cairo_types.py +77 -0
- bitmart/ccxt/static_dependencies/starknet/cairo/deprecated_parse/parser.py +46 -0
- bitmart/ccxt/static_dependencies/starknet/cairo/deprecated_parse/parser_transformer.py +138 -0
- bitmart/ccxt/static_dependencies/starknet/cairo/felt.py +64 -0
- bitmart/ccxt/static_dependencies/starknet/cairo/type_parser.py +121 -0
- bitmart/ccxt/static_dependencies/starknet/cairo/v1/__init__.py +0 -0
- bitmart/ccxt/static_dependencies/starknet/cairo/v1/type_parser.py +59 -0
- bitmart/ccxt/static_dependencies/starknet/cairo/v2/__init__.py +0 -0
- bitmart/ccxt/static_dependencies/starknet/cairo/v2/type_parser.py +77 -0
- bitmart/ccxt/static_dependencies/starknet/ccxt_utils.py +7 -0
- bitmart/ccxt/static_dependencies/starknet/common.py +15 -0
- bitmart/ccxt/static_dependencies/starknet/constants.py +39 -0
- bitmart/ccxt/static_dependencies/starknet/hash/__init__.py +0 -0
- bitmart/ccxt/static_dependencies/starknet/hash/address.py +79 -0
- bitmart/ccxt/static_dependencies/starknet/hash/compiled_class_hash_objects.py +111 -0
- bitmart/ccxt/static_dependencies/starknet/hash/selector.py +16 -0
- bitmart/ccxt/static_dependencies/starknet/hash/storage.py +12 -0
- bitmart/ccxt/static_dependencies/starknet/hash/utils.py +78 -0
- bitmart/ccxt/static_dependencies/starknet/models/__init__.py +0 -0
- bitmart/ccxt/static_dependencies/starknet/models/typed_data.py +45 -0
- bitmart/ccxt/static_dependencies/starknet/serialization/__init__.py +24 -0
- bitmart/ccxt/static_dependencies/starknet/serialization/_calldata_reader.py +40 -0
- bitmart/ccxt/static_dependencies/starknet/serialization/_context.py +142 -0
- bitmart/ccxt/static_dependencies/starknet/serialization/data_serializers/__init__.py +10 -0
- bitmart/ccxt/static_dependencies/starknet/serialization/data_serializers/_common.py +82 -0
- bitmart/ccxt/static_dependencies/starknet/serialization/data_serializers/array_serializer.py +43 -0
- bitmart/ccxt/static_dependencies/starknet/serialization/data_serializers/bool_serializer.py +37 -0
- bitmart/ccxt/static_dependencies/starknet/serialization/data_serializers/byte_array_serializer.py +66 -0
- bitmart/ccxt/static_dependencies/starknet/serialization/data_serializers/cairo_data_serializer.py +71 -0
- bitmart/ccxt/static_dependencies/starknet/serialization/data_serializers/enum_serializer.py +71 -0
- bitmart/ccxt/static_dependencies/starknet/serialization/data_serializers/felt_serializer.py +50 -0
- bitmart/ccxt/static_dependencies/starknet/serialization/data_serializers/named_tuple_serializer.py +58 -0
- bitmart/ccxt/static_dependencies/starknet/serialization/data_serializers/option_serializer.py +43 -0
- bitmart/ccxt/static_dependencies/starknet/serialization/data_serializers/output_serializer.py +40 -0
- bitmart/ccxt/static_dependencies/starknet/serialization/data_serializers/payload_serializer.py +72 -0
- bitmart/ccxt/static_dependencies/starknet/serialization/data_serializers/struct_serializer.py +36 -0
- bitmart/ccxt/static_dependencies/starknet/serialization/data_serializers/tuple_serializer.py +36 -0
- bitmart/ccxt/static_dependencies/starknet/serialization/data_serializers/uint256_serializer.py +76 -0
- bitmart/ccxt/static_dependencies/starknet/serialization/data_serializers/uint_serializer.py +100 -0
- bitmart/ccxt/static_dependencies/starknet/serialization/data_serializers/unit_serializer.py +32 -0
- bitmart/ccxt/static_dependencies/starknet/serialization/errors.py +10 -0
- bitmart/ccxt/static_dependencies/starknet/serialization/factory.py +229 -0
- bitmart/ccxt/static_dependencies/starknet/serialization/function_serialization_adapter.py +110 -0
- bitmart/ccxt/static_dependencies/starknet/serialization/tuple_dataclass.py +59 -0
- bitmart/ccxt/static_dependencies/starknet/utils/__init__.py +0 -0
- bitmart/ccxt/static_dependencies/starknet/utils/constructor_args_translator.py +86 -0
- bitmart/ccxt/static_dependencies/starknet/utils/iterable.py +13 -0
- bitmart/ccxt/static_dependencies/starknet/utils/schema.py +13 -0
- bitmart/ccxt/static_dependencies/starknet/utils/typed_data.py +182 -0
- bitmart/ccxt/static_dependencies/starkware/__init__.py +0 -0
- bitmart/ccxt/static_dependencies/starkware/crypto/__init__.py +0 -0
- bitmart/ccxt/static_dependencies/starkware/crypto/fast_pedersen_hash.py +50 -0
- bitmart/ccxt/static_dependencies/starkware/crypto/math_utils.py +78 -0
- bitmart/ccxt/static_dependencies/starkware/crypto/signature.py +2344 -0
- bitmart/ccxt/static_dependencies/starkware/crypto/utils.py +63 -0
- bitmart/ccxt/static_dependencies/sympy/__init__.py +0 -0
- bitmart/ccxt/static_dependencies/sympy/core/__init__.py +0 -0
- bitmart/ccxt/static_dependencies/sympy/core/intfunc.py +35 -0
- bitmart/ccxt/static_dependencies/sympy/external/__init__.py +0 -0
- bitmart/ccxt/static_dependencies/sympy/external/gmpy.py +345 -0
- bitmart/ccxt/static_dependencies/sympy/external/importtools.py +187 -0
- bitmart/ccxt/static_dependencies/sympy/external/ntheory.py +637 -0
- bitmart/ccxt/static_dependencies/sympy/external/pythonmpq.py +341 -0
- bitmart/ccxt/static_dependencies/toolz/__init__.py +26 -0
- bitmart/ccxt/static_dependencies/toolz/_signatures.py +784 -0
- bitmart/ccxt/static_dependencies/toolz/_version.py +520 -0
- bitmart/ccxt/static_dependencies/toolz/compatibility.py +30 -0
- bitmart/ccxt/static_dependencies/toolz/curried/__init__.py +101 -0
- bitmart/ccxt/static_dependencies/toolz/curried/exceptions.py +22 -0
- bitmart/ccxt/static_dependencies/toolz/curried/operator.py +22 -0
- bitmart/ccxt/static_dependencies/toolz/dicttoolz.py +339 -0
- bitmart/ccxt/static_dependencies/toolz/functoolz.py +1049 -0
- bitmart/ccxt/static_dependencies/toolz/itertoolz.py +1057 -0
- bitmart/ccxt/static_dependencies/toolz/recipes.py +46 -0
- bitmart/ccxt/static_dependencies/toolz/utils.py +9 -0
- bitmart/ccxt/static_dependencies/typing_inspect/__init__.py +0 -0
- bitmart/ccxt/static_dependencies/typing_inspect/typing_inspect.py +851 -0
- bitmart-0.0.116.dist-info/METADATA +342 -0
- bitmart-0.0.116.dist-info/RECORD +466 -0
- bitmart-0.0.116.dist-info/WHEEL +4 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
// TODO: add web3
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__all__ = ['ecdsa', 'keccak', 'aiohttp_socks', 'ethereum', 'parsimonious', 'toolz', 'starknet', 'marshmallow', 'marshmallow_oneofschema', 'lark', 'starkware', 'sympy']
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
# Copyright (c) 2021 Emanuele Bellocchia
|
|
2
|
+
#
|
|
3
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
4
|
+
# of this software and associated documentation files (the "Software"), to deal
|
|
5
|
+
# in the Software without restriction, including without limitation the rights
|
|
6
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
7
|
+
# copies of the Software, and to permit persons to whom the Software is
|
|
8
|
+
# furnished to do so, subject to the following conditions:
|
|
9
|
+
#
|
|
10
|
+
# The above copyright notice and this permission notice shall be included in
|
|
11
|
+
# all copies or substantial portions of the Software.
|
|
12
|
+
#
|
|
13
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
14
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
15
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
16
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
17
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
18
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
19
|
+
# THE SOFTWARE.
|
|
20
|
+
|
|
21
|
+
"""Module for P2PKH address encoding/decoding."""
|
|
22
|
+
|
|
23
|
+
# Imports
|
|
24
|
+
from enum import Enum, auto, unique
|
|
25
|
+
from typing import Any, Union
|
|
26
|
+
|
|
27
|
+
from .addr_dec_utils import AddrDecUtils
|
|
28
|
+
from .addr_key_validator import AddrKeyValidator
|
|
29
|
+
from .iaddr_decoder import IAddrDecoder
|
|
30
|
+
from .iaddr_encoder import IAddrEncoder
|
|
31
|
+
from ..base58 import Base58Alphabets, Base58ChecksumError, Base58Decoder, Base58Encoder
|
|
32
|
+
from ..bech32 import BchBech32Decoder, BchBech32Encoder, Bech32ChecksumError
|
|
33
|
+
from ..ecc import IPublicKey
|
|
34
|
+
from ..utils.crypto import Hash160
|
|
35
|
+
from ..utils.misc import BytesUtils
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
@unique
|
|
39
|
+
class P2PKHPubKeyModes(Enum):
|
|
40
|
+
"""Enumerative for P2PKH public key modes."""
|
|
41
|
+
|
|
42
|
+
COMPRESSED = auto()
|
|
43
|
+
UNCOMPRESSED = auto()
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
class P2PKHAddrDecoder(IAddrDecoder):
|
|
47
|
+
"""
|
|
48
|
+
P2PKH address decoder class.
|
|
49
|
+
It allows the Pay-to-Public-Key-Hash address decoding.
|
|
50
|
+
"""
|
|
51
|
+
|
|
52
|
+
@staticmethod
|
|
53
|
+
def DecodeAddr(addr: str,
|
|
54
|
+
**kwargs: Any) -> bytes:
|
|
55
|
+
"""
|
|
56
|
+
Decode a P2PKH address to bytes.
|
|
57
|
+
|
|
58
|
+
Args:
|
|
59
|
+
addr (str): Address string
|
|
60
|
+
|
|
61
|
+
Other Parameters:
|
|
62
|
+
net_ver (bytes) : Expected net address version
|
|
63
|
+
base58_alph (Base58Alphabets, optional): Base58 alphabet (default: Bitcoin alphabet)
|
|
64
|
+
|
|
65
|
+
Returns:
|
|
66
|
+
bytes: Public key hash bytes
|
|
67
|
+
|
|
68
|
+
Raises:
|
|
69
|
+
ValueError: If the address encoding is not valid
|
|
70
|
+
"""
|
|
71
|
+
net_ver_bytes = kwargs["net_ver"]
|
|
72
|
+
base58_alph = kwargs.get("base58_alph", Base58Alphabets.BITCOIN)
|
|
73
|
+
|
|
74
|
+
try:
|
|
75
|
+
addr_dec_bytes = Base58Decoder.CheckDecode(addr, base58_alph)
|
|
76
|
+
except Base58ChecksumError as ex:
|
|
77
|
+
raise ValueError("Invalid base58 checksum") from ex
|
|
78
|
+
|
|
79
|
+
# Validate length
|
|
80
|
+
AddrDecUtils.ValidateLength(addr_dec_bytes,
|
|
81
|
+
Hash160.DigestSize() + len(net_ver_bytes))
|
|
82
|
+
# Validate and remove prefix
|
|
83
|
+
return AddrDecUtils.ValidateAndRemovePrefix(addr_dec_bytes, net_ver_bytes)
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
class P2PKHAddrEncoder(IAddrEncoder):
|
|
87
|
+
"""
|
|
88
|
+
P2PKH address encoder class.
|
|
89
|
+
It allows the Pay-to-Public-Key-Hash address encoding.
|
|
90
|
+
"""
|
|
91
|
+
|
|
92
|
+
@staticmethod
|
|
93
|
+
def EncodeKey(pub_key: Union[bytes, IPublicKey],
|
|
94
|
+
**kwargs: Any) -> str:
|
|
95
|
+
"""
|
|
96
|
+
Encode a public key to P2PKH address.
|
|
97
|
+
|
|
98
|
+
Args:
|
|
99
|
+
pub_key (bytes or IPublicKey): Public key bytes or object
|
|
100
|
+
|
|
101
|
+
Other Parameters:
|
|
102
|
+
net_ver (bytes) : Net address version
|
|
103
|
+
base58_alph (Base58Alphabets, optional) : Base58 alphabet, Bitcoin alphabet by default
|
|
104
|
+
pub_key_mode (P2PKHPubKeyModes, optional): Public key mode, compressed key by default
|
|
105
|
+
|
|
106
|
+
Returns:
|
|
107
|
+
str: Address string
|
|
108
|
+
|
|
109
|
+
Raises:
|
|
110
|
+
ValueError: If the public key is not valid
|
|
111
|
+
TypeError: If the public key is not secp256k1
|
|
112
|
+
"""
|
|
113
|
+
net_ver_bytes = kwargs["net_ver"]
|
|
114
|
+
base58_alph = kwargs.get("base58_alph", Base58Alphabets.BITCOIN)
|
|
115
|
+
pub_key_mode = kwargs.get("pub_key_mode", P2PKHPubKeyModes.COMPRESSED)
|
|
116
|
+
|
|
117
|
+
pub_key_obj = AddrKeyValidator.ValidateAndGetSecp256k1Key(pub_key)
|
|
118
|
+
pub_key_bytes = (pub_key_obj.RawCompressed().ToBytes()
|
|
119
|
+
if pub_key_mode == P2PKHPubKeyModes.COMPRESSED
|
|
120
|
+
else pub_key_obj.RawUncompressed().ToBytes())
|
|
121
|
+
|
|
122
|
+
return Base58Encoder.CheckEncode(net_ver_bytes + Hash160.QuickDigest(pub_key_bytes), base58_alph)
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
class BchP2PKHAddrDecoder(IAddrDecoder):
|
|
126
|
+
"""
|
|
127
|
+
Bitcoin Cash P2PKH address decoder class.
|
|
128
|
+
It allows the Bitcoin Cash P2PKH decoding.
|
|
129
|
+
"""
|
|
130
|
+
|
|
131
|
+
@staticmethod
|
|
132
|
+
def DecodeAddr(addr: str,
|
|
133
|
+
**kwargs: Any) -> bytes:
|
|
134
|
+
"""
|
|
135
|
+
Decode a Bitcoin Cash P2PKH address to bytes.
|
|
136
|
+
|
|
137
|
+
Args:
|
|
138
|
+
addr (str): Address string
|
|
139
|
+
|
|
140
|
+
Other Parameters:
|
|
141
|
+
hrp (str) : Expected HRP
|
|
142
|
+
net_ver (bytes): Expected net address version
|
|
143
|
+
|
|
144
|
+
Returns:
|
|
145
|
+
bytes: Public key hash bytes
|
|
146
|
+
|
|
147
|
+
Raises:
|
|
148
|
+
ValueError: If the address encoding is not valid
|
|
149
|
+
"""
|
|
150
|
+
hrp = kwargs["hrp"]
|
|
151
|
+
net_ver_bytes = kwargs["net_ver"]
|
|
152
|
+
|
|
153
|
+
try:
|
|
154
|
+
net_ver_bytes_got, addr_dec_bytes = BchBech32Decoder.Decode(hrp, addr)
|
|
155
|
+
except Bech32ChecksumError as ex:
|
|
156
|
+
raise ValueError("Invalid bech32 checksum") from ex
|
|
157
|
+
|
|
158
|
+
# Check net version
|
|
159
|
+
if net_ver_bytes != net_ver_bytes_got:
|
|
160
|
+
raise ValueError(f"Invalid net version (expected {BytesUtils.ToHexString(net_ver_bytes)}, "
|
|
161
|
+
f"got {BytesUtils.ToHexString(net_ver_bytes_got)})")
|
|
162
|
+
# Validate length
|
|
163
|
+
AddrDecUtils.ValidateLength(addr_dec_bytes,
|
|
164
|
+
Hash160.DigestSize())
|
|
165
|
+
return addr_dec_bytes
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
class BchP2PKHAddrEncoder(IAddrEncoder):
|
|
169
|
+
"""
|
|
170
|
+
Bitcoin Cash P2PKH address encoder class.
|
|
171
|
+
It allows the Bitcoin Cash P2PKH encoding.
|
|
172
|
+
"""
|
|
173
|
+
|
|
174
|
+
@staticmethod
|
|
175
|
+
def EncodeKey(pub_key: Union[bytes, IPublicKey],
|
|
176
|
+
**kwargs: Any) -> str:
|
|
177
|
+
"""
|
|
178
|
+
Encode a public key to Bitcoin Cash P2PKH address.
|
|
179
|
+
|
|
180
|
+
Args:
|
|
181
|
+
pub_key (bytes or IPublicKey): Public key bytes or object
|
|
182
|
+
|
|
183
|
+
Other Parameters:
|
|
184
|
+
hrp (str) : HRP
|
|
185
|
+
net_ver (bytes): Net address version
|
|
186
|
+
|
|
187
|
+
Returns:
|
|
188
|
+
str: Address string
|
|
189
|
+
|
|
190
|
+
Raises:
|
|
191
|
+
ValueError: If the public key is not valid
|
|
192
|
+
TypeError: If the public key is not secp256k1
|
|
193
|
+
"""
|
|
194
|
+
hrp = kwargs["hrp"]
|
|
195
|
+
net_ver_bytes = kwargs["net_ver"]
|
|
196
|
+
|
|
197
|
+
pub_key_obj = AddrKeyValidator.ValidateAndGetSecp256k1Key(pub_key)
|
|
198
|
+
return BchBech32Encoder.Encode(hrp,
|
|
199
|
+
net_ver_bytes,
|
|
200
|
+
Hash160.QuickDigest(pub_key_obj.RawCompressed().ToBytes()))
|
|
201
|
+
|
|
202
|
+
|
|
203
|
+
# Deprecated: only for compatibility, Encoder classes shall be used instead
|
|
204
|
+
P2PKHAddr = P2PKHAddrEncoder
|
|
205
|
+
BchP2PKHAddr = BchP2PKHAddrEncoder
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
# Copyright (c) 2021 Emanuele Bellocchia
|
|
2
|
+
#
|
|
3
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
4
|
+
# of this software and associated documentation files (the "Software"), to deal
|
|
5
|
+
# in the Software without restriction, including without limitation the rights
|
|
6
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
7
|
+
# copies of the Software, and to permit persons to whom the Software is
|
|
8
|
+
# furnished to do so, subject to the following conditions:
|
|
9
|
+
#
|
|
10
|
+
# The above copyright notice and this permission notice shall be included in
|
|
11
|
+
# all copies or substantial portions of the Software.
|
|
12
|
+
#
|
|
13
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
14
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
15
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
16
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
17
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
18
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
19
|
+
# THE SOFTWARE.
|
|
20
|
+
|
|
21
|
+
"""Module with utility functions for address decoding."""
|
|
22
|
+
|
|
23
|
+
# Imports
|
|
24
|
+
from typing import Callable, Tuple, Type, TypeVar, Union
|
|
25
|
+
|
|
26
|
+
from ..ecc import IPublicKey
|
|
27
|
+
from ..utils.misc import BytesUtils
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
BytesOrStr = TypeVar("BytesOrStr", bytes, str)
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
class AddrDecUtils:
|
|
34
|
+
"""Class container for address decoding utility functions."""
|
|
35
|
+
|
|
36
|
+
@staticmethod
|
|
37
|
+
def ValidateAndRemovePrefix(addr: BytesOrStr,
|
|
38
|
+
prefix: BytesOrStr) -> BytesOrStr:
|
|
39
|
+
"""
|
|
40
|
+
Validate and remove prefix from an address.
|
|
41
|
+
|
|
42
|
+
Args:
|
|
43
|
+
addr (bytes or str) : Address string or bytes
|
|
44
|
+
prefix (bytes or str): Address prefix
|
|
45
|
+
|
|
46
|
+
Returns:
|
|
47
|
+
bytes or str: Address string or bytes with prefix removed
|
|
48
|
+
|
|
49
|
+
Raises:
|
|
50
|
+
ValueError: If the prefix is not valid
|
|
51
|
+
"""
|
|
52
|
+
prefix_got = addr[:len(prefix)]
|
|
53
|
+
if prefix != prefix_got:
|
|
54
|
+
raise ValueError(f"Invalid prefix (expected {prefix!r}, got {prefix_got!r})")
|
|
55
|
+
return addr[len(prefix):]
|
|
56
|
+
|
|
57
|
+
@staticmethod
|
|
58
|
+
def ValidateLength(addr: Union[bytes, str],
|
|
59
|
+
len_exp: int) -> None:
|
|
60
|
+
"""
|
|
61
|
+
Validate address length.
|
|
62
|
+
|
|
63
|
+
Args:
|
|
64
|
+
addr (str) : Address string or bytes
|
|
65
|
+
len_exp (int): Expected address length
|
|
66
|
+
|
|
67
|
+
Raises:
|
|
68
|
+
ValueError: If the length is not valid
|
|
69
|
+
"""
|
|
70
|
+
if len(addr) != len_exp:
|
|
71
|
+
raise ValueError(f"Invalid length (expected {len_exp}, got {len(addr)})")
|
|
72
|
+
|
|
73
|
+
@staticmethod
|
|
74
|
+
def ValidatePubKey(pub_key_bytes: bytes,
|
|
75
|
+
pub_key_cls: Type[IPublicKey]) -> None:
|
|
76
|
+
"""
|
|
77
|
+
Validate address length.
|
|
78
|
+
|
|
79
|
+
Args:
|
|
80
|
+
pub_key_bytes (bytes) : Public key bytes
|
|
81
|
+
pub_key_cls (IPublicKey): Public key class type
|
|
82
|
+
|
|
83
|
+
Raises:
|
|
84
|
+
ValueError: If the public key is not valid
|
|
85
|
+
"""
|
|
86
|
+
if not pub_key_cls.IsValidBytes(pub_key_bytes):
|
|
87
|
+
raise ValueError(f"Invalid {pub_key_cls.CurveType()} "
|
|
88
|
+
f"public key {BytesUtils.ToHexString(pub_key_bytes)}")
|
|
89
|
+
|
|
90
|
+
@staticmethod
|
|
91
|
+
def ValidateChecksum(payload_bytes: bytes,
|
|
92
|
+
checksum_bytes_exp: bytes,
|
|
93
|
+
checksum_fct: Callable[[bytes], bytes]) -> None:
|
|
94
|
+
"""
|
|
95
|
+
Validate address checksum.
|
|
96
|
+
|
|
97
|
+
Args:
|
|
98
|
+
payload_bytes (bytes) : Payload bytes
|
|
99
|
+
checksum_bytes_exp (bytes): Expected checksum bytes
|
|
100
|
+
checksum_fct (function) : Function for computing checksum
|
|
101
|
+
|
|
102
|
+
Raises:
|
|
103
|
+
ValueError: If the computed checksum is not equal tot he specified one
|
|
104
|
+
"""
|
|
105
|
+
checksum_bytes_got = checksum_fct(payload_bytes)
|
|
106
|
+
if checksum_bytes_exp != checksum_bytes_got:
|
|
107
|
+
raise ValueError(f"Invalid checksum (expected {BytesUtils.ToHexString(checksum_bytes_exp)}, "
|
|
108
|
+
f"got {BytesUtils.ToHexString(checksum_bytes_got)})")
|
|
109
|
+
|
|
110
|
+
@staticmethod
|
|
111
|
+
def SplitPartsByChecksum(addr_bytes: bytes,
|
|
112
|
+
checksum_len: int) -> Tuple[bytes, bytes]:
|
|
113
|
+
"""
|
|
114
|
+
Split address in two parts, considering the checksum at the end of it.
|
|
115
|
+
|
|
116
|
+
Args:
|
|
117
|
+
addr_bytes (bytes): Address bytes
|
|
118
|
+
checksum_len (int): Checksum length
|
|
119
|
+
|
|
120
|
+
Returns:
|
|
121
|
+
tuple[bytes, bytes]: Payload bytes (index 0) and checksum bytes (index 1)
|
|
122
|
+
"""
|
|
123
|
+
checksum_bytes = addr_bytes[-1 * checksum_len:]
|
|
124
|
+
payload_bytes = addr_bytes[:-1 * checksum_len]
|
|
125
|
+
return payload_bytes, checksum_bytes
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
# Copyright (c) 2021 Emanuele Bellocchia
|
|
2
|
+
#
|
|
3
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
4
|
+
# of this software and associated documentation files (the "Software"), to deal
|
|
5
|
+
# in the Software without restriction, including without limitation the rights
|
|
6
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
7
|
+
# copies of the Software, and to permit persons to whom the Software is
|
|
8
|
+
# furnished to do so, subject to the following conditions:
|
|
9
|
+
#
|
|
10
|
+
# The above copyright notice and this permission notice shall be included in
|
|
11
|
+
# all copies or substantial portions of the Software.
|
|
12
|
+
#
|
|
13
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
14
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
15
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
16
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
17
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
18
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
19
|
+
# THE SOFTWARE.
|
|
20
|
+
|
|
21
|
+
"""Module with utility functions for validating address public keys."""
|
|
22
|
+
|
|
23
|
+
# Imports
|
|
24
|
+
from typing import Type, Union
|
|
25
|
+
|
|
26
|
+
from ..ecc import (
|
|
27
|
+
Secp256k1PublicKey, IPublicKey,
|
|
28
|
+
# Ed25519Blake2bPublicKey, Ed25519MoneroPublicKey, Ed25519PublicKey, EllipticCurveGetter,
|
|
29
|
+
# Nist256p1PublicKey, Secp256k1PublicKey, Sr25519PublicKey
|
|
30
|
+
)
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
class AddrKeyValidator:
|
|
34
|
+
"""Class container for address utility functions."""
|
|
35
|
+
|
|
36
|
+
# @staticmethod
|
|
37
|
+
# def ValidateAndGetEd25519Key(pub_key: Union[bytes, IPublicKey]) -> IPublicKey:
|
|
38
|
+
# """
|
|
39
|
+
# Validate and get a ed25519 public key.
|
|
40
|
+
|
|
41
|
+
# Args:
|
|
42
|
+
# pub_key (bytes or IPublicKey object): Public key bytes or object
|
|
43
|
+
|
|
44
|
+
# Returns:
|
|
45
|
+
# IPublicKey object: IPublicKey object
|
|
46
|
+
|
|
47
|
+
# Raises:
|
|
48
|
+
# TypeError: If the public key is not ed25519
|
|
49
|
+
# ValueError: If the public key is not valid
|
|
50
|
+
# """
|
|
51
|
+
# return AddrKeyValidator.__ValidateAndGetGenericKey(pub_key, Ed25519PublicKey)
|
|
52
|
+
|
|
53
|
+
# @staticmethod
|
|
54
|
+
# def ValidateAndGetEd25519Blake2bKey(pub_key: Union[bytes, IPublicKey]) -> IPublicKey:
|
|
55
|
+
# """
|
|
56
|
+
# Validate and get a ed25519-blake2b public key.
|
|
57
|
+
|
|
58
|
+
# Args:
|
|
59
|
+
# pub_key (bytes or IPublicKey object): Public key bytes or object
|
|
60
|
+
|
|
61
|
+
# Returns:
|
|
62
|
+
# IPublicKey object: IPublicKey object
|
|
63
|
+
|
|
64
|
+
# Raises:
|
|
65
|
+
# TypeError: If the public key is not ed25519-blake2b
|
|
66
|
+
# ValueError: If the public key is not valid
|
|
67
|
+
# """
|
|
68
|
+
# return AddrKeyValidator.__ValidateAndGetGenericKey(pub_key, Ed25519Blake2bPublicKey)
|
|
69
|
+
|
|
70
|
+
# @staticmethod
|
|
71
|
+
# def ValidateAndGetEd25519MoneroKey(pub_key: Union[bytes, IPublicKey]) -> IPublicKey:
|
|
72
|
+
# """
|
|
73
|
+
# Validate and get a ed25519-monero public key.
|
|
74
|
+
|
|
75
|
+
# Args:
|
|
76
|
+
# pub_key (bytes or IPublicKey object): Public key bytes or object
|
|
77
|
+
|
|
78
|
+
# Returns:
|
|
79
|
+
# IPublicKey object: IPublicKey object
|
|
80
|
+
|
|
81
|
+
# Raises:
|
|
82
|
+
# TypeError: If the public key is not ed25519-monero
|
|
83
|
+
# ValueError: If the public key is not valid
|
|
84
|
+
# """
|
|
85
|
+
# return AddrKeyValidator.__ValidateAndGetGenericKey(pub_key, Ed25519MoneroPublicKey)
|
|
86
|
+
|
|
87
|
+
# @staticmethod
|
|
88
|
+
# def ValidateAndGetNist256p1Key(pub_key: Union[bytes, IPublicKey]) -> IPublicKey:
|
|
89
|
+
# """
|
|
90
|
+
# Validate and get a nist256p1 public key.
|
|
91
|
+
|
|
92
|
+
# Args:
|
|
93
|
+
# pub_key (bytes or IPublicKey object): Public key bytes or object
|
|
94
|
+
|
|
95
|
+
# Returns:
|
|
96
|
+
# IPublicKey object: IPublicKey object
|
|
97
|
+
|
|
98
|
+
# Raises:
|
|
99
|
+
# TypeError: If the public key is not nist256p1
|
|
100
|
+
# ValueError: If the public key is not valid
|
|
101
|
+
# """
|
|
102
|
+
# return AddrKeyValidator.__ValidateAndGetGenericKey(pub_key, Nist256p1PublicKey)
|
|
103
|
+
|
|
104
|
+
@staticmethod
|
|
105
|
+
def ValidateAndGetSecp256k1Key(pub_key: Union[bytes, IPublicKey]) -> IPublicKey:
|
|
106
|
+
"""
|
|
107
|
+
Validate and get a secp256k1 public key.
|
|
108
|
+
|
|
109
|
+
Args:
|
|
110
|
+
pub_key (bytes or IPublicKey object): Public key bytes or object
|
|
111
|
+
|
|
112
|
+
Returns:
|
|
113
|
+
IPublicKey object: IPublicKey object
|
|
114
|
+
|
|
115
|
+
Raises:
|
|
116
|
+
TypeError: If the public key is not secp256k1
|
|
117
|
+
ValueError: If the public key is not valid
|
|
118
|
+
"""
|
|
119
|
+
return AddrKeyValidator.__ValidateAndGetGenericKey(pub_key, Secp256k1PublicKey)
|
|
120
|
+
|
|
121
|
+
# @staticmethod
|
|
122
|
+
# def ValidateAndGetSr25519Key(pub_key: Union[bytes, IPublicKey]) -> IPublicKey:
|
|
123
|
+
# """
|
|
124
|
+
# Validate and get a sr25519 public key.
|
|
125
|
+
|
|
126
|
+
# Args:
|
|
127
|
+
# pub_key (bytes or IPublicKey object): Public key bytes or object
|
|
128
|
+
|
|
129
|
+
# Returns:
|
|
130
|
+
# IPublicKey object: IPublicKey object
|
|
131
|
+
|
|
132
|
+
# Raises:
|
|
133
|
+
# TypeError: If the public key is not sr25519
|
|
134
|
+
# ValueError: If the public key is not valid
|
|
135
|
+
# """
|
|
136
|
+
# return AddrKeyValidator.__ValidateAndGetGenericKey(pub_key, Sr25519PublicKey)
|
|
137
|
+
|
|
138
|
+
@staticmethod
|
|
139
|
+
def __ValidateAndGetGenericKey(pub_key: Union[bytes, IPublicKey],
|
|
140
|
+
pub_key_cls: Type[IPublicKey]) -> IPublicKey:
|
|
141
|
+
"""
|
|
142
|
+
Validate and get a generic public key.
|
|
143
|
+
|
|
144
|
+
Args:
|
|
145
|
+
pub_key (bytes or IPublicKey object): Public key bytes or object
|
|
146
|
+
pub_key_cls (IPublicKey) : Public key class type
|
|
147
|
+
|
|
148
|
+
Returns:
|
|
149
|
+
IPublicKey object: IPublicKey object
|
|
150
|
+
|
|
151
|
+
Raises:
|
|
152
|
+
TypeError: If the public key is not of the correct class type
|
|
153
|
+
ValueError: If the public key is not valid
|
|
154
|
+
"""
|
|
155
|
+
if isinstance(pub_key, bytes):
|
|
156
|
+
pub_key = pub_key_cls.FromBytes(pub_key)
|
|
157
|
+
elif not isinstance(pub_key, pub_key_cls):
|
|
158
|
+
curve = EllipticCurveGetter.FromType(pub_key_cls.CurveType())
|
|
159
|
+
raise TypeError(f"A {curve.Name()} public key is required"
|
|
160
|
+
f"(expected: {pub_key_cls}, got: {type(pub_key)}")
|
|
161
|
+
|
|
162
|
+
return pub_key
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# Copyright (c) 2021 Emanuele Bellocchia
|
|
2
|
+
#
|
|
3
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
4
|
+
# of this software and associated documentation files (the "Software"), to deal
|
|
5
|
+
# in the Software without restriction, including without limitation the rights
|
|
6
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
7
|
+
# copies of the Software, and to permit persons to whom the Software is
|
|
8
|
+
# furnished to do so, subject to the following conditions:
|
|
9
|
+
#
|
|
10
|
+
# The above copyright notice and this permission notice shall be included in
|
|
11
|
+
# all copies or substantial portions of the Software.
|
|
12
|
+
#
|
|
13
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
14
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
15
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
16
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
17
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
18
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
19
|
+
# THE SOFTWARE.
|
|
20
|
+
|
|
21
|
+
"""Module with interface for address encoding classes."""
|
|
22
|
+
|
|
23
|
+
# Imports
|
|
24
|
+
from abc import ABC, abstractmethod
|
|
25
|
+
from typing import Any
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
class IAddrDecoder(ABC):
|
|
29
|
+
"""Address decoder interface."""
|
|
30
|
+
|
|
31
|
+
@staticmethod
|
|
32
|
+
@abstractmethod
|
|
33
|
+
def DecodeAddr(addr: str,
|
|
34
|
+
**kwargs: Any) -> bytes:
|
|
35
|
+
"""
|
|
36
|
+
Decode an address to bytes.
|
|
37
|
+
Depending on the coin, the result can be a public key or a public key hash bytes.
|
|
38
|
+
|
|
39
|
+
Args:
|
|
40
|
+
addr (str): Address string
|
|
41
|
+
**kwargs : Arbitrary arguments depending on the address type
|
|
42
|
+
|
|
43
|
+
Returns:
|
|
44
|
+
bytes: Public key bytes or public key hash
|
|
45
|
+
|
|
46
|
+
Raises:
|
|
47
|
+
ValueError: If the address encoding is not valid
|
|
48
|
+
"""
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# Copyright (c) 2021 Emanuele Bellocchia
|
|
2
|
+
#
|
|
3
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
4
|
+
# of this software and associated documentation files (the "Software"), to deal
|
|
5
|
+
# in the Software without restriction, including without limitation the rights
|
|
6
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
7
|
+
# copies of the Software, and to permit persons to whom the Software is
|
|
8
|
+
# furnished to do so, subject to the following conditions:
|
|
9
|
+
#
|
|
10
|
+
# The above copyright notice and this permission notice shall be included in
|
|
11
|
+
# all copies or substantial portions of the Software.
|
|
12
|
+
#
|
|
13
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
14
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
15
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
16
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
17
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
18
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
19
|
+
# THE SOFTWARE.
|
|
20
|
+
|
|
21
|
+
"""Module with interface for address encoding classes."""
|
|
22
|
+
|
|
23
|
+
# Imports
|
|
24
|
+
from abc import ABC, abstractmethod
|
|
25
|
+
from typing import Any, Union
|
|
26
|
+
|
|
27
|
+
from ..ecc import IPublicKey
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
class IAddrEncoder(ABC):
|
|
31
|
+
"""Address encoder interface."""
|
|
32
|
+
|
|
33
|
+
@staticmethod
|
|
34
|
+
@abstractmethod
|
|
35
|
+
def EncodeKey(pub_key: Union[bytes, IPublicKey],
|
|
36
|
+
**kwargs: Any) -> str:
|
|
37
|
+
"""
|
|
38
|
+
Encode public key to address.
|
|
39
|
+
|
|
40
|
+
Args:
|
|
41
|
+
pub_key (bytes or IPublicKey): Public key bytes or object
|
|
42
|
+
**kwargs : Arbitrary arguments depending on the address type
|
|
43
|
+
|
|
44
|
+
Returns:
|
|
45
|
+
str: Address string
|
|
46
|
+
|
|
47
|
+
Raised:
|
|
48
|
+
ValueError: If the public key is not valid
|
|
49
|
+
TypeError: If the public key is not of the correct type (it depends on the address type)
|
|
50
|
+
"""
|