Voted Coins
follow us on twitter . like us on facebook . follow us on instagram . subscribe to our youtube channel . announcements on telegram channel . ask urgent question ONLY . Subscribe to our reddit . Altcoins Talks Shop Shop


This is an Ad. Advertised sites are not endorsement by our Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction. Advertise Here

Author Topic: Принимаем оплату в bitcoin: Часть шестая. Нюансы, опять нюансы  (Read 744 times)

Offline resistens

  • Legendary
  • *
  • Activity: 1266
  • points:
    900
  • Karma: 9
  • Trade Count: (0)
  • Referrals: 0
  • Last Active: March 04, 2019, 02:48:48 PM
    • View Profile

  • Total Badges: 14
    Badges: (View All)
    10 Posts First Post Fifth year Anniversary
В прошлой части мы остановились на том, что не плохо было бы узнать о факте платежа от 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. Главное, чтобы ваше приложение могло быть запущено из командной строки.


https://forknews.io/development/001631-prinimaem-oplatu-v-bitcoi.html
■□■□■TARTARIA.CLOUD■□■□■ TELEGRAM, YOUTUBE, FACEBOOK, VK, НАШ ФОРУМ, ОСНОВНОЙ САЙТ
От 77% годовых гарантированно | Ежедневные выплаты | 5% и 3% от дохода реферала | Контракт 4 года

Altcoins Talks - Cryptocurrency Forum


This is an Ad. Advertised sites are not endorsement by our Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction. Advertise Here


 

ETH & ERC20 Tokens Donations: 0x2143F7146F0AadC0F9d85ea98F23273Da0e002Ab
BNB & BEP20 Tokens Donations: 0xcbDAB774B5659cB905d4db5487F9e2057b96147F
BTC Donations: bc1qjf99wr3dz9jn9fr43q28x0r50zeyxewcq8swng
BTC Tips for Moderators: 1Pz1S3d4Aiq7QE4m3MmuoUPEvKaAYbZRoG
Powered by SMFPacks Social Login Mod