Приймаємо оплату до 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-запиту. Він уміє лише виконати команду у межах операційної системи, у якій сам працює. І передати дані як параметр.

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

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

782018-06-08

Bitcoin гаманці, частина 3: online-сховища

online-сховища, або "гарячі" гаманці - це сервіси, призначені для зберігання bitcoin онлайн. З якою метою вони використовуються і як функціонують?

Навчання
742018-01-03

Що таке CopyMe?

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

Навчання

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