Приймаємо оплату до Bitcoin: Частина п'ята, є нюанси

Приймаємо оплату до Bitcoin: Частина п'ята, є нюанси

Я вже розповів більшу частину того, що вам знадобиться для реалізації шлюзу для прийому оплати у bitcoin. Але, як завжди, у реальному житті є нюанси.

Так склалося, що багато криптовалют мають у предках саме bitcoin. З різним ступенем відмінностей та різним рівнем самостійності, проте, багато успадковано від батьківського коду. Це і litecoin, і DASH, і вже звісно, Bitcoin Cash (останні взагалі практично точної копією). Навіть така екзотика, як Zcash, несе багато вихідного коду bitcoin. 

Як побічний ефект, ми маємо майже повну копію реалізації JSON-RPC. І як наслідок, реалізувавши одного разу все необхідне для bitcoind, ви маєте досить повний фундамент для прийому платежів як мінімум у перерахованих криптовалютах. Звичайно, як і йдеться у назві, є нюанси. Деякі команди можуть відрізнятись або давати інший результат. Наприклад, DASH не знає, що таке multisig адреси, а litecoind в деяких версіях вимагає додаткових зусиль для формування адреси у форматі segwit. Але загалом і в цілому, все дуже схоже, і виконати адаптацію готового коду не складе труднощів. 

Але не все в нашому житті таке райдужне. Повернемося до того, як ми реалізовували прийом платежів саме в bitcoin. Те, як ми це реалізовували – добре, якщо у вас проходить кілька десятків платежів на добу. Адже не так і складно перевірити навіть сотню адрес на предмет транзакції, що входить. А якщо вас попросили написати шлюз, який приймає платежі, наприклад, для ebay чи amazon?

Коли за тиждень-другий ваша база виданих адрес розростеться до кількох десятків тисяч, вечір перестане бути важким. Швидкість відповіді bitcoind почне стрімко падати, а потік запитів до нього - стрімко зростатиме. І перевірка всієї бази почне займати вже не секунди та десятки хвилин, а потім і годинник. Я думаю, мало хто захоче чекати на добу, поки його платіж буде оброблений. 

Добре, що розробники bitcoin про це подбали, та й їхні спадкоємці отримали готовий функціонал. На наше щастя, bitcoind вміє відсилати повідомлення про факт отримання вхідної транзакції. Це була гарна новина. Тепер – не дуже хороша. Точніше, кілька.

По-перше, bitcoind вміє повідомити факт отримання нової транзакції, але ні слова не скаже нам про те, на яку адресу вона надійшла, зате надішле нам її tx-id, такий страшний довгий рядок, щось начебто:

ce397d610c0066f1f4f38d532bc527daac3bd6aac25081618be63620d9078c7b

Десь ми її вже бачили.. І навіть знаємо, що можна запитати:

bitcoin-cli gettransaction ce397d610c0066f1f4f38d532bc527daac3bd6aac25081618be63620d9078c7b Це добре, тому що, по-перше, в інформації про транзакцію ми знайдемо, на яку адресу вона надійшла. А по-друге - у транзакції може бути багато адрес одержувачів і теоретично наших у ній може бути кілька. 

Тепер про нюанси. Наш bitcoind відправляє повідомлення тільки 2 рази. Перший - коли транзакція проходить через мережу, ще до її підтвердження. Другий – коли транзакція включена до блоку. Тобто при першому підтвердженні. А от якщо ви хочете визнати оплату на 6 підтвердженні, ці повідомлення вам мало допоможуть. 

І ще один малоприємний нюанс. Справа в тому, що bitcoind не надсилає повідомлення звичними способами, на кшталт того ж RPC-запиту. Він уміє лише виконати команду у межах операційної системи, у якій сам працює. І передати дані як параметр.

У наступній статті я розповім як з цим жити, і найголовніше - як це все налаштувати.

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

12018-02-01

БИКИ, ВЕДМЕДІ та інші представники біржової фауни

Ця публікація призначена для новачків біржової торгівлі та зачіпає загальноприйняті, базові поняття на біржі. Якщо ви трейдер, який здійснив, хоча б одну угоду, вам будуть вже знайомі терміни, що описуються тут.

Навчання
02018-09-19

Скільки можна заробити на трейдингу інвестору-початківцю. Частина двадцять перша. Трейдинг (продовження)

Ми продовжуємо серію публікацій про трейдінг, щоб на практиці розібратися, скільки може заробити інвестор-початківець, використовуючи тільки прогнози, опубліковані на нашому сайті. Щоб зрозуміти, наскільки вони корисні, ми вирішили провести експеримент і змоделюва...

Трейдинг, Навчання

Останні статті з розділу Навчання

Нове відео на каналі