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

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

36142018-07-31

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

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

Ethereum, Разработчику
56152018-06-07

Apple опубликовали новые правила о криптовалютных приложениях

Согласно информации TechCrunch, ряд разработчиков Apple не так давно объединили усилия для создания “Союза разработчиков”. Союз обратился к Apple с просьбой предоставить пользователям Apple Store возможность скачивать бесплатные пробные версии их приложений. Это один из первых случаев, когда независимые iOS разработчики пытаются дать отпор политике Apple Store.

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

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

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

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

467592020-10-30

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

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

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

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

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

Bitcoin
361392018-04-28

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

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

Blockchain
255962018-07-28

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

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

Право, Майнинг, Регуляторы
249242021-05-08

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

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

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

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

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

Это интересно