Я вже розповів більшу частину того, що вам знадобиться для реалізації шлюзу для прийому оплати у 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-запиту. Він уміє лише виконати команду у межах операційної системи, у якій сам працює. І передати дані як параметр.
У наступній статті я розповім як з цим жити, і найголовніше - як це все налаштувати.
Читайте також
БИКИ, ВЕДМЕДІ та інші представники біржової фауни
Ця публікація призначена для новачків біржової торгівлі та зачіпає загальноприйняті, базові поняття на біржі. Якщо ви трейдер, який здійснив, хоча б одну угоду, вам будуть вже знайомі терміни, що описуються тут.
Скільки можна заробити на трейдингу інвестору-початківцю. Частина двадцять перша. Трейдинг (продовження)
Ми продовжуємо серію публікацій про трейдінг, щоб на практиці розібратися, скільки може заробити інвестор-початківець, використовуючи тільки прогнози, опубліковані на нашому сайті. Щоб зрозуміти, наскільки вони корисні, ми вирішили провести експеримент і змоделюва...
