2018-06-21 14:28:34 +00:00
|
|
|
# This file is part of the Trezor project.
|
|
|
|
#
|
|
|
|
# Copyright (C) 2012-2018 SatoshiLabs and contributors
|
|
|
|
#
|
|
|
|
# This library is free software: you can redistribute it and/or modify
|
|
|
|
# it under the terms of the GNU Lesser General Public License version 3
|
|
|
|
# as published by the Free Software Foundation.
|
|
|
|
#
|
|
|
|
# This library is distributed in the hope that it will be useful,
|
|
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
# GNU Lesser General Public License for more details.
|
|
|
|
#
|
|
|
|
# You should have received a copy of the License along with this library.
|
|
|
|
# If not, see <https://www.gnu.org/licenses/lgpl-3.0.html>.
|
|
|
|
|
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:
|
2018-05-30 09:17:27 +00:00
|
|
|
return json.load(coins_json)
|
2018-04-10 09:42:21 +00:00
|
|
|
|
|
|
|
|
|
|
|
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(' ', '_'))
|
2018-05-30 08:50:49 +00:00
|
|
|
url = coin['bitcore'][0] + '/api/'
|
2018-04-10 09:42:21 +00:00
|
|
|
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-05-30 09:17:27 +00:00
|
|
|
slip44 = {name: coin['slip44'] for name, coin in by_name.items()}
|
2018-04-10 09:42:21 +00:00
|
|
|
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/')
|