Принимаем оплату в bitcoin: Часть шестая. Нюансы, опять нюансы

Принимаем оплату в bitcoin: Часть шестая. Нюансы, опять нюансы

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

Полный цикл статей для разработчиков платежного шлюза для bitcoin читайте здесь:

ПРИНИМАЕМ ОПЛАТУ В BITCOIN: ЧАСТЬ ПЕРВАЯ, ТЕОРЕТИЧЕСКАЯ

ПРИНИМАЕМ ОПЛАТУ В BITCOIN: ЧАСТЬ ВТОРАЯ. ИНСТРУМЕНТЫ И ПОДГОТОВКА

ПРИНИМАЕМ ОПЛАТУ В BITCOIN: ЧАСТЬ ТРЕТЬЯ, СВОЙ TESTNET. С БЛЭКДЖЕКОМ

ПРИНИМАЕМ ОПЛАТУ В BITCOIN: ЧАСТЬ ЧЕТВЕРТАЯ, БЛИЖЕ К ДЕЛУ!

ПРИНИМАЕМ ОПЛАТУ В BITCOIN: ЧАСТЬ ПЯТАЯ, ЕСТЬ НЮАНСЫ


Во первых, таким перебором мы замедляем всю систему, и при большом количестве платежей это становится серьезной проблемой. А во вторых, вполне достаточно "во первых".

Я упомянул в прошлой статье, что bitcoind все же умеет присылать уведомления, хотя и делает это несколько своеобразно. Технически при возникновении определенных событий происходит запуск системной команды (программы) с передачей данных в качестве аргумента командной строки. Навскидку таких события три: alertnotify, blocknotify и walletnotify. Нас интересуют два последних.

Для того, чтобы получить уведомления нам нужно в файле конфигурации bitcoin.conf указать соответственно:

walletnotify=command1 %s 
blocknotify=command2 %s 

Что это нам даст, и как это работает? При любой транзакции, связанной с нашим кошельком, то есть с любым адресом, выданным нашим bitcoind, будет выполнена команда command1, указанная для walletnotify, причем в качестве параметра %s будет подставлен хеш транзакции. Конечно, хотелось бы, чтобы были и сам адрес и сумма - но имеем то, что имеем. Имея TxId мы уже можем получить полную информацию о транзакции, включая все адреса и суммы.

Теперь о нюансах. 

Команда будет запущена максимум два раза. Иногда - один. Первый раз - при получении неподтвержденной транзакции и добавлении её в mempool. Второй раз - при включении транзакции в блок, то есть при получении первого подтверждения. В некоторых случаях первое уведомление может не прийти вообще. А как же нам быть, если мы хотим считать платеж совершенным после канонических шести подтверждений?

Тут нам на помощь приходит blocknotify. Команда command2 будет выполняться при добавлении каждого нового подписанного блока, и хеш блока будет приходить вместо параметра %s. Дальше мы можем либо проверить все наши зарегистрированные транзакции на количество подтверждений (да, такая информация в транзакции приходит от bitcoind), либо просматривать каждый блок на предмет наличия в нем транзакций с нашими адресами (долго, не эффективно, но иногда необходимо)

Как будет реализована программная часть, реализующая уведомления, - полностью отдано на откуп разработчика. Это может быть хоть bash-скрипт, хоть программа на C/C++, хоть PHP. Главное, чтобы ваше приложение могло быть запущено из командной строки.

Читайте также

28632018-06-09

Принимаем оплату в bitcoin: Часть вторая. Инструменты и подготовка

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

Разработчику
9662018-06-16

Принимаем оплату в bitcoin: Часть четвертая, ближе к делу!

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

Разработчику

Последние статьи из раздела Разработчику

Свежее видео на канале

Выбор редакции

143352017-12-10

Bitcoin: пирамида или нет?

С января 2009 года, когда был сгенерирован первый генезиз-блок bitcoin-сети, прошло уже девять лет, но до сих пор всякого рода "эксперты" ломают копья в спорах: являются ли криптовалюты финансовой пирамидой или нет. Быстрый рост доходности bitcoin и прибыли тех, кто раньше стал участником этой системы, пугает схожестью с пирамидами 90-х.

Bitcoin
107412018-04-28

on-chain и off-chain управление: за и против

Чтобы понять важность управления блокчейном и дискуссии вокруг этого вопроса, сначала нужно определить что такое управление блокчейном, его роль и цели. Управление блокчейном в сфере криптовалют состоит из двух пунктов: правил протокола (кода) и экономических стимулов, на которых основана сеть.

Blockchain
72262018-07-28

Грузинская криптокухня. Выбираем блюда

Ни для кого не секрет тот факт, что Грузия является одной из самых лояльных стран постоветского пространства, где не только уютно, но и выгодно вести бизнес. Это стало возможным буквально за последние 10 лет благодаря колоссальным реформаторским усилиям сменявших друг друга руководителей страны, каждый из которых стремился сделать её лучше и богаче. Как именно обстоят дела здесь с криптовалютным бизнесом попытаемся разобраться в нашем сегодняшнем материале.

Право, Майнинг, Регуляторы
58892018-06-25

Поиск серых майнеров в недрах Chrome и Opera

Вы уже знаете как javascript-майнеры попадают на страницы интернет-ресурсов. Теперь попробуем разобраться как же выяснить какая именно из множества открытых вкладок использует Ваши ресурсы для добычи криптовалюты.

Безопасность
36902018-09-13

Три быка, которые могут спасти крипторынок

Несмотря на упадок криптовалютного рынка, долгожданное участие институциональных инвесторов в сделках с цифровыми активами уже не за горами. Такие известные фирмы, как Coinbase, Nasdaq и Bakkt уже вошли в мейнстрим, осталось только подождать, пока это сделает весь рынок цифровых активов.

Мнение
33542018-06-08

Принимаем оплату в bitcoin: Часть первая, теоретическая

Интернет полон статей о том, какое прекрасное будущее готовит нам blockchain, как это "стильно, модно и инновационно". Однако информации, как практически воспользоваться всем этим великолепием, крайне мало. Попробуем частично восполнить этот пробел.

Обучение