Биткоин — это не просто цифровая валюта. Это техническое решение, которое открывает огромные возможности для программистов. Посмотрим на Биткоин через призму API — описания взаимодействия одной программы с другой.

API

Наш пользовательский опыт — это результат взаимодействия между собой огромного количества компьютерных программ. Браузер взаимодействует с операционной системой, почтовый клиент отправляет запросы почтовому серверу и так далее. Все эти взаимодействия описываются термином API (Application Programming Interface). Биткоин как технология использует самые разные API для самых разных целей.

Даже у традиционных денег есть API, но взаимодействия открыты и доступны не для всех. К примеру, вы можете запрограммировать торговый API сети Visa только если являетесь доверенным продавцом. Вы можете отправлять и получать сообщения FIX, если являетесь биржевым брокером или биржей. Однако подобное недоступно напрямую конечным пользователям. Биткоин меняет этот принцип, не только предлагая API для учетных записей (кошельков) и транзакций, но и делая этот API доступным для всех.

API и децентрализация

В традиционных финансах необходимый результат и устойчивость системы достигается посредством сложного набора правил, лицензий, разрешений, мер по предупреждению мошенничества, и, в первую очередь, благодаря исключению широкой массы пользователей из управления. Финансовые сети остаются безопасными, поскольку API закрыты и доступны лишь тем немногим, кто пользуется «доверием и доступом» (например, разные государственные структуры и банки).

В теории это предохраняет систему от действий со стороны злоумышленников. Биткоин меняет модель с «доверия путем исключения» на «доверие путем вычислений». Доверие распределяется по большой (и постоянно растущей) сети участников, которые постоянно проверяют друг друга, что затрудняет злоумышленнику (или целой группе) захват всей сети. В результате нет необходимости кого-либо исключать или закрывать доступ. Любой может участвовать в сети Биткоин и видеть все транзакции, или, иными словами, каждый может получить доступ к API.

API и Биткоин

В сети Биткоин вы можете программно проверить свой баланс или баланс любого биткоин-кошелька. А главное, можете создавать и совершать транзакции на одинаковых с другими участниками условиях. В мире, где финансы децентрализованы и публично доступны, вы также можете управлять банковскими услугами, фондовой биржей, заниматься банковскими переводами или эскроу-счетами без какого-либо разрешения или лицензии. Интернет позволил каждому блогеру сравниться по охвату аудитории с New York Times. Биткоин дает каждому пользователю возможности, сопоставимые с теми, что есть в распоряжении ведущих банков.

Хотя вариации программного взаимодействия могут быть представлены и интерпретированы достаточно широко, известный предприниматель и сторонник исторически первой криптовалюты Биткоин Андреас Антонопулос (Andreas Antonopoulos) выделяет несколько конкретных примеров API в среде Биткоина. Рассмотрим их подробнее.

Сеть Биткоина предлагает три различных API. 

Первый — это язык сценариев транзакций. Наиболее часто используемый сценарий соответствует «Перевести X монет из кошелька Алисы в кошелек Боба». Да, почти все транзакции в сети Биткоина выглядят именно так, однако язык сценариев достаточно мощный и позволяет осуществлять много больше пользовательских действий. Одним из примеров является сценарий подписей M-из-N, представляющий собой транзакцию, которую можно совершить, если для ее подписания используется M любых ключей из их общего числа N. Например, транзакция может потребовать для своего совершения в дополнение к ключу получателя — ключ от еще одной стороны. В корпоративной среде это позволяет требовать подписи от разных лиц, например финансового директора, генерального директора и аудитора.

Помимо модели M-of-N, язык сценариев может определять условия проверки, которые не имеют ничего общего с ключами. Например, транзакция может быть совершена в пользу любого угадавшего комбинацию чисел, что создает возможность проведения глобальной и прозрачной лотереи. Возможности применения такой технологии достаточно широки.

Второй API в Биткоине — это API сетевого протокола P2P, который позволяет узлам взаимодействовать, обмениваться транзакциями, проверять новые блоки транзакций и вновь генерируемые монеты. Все эти взаимодействия сетевых протоколов позволяют каждому узлу создавать полную и идентичную локальную копию общего реестра транзакций, который является блокчейном – «сердцем Биткоина». Открытый характер блокчейна BTC позволяет любому предлагать услуги, требующие информации о транзакциях в Биткоине. Например, можно сообщить адрес вашего кошелька налоговому консультанту, и он подберет для вас план по налоговой оптимизации.

Наконец, третий — это API, который представляет экономику Биткоина как набор сервисов JSON-RPC для клиентских приложений. Этот API предлагает такие услуги, как проверка баланса в кошельке, создание транзакции, открытие новых кошельков; и так далее.

Конечно, на этом API-интерфейсы Биткоина не заканчиваются. Биткоин выступает в качестве платформы для более сложных сервисов — таких как облегченные клиенты (Stratum API), обмен валют, службы уведомлений и оповещений, службы рыночных данных, эконометрические службы и так далее. Все они имеют свои собственные API.

Вывод

API в сети Биткоина могут существовать на самых разных уровнях: TCP, HTTP, SMPT и прочее. При помощи них можно создавать самые разные решения. Например, службы аттестации и заверения, службы, которые отражают состояние документа в определенное время, и даже службы безопасного обмена сообщениями. 

Биткоин превращает деньги и транзакции — и, следовательно, торговлю — в весьма перспективную область возможностей для программистов, а деньги как услугу с открытыми, гибкими и мощными API — в целую экономику (и даже в отдельную сферу децентрализованной экономики, где участники действуют в среде с одинаковыми правилами игры и отсутствует монопольный рыночный агент, контролирующий весь процесс — в отличие от фиатной финансовой системы). И все это на расстоянии одного запроса JSON. Поэтому простой взгляд на Биткоин как на нечто вроде «популярных цифровых денег» — поверхностный. Он может упускать из виду именно то, ради чего Биткоин и создавался.