Для разработчиков

Bitcoin API &
Руководство разработчика

Создавайте приложения на биткоине. От запросов к данным блокчейна до приёма Lightning-платежей — это руководство охватывает API, библиотеки и инструменты, которые нужны разработчикам для интеграции биткоина в приложения.

Bitcoin.diy Editorial
·

Открытый протокол биткоина и прозрачный блокчейн делают его одной из наиболее дружелюбных к разработчикам финансовых систем за всю историю. Хотите ли вы создать платёжную интеграцию, анализировать 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/месЦеновые данные, графики
BlockCypher200 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, нулевые комиссии, полный контроль). Оба поддерживают вебхуки для уведомлений о платежах, генерацию счетов и автоматическую конвертацию в фиатную валюту.

Основные библиотеки по языкам программирования

ЯзыкБиблиотекаПрименение
JavaScriptbitcoinjs-libПостроение транзакций, подписание
Pythonpython-bitcoinlibСкриптинг, прототипирование, RPC-взаимодействие
Rustrust-bitcoin + LDKВысокопроизводительные задачи, интеграция Lightning
Gobtcsuite / LNDПолный узел, Lightning-демон

Контрольный список для начинающего разработчика

1

Начните с Mempool.space API для запросов к блокчейну. Ключ не нужен, щедрые лимиты и отличная документация.

2

Добавьте CoinGecko для ценовых данных. Бесплатный уровень поддерживает большинство разработческих и небольших production-приложений.

3

Выберите библиотеку биткоина для своего языка: bitcoinjs-lib (JS/TS), python-bitcoinlib (Python) или rust-bitcoin (Rust).

4

Для платёжной интеграции оцените BTCPay Server vs Strike исходя из требований к кастодии и комиссиям.

5

По мере роста приложения запустите собственный узел Bitcoin Core для максимальной надёжности, приватности и неограниченного доступа к API.

С чего начать работу с Bitcoin API?

Экосистема Bitcoin API зрелая, хорошо документированная и доступная для разработчиков любого уровня. Начните с Mempool.space для операций чтения, добавьте Strike или BTCPay для платежей, используйте инструменты оценки комиссий для оптимизации стоимости транзакций. По мере роста приложения переходите к запуску собственного узла. Открытая природа биткоина означает, что вы никогда не привязаны к единственному провайдеру, а сообщество — одно из самых отзывчивых во всей разработке программного обеспечения.

Часто задаваемые вопросы

Какой Bitcoin API лучше всего подходит для начинающих разработчиков?
Mempool.space — лучший стартовый вариант для большинства разработчиков. Он предоставляет бесплатный, с открытым исходным кодом REST API для запросов к блокчейну биткоина (транзакции, блоки, адреса, комиссии) без регистрации и API-ключей. API хорошо документирован, лимиты щедрые, работает на публичной инфраструктуре биткоина. Для платёжной интеграции API Strike предлагает наиболее простой путь к приёму биткоин-платежей с поддержкой Lightning Network.
Нужно ли запускать биткоин-узел для использования Bitcoin API?
Нет. Сервисные API вроде Mempool.space, BlockCypher и Blockchain.com предоставляют доступ к данным блокчейна биткоина без запуска собственного узла. Однако запуск собственного узла (Bitcoin Core) даёт максимальный уровень приватности, надёжности и независимости. Если вы создаёте production-приложение с высоким объёмом транзакций, рекомендуется использовать собственный узел с JSON-RPC API — это позволит избежать зависимости от третьих сторон и лимитов на запросы.
Как получать данные о цене биткоина в реальном времени через API?
CoinGecko (бесплатно, ключ API не нужен для базового использования, 10–50 запросов в минуту), CoinMarketCap (есть бесплатный уровень, требуется ключ API), Kraken (WebSocket API для потоков цен в реальном времени), Binance (REST + WebSocket, обширные рыночные данные). Для исторических данных CoinGecko и Messari предоставляют подробные наборы данных. Большинству приложений следует кэшировать ценовые данные и обновлять их с разумными интервалами, а не делать запрос при каждой загрузке страницы.
Что такое Bitcoin Core JSON-RPC API?
Bitcoin Core, эталонная реализация протокола биткоина, предоставляет JSON-RPC API, позволяющий напрямую взаимодействовать с биткоин-узлом. Через этот API можно создавать и отправлять транзакции, запрашивать данные блокчейна, управлять кошельками и мониторить мемпул. Это наиболее авторитетный источник данных, поскольку вы запрашиваете собственную верифицированную копию блокчейна, не доверяя третьей стороне. Доступ требует запуска Bitcoin Core и настройки RPC-аутентификации.
Как программно принимать биткоин-платежи?
Рекомендуемый подход зависит от ваших требований. Для самостоятельного хостинга без комиссий используйте Greenfield API BTCPay Server. Для простой интеграции с поддержкой Lightning — Strike API (комиссия 0,3%) или OpenNode API (комиссия 1%). Для кастодиальных решений Coinbase Commerce API управляет платёжным потоком, конвертацией и расчётами. Каждый вариант предоставляет вебхуки для уведомления приложения о получении и подтверждении платежей. BTCPay предпочтителен для бизнеса, требующего полного контроля; Strike — для простоты.
Каковы лимиты на запросы у популярных Bitcoin API?
Лимиты различаются по провайдерам. Mempool.space: опубликованных лимитов нет, но ожидается добросовестное использование. BlockCypher: 200 запросов в час (бесплатно), 200 000 в час (платно). Blockchain.com: 10 000 запросов за 8 часов. CoinGecko: 10–50 запросов в минуту (бесплатно), выше на платных уровнях. Bitcoin Core JSON-RPC: нет лимитов (self-hosted). Для production-приложений реализуйте кэширование, используйте WebSocket там, где это доступно, и рассмотрите запуск собственного узла для полного устранения зависимости от внешних лимитов.
Как создать биткоин-кошелёк-приложение?
Создание биткоин-кошелька требует обработки генерации ключей, деривации адресов, построения транзакций, подписания и трансляции. Библиотеки bitcoinjs-lib (JavaScript), python-bitcoinlib (Python) и BTCLib (Go) предоставляют криптографические примитивы. Для управления ключами используйте BIP-39 (мнемонические сид-фразы), BIP-32 (иерархические детерминированные кошельки) и BIP-84 (нативные SegWit-адреса). Безопасность первостепенна: приватные ключи никогда не должны передаваться по сети или храниться в открытом виде. Большинству разработчиков следует использовать зрелые библиотеки кошельков, а не реализовывать криптографию с нуля.
Что представляет собой экосистема Lightning Network API?
Lightning Network имеет несколько крупных реализаций, каждая со своим API. LND (Lightning Network Daemon) предоставляет gRPC и REST API для управления каналами, отправки/получения платежей и запросов состояния сети. Core Lightning (ранее c-lightning) предоставляет интерфейс JSON-RPC. Eclair предлагает более простой REST API. Для приложений, которым нужен Lightning без запуска инфраструктуры, такие сервисы как Strike, Alby и Voltage предоставляют хостинговые Lightning API. Протоколы LNURL и Lightning Address стандартизируют платёжные потоки между реализациями.
Как запрашивать on-chain данные биткоина для аналитики?
Для on-chain аналитики Glassnode предоставляет подробные метрики (SOPR, NVT, потоки на биржах) через REST API с бесплатным и платным уровнями. Blockchain.com предлагает доступ к сырым данным блокчейна через свой API. Mempool.space предоставляет данные о транзакциях, блоках и комиссиях. Для кастомного анализа Blockchair предоставляет SQL-подобный язык запросов к данным блокчейна. Chainalysis и Elliptic предлагают API, ориентированные на compliance, для отслеживания транзакций. Для максимальной гибкости запрашивайте собственный узел Bitcoin Core с помощью RPC-команд getblock, getrawtransaction и getblockstats.
Какие языки программирования лучше всего подходят для биткоин-разработки?
Bitcoin Core написан на C++, но взаимодействовать с биткоином можно на любом языке. Наиболее популярные варианты: Python (python-bitcoinlib, широкая экосистема), JavaScript/TypeScript (bitcoinjs-lib, веб-интеграция), Rust (rust-bitcoin, растущая в биткоин-экосистеме), Go (btcd, btcsuite). Для Lightning-разработки доминируют Go (LND) и Rust (LDK). Для веб-приложений, взаимодействующих с Bitcoin API, TypeScript/JavaScript — наиболее практичный выбор благодаря его нативным для веба инструментам.
Как обрабатывать вебхуки биткоина и уведомления о платежах?
Большинство платёжных процессоров (BTCPay, Strike, OpenNode) поддерживают вебхуки, которые отправляют POST-запросы с JSON на ваш сервер при наступлении платёжных событий (платёж получен, подтверждён, истёк срок). Реализуйте эндпоинт, который проверяет подпись вебхука, обрабатывает событие и возвращает статус 200. Для self-hosted решений опции walletnotify и blocknotify в Bitcoin Core могут запускать скрипты при обнаружении транзакций. Всегда проверяйте суммы и подтверждения платежей на стороне сервера, не доверяя клиентским данным.

Создавайте с биткоином

Узнайте о решениях масштабирования биткоина и о том, как мерчанты используют эти API в production.