Принимаем оплату в 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. Главное, чтобы ваше приложение могло быть запущено из командной строки.

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

53392018-06-16

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

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

Разработчику
44652018-07-31

Lity. Новый язык смарт-контрактов

На данный момент в сети Ethereum опубликовано более чем 1700 децентрализованных приложений (DApps), и их число не перестает увеличиваться. И хотя все Dapps полагаются на смарт контракты, надежность самих смарт контрактов стоит под вопросом - киберпреступники заработали уже более миллиарда долларов на их взломах.

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

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

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

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

644562020-10-30

Топ 10 крипто кошельков в 2020 году

По мере роста популярности криптовалют растет и спрос на качественные и безопасные криптовалютные кошельки.

Кошельки
567622017-12-10

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

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

Bitcoin
535332018-04-28

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

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

Blockchain
417422021-05-08

Какие альткоины принесут своим держателям доход в 2021 году?

Мы решили помочь тем, кто хочет заработать на криптовалютах, но не располагает большими средствами, чтобы покупать монеты из первой пятерки рейтинга.

Альткоины
380512018-05-12

Эволюция человека и денег

Развитие биткойна и блокчейна началось приблизительно 70000 лет назад, когда хомо сапиенс превзошли свои биологические лимиты как вид. Это история, которая уходит глубоко корнями в эволюцию человечества.

Это интересно
170052024-02-03

Сканер блоков (Blockchain explorer) своими руками: Зачем он нужен?

При разработке крипто кошелька вы столкнетесь с рядом проблем, и не являются очевидными. Не будем рассматривать сейчас проблемы, связанные генерацией адресов, подписью транзакций и другими вопросами, которые могут прийти в голову в первую очередь.

Обучение, Bitcoin, Ethereum, Технологии