Bitcoin API &
Руководство разработчика
Создавайте приложения на биткоине. От запросов к данным блокчейна до приёма Lightning-платежей — это руководство охватывает API, библиотеки и инструменты, которые нужны разработчикам для интеграции биткоина в приложения.
Открытый протокол биткоина и прозрачный блокчейн делают его одной из наиболее дружелюбных к разработчикам финансовых систем за всю историю. Хотите ли вы создать платёжную интеграцию, анализировать on-chain данные, отслеживать цены биткоина, создать кошелёк или строить на Lightning Network — богатая экосистема API и библиотек доступна для этого. Это руководство описывает ландшафт и поможет выбрать правильные инструменты для вашего проекта.
Какие типы Bitcoin API существуют?
Bitcoin API делятся на четыре основные категории, каждая из которых отвечает разным потребностям разработки.
API полных узлов
Bitcoin Core JSON-RPC, Electrum Server. Запустите собственный узел для максимальной приватности и надёжности. Без лимитов на запросы, без зависимости от третьих сторон. Лучший вариант для production-приложений с высоким объёмом транзакций.
Сервисные API
Mempool.space, BlockCypher, Blockchain.com. Запросы к данным блокчейна без запуска собственного узла. Подходят для прототипирования, небольших приложений и задач, ориентированных на чтение. Подпадают под лимиты и зависят от доступности третьей стороны.
Платёжные API
BTCPay Greenfield API, Strike API, OpenNode API. Приём биткоин-платежей в вашем приложении. Управление выставлением счетов, обнаружением платежей, вебхуками и расчётами. Комиссии от 0% (BTCPay) до 1% (OpenNode).
API данных и аналитики
Glassnode, CoinGecko, Blockchair. On-chain метрики, рыночные данные и аналитика блокчейна. Используются для дашбордов, исследовательских инструментов и торговых приложений. У большинства провайдеров есть бесплатные уровни.
Начало работы: Mempool.space API
Mempool.space — рекомендуемая отправная точка для большинства разработчиков. Предоставляет бесплатный доступ с открытым исходным кодом к данным блокчейна биткоина без необходимости API-ключа.
Пример: получение текущих оценок комиссий
// JavaScript / Node.js
const response = await fetch(
'https://mempool.space/api/v1/fees/recommended'
);
const fees = await response.json();
// { fastestFee: 12, halfHourFee: 8, hourFee: 4, economyFee: 2 }
console.log(`Комиссия за следующий блок: ${fees.fastestFee} sat/vB`);Пример: запрос баланса адреса
# Python
import requests
address = 'bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh'
url = f'https://mempool.space/api/address/{address}'
data = requests.get(url).json()
funded = data['chain_stats']['funded_txo_sum']
spent = data['chain_stats']['spent_txo_sum']
balance_sats = funded - spent
print(f'Баланс: {balance_sats} sats ({balance_sats/1e8} BTC)')Bitcoin Core JSON-RPC
Для production-приложений запуск собственного узла Bitcoin Core обеспечивает наиболее надёжный и приватный источник данных. JSON-RPC API предоставляет более 100 команд для запросов к блокчейну, управления транзакциями и операций с кошельком.
Пример: получение информации о блоке через Bitcoin Core RPC
# Использование curl с Bitcoin Core RPC
curl --user myuser:mypassword \
--data-binary '{"jsonrpc":"1.0","method":"getblockcount"}' \
-H 'Content-Type: text/plain;' \
http://127.0.0.1:8332/
# Ответ: {"result":890123,"error":null,"id":null}CoinGecko Price API
CoinGecko предоставляет бесплатные данные о рынке криптовалют без API-ключа для базового использования. Это наиболее популярный выбор для ценовых данных, исторических графиков и рыночных метрик.
Пример: получение цены биткоина в нескольких валютах
// JavaScript - CoinGecko API (ключ не нужен)
const response = await fetch(
'https://api.coingecko.com/api/v3/simple/price?ids=bitcoin&vs_currencies=usd,eur,gbp'
);
const data = await response.json();
// { bitcoin: { usd: 87500, eur: 80200, gbp: 69800 } }
console.log(`BTC/USD: $${data.bitcoin.usd.toLocaleString()}`);Blockchain.info API
Один из старейших Bitcoin API, Blockchain.info предоставляет простые REST-эндпоинты для запросов к транзакциям, блокам и обменным курсам. API-ключ не требуется для базовых запросов.
Пример: запрос деталей транзакции
# Python - Blockchain.info API
import requests
# Получить текущие обменные курсы биткоина
rates = requests.get('https://blockchain.info/ticker').json()
usd_price = rates['USD']['last']
print(f'BTC/USD: ${usd_price:,.2f}')
# Получить количество транзакций адреса
addr = 'bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh'
info = requests.get(f'https://blockchain.info/rawaddr/{addr}?limit=0').json()
print(f'Всего транзакций: {info["n_tx"]}')Бесплатные или платные Bitcoin API: что выбрать?
| Провайдер | Бесплатный уровень | Лимит (бесплатно) | Платный от | Лучше для |
|---|---|---|---|---|
| Mempool.space | Полный API | Добросовестное использование | Self-host | Данные блокчейна, комиссии |
| CoinGecko | Базовые данные | 10–50/мин | $129/мес | Ценовые данные, графики |
| BlockCypher | 200 req/час | 200/час | $75/мес | Вебхуки, мониторинг транзакций |
| Blockchain.info | Базовые запросы | 10К/8 часов | N/A | Простые поиски |
| Glassnode | Ограниченные метрики | 200/день | $29/мес | On-chain аналитика |
| Bitcoin Core RPC | Без ограничений | Нет | Self-host | Полный узел, production |
Как создать трекер цены биткоина?
Вот полный пример, объединяющий несколько API для создания простого трекера цены биткоина с учётом комиссий. Этот паттерн распространён в дашбордах, портфельных приложениях и сервисах уведомлений.
Пример: комбинированный трекер цены и комиссий (TypeScript)
interface BitcoinData {
price: { usd: number; eur: number };
fees: { fastest: number; halfHour: number; hour: number };
blockHeight: number;
}
async function getBitcoinData(): Promise<BitcoinData> {
const [priceRes, feeRes, blockRes] = await Promise.all([
fetch('https://api.coingecko.com/api/v3/simple/price?ids=bitcoin&vs_currencies=usd,eur'),
fetch('https://mempool.space/api/v1/fees/recommended'),
fetch('https://mempool.space/api/blocks/tip/height'),
]);
const price = await priceRes.json();
const fees = await feeRes.json();
const blockHeight = await blockRes.json();
return {
price: { usd: price.bitcoin.usd, eur: price.bitcoin.eur },
fees: { fastest: fees.fastestFee, halfHour: fees.halfHourFee, hour: fees.hourFee },
blockHeight,
};
}
// Использование
const data = await getBitcoinData();
console.log(`BTC: $${data.price.usd.toLocaleString()}`);
console.log(`Комиссия за следующий блок: ${data.fees.fastest} sat/vB`);
console.log(`Высота блока: ${data.blockHeight.toLocaleString()}`);Как создавать приложения на Lightning Network?
Lightning Network обеспечивает мгновенные, дешёвые биткоин-платежи и необходима для приложений, требующих расчётов за доли секунды. Основные реализации — LND (Go), Core Lightning (C) и Eclair (Scala), каждая с обширными API. Для приложений, которым нужен Lightning без запуска инфраструктуры, хостинговые решения вроде Strike API, Alby и Voltage предоставляют управляемый Lightning-доступ.
Какие API поддерживают данные биткоина в реальном времени?
REST API подходят для периодического опроса, но приложения реального времени выигрывают от WebSocket-соединений, которые доставляют обновления по мере их появления. Mempool.space предоставляет WebSocket API для живых данных мемпула и блоков, а биржи вроде Kraken и Coinbase предлагают WebSocket-потоки для ценовых данных в реальном времени.
Пример: WebSocket Mempool.space (блоки в реальном времени)
// Браузер или Node.js с пакетом ws
const ws = new WebSocket('wss://mempool.space/api/v1/ws');
ws.onopen = () => {
// Подписаться на уведомления о новых блоках
ws.send(JSON.stringify({ action: 'want', data: ['blocks'] }));
};
ws.onmessage = (event) => {
const data = JSON.parse(event.data);
if (data.block) {
console.log(`Новый блок: #${data.block.height}`);
console.log(`Транзакций: ${data.block.tx_count}`);
console.log(`Размер: ${(data.block.size / 1e6).toFixed(2)} МБ`);
}
};Пример: WebSocket Kraken (поток цен в реальном времени)
const ws = new WebSocket('wss://ws.kraken.com');
ws.onopen = () => {
ws.send(JSON.stringify({
event: 'subscribe',
pair: ['XBT/USD'],
subscription: { name: 'ticker' },
}));
};
ws.onmessage = (event) => {
const msg = JSON.parse(event.data);
if (Array.isArray(msg) && msg[2] === 'ticker') {
const ticker = msg[1];
console.log(`BTC/USD: $${parseFloat(ticker.c[0]).toLocaleString()}`);
}
};При использовании WebSocket-соединений в production реализуйте автоматическое переподключение с экспоненциальной выдержкой. Соединения будут периодически разрываться из-за технического обслуживания сервера, нестабильности сети или тайм-аутов простоя. Keep-alive пинги (обычно каждые 30 секунд) помогают заранее обнаруживать устаревшие соединения.
Как обезопасить интеграцию с Bitcoin API?
Создание приложений на биткоине требует пристального внимания к безопасности. API-ключи, приватные ключи и данные о транзакциях — высокоценные цели. Следуйте этим практикам для защиты своего приложения и пользователей.
Никогда не раскрывайте API-ключи на стороне клиента
Храните API-ключи на сервере. Используйте переменные окружения (никогда не хардкодьте) и проксируйте запросы через свой бэкенд. JavaScript на стороне клиента виден всем, кто просматривает исходный код страницы.
Всегда проверяйте подписи вебхуков
Платёжные процессоры подписывают полезную нагрузку вебхука с помощью HMAC. Всегда проверяйте эти подписи на стороне сервера перед обработкой платёжных событий. Непроверенный эндпоинт вебхука — открытая дверь для злоумышленников, позволяющая отмечать поддельные платежи как подтверждённые.
Проверяйте суммы платежей на стороне сервера
Никогда не доверяйте подтверждению платежа на стороне клиента. Всегда проверяйте блокчейн (через свой узел или доверенный API), чтобы убедиться, что правильная сумма была отправлена на правильный адрес с достаточным количеством подтверждений, прежде чем отпускать товары или услуги.
Используйте rate limiting и кэширование
Кэшируйте ответы API, чтобы не превышать лимиты и снизить задержку. Ценовые данные не нужно запрашивать при каждом запросе. Кэш на 30–60 секунд для ценовых данных и 5 минут для данных блокчейна достаточен для большинства приложений.
Используйте testnet для разработки
Всегда разрабатывайте и тестируйте в Bitcoin testnet или signet перед деплоем в mainnet. Монеты в testnet не имеют ценности, поэтому ошибки во время разработки ничего не стоят. Большинство API, включая Mempool.space, BlockCypher и Bitcoin Core, поддерживают эндпоинты testnet. Переходите на mainnet только после тщательного тестирования построения транзакций, оценки комиссий и логики проверки платежей.
Реализуйте правильную обработку ошибок
Вызовы Bitcoin API могут завершаться с ошибкой из-за сетевых проблем, превышения лимитов или сбоев сервиса. Всегда реализуйте логику повторных попыток с экспоненциальной выдержкой, graceful degradation при недоступности API и резервные провайдеры для критических операций. Никогда не позволяйте необработанному сбою API привести к некорректному статусу платежа или потере данных о транзакции.
Быстрый старт платёжной интеграции
Для мерчантов и бизнесов , желающих принимать биткоин-платежи, наиболее быстрый путь — Strike API (простые REST-эндпоинты, поддержка Lightning, комиссия 0,3%) или Greenfield API BTCPay Server (self-hosted, нулевые комиссии, полный контроль). Оба поддерживают вебхуки для уведомлений о платежах, генерацию счетов и автоматическую конвертацию в фиатную валюту.
Основные библиотеки по языкам программирования
| Язык | Библиотека | Применение |
|---|---|---|
| JavaScript | bitcoinjs-lib | Построение транзакций, подписание |
| Python | python-bitcoinlib | Скриптинг, прототипирование, RPC-взаимодействие |
| Rust | rust-bitcoin + LDK | Высокопроизводительные задачи, интеграция Lightning |
| Go | btcsuite / LND | Полный узел, Lightning-демон |
Контрольный список для начинающего разработчика
Начните с Mempool.space API для запросов к блокчейну. Ключ не нужен, щедрые лимиты и отличная документация.
Добавьте CoinGecko для ценовых данных. Бесплатный уровень поддерживает большинство разработческих и небольших production-приложений.
Выберите библиотеку биткоина для своего языка: bitcoinjs-lib (JS/TS), python-bitcoinlib (Python) или rust-bitcoin (Rust).
Для платёжной интеграции оцените BTCPay Server vs Strike исходя из требований к кастодии и комиссиям.
По мере роста приложения запустите собственный узел Bitcoin Core для максимальной надёжности, приватности и неограниченного доступа к API.
С чего начать работу с Bitcoin API?
Экосистема Bitcoin API зрелая, хорошо документированная и доступная для разработчиков любого уровня. Начните с Mempool.space для операций чтения, добавьте Strike или BTCPay для платежей, используйте инструменты оценки комиссий для оптимизации стоимости транзакций. По мере роста приложения переходите к запуску собственного узла. Открытая природа биткоина означает, что вы никогда не привязаны к единственному провайдеру, а сообщество — одно из самых отзывчивых во всей разработке программного обеспечения.
Часто задаваемые вопросы
Какой Bitcoin API лучше всего подходит для начинающих разработчиков?
Нужно ли запускать биткоин-узел для использования Bitcoin API?
Как получать данные о цене биткоина в реальном времени через API?
Что такое Bitcoin Core JSON-RPC API?
Как программно принимать биткоин-платежи?
Каковы лимиты на запросы у популярных Bitcoin API?
Как создать биткоин-кошелёк-приложение?
Что представляет собой экосистема Lightning Network API?
Как запрашивать on-chain данные биткоина для аналитики?
Какие языки программирования лучше всего подходят для биткоин-разработки?
Как обрабатывать вебхуки биткоина и уведомления о платежах?
Создавайте с биткоином
Узнайте о решениях масштабирования биткоина и о том, как мерчанты используют эти API в production.