address-encoder 1.0.0__tar.gz
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.
- address_encoder-1.0.0/.env +3 -0
- address_encoder-1.0.0/.github/workflows/test.yml +29 -0
- address_encoder-1.0.0/.gitignore +9 -0
- address_encoder-1.0.0/LICENSE +21 -0
- address_encoder-1.0.0/PKG-INFO +132 -0
- address_encoder-1.0.0/README.md +102 -0
- address_encoder-1.0.0/docs/supported-cryptocurrencies.md +171 -0
- address_encoder-1.0.0/pyproject.toml +53 -0
- address_encoder-1.0.0/scripts/_maintainer.py +170 -0
- address_encoder-1.0.0/scripts/add_evm_coin.py +48 -0
- address_encoder-1.0.0/scripts/format_supported_coins.py +117 -0
- address_encoder-1.0.0/scripts/generate_coin.py +112 -0
- address_encoder-1.0.0/scripts/prepublish_only.py +43 -0
- address_encoder-1.0.0/src/address_encoder/__init__.py +72 -0
- address_encoder-1.0.0/src/address_encoder/coders.py +368 -0
- address_encoder-1.0.0/src/address_encoder/coins/__init__.py +67 -0
- address_encoder-1.0.0/src/address_encoder/coins/abbc.py +15 -0
- address_encoder-1.0.0/src/address_encoder/coins/ada.py +32 -0
- address_encoder-1.0.0/src/address_encoder/coins/ae.py +23 -0
- address_encoder-1.0.0/src/address_encoder/coins/aib.py +17 -0
- address_encoder-1.0.0/src/address_encoder/coins/aion.py +32 -0
- address_encoder-1.0.0/src/address_encoder/coins/algo.py +42 -0
- address_encoder-1.0.0/src/address_encoder/coins/ar.py +15 -0
- address_encoder-1.0.0/src/address_encoder/coins/ardr.py +77 -0
- address_encoder-1.0.0/src/address_encoder/coins/ark.py +24 -0
- address_encoder-1.0.0/src/address_encoder/coins/atom.py +15 -0
- address_encoder-1.0.0/src/address_encoder/coins/avax.py +31 -0
- address_encoder-1.0.0/src/address_encoder/coins/bcd.py +20 -0
- address_encoder-1.0.0/src/address_encoder/coins/bch.py +42 -0
- address_encoder-1.0.0/src/address_encoder/coins/bcn.py +41 -0
- address_encoder-1.0.0/src/address_encoder/coins/bdx.py +15 -0
- address_encoder-1.0.0/src/address_encoder/coins/bnb.py +15 -0
- address_encoder-1.0.0/src/address_encoder/coins/bps.py +17 -0
- address_encoder-1.0.0/src/address_encoder/coins/bsv.py +28 -0
- address_encoder-1.0.0/src/address_encoder/coins/btc.py +20 -0
- address_encoder-1.0.0/src/address_encoder/coins/btg.py +20 -0
- address_encoder-1.0.0/src/address_encoder/coins/btm.py +15 -0
- address_encoder-1.0.0/src/address_encoder/coins/bts.py +15 -0
- address_encoder-1.0.0/src/address_encoder/coins/cca.py +17 -0
- address_encoder-1.0.0/src/address_encoder/coins/ccxx.py +20 -0
- address_encoder-1.0.0/src/address_encoder/coins/celoLegacy.py +15 -0
- address_encoder-1.0.0/src/address_encoder/coins/ckb.py +15 -0
- address_encoder-1.0.0/src/address_encoder/coins/cloLegacy.py +15 -0
- address_encoder-1.0.0/src/address_encoder/coins/dash.py +17 -0
- address_encoder-1.0.0/src/address_encoder/coins/dcr.py +15 -0
- address_encoder-1.0.0/src/address_encoder/coins/dgb.py +20 -0
- address_encoder-1.0.0/src/address_encoder/coins/divi.py +17 -0
- address_encoder-1.0.0/src/address_encoder/coins/doge.py +17 -0
- address_encoder-1.0.0/src/address_encoder/coins/dot.py +15 -0
- address_encoder-1.0.0/src/address_encoder/coins/egld.py +15 -0
- address_encoder-1.0.0/src/address_encoder/coins/ela.py +15 -0
- address_encoder-1.0.0/src/address_encoder/coins/eos.py +15 -0
- address_encoder-1.0.0/src/address_encoder/coins/etcLegacy.py +15 -0
- address_encoder-1.0.0/src/address_encoder/coins/eth.py +15 -0
- address_encoder-1.0.0/src/address_encoder/coins/etn.py +46 -0
- address_encoder-1.0.0/src/address_encoder/coins/ewtLegacy.py +15 -0
- address_encoder-1.0.0/src/address_encoder/coins/fil.py +69 -0
- address_encoder-1.0.0/src/address_encoder/coins/fio.py +15 -0
- address_encoder-1.0.0/src/address_encoder/coins/firo.py +17 -0
- address_encoder-1.0.0/src/address_encoder/coins/flow.py +32 -0
- address_encoder-1.0.0/src/address_encoder/coins/flux.py +21 -0
- address_encoder-1.0.0/src/address_encoder/coins/ftmLegacy.py +15 -0
- address_encoder-1.0.0/src/address_encoder/coins/gnoLegacy.py +15 -0
- address_encoder-1.0.0/src/address_encoder/coins/goLegacy.py +15 -0
- address_encoder-1.0.0/src/address_encoder/coins/grin.py +15 -0
- address_encoder-1.0.0/src/address_encoder/coins/gxc.py +15 -0
- address_encoder-1.0.0/src/address_encoder/coins/hbar.py +33 -0
- address_encoder-1.0.0/src/address_encoder/coins/hive.py +15 -0
- address_encoder-1.0.0/src/address_encoder/coins/hns.py +39 -0
- address_encoder-1.0.0/src/address_encoder/coins/hnt.py +26 -0
- address_encoder-1.0.0/src/address_encoder/coins/icx.py +37 -0
- address_encoder-1.0.0/src/address_encoder/coins/iost.py +15 -0
- address_encoder-1.0.0/src/address_encoder/coins/iota.py +26 -0
- address_encoder-1.0.0/src/address_encoder/coins/iotx.py +15 -0
- address_encoder-1.0.0/src/address_encoder/coins/iris.py +15 -0
- address_encoder-1.0.0/src/address_encoder/coins/kava.py +15 -0
- address_encoder-1.0.0/src/address_encoder/coins/kmd.py +17 -0
- address_encoder-1.0.0/src/address_encoder/coins/ksm.py +15 -0
- address_encoder-1.0.0/src/address_encoder/coins/lcc.py +20 -0
- address_encoder-1.0.0/src/address_encoder/coins/lrg.py +17 -0
- address_encoder-1.0.0/src/address_encoder/coins/lsk.py +25 -0
- address_encoder-1.0.0/src/address_encoder/coins/ltc.py +20 -0
- address_encoder-1.0.0/src/address_encoder/coins/luna.py +15 -0
- address_encoder-1.0.0/src/address_encoder/coins/mona.py +20 -0
- address_encoder-1.0.0/src/address_encoder/coins/mrx.py +15 -0
- address_encoder-1.0.0/src/address_encoder/coins/nano.py +74 -0
- address_encoder-1.0.0/src/address_encoder/coins/nas.py +42 -0
- address_encoder-1.0.0/src/address_encoder/coins/near.py +27 -0
- address_encoder-1.0.0/src/address_encoder/coins/neo.py +15 -0
- address_encoder-1.0.0/src/address_encoder/coins/nim.py +72 -0
- address_encoder-1.0.0/src/address_encoder/coins/nmc.py +15 -0
- address_encoder-1.0.0/src/address_encoder/coins/nostr.py +15 -0
- address_encoder-1.0.0/src/address_encoder/coins/nrgLegacy.py +15 -0
- address_encoder-1.0.0/src/address_encoder/coins/nuls.py +68 -0
- address_encoder-1.0.0/src/address_encoder/coins/one.py +15 -0
- address_encoder-1.0.0/src/address_encoder/coins/ont.py +26 -0
- address_encoder-1.0.0/src/address_encoder/coins/poaLegacy.py +15 -0
- address_encoder-1.0.0/src/address_encoder/coins/ppc.py +17 -0
- address_encoder-1.0.0/src/address_encoder/coins/qtum.py +15 -0
- address_encoder-1.0.0/src/address_encoder/coins/rbtc.py +15 -0
- address_encoder-1.0.0/src/address_encoder/coins/rdd.py +17 -0
- address_encoder-1.0.0/src/address_encoder/coins/rune.py +15 -0
- address_encoder-1.0.0/src/address_encoder/coins/rvn.py +17 -0
- address_encoder-1.0.0/src/address_encoder/coins/sc.py +38 -0
- address_encoder-1.0.0/src/address_encoder/coins/sero.py +22 -0
- address_encoder-1.0.0/src/address_encoder/coins/sol.py +31 -0
- address_encoder-1.0.0/src/address_encoder/coins/srm.py +15 -0
- address_encoder-1.0.0/src/address_encoder/coins/steem.py +15 -0
- address_encoder-1.0.0/src/address_encoder/coins/strat.py +17 -0
- address_encoder-1.0.0/src/address_encoder/coins/strk.py +53 -0
- address_encoder-1.0.0/src/address_encoder/coins/stx.py +104 -0
- address_encoder-1.0.0/src/address_encoder/coins/sui.py +34 -0
- address_encoder-1.0.0/src/address_encoder/coins/sys.py +20 -0
- address_encoder-1.0.0/src/address_encoder/coins/tfuel.py +15 -0
- address_encoder-1.0.0/src/address_encoder/coins/thetaLegacy.py +15 -0
- address_encoder-1.0.0/src/address_encoder/coins/tomoLegacy.py +15 -0
- address_encoder-1.0.0/src/address_encoder/coins/trx.py +15 -0
- address_encoder-1.0.0/src/address_encoder/coins/ttLegacy.py +15 -0
- address_encoder-1.0.0/src/address_encoder/coins/vet.py +15 -0
- address_encoder-1.0.0/src/address_encoder/coins/via.py +17 -0
- address_encoder-1.0.0/src/address_encoder/coins/vlx.py +15 -0
- address_encoder-1.0.0/src/address_encoder/coins/vlxLegacy.py +15 -0
- address_encoder-1.0.0/src/address_encoder/coins/vsys.py +44 -0
- address_encoder-1.0.0/src/address_encoder/coins/wan.py +44 -0
- address_encoder-1.0.0/src/address_encoder/coins/waves.py +43 -0
- address_encoder-1.0.0/src/address_encoder/coins/wicc.py +17 -0
- address_encoder-1.0.0/src/address_encoder/coins/xch.py +15 -0
- address_encoder-1.0.0/src/address_encoder/coins/xem.py +31 -0
- address_encoder-1.0.0/src/address_encoder/coins/xhv.py +15 -0
- address_encoder-1.0.0/src/address_encoder/coins/xlm.py +50 -0
- address_encoder-1.0.0/src/address_encoder/coins/xmr.py +15 -0
- address_encoder-1.0.0/src/address_encoder/coins/xrp.py +14 -0
- address_encoder-1.0.0/src/address_encoder/coins/xtz.py +51 -0
- address_encoder-1.0.0/src/address_encoder/coins/xvg.py +17 -0
- address_encoder-1.0.0/src/address_encoder/coins/zec.py +21 -0
- address_encoder-1.0.0/src/address_encoder/coins/zen.py +36 -0
- address_encoder-1.0.0/src/address_encoder/coins/zil.py +15 -0
- address_encoder-1.0.0/src/address_encoder/consts/__init__.py +17 -0
- address_encoder-1.0.0/src/address_encoder/consts/coin_maps.py +162 -0
- address_encoder-1.0.0/src/address_encoder/py.typed +0 -0
- address_encoder-1.0.0/src/address_encoder/types.py +22 -0
- address_encoder-1.0.0/src/address_encoder/utils/__init__.py +120 -0
- address_encoder-1.0.0/src/address_encoder/utils/base32.py +68 -0
- address_encoder-1.0.0/src/address_encoder/utils/base58_.py +129 -0
- address_encoder-1.0.0/src/address_encoder/utils/base64url.py +14 -0
- address_encoder-1.0.0/src/address_encoder/utils/bch.py +103 -0
- address_encoder-1.0.0/src/address_encoder/utils/bech32_.py +181 -0
- address_encoder-1.0.0/src/address_encoder/utils/bitcoin.py +50 -0
- address_encoder-1.0.0/src/address_encoder/utils/byron.py +24 -0
- address_encoder-1.0.0/src/address_encoder/utils/bytes_.py +43 -0
- address_encoder-1.0.0/src/address_encoder/utils/crc32.py +55 -0
- address_encoder-1.0.0/src/address_encoder/utils/dot.py +33 -0
- address_encoder-1.0.0/src/address_encoder/utils/eosio.py +30 -0
- address_encoder-1.0.0/src/address_encoder/utils/evm.py +19 -0
- address_encoder-1.0.0/src/address_encoder/utils/flow.py +24 -0
- address_encoder-1.0.0/src/address_encoder/utils/hex_.py +69 -0
- address_encoder-1.0.0/src/address_encoder/utils/near.py +11 -0
- address_encoder-1.0.0/src/address_encoder/utils/zcash.py +39 -0
- address_encoder-1.0.0/tests/test_abbc.py +20 -0
- address_encoder-1.0.0/tests/test_ada.py +36 -0
- address_encoder-1.0.0/tests/test_ae.py +18 -0
- address_encoder-1.0.0/tests/test_aib.py +18 -0
- address_encoder-1.0.0/tests/test_aion.py +18 -0
- address_encoder-1.0.0/tests/test_algo.py +20 -0
- address_encoder-1.0.0/tests/test_ar.py +18 -0
- address_encoder-1.0.0/tests/test_ardr.py +18 -0
- address_encoder-1.0.0/tests/test_ark.py +18 -0
- address_encoder-1.0.0/tests/test_atom.py +18 -0
- address_encoder-1.0.0/tests/test_avax.py +30 -0
- address_encoder-1.0.0/tests/test_bcd.py +20 -0
- address_encoder-1.0.0/tests/test_bch.py +39 -0
- address_encoder-1.0.0/tests/test_bcn.py +20 -0
- address_encoder-1.0.0/tests/test_bdx.py +18 -0
- address_encoder-1.0.0/tests/test_bnb.py +18 -0
- address_encoder-1.0.0/tests/test_bps.py +20 -0
- address_encoder-1.0.0/tests/test_bsv.py +20 -0
- address_encoder-1.0.0/tests/test_btc.py +34 -0
- address_encoder-1.0.0/tests/test_btg.py +24 -0
- address_encoder-1.0.0/tests/test_btm.py +20 -0
- address_encoder-1.0.0/tests/test_bts.py +18 -0
- address_encoder-1.0.0/tests/test_cca.py +20 -0
- address_encoder-1.0.0/tests/test_ccxx.py +20 -0
- address_encoder-1.0.0/tests/test_celoLegacy.py +18 -0
- address_encoder-1.0.0/tests/test_ckb.py +18 -0
- address_encoder-1.0.0/tests/test_cloLegacy.py +18 -0
- address_encoder-1.0.0/tests/test_coders.py +17 -0
- address_encoder-1.0.0/tests/test_coins.py +16 -0
- address_encoder-1.0.0/tests/test_dash.py +20 -0
- address_encoder-1.0.0/tests/test_dcr.py +18 -0
- address_encoder-1.0.0/tests/test_dgb.py +22 -0
- address_encoder-1.0.0/tests/test_divi.py +20 -0
- address_encoder-1.0.0/tests/test_doge.py +20 -0
- address_encoder-1.0.0/tests/test_dot.py +18 -0
- address_encoder-1.0.0/tests/test_egld.py +18 -0
- address_encoder-1.0.0/tests/test_ela.py +18 -0
- address_encoder-1.0.0/tests/test_eos.py +20 -0
- address_encoder-1.0.0/tests/test_etcLegacy.py +18 -0
- address_encoder-1.0.0/tests/test_eth.py +30 -0
- address_encoder-1.0.0/tests/test_etn.py +20 -0
- address_encoder-1.0.0/tests/test_ewtLegacy.py +18 -0
- address_encoder-1.0.0/tests/test_fil.py +24 -0
- address_encoder-1.0.0/tests/test_fio.py +18 -0
- address_encoder-1.0.0/tests/test_firo.py +22 -0
- address_encoder-1.0.0/tests/test_flow.py +18 -0
- address_encoder-1.0.0/tests/test_flux.py +20 -0
- address_encoder-1.0.0/tests/test_ftmLegacy.py +18 -0
- address_encoder-1.0.0/tests/test_gnoLegacy.py +18 -0
- address_encoder-1.0.0/tests/test_goLegacy.py +18 -0
- address_encoder-1.0.0/tests/test_grin.py +18 -0
- address_encoder-1.0.0/tests/test_gxc.py +18 -0
- address_encoder-1.0.0/tests/test_hbar.py +18 -0
- address_encoder-1.0.0/tests/test_hive.py +18 -0
- address_encoder-1.0.0/tests/test_hns.py +18 -0
- address_encoder-1.0.0/tests/test_hnt.py +20 -0
- address_encoder-1.0.0/tests/test_icx.py +20 -0
- address_encoder-1.0.0/tests/test_index.py +130 -0
- address_encoder-1.0.0/tests/test_iost.py +18 -0
- address_encoder-1.0.0/tests/test_iota.py +20 -0
- address_encoder-1.0.0/tests/test_iotx.py +18 -0
- address_encoder-1.0.0/tests/test_iris.py +18 -0
- address_encoder-1.0.0/tests/test_kava.py +18 -0
- address_encoder-1.0.0/tests/test_kmd.py +18 -0
- address_encoder-1.0.0/tests/test_ksm.py +22 -0
- address_encoder-1.0.0/tests/test_lcc.py +22 -0
- address_encoder-1.0.0/tests/test_lrg.py +20 -0
- address_encoder-1.0.0/tests/test_lsk.py +22 -0
- address_encoder-1.0.0/tests/test_ltc.py +22 -0
- address_encoder-1.0.0/tests/test_luna.py +18 -0
- address_encoder-1.0.0/tests/test_mona.py +22 -0
- address_encoder-1.0.0/tests/test_mrx.py +18 -0
- address_encoder-1.0.0/tests/test_nano.py +20 -0
- address_encoder-1.0.0/tests/test_nas.py +20 -0
- address_encoder-1.0.0/tests/test_near.py +22 -0
- address_encoder-1.0.0/tests/test_neo.py +18 -0
- address_encoder-1.0.0/tests/test_nim.py +18 -0
- address_encoder-1.0.0/tests/test_nmc.py +20 -0
- address_encoder-1.0.0/tests/test_nostr.py +20 -0
- address_encoder-1.0.0/tests/test_nrgLegacy.py +18 -0
- address_encoder-1.0.0/tests/test_nuls.py +24 -0
- address_encoder-1.0.0/tests/test_one.py +18 -0
- address_encoder-1.0.0/tests/test_ont.py +22 -0
- address_encoder-1.0.0/tests/test_poaLegacy.py +20 -0
- address_encoder-1.0.0/tests/test_ppc.py +18 -0
- address_encoder-1.0.0/tests/test_qtum.py +18 -0
- address_encoder-1.0.0/tests/test_rbtc.py +18 -0
- address_encoder-1.0.0/tests/test_rdd.py +20 -0
- address_encoder-1.0.0/tests/test_rune.py +20 -0
- address_encoder-1.0.0/tests/test_rvn.py +20 -0
- address_encoder-1.0.0/tests/test_sc.py +18 -0
- address_encoder-1.0.0/tests/test_sero.py +22 -0
- address_encoder-1.0.0/tests/test_sol.py +22 -0
- address_encoder-1.0.0/tests/test_srm.py +18 -0
- address_encoder-1.0.0/tests/test_steem.py +18 -0
- address_encoder-1.0.0/tests/test_strat.py +20 -0
- address_encoder-1.0.0/tests/test_strk.py +18 -0
- address_encoder-1.0.0/tests/test_stx.py +20 -0
- address_encoder-1.0.0/tests/test_sui.py +22 -0
- address_encoder-1.0.0/tests/test_sys.py +24 -0
- address_encoder-1.0.0/tests/test_tfuel.py +18 -0
- address_encoder-1.0.0/tests/test_thetaLegacy.py +18 -0
- address_encoder-1.0.0/tests/test_tomoLegacy.py +20 -0
- address_encoder-1.0.0/tests/test_trx.py +20 -0
- address_encoder-1.0.0/tests/test_ttLegacy.py +18 -0
- address_encoder-1.0.0/tests/test_utils_evm.py +32 -0
- address_encoder-1.0.0/tests/test_utils_hex.py +26 -0
- address_encoder-1.0.0/tests/test_utils_near.py +49 -0
- address_encoder-1.0.0/tests/test_vet.py +18 -0
- address_encoder-1.0.0/tests/test_via.py +20 -0
- address_encoder-1.0.0/tests/test_vlx.py +18 -0
- address_encoder-1.0.0/tests/test_vlxLegacy.py +18 -0
- address_encoder-1.0.0/tests/test_vsys.py +18 -0
- address_encoder-1.0.0/tests/test_wan.py +18 -0
- address_encoder-1.0.0/tests/test_waves.py +18 -0
- address_encoder-1.0.0/tests/test_wicc.py +20 -0
- address_encoder-1.0.0/tests/test_xch.py +18 -0
- address_encoder-1.0.0/tests/test_xem.py +20 -0
- address_encoder-1.0.0/tests/test_xhv.py +18 -0
- address_encoder-1.0.0/tests/test_xlm.py +18 -0
- address_encoder-1.0.0/tests/test_xmr.py +28 -0
- address_encoder-1.0.0/tests/test_xrp.py +20 -0
- address_encoder-1.0.0/tests/test_xtz.py +26 -0
- address_encoder-1.0.0/tests/test_xvg.py +18 -0
- address_encoder-1.0.0/tests/test_zec.py +22 -0
- address_encoder-1.0.0/tests/test_zen.py +20 -0
- address_encoder-1.0.0/tests/test_zil.py +18 -0
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
pypi-AgEIcHlwaS5vcmcCJDRkNjU4ZTdiLTlmYTItNGYyMi05YTY4LWFhYWIyMTFhNjU1YwACKlszLCJiY2ViMzg0MS0wMjRmLTQ3MzAtOTExNS0zZjUyODJjZjBmOGIiXQAABiAQTgin7-P6NYHgqZVRnuD0ImyOAvwebGbhW7g8sJfbeQ
|
|
2
|
+
|
|
3
|
+
pypi-AgENdGVzdC5weXBpLm9yZwIkOWUzNzA1MWMtZGM1ZS00MGViLWE2ODEtOWMzYmRiMmY2MWU3AAIqWzMsImJlOWRkNjUwLTE0ZTAtNDBmZi1hZmYyLTBhZjY4OTQ3Y2NlNiJdAAAGIFT0vEKURkTraegquuCTD5GfN7u1wn33DI2EF0N4D5gY
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches:
|
|
6
|
+
- main
|
|
7
|
+
- master
|
|
8
|
+
pull_request:
|
|
9
|
+
|
|
10
|
+
jobs:
|
|
11
|
+
test:
|
|
12
|
+
runs-on: ubuntu-latest
|
|
13
|
+
strategy:
|
|
14
|
+
fail-fast: false
|
|
15
|
+
matrix:
|
|
16
|
+
python-version: ["3.10", "3.11", "3.12", "3.13"]
|
|
17
|
+
steps:
|
|
18
|
+
- uses: actions/checkout@v4
|
|
19
|
+
|
|
20
|
+
- uses: actions/setup-python@v5
|
|
21
|
+
with:
|
|
22
|
+
python-version: ${{ matrix.python-version }}
|
|
23
|
+
cache: pip
|
|
24
|
+
|
|
25
|
+
- name: Install dependencies
|
|
26
|
+
run: pip install -e ".[dev]"
|
|
27
|
+
|
|
28
|
+
- name: Run tests
|
|
29
|
+
run: pytest -q
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2023 ENS Labs Limited
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: address-encoder
|
|
3
|
+
Version: 1.0.0
|
|
4
|
+
Summary: Encodes and decodes address formats for various cryptocurrencies
|
|
5
|
+
Project-URL: Homepage, https://github.com/ensdomains/address-encoder
|
|
6
|
+
Project-URL: Repository, https://github.com/ensdomains/address-encoder
|
|
7
|
+
Author: ENS Domains
|
|
8
|
+
License-Expression: MIT
|
|
9
|
+
License-File: LICENSE
|
|
10
|
+
Keywords: address,cryptocurrency,decoder,encoder,ens
|
|
11
|
+
Classifier: Development Status :: 4 - Beta
|
|
12
|
+
Classifier: Intended Audience :: Developers
|
|
13
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
14
|
+
Classifier: Programming Language :: Python :: 3
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
19
|
+
Classifier: Topic :: Software Development :: Libraries
|
|
20
|
+
Classifier: Typing :: Typed
|
|
21
|
+
Requires-Python: >=3.10
|
|
22
|
+
Requires-Dist: base58>=2.1.0
|
|
23
|
+
Requires-Dist: cbor2>=5.6.0
|
|
24
|
+
Requires-Dist: pycryptodome>=3.20.0
|
|
25
|
+
Provides-Extra: dev
|
|
26
|
+
Requires-Dist: mypy>=1.8.0; extra == 'dev'
|
|
27
|
+
Requires-Dist: pytest>=8.0.0; extra == 'dev'
|
|
28
|
+
Requires-Dist: ruff>=0.4.0; extra == 'dev'
|
|
29
|
+
Description-Content-Type: text/markdown
|
|
30
|
+
|
|
31
|
+
# address-encoder
|
|
32
|
+
|
|
33
|
+
Encodes and decodes address formats for various cryptocurrencies. Converts addresses between human-readable text and their native binary representations for use with [EIP-2304](https://eips.ethereum.org/EIPS/eip-2304) and ENS multichain resolution.
|
|
34
|
+
|
|
35
|
+
EVM compatible chains are either specified using SLIP-44 coin type or `0x80000000 | chainId` where `0x80000000` is the MSB (most significant bit) reserved at SLIP-44 and no coin types exist in that range. This is to avoid number collision with the existing coin types.
|
|
36
|
+
|
|
37
|
+
See [ENSIP-11](https://docs.ens.domains/ens-improvement-proposals/ensip-11-evmchain-address-resolution#specification) for more detail.
|
|
38
|
+
|
|
39
|
+
## Installation
|
|
40
|
+
|
|
41
|
+
Coming soon to PyPI. In the meantime, install from source.
|
|
42
|
+
|
|
43
|
+
For local development:
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
pip install -e ".[dev]"
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## Usage
|
|
50
|
+
|
|
51
|
+
```python
|
|
52
|
+
from address_encoder import get_coder_by_coin_name
|
|
53
|
+
|
|
54
|
+
btc = get_coder_by_coin_name("btc")
|
|
55
|
+
decoded = btc.decode("1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa")
|
|
56
|
+
encoded = btc.encode(decoded)
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### Hex input
|
|
60
|
+
|
|
61
|
+
Encoders expect `bytes`. Convert hex strings with the utility helpers:
|
|
62
|
+
|
|
63
|
+
```python
|
|
64
|
+
from address_encoder import get_coder_by_coin_name
|
|
65
|
+
from address_encoder.utils import hex_to_bytes
|
|
66
|
+
|
|
67
|
+
btc = get_coder_by_coin_name("btc")
|
|
68
|
+
address = btc.encode(hex_to_bytes("0x76a91462e907b15cbf27d5425399ebf6f0fb50ebb88f1888ac"))
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### Direct coin imports
|
|
72
|
+
|
|
73
|
+
```python
|
|
74
|
+
from address_encoder.coins.btc import btc
|
|
75
|
+
|
|
76
|
+
decoded = btc.decode("1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa")
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### EVM chains
|
|
80
|
+
|
|
81
|
+
Many EVM chains are supported, but none of them (except ETH) are exported from `address_encoder.coins`. To encode or decode addresses for an EVM chain, use the ETH codec via `get_coder_by_coin_name`:
|
|
82
|
+
|
|
83
|
+
```python
|
|
84
|
+
from address_encoder import get_coder_by_coin_name
|
|
85
|
+
|
|
86
|
+
op = get_coder_by_coin_name("op") # Optimism
|
|
87
|
+
decoded = op.decode("0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb")
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
You can also look up a codec by coin type:
|
|
91
|
+
|
|
92
|
+
```python
|
|
93
|
+
from address_encoder import get_coder_by_coin_type
|
|
94
|
+
|
|
95
|
+
op = get_coder_by_coin_type(2147483658) # 0x80000000 | 10
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
## Development
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
pytest
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
### Maintainer scripts
|
|
105
|
+
|
|
106
|
+
Interactive helpers for adding coins and keeping docs in sync:
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
python3 scripts/generate_coin.py # scaffold a new non-EVM coin module and test
|
|
110
|
+
python3 scripts/add_evm_coin.py # add EVM chain entries to coin maps
|
|
111
|
+
python3 scripts/format_supported_coins.py # regenerate docs/supported-cryptocurrencies.md
|
|
112
|
+
python3 scripts/prepublish_only.py # run tests and verify the wheel builds
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
#### Coin types
|
|
116
|
+
|
|
117
|
+
When adding a new coin, the **coin type** is a numeric identifier from [SLIP-44](https://github.com/satoshilabs/slips/blob/master/slip-0044.md). It must be an integer, not a coin name or symbol.
|
|
118
|
+
|
|
119
|
+
| Chain type | Coin type | Script |
|
|
120
|
+
| --- | --- | --- |
|
|
121
|
+
| Non-EVM (e.g. BTC, SOL) | SLIP-44 index (e.g. `0` for Bitcoin, `501` for Solana) | `scripts/generate_coin.py` |
|
|
122
|
+
| EVM (e.g. Optimism, Base) | Computed as `0x80000000 \| chainId` — enter the chain ID only | `scripts/add_evm_coin.py` |
|
|
123
|
+
|
|
124
|
+
If the coin is not listed in SLIP-44, open a PR to [add it there](https://github.com/satoshilabs/slips/blob/master/slip-0044.md) first.
|
|
125
|
+
|
|
126
|
+
## Package layout
|
|
127
|
+
|
|
128
|
+
- `address_encoder` — main API (`get_coder_by_coin_name`, `get_coder_by_coin_type`)
|
|
129
|
+
- `address_encoder.coins` — per-coin codecs
|
|
130
|
+
- `address_encoder.coders` — per-coin encode/decode function exports
|
|
131
|
+
- `address_encoder.consts` — SLIP-44 and EVM chain mappings
|
|
132
|
+
- `address_encoder.utils` — shared encoding primitives
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
# address-encoder
|
|
2
|
+
|
|
3
|
+
Encodes and decodes address formats for various cryptocurrencies. Converts addresses between human-readable text and their native binary representations for use with [EIP-2304](https://eips.ethereum.org/EIPS/eip-2304) and ENS multichain resolution.
|
|
4
|
+
|
|
5
|
+
EVM compatible chains are either specified using SLIP-44 coin type or `0x80000000 | chainId` where `0x80000000` is the MSB (most significant bit) reserved at SLIP-44 and no coin types exist in that range. This is to avoid number collision with the existing coin types.
|
|
6
|
+
|
|
7
|
+
See [ENSIP-11](https://docs.ens.domains/ens-improvement-proposals/ensip-11-evmchain-address-resolution#specification) for more detail.
|
|
8
|
+
|
|
9
|
+
## Installation
|
|
10
|
+
|
|
11
|
+
Coming soon to PyPI. In the meantime, install from source.
|
|
12
|
+
|
|
13
|
+
For local development:
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
pip install -e ".[dev]"
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Usage
|
|
20
|
+
|
|
21
|
+
```python
|
|
22
|
+
from address_encoder import get_coder_by_coin_name
|
|
23
|
+
|
|
24
|
+
btc = get_coder_by_coin_name("btc")
|
|
25
|
+
decoded = btc.decode("1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa")
|
|
26
|
+
encoded = btc.encode(decoded)
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
### Hex input
|
|
30
|
+
|
|
31
|
+
Encoders expect `bytes`. Convert hex strings with the utility helpers:
|
|
32
|
+
|
|
33
|
+
```python
|
|
34
|
+
from address_encoder import get_coder_by_coin_name
|
|
35
|
+
from address_encoder.utils import hex_to_bytes
|
|
36
|
+
|
|
37
|
+
btc = get_coder_by_coin_name("btc")
|
|
38
|
+
address = btc.encode(hex_to_bytes("0x76a91462e907b15cbf27d5425399ebf6f0fb50ebb88f1888ac"))
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### Direct coin imports
|
|
42
|
+
|
|
43
|
+
```python
|
|
44
|
+
from address_encoder.coins.btc import btc
|
|
45
|
+
|
|
46
|
+
decoded = btc.decode("1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa")
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### EVM chains
|
|
50
|
+
|
|
51
|
+
Many EVM chains are supported, but none of them (except ETH) are exported from `address_encoder.coins`. To encode or decode addresses for an EVM chain, use the ETH codec via `get_coder_by_coin_name`:
|
|
52
|
+
|
|
53
|
+
```python
|
|
54
|
+
from address_encoder import get_coder_by_coin_name
|
|
55
|
+
|
|
56
|
+
op = get_coder_by_coin_name("op") # Optimism
|
|
57
|
+
decoded = op.decode("0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb")
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
You can also look up a codec by coin type:
|
|
61
|
+
|
|
62
|
+
```python
|
|
63
|
+
from address_encoder import get_coder_by_coin_type
|
|
64
|
+
|
|
65
|
+
op = get_coder_by_coin_type(2147483658) # 0x80000000 | 10
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## Development
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
pytest
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### Maintainer scripts
|
|
75
|
+
|
|
76
|
+
Interactive helpers for adding coins and keeping docs in sync:
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
python3 scripts/generate_coin.py # scaffold a new non-EVM coin module and test
|
|
80
|
+
python3 scripts/add_evm_coin.py # add EVM chain entries to coin maps
|
|
81
|
+
python3 scripts/format_supported_coins.py # regenerate docs/supported-cryptocurrencies.md
|
|
82
|
+
python3 scripts/prepublish_only.py # run tests and verify the wheel builds
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
#### Coin types
|
|
86
|
+
|
|
87
|
+
When adding a new coin, the **coin type** is a numeric identifier from [SLIP-44](https://github.com/satoshilabs/slips/blob/master/slip-0044.md). It must be an integer, not a coin name or symbol.
|
|
88
|
+
|
|
89
|
+
| Chain type | Coin type | Script |
|
|
90
|
+
| --- | --- | --- |
|
|
91
|
+
| Non-EVM (e.g. BTC, SOL) | SLIP-44 index (e.g. `0` for Bitcoin, `501` for Solana) | `scripts/generate_coin.py` |
|
|
92
|
+
| EVM (e.g. Optimism, Base) | Computed as `0x80000000 \| chainId` — enter the chain ID only | `scripts/add_evm_coin.py` |
|
|
93
|
+
|
|
94
|
+
If the coin is not listed in SLIP-44, open a PR to [add it there](https://github.com/satoshilabs/slips/blob/master/slip-0044.md) first.
|
|
95
|
+
|
|
96
|
+
## Package layout
|
|
97
|
+
|
|
98
|
+
- `address_encoder` — main API (`get_coder_by_coin_name`, `get_coder_by_coin_type`)
|
|
99
|
+
- `address_encoder.coins` — per-coin codecs
|
|
100
|
+
- `address_encoder.coders` — per-coin encode/decode function exports
|
|
101
|
+
- `address_encoder.consts` — SLIP-44 and EVM chain mappings
|
|
102
|
+
- `address_encoder.utils` — shared encoding primitives
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
## Supported Cryptocurrencies
|
|
2
|
+
|
|
3
|
+
### EVM Chains
|
|
4
|
+
|
|
5
|
+
The following EVM chains are supported:
|
|
6
|
+
|
|
7
|
+
| Chain ID | Name | Full Name | Coin Type |
|
|
8
|
+
| --- | --- | --- | --- |
|
|
9
|
+
| 0 | default | Default | 2147483648 |
|
|
10
|
+
| 10 | op | Optimism | 2147483658 |
|
|
11
|
+
| 25 | cro | Cronos | 2147483673 |
|
|
12
|
+
| 56 | bsc | BNB Smart Chain | 2147483704 |
|
|
13
|
+
| 60 | go | GoChain | 2147483708 |
|
|
14
|
+
| 61 | etc | Ethereum Classic | 2147483709 |
|
|
15
|
+
| 88 | tomo | TomoChain | 2147483736 |
|
|
16
|
+
| 99 | poa | POA | 2147483747 |
|
|
17
|
+
| 100 | gno | Gnosis | 2147483748 |
|
|
18
|
+
| 108 | tt | ThunderCore | 2147483756 |
|
|
19
|
+
| 137 | matic | Polygon | 2147483785 |
|
|
20
|
+
| 169 | manta | Manta Pacific | 2147483817 |
|
|
21
|
+
| 246 | ewt | Energy Web | 2147483894 |
|
|
22
|
+
| 250 | ftm | Fantom Opera | 2147483898 |
|
|
23
|
+
| 288 | boba | Boba | 2147483936 |
|
|
24
|
+
| 324 | zksync | zkSync | 2147483972 |
|
|
25
|
+
| 361 | theta | Theta | 2147484009 |
|
|
26
|
+
| 820 | clo | Callisto | 2147484468 |
|
|
27
|
+
| 1088 | metis | Metis | 2147484736 |
|
|
28
|
+
| 5000 | mantle | Mantle | 2147488648 |
|
|
29
|
+
| 8453 | base | Base | 2147492101 |
|
|
30
|
+
| 39797 | nrg | Energi | 2147523445 |
|
|
31
|
+
| 42161 | arb1 | Arbitrum One | 2147525809 |
|
|
32
|
+
| 42220 | celo | Celo | 2147525868 |
|
|
33
|
+
| 43114 | avaxc | Avalanche C-Chain | 2147526762 |
|
|
34
|
+
| 59144 | linea | Linea | 2147542792 |
|
|
35
|
+
| 534352 | scr | Scroll | 2148018000 |
|
|
36
|
+
| 7777777 | zora | Zora | 2155261425 |
|
|
37
|
+
|
|
38
|
+
### Legacy Coins
|
|
39
|
+
|
|
40
|
+
The following legacy coins are supported:
|
|
41
|
+
|
|
42
|
+
| Coin Type | Name | Full Name | Replacement Name | Replacement Coin Type |
|
|
43
|
+
| --- | --- | --- | --- | --- |
|
|
44
|
+
| 61 | etcLegacy | Ethereum Classic | etc | 2147483709 |
|
|
45
|
+
| 178 | poaLegacy | POA | poa | 2147483747 |
|
|
46
|
+
| 246 | ewtLegacy | Energy Web | ewt | 2147483894 |
|
|
47
|
+
| 500 | thetaLegacy | Theta | theta | 2147484009 |
|
|
48
|
+
| 574 | vlxLegacy | Velas | vlx | 5655640 |
|
|
49
|
+
| 700 | gnoLegacy | Gnosis | gno | 2147483748 |
|
|
50
|
+
| 820 | cloLegacy | Callisto | clo | 2147484468 |
|
|
51
|
+
| 889 | tomoLegacy | TomoChain | tomo | 2147483736 |
|
|
52
|
+
| 1001 | ttLegacy | ThunderCore | tt | 2147483756 |
|
|
53
|
+
| 1007 | ftmLegacy | Fantom | ftm | 2147483898 |
|
|
54
|
+
| 6060 | goLegacy | GoChain | go | 2147483708 |
|
|
55
|
+
| 9797 | nrgLegacy | Energi | nrg | 2147523445 |
|
|
56
|
+
| 52752 | celoLegacy | Celo | celo | 2147525868 |
|
|
57
|
+
|
|
58
|
+
### Coins
|
|
59
|
+
|
|
60
|
+
The following coins are supported:
|
|
61
|
+
|
|
62
|
+
| Coin Type | Name | Full Name | Encoding Type |
|
|
63
|
+
| --- | --- | --- | --- |
|
|
64
|
+
| 0 | btc | Bitcoin | base58check P2PKH and P2SH, and bech32 segwit |
|
|
65
|
+
| 2 | ltc | Litecoin | base58check P2PHK and P2SH, and bech32 segwit |
|
|
66
|
+
| 3 | doge | Dogecoin | base58check P2PKH and P2SH |
|
|
67
|
+
| 4 | rdd | Reddcoin | base58check P2PKH and P2SH |
|
|
68
|
+
| 5 | dash | Dash | base58check P2PKH and P2SH |
|
|
69
|
+
| 6 | ppc | Peercoin | base58check P2PKH and P2SH |
|
|
70
|
+
| 7 | nmc | Namecoin | base58check |
|
|
71
|
+
| 14 | via | Viacoin | base58check P2PKH and P2SH |
|
|
72
|
+
| 20 | dgb | DigiByte | base58check P2PKH and P2SH, and bech32 segwit |
|
|
73
|
+
| 22 | mona | Monacoin | base58check P2PKH and P2SH, and bech32 segwit |
|
|
74
|
+
| 42 | dcr | Decred | base58, no check |
|
|
75
|
+
| 43 | xem | NEM | base32 |
|
|
76
|
+
| 55 | aib | AIB | base58check P2PKH and P2SH |
|
|
77
|
+
| 57 | sys | Syscoin | base58check P2PKH and P2SH, and bech32 segwit |
|
|
78
|
+
| 60 | eth | Ethereum | checksummed-hex |
|
|
79
|
+
| 74 | icx | ICON | custom |
|
|
80
|
+
| 77 | xvg | Verge | base58check P2PKH and P2SH |
|
|
81
|
+
| 105 | strat | Stratis | base58check P2PKH and P2SH |
|
|
82
|
+
| 111 | ark | ARK | base58check |
|
|
83
|
+
| 118 | atom | Atom | bech32 |
|
|
84
|
+
| 121 | zen | Zencash | base58check |
|
|
85
|
+
| 128 | xmr | Monero | base58xmr |
|
|
86
|
+
| 133 | zec | Zcash | base58check P2PKH and P2SH, bech32 (Sprout shielded not supported) |
|
|
87
|
+
| 134 | lsk | Lisk | hex with suffix |
|
|
88
|
+
| 135 | steem | Steem | base58 + ripemd160-checksum |
|
|
89
|
+
| 136 | firo | Firo | base58check P2PKH and P2SH |
|
|
90
|
+
| 137 | rbtc | RSK | checksummed-hex |
|
|
91
|
+
| 141 | kmd | Komodo | base58check |
|
|
92
|
+
| 144 | xrp | Ripple | base58check-ripple |
|
|
93
|
+
| 145 | bch | Bitcoin Cash | base58check and cashAddr; decodes to cashAddr |
|
|
94
|
+
| 148 | xlm | Stellar Lumens | ed25519 public key |
|
|
95
|
+
| 153 | btm | Bytom | bech32 segwit |
|
|
96
|
+
| 156 | btg | Bitcoin Gold | base58check P2PKH and P2SH, and bech32 segwit |
|
|
97
|
+
| 165 | nano | Nano | nano-base32 |
|
|
98
|
+
| 175 | rvn | Ravencoin | base58check P2PKH and P2SH |
|
|
99
|
+
| 192 | lcc | LitecoinCash | base58check P2PKH and P2SH, and bech32 segwit |
|
|
100
|
+
| 194 | eos | EOS | base58 + ripemd160-checksum |
|
|
101
|
+
| 195 | trx | Tron | base58check |
|
|
102
|
+
| 204 | bcn | Bytecoin | base58xmr |
|
|
103
|
+
| 235 | fio | FIO | base58 + ripemd160-checksum |
|
|
104
|
+
| 236 | bsv | BitcoinSV | base58check |
|
|
105
|
+
| 242 | nim | Nimiq | custom |
|
|
106
|
+
| 283 | algo | Algorand | checksummed-base32 |
|
|
107
|
+
| 291 | iost | IOST | base58, no check |
|
|
108
|
+
| 301 | divi | Divi Project | base58check P2PKH and P2SH |
|
|
109
|
+
| 304 | iotx | IoTeX | bech32 |
|
|
110
|
+
| 308 | bts | Bitshares | base58 + ripemd160-checksum |
|
|
111
|
+
| 309 | ckb | Nervos CKB | bech32 |
|
|
112
|
+
| 313 | zil | Zilliqa | bech32 |
|
|
113
|
+
| 326 | mrx | Metrix Coin | base58check |
|
|
114
|
+
| 330 | luna | Terra | bech32 |
|
|
115
|
+
| 354 | dot | Polkadot | ss58 |
|
|
116
|
+
| 360 | vsys | V Systems | custom |
|
|
117
|
+
| 367 | abbc | ABBC | base58 + ripemd160-checksum |
|
|
118
|
+
| 397 | near | NEAR Protocol | custom |
|
|
119
|
+
| 415 | etn | Electroneum | base58xmr |
|
|
120
|
+
| 425 | aion | Aion | hex |
|
|
121
|
+
| 434 | ksm | Kusama | ss58 |
|
|
122
|
+
| 457 | ae | æternity | base58check |
|
|
123
|
+
| 459 | kava | Kava | bech32 |
|
|
124
|
+
| 461 | fil | Filecoin | base10 + leb128 and base32 + blake2b checksum |
|
|
125
|
+
| 472 | ar | Arweave | base64url |
|
|
126
|
+
| 489 | cca | Counos | base58check P2PKH and P2SH |
|
|
127
|
+
| 501 | sol | Solana | base58, no check |
|
|
128
|
+
| 508 | egld | MultiversX | bech32 |
|
|
129
|
+
| 535 | xhv | Haven Protocol | base58xmr |
|
|
130
|
+
| 539 | flow | Flow | hex |
|
|
131
|
+
| 566 | iris | Irisnet | bech32 |
|
|
132
|
+
| 568 | lrg | Large Coin | base58check P2PKH and P2SH |
|
|
133
|
+
| 569 | sero | Super Zero Protocol | base58, no check |
|
|
134
|
+
| 570 | bdx | Beldex | base58xmr |
|
|
135
|
+
| 571 | ccxx | Counos X | base58check P2PKH and P2SH, and bech32 segwit |
|
|
136
|
+
| 573 | srm | Serum | base58, no check |
|
|
137
|
+
| 576 | bps | BitcoinPoS | base58check P2PKH and P2SH |
|
|
138
|
+
| 589 | tfuel | Theta Fuel | checksummed-hex |
|
|
139
|
+
| 592 | grin | Grin | base58check |
|
|
140
|
+
| 714 | bnb | BNB | bech32 |
|
|
141
|
+
| 784 | sui | Sui | hex |
|
|
142
|
+
| 818 | vet | VeChain | checksummed-hex |
|
|
143
|
+
| 825 | hive | Hive | base58 + ripemd160-checksum |
|
|
144
|
+
| 888 | neo | NEO | base58check |
|
|
145
|
+
| 904 | hnt | Helium | base58check |
|
|
146
|
+
| 931 | rune | THORChain | bech32 |
|
|
147
|
+
| 999 | bcd | Bitcoin Diamond | base58check P2PKH and P2SH, and bech32 segwit |
|
|
148
|
+
| 1023 | one | HARMONY-ONE | bech32 |
|
|
149
|
+
| 1024 | ont | Ontology | base58check |
|
|
150
|
+
| 1237 | nostr | Nostr | bech32 |
|
|
151
|
+
| 1729 | xtz | Tezos | base58check |
|
|
152
|
+
| 1815 | ada | Cardano | base58, no check + crc32-checksum and bech32 |
|
|
153
|
+
| 1991 | sc | Sia | blake2b checksum |
|
|
154
|
+
| 2301 | qtum | QTUM | base58check |
|
|
155
|
+
| 2303 | gxc | GXChain | base58 + ripemd160-checksum |
|
|
156
|
+
| 2305 | ela | Elastos | base58 |
|
|
157
|
+
| 2718 | nas | Nebulas | base58 + sha3-256-checksum |
|
|
158
|
+
| 3030 | hbar | Hedera HBAR | custom |
|
|
159
|
+
| 4218 | iota | IOTA | iotaBech32 |
|
|
160
|
+
| 5353 | hns | Handshake | custom |
|
|
161
|
+
| 5757 | stx | Stacks | crockford base32 P2PKH and P2SH + ripemd160-checksum |
|
|
162
|
+
| 8444 | xch | Chia | bech32m |
|
|
163
|
+
| 8964 | nuls | NULS | base58 |
|
|
164
|
+
| 9000 | avax | Avalanche | bech32 |
|
|
165
|
+
| 9004 | strk | StarkNet | keccak256-checksumed-hex |
|
|
166
|
+
| 16754 | ardr | Ardor | custom |
|
|
167
|
+
| 19167 | flux | Flux | base58check P2PKH and P2SH, bech32 (Sprout shielded not supported) |
|
|
168
|
+
| 99999 | wicc | Waykichain | base58check P2PKH and P2SH |
|
|
169
|
+
| 5655640 | vlx | Velas | base58, no check |
|
|
170
|
+
| 5718350 | wan | Wanchain | checksummed-hex |
|
|
171
|
+
| 5741564 | waves | Waves | base58 |
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["hatchling"]
|
|
3
|
+
build-backend = "hatchling.build"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "address-encoder"
|
|
7
|
+
version = "1.0.0"
|
|
8
|
+
description = "Encodes and decodes address formats for various cryptocurrencies"
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
license = "MIT"
|
|
11
|
+
requires-python = ">=3.10"
|
|
12
|
+
authors = [{ name = "ENS Domains" }]
|
|
13
|
+
keywords = ["ens", "cryptocurrency", "address", "encoder", "decoder"]
|
|
14
|
+
classifiers = [
|
|
15
|
+
"Development Status :: 4 - Beta",
|
|
16
|
+
"Intended Audience :: Developers",
|
|
17
|
+
"License :: OSI Approved :: MIT License",
|
|
18
|
+
"Programming Language :: Python :: 3",
|
|
19
|
+
"Programming Language :: Python :: 3.10",
|
|
20
|
+
"Programming Language :: Python :: 3.11",
|
|
21
|
+
"Programming Language :: Python :: 3.12",
|
|
22
|
+
"Programming Language :: Python :: 3.13",
|
|
23
|
+
"Topic :: Software Development :: Libraries",
|
|
24
|
+
"Typing :: Typed",
|
|
25
|
+
]
|
|
26
|
+
dependencies = [
|
|
27
|
+
"base58>=2.1.0",
|
|
28
|
+
"cbor2>=5.6.0",
|
|
29
|
+
"pycryptodome>=3.20.0",
|
|
30
|
+
]
|
|
31
|
+
|
|
32
|
+
[project.optional-dependencies]
|
|
33
|
+
dev = ["pytest>=8.0.0", "mypy>=1.8.0", "ruff>=0.4.0"]
|
|
34
|
+
|
|
35
|
+
[project.urls]
|
|
36
|
+
Homepage = "https://github.com/ensdomains/address-encoder"
|
|
37
|
+
Repository = "https://github.com/ensdomains/address-encoder"
|
|
38
|
+
|
|
39
|
+
[tool.hatch.build.targets.wheel]
|
|
40
|
+
packages = ["src/address_encoder"]
|
|
41
|
+
|
|
42
|
+
[tool.pytest.ini_options]
|
|
43
|
+
testpaths = ["tests"]
|
|
44
|
+
pythonpath = ["src"]
|
|
45
|
+
|
|
46
|
+
[tool.ruff]
|
|
47
|
+
line-length = 100
|
|
48
|
+
target-version = "py310"
|
|
49
|
+
|
|
50
|
+
[tool.mypy]
|
|
51
|
+
python_version = "3.10"
|
|
52
|
+
strict = true
|
|
53
|
+
packages = ["address_encoder"]
|