496 / 736BTCPAY

BTCPay Server

Власна інфраструктура для приймання платежів

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

BTCPay Server — вільне програмне забезпечення для приймання біткоїн-платежів під ліцензією MIT. Його можна запустити на власному сервері або користуватися чужою інсталяцією. Програма створює платіжні запити, зіставляє їх з оплатою та допомагає вести облік. Сам проєкт не є рахунком, якому треба довірити гроші, чи посередником, що вирішує спори щодо товарів.

Уявімо інтернет-книгарню. Покупець обирає біткоїн, і BTCPay Server створює invoice — запит на сплату певної суми. Залежно від налаштувань магазину сторінка показує адресу або запит Lightning. Програма відстежує надходження та повідомляє підключеному магазину про зміни стану. Тож не потрібно вручну визначати, до якого замовлення належить кожен платіж. Так само можна обслуговувати касу або збирати пожертви. Відкритий код дає змогу перевіряти й змінювати програму, але сам собою не доводить безпечності конкретної інсталяції. [1]

Для наявного гаманця сервер може отримати розширений публічний ключ — дані, з яких він виводить адреси для отримання. Приватні ключі, що дозволяють витрачати гроші, можуть залишатися поза сервером, наприклад в апаратному гаманці. Гарячий гаманець працює інакше: його секрети зберігаються на пристрої, підключеному до інтернету. Доступ до вузла Lightning для швидких платежів також може дозволяти витрачання. Отже, керування сервером і контроль грошей — окремі питання. Позначка self-hosted, тобто власне розгортання, сама на них не відповідає. [2] [3]

Чужий сервер може позбавити вас встановлення й обслуговування. Але навіть коли гроші надходять у ваш гаманець, ви покладаєтеся на адміністратора. Змінений або зламаний сервер може показувати адреси нападника замість ваших. Самого публічного ключа недостатньо, щоб витратити вже отримані монети, проте підмінена каса може перенаправити майбутні платежі. Тому перевіряйте надходження також у незалежному гаманці. Така сама загроза існує для зламаного власного сервера. Сторонній хостер додатково впливає на доступність і приватність. [4]

Ціну книжки можна встановити в чеських кронах, хоча покупець платить біткоїном. Invoice фіксує курс і суму на обмежений час. Processing означає, що всю потрібну суму сплачено, але умови завершення, наприклад підтвердження в блоках, ще не виконані. Settled означає їх виконання; Lightning зазвичай не чекає на блок. Магазину також потрібно обробляти недоплати, переплати й запізнілі платежі. Ручна зміна стану не створює підтвердження мережі. Перерахунок ціни на екрані теж не надсилає крони на банківський рахунок: обмін через додаток чи провайдера — інша послуга зі своїми умовами та витратами. [5] [6] [3]

Програми з’єднуються через Greenfield API — інтерфейс для взаємного обміну даними. Магазин зберігає ідентифікатор invoice разом із замовленням. Webhook, автоматичне повідомлення сервера, сповіщає про зміни; його справжність потрібно перевіряти за документацією. Ключ доступу API отримує лише потрібні цьому магазину дозволи. Якщо повідомлення надходить повторно, не можна відправляти другу книжку. Повернення покупця на сторінку подяки також не доводить оплати. Після збою слід звірити місцеві записи з рахунками та фактичними платежами. [7]

Lightning Network використовує платіжні канали, щоб не записувати кожен платіж окремо в блок. Власний вузол має бути доступним і мати вхідну ліквідність — місце в каналах, через яке кошти можуть надійти до вас. Це вимагає постійного обслуговування. Можна скористатися допомогою з ліквідністю, обміном між платіжними мережами або кастодіальним сервісом, який контролює гроші клієнта. Ці варіанти різняться дозволами, комісіями та ризиками. Назва BTCPay Server на сторінці не показує вибір магазину й не гарантує успіху кожного платежу. [8]

Дані для відновлення гаманця — не резервна копія всього магазину. Крім ключів, потрібні рахунки, налаштування й інші дані відповідно до інсталяції. У Lightning особливо небезпечно запускати вузол зі старим станом каналів: неправильне відновлення може поставити кошти під загрозу. Планове перенесення відрізняється від відновлення після аварії. Під час міграції початковий вузол не повинен далі змінюватися або працювати одночасно з відновленою копією. Дотримуйтеся процедури саме для вашої реалізації. Тестуйте відновлення Lightning ізольовано від мережі та інших вузлів, щоб не зачепити активні канали. Посібник для Docker, середовища, що запускає частини програми в окремих контейнерах, стосується саме такого способу встановлення. [9]

Перевага — можливість самостійно вирішувати, як працює ваша платіжна інфраструктура. Але хтось має стежити за оновленнями, доступом адміністратора, відкритими для інтернету службами й придатними до відновлення копіями. Програма не бере відсотка з кожного платежу, однак хостинг, обладнання, мережеві комісії та допомога з Lightning можуть коштувати грошей. Не зберігайте зайвих персональних даних клієнтів. Якщо книжка загубилася або її повернули, продавець опрацьовує скаргу й повернення коштів; розробники BTCPay Server не вирішують цей спір. Рахунки допомагають обліку, але не замінюють усіх бухгалтерських обов’язків. [10] [3] [7]

Приклад · BTCPAY

Каса не працює, гаманець залишається

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

Для повної картини прочитайте також Bitcoin Payment Processor, Bitcoin Point of Sale, Самостійне зберігання, Lightning Network, Merchant Adoption, Bitcoin. На цю статтю також посилаються Bitcoin Coffee, Transaction Labeling, Bitcoin Payment Processor, Bitcoin Point of Sale.

01Чи означає BTCPay Server автоматично самостійне зберігання?

Ні. З’ясуйте, хто контролює ключі підключеного гаманця і які дозволи має сервер або сервіс Lightning. Самих публічних даних зовнішнього гаманця недостатньо для витрачання. Гарячий гаманець чи кастодіальний сервіс можуть працювати інакше. Навіть без приватних ключів зламана каса може показувати неправильні адреси.

02Чи вистачить слів резервної копії для відновлення всього?

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

DOC · 001BTCPay Server — Source repositoryПервинне джерело DOC · 002BTCPay Server — Wallet setupДокументація DOC · 003BTCPay Server — General FAQДокументація DOC · 004BTCPay Server — Third-party hosting risksДокументація DOC · 005BTCPay Server — Invoice lifecycleДокументація DOC · 006BTCPay Server — Store rates and policiesДокументація DOC · 007BTCPay Server — eCommerce integrationДокументація DOC · 008BTCPay Server — Lightning optionsДокументація DOC · 009BTCPay Server — Backup and restoreДокументація DOC · 010BTCPay Server — MaintenanceДокументація
Переглянуто: Спочатку джерела · Не інвестиційна порада