2018-04-10 09:42:21 +00:00
|
|
|
import os.path
|
|
|
|
import json
|
|
|
|
|
|
|
|
from .tx_api import TxApiInsight, TxApiBlockCypher
|
|
|
|
|
|
|
|
COINS_JSON = os.path.join(os.path.dirname(__file__), 'coins.json')
|
|
|
|
|
|
|
|
|
|
|
|
def _load_coins_json():
|
|
|
|
# Load coins.json to local variables
|
|
|
|
# NOTE: coins.json comes from 'vendor/trezor-common/coins.json',
|
|
|
|
# which is a git submodule. If you're trying to run trezorlib directly
|
|
|
|
# from the checkout (or tarball), initialize the submodule with:
|
|
|
|
# $ git submodule update --init
|
|
|
|
# and install coins.json with:
|
|
|
|
# $ python setup.py prebuild
|
|
|
|
with open(COINS_JSON) as coins_json:
|
|
|
|
coins_list = json.load(coins_json)
|
|
|
|
return {coin['coin_name']: coin for coin in coins_list}
|
|
|
|
|
|
|
|
|
|
|
|
def _insight_for_coin(coin):
|
|
|
|
if not coin['bitcore']:
|
|
|
|
return None
|
|
|
|
zcash = coin['coin_name'].lower().startswith('zcash')
|
|
|
|
network = 'insight_{}'.format(coin['coin_name'].lower().replace(' ', '_'))
|
|
|
|
url = coin['bitcore'][0] + 'api/'
|
|
|
|
return TxApiInsight(network=network, url=url, zcash=zcash)
|
|
|
|
|
|
|
|
|
|
|
|
# exported variables
|
|
|
|
__all__ = ['by_name', 'slip44', 'tx_api']
|
|
|
|
|
2018-04-10 11:31:45 +00:00
|
|
|
try:
|
|
|
|
by_name = _load_coins_json()
|
|
|
|
except Exception as e:
|
|
|
|
raise ImportError("Failed to load coins.json. Check your installation.") from e
|
|
|
|
|
2018-04-10 09:42:21 +00:00
|
|
|
slip44 = {name: coin['bip44'] for name, coin in by_name.items()}
|
|
|
|
tx_api = {name: _insight_for_coin(coin)
|
|
|
|
for name, coin in by_name.items()
|
|
|
|
if coin["bitcore"]}
|
|
|
|
|
|
|
|
# fixup for Dogecoin
|
|
|
|
tx_api['Dogecoin'] = TxApiBlockCypher(network='blockcypher_dogecoin', url='https://api.blockcypher.com/v1/doge/main/')
|