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 json
|
2018-08-13 16:21:24 +00:00
|
|
|
import os.path
|
2018-04-10 09:42:21 +00:00
|
|
|
|
2018-07-03 15:26:22 +00:00
|
|
|
from .tx_api import TxApiInsight
|
2018-04-10 09:42:21 +00:00
|
|
|
|
2018-08-13 16:21:24 +00:00
|
|
|
COINS_JSON = os.path.join(os.path.dirname(__file__), "coins.json")
|
2018-04-10 09:42:21 +00:00
|
|
|
|
|
|
|
|
|
|
|
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):
|
2018-08-13 16:21:24 +00:00
|
|
|
url = next(iter(coin["blockbook"] + coin["bitcore"]), None)
|
2018-07-03 15:26:22 +00:00
|
|
|
if not url:
|
2018-04-10 09:42:21 +00:00
|
|
|
return None
|
2018-08-13 16:21:24 +00:00
|
|
|
zcash = coin["coin_name"].lower().startswith("zcash")
|
|
|
|
bip115 = coin["bip115"]
|
2018-10-10 10:44:54 +00:00
|
|
|
decred = coin["decred"]
|
2018-08-13 16:21:24 +00:00
|
|
|
network = "insight_{}".format(coin["coin_name"].lower().replace(" ", "_"))
|
2018-10-10 10:44:54 +00:00
|
|
|
return TxApiInsight(
|
|
|
|
network=network, url=url, zcash=zcash, bip115=bip115, decred=decred
|
|
|
|
)
|
2018-04-10 09:42:21 +00:00
|
|
|
|
|
|
|
|
|
|
|
# exported variables
|
2018-08-13 16:21:24 +00:00
|
|
|
__all__ = ["by_name", "slip44", "tx_api"]
|
2018-04-10 09:42:21 +00:00
|
|
|
|
2018-04-10 11:31:45 +00:00
|
|
|
try:
|
2018-09-04 13:36:56 +00:00
|
|
|
coins_list = _load_coins_json()
|
2018-10-04 15:14:46 +00:00
|
|
|
by_name = {coin["coin_name"]: coin for coin in coins_list}
|
2018-04-10 11:31:45 +00:00
|
|
|
except Exception as e:
|
|
|
|
raise ImportError("Failed to load coins.json. Check your installation.") from e
|
|
|
|
|
2018-08-13 16:21:24 +00:00
|
|
|
slip44 = {name: coin["slip44"] for name, coin in by_name.items()}
|
|
|
|
tx_api = {
|
|
|
|
name: _insight_for_coin(coin)
|
|
|
|
for name, coin in by_name.items()
|
|
|
|
if coin["blockbook"] or coin["bitcore"]
|
|
|
|
}
|