Использование API CoinMarketCap #HowToBUIDL (6 / n)

Есть множество способов получить информацию о криптовалюте и токенах. Если вам интересно что-то изучить, вот несколько идей, которые помогут вам начать работу и #BUIDLing собственного сайта с данными о ценах, объеме или рейтинге. Обратите внимание, что это не полный набор доступных источников, но я буду время от времени обновлять этот блог, используя различные методы получения рыночных данных.

CoinMarketCap - это сайт с набором основных фактов и цифр о криптовалютном рынке. Вы увидите общее количество криптовалют, рынков, MarketCap, объема за 24 часа и доминирования BTC. Затем появляется список всех доступных криптовалют и токенов, перечисленных в порядке их - как вы уже догадались - рыночной капитализации монет, которая представляет собой произвольное число в обращении, умноженное на текущую цену. Он используется как мера для сравнения монет. Мы можем получить ту же информацию, которую видим на сайте, в нашем коде.

Давайте сначала установим оболочку Javascript RESTful API с открытым исходным кодом для CMC.
Я использую разветвленную версию tiaanduplessis / coinmarketcap-api.
Полную документацию по API можно прочитать здесь.

npm install coinmarketcap-api`

Теперь, когда он доступен в нашем проекте, получите ссылку на библиотеку и создайте экземпляр объекта API.

CMC = require("coinmarketcap-api")
cmc = new CMC();

Получите ту же информацию, используя асинхронную функцию cmc.getGlobal().

Ответ возвращается со свойством data, заполненным active_cryptocurrencies, active_markets, bitcoin_percentage_of_market_cap и quotes.USD с total_market_cap и total_volume_24h. При желании вы можете создать сайт, используя те же данные, но с другим стилем.

Затем давайте рассмотрим получение информации обо всех доступных валютах. Может быть, вам интересно узнать идентификатор конкретной монеты, например Monero.

Асинхронная функция cmc.getListings() вернет полный набор монет:

{ data: [  
{ id: 1, name: 'Bitcoin',  symbol: 'BTC', website_slug: 'bitcoin'},
{ id: 2, name: 'Litecoin', symbol: 'LTC',website_slug: 'litecoin'},
{ id: 3, name: 'Namecoin', symbol: 'NMC',website_slug: 'namecoin' },
// ... more items ],
  metadata: { timestamp: 1531157458, num_cryptocurrencies: 1619,  error: null } }

Обратите внимание, что у каждой монеты есть id name symbol и website_slug.
listings.data.length равно 1619, что соответствует active_cryptocurrencies.

Теперь давайте найдем первое объявление с названием «Monero».

xmr = listings.data.filter(l => l.name === 'Monero' )[0];
{ id: 328, name: 'Monero', symbol: 'XMR', website_slug: 'monero' }

Мы воспользуемся этим, чтобы найти некоторые сведения об этой валюте, поскольку это требуется для другой части API. Свяжите его с нашим свойством переменной: xmr.id.

Давайте сделаем то же самое для другой криптовалюты с символомWAX '.

wax = listings.data.filter(l => l.symbol === 'WAX' )[0];
{ id: 2300, name: 'WAX', symbol: 'WAX', website_slug: 'wax' }

Большой. Теперь мы можем запросить у API информацию о тикерах xmr и wax.

Существует асинхронная функция getTicker, которая принимает необязательный параметр:

cmc.getTicker({id:wax.id})

{ data: { id: 2300, name: 'WAX', symbol: 'WAX', website_slug: 'wax', rank: 96, circulating_supply: 828063006, total_supply: 1850000000, max_supply: null, quotes: { USD: { price: 0.123043, volume_24h: 941801, market_cap: 101887356, percent_change_1h: 0.21, percent_change_24h: -4.22, percent_change_7d: -6.92 } }, last_updated: 1531158940 }, metadata: { timestamp: 1531158616, error: null } }
wax_ticker = _;

Опять же, вы заметите, что data.quotes.USD.price соответствует тому же значению, которое вы видите на веб-сайте (на эту дату и время: 0,123043 доллара США).

Проделаем то же самое с xmr:

cmc.getTicker({id:xmr.id})

{ data: { id: 328, name: 'Monero', symbol: 'XMR', website_slug: 'monero', rank: 13, circulating_supply: 16209366, total_supply: 16209366, max_supply: null, quotes: { USD: { price: 138.291, volume_24h: 32556600, market_cap: 2241609385, percent_change_1h: 0.56, percent_change_24h: -0.59, percent_change_7d: -0.16 } }, last_updated: 1531159466 }, metadata: { timestamp: 1531159117, error: null } }
xmr_ticker = _;

Еще раз мы видим, что информация о цене, возвращаемая API, соответствует сайту.

Теперь, когда у нас есть две разные котировки тикеров, хранящиеся в wax_ticker и xmr_ticker, мы можем быстро вычислить, чтобы приблизительно оценить коэффициент конверсии между WAX и XMR.

xmr_price = xmr_ticker.data.quotes.USD.price; // 138.291
wax_price = wax_ticker.data.quotes.USD.price; // 0.123043
xmrwax = xmr_price / wax_price; // 1123.9241565956618

Из этой информации мы можем вывести, что потребуется около 1124 wax токенов, чтобы равняться той же сумме долларовой стоимости в одном xmr токене. Или вы можете думать об этом так: 1 токен Monero может купить вам ~ 1124 восковых жетона.

Большинство бирж используют общие пары оснований, такие как BTC / USD или ETH / BTC, или XMR / BTC, но редко встречаются в списке необычные пары оснований. Поскольку теперь вы знаете, как получить информацию о ценах для данного тикера, вы можете получить хорошую оценку, используя coinmarketcap-api для себя, и, возможно, создать собственный тикер на своем сайте.

Имейте в виду, что информация о ценах на CoinMarketCap может быть отложена и не учитывает точно спред между ценой покупки и продажи данной валюты. Таким образом, эти данные должны использоваться только в информационных целях, а не для принятия торговых решений или принятия решений по управлению рисками. По крайней мере, я надеюсь, что это пробудит у вас любопытство к другим вещам, которые вы могли бы #BUIDL, и, возможно, даже к более удобному для пользователя способу сравнения совершенно несвязанных валют самостоятельно.

В приведенных выше примерах мы выполняли функции в truffle console, но если вам нужно дождаться результатов функции, вы захотите использовать удобные async/await библиотеки. Я привел здесь небольшой небольшой пример, которому вы можете подражать. get_cmc_price_in_usd - это async функция, которая принимает id и возвращает Promise, которое разрешается, когда становятся доступны getTicker результаты. Подобные функции можно написать для любых других данных API.

const async = require('asyncawait/async');
const await = require('asyncawait/await');
async function get_cmc_price_in_usd(cmc_id) {
    return new Promise(function(res, rej) {
          
          cmc.getTicker({id:cmc_id}).then( function(t) {
            res(t.data.quotes.USD.price);
          } );
    });
};
let xmr_price = await get_cmc_price_in_usd(xmr.id);

В следующем посте мы рассмотрим, как получить более точную и актуальную информацию о ценах на такой бирже, как Kucoin. CoinMarketCap подходит для одноразового исследования и дает вам более длительный ориентир для цен, но торговые решения должны приниматься на основе данных о ценах в реальном времени.

Дэн Эммонс - разработчик блокчейнов, владелец Emmonspired LLC, сертифицированный биткойн-профессионал, сертифицированный разработчик Ethereum, разработчик полного стека и советник по криптовалютным проектам. Он также является создателем канала Youtube и подкаста iTunes под названием #ByteSizeBlockchain.