BTCPay Server برنامج حرّ لقبول مدفوعات بيتكوين، منشور بترخيص MIT. يمكنك تشغيله على خادمك أو استخدام نسخة يديرها شخص آخر. ينشئ طلبات الدفع ويربط المبالغ الواردة بها ويساعد في حفظ السجلات. المشروع نفسه ليس حسابًا يجب أن تودع أموالك فيه، ولا وسيطًا يفصل في النزاعات حول السلع.
تخيّل متجرًا إلكترونيًا للكتب. يختار الزبون بيتكوين، فينشئ BTCPay Server فاتورة دفع، أي طلبًا لسداد مبلغ محدد. تعرض الصفحة عنوانًا أو طلب دفع عبر Lightning بحسب إعدادات المتجر. يتابع البرنامج وصول المبلغ ويُبلغ المتجر المتصل به عند تغيّر الحالة، فلا تضطر إلى البحث يدويًا عن صاحب كل دفعة. ويمكن استخدامه أيضًا عند صندوق البيع أو لجمع التبرعات. يتيح الكود المفتوح فحص البرنامج وتعديله، لكنه لا يثبت وحده أن النسخة المشغّلة آمنة. [1]
يمكن تزويد الخادم بالمفتاح العام الموسّع لمحفظة موجودة، وهو بيانات تُشتق منها عناوين الاستلام. أما المفاتيح الخاصة التي تسمح بإرسال الأموال فبإمكانها البقاء خارج الخادم، مثلًا في محفظة أجهزة. تختلف المحفظة الساخنة: بياناتها السرية محفوظة على جهاز متصل بالإنترنت. وقد يتيح الوصول إلى عقدة Lightning التي تعالج المدفوعات السريعة إنفاق الأموال أيضًا. لذلك فإدارة الخادم والتحكم بالأموال مسألتان منفصلتان. وصف self-hosted، أي التشغيل على خادم تديره بنفسك، لا يجيب عنهما وحده. [2] [3]
قد يوفّر استخدام خادم شخص آخر عناء التثبيت والصيانة. لكنك تعتمد على مشغّله حتى عندما تصل الأموال إلى محفظتك. إذا عُدّل الخادم أو اختُرق، فقد يعرض عناوين المهاجم بدلًا من عناوينك. الحصول على المفتاح العام وحده لا يسمح بإنفاق العملات المستلمة سابقًا، لكن صفحة الدفع المتلاعب بها قد تحوّل الدفعات القادمة إلى جهة أخرى. تحقّق من الاستلام أيضًا عبر محفظة مستقلة. ويمكن أن يحدث التحويل نفسه عند اختراق خادمك الخاص؛ كما تؤثر الجهة المستضيفة في توافر الخدمة وخصوصية المدفوعات. [4]
قد يكون سعر الكتاب بالكورونة التشيكية، بينما يدفع الزبون ببيتكوين. تثبّت فاتورة الدفع السعر والمبلغ لمدة محدودة. تعني Processing أن المبلغ المطلوب دُفع كاملًا، لكن شروط إتمام الدفع، مثل تأكيدات الكتل، لم تتحقق بعد. وتعني Settled أن تلك الشروط تحققت؛ ولا تنتظر دفعة Lightning عادةً كتلة. وعلى المتجر معالجة الدفعات الناقصة والزائدة والمتأخرة أيضًا. تغيير الحالة يدويًا لا ينشئ تأكيدًا على الشبكة. وتحويل السعر المعروض من الكورونة إلى بيتكوين لا يرسل كورونات إلى حسابك المصرفي: الصرف عبر إضافة أو مزوّد خدمة عملية أخرى بشروط وتكاليف خاصة بها. [5] [6] [3]
تتصل البرامج عبر Greenfield API، وهي واجهة تتيح لها التواصل. يحفظ المتجر معرّف فاتورة الدفع مع الطلب. ويتلقى التغييرات عبر webhook، أي رسالة آلية من الخادم يجب التحقق من صحتها وفق التوثيق. ينبغي منح مفتاح الوصول إلى API الصلاحيات التي يحتاجها هذا المتجر فقط. وإذا وصلت الرسالة نفسها مرة أخرى، يجب ألّا يرسل المتجر كتابًا ثانيًا. وعودة الزبون إلى صفحة الشكر ليست دليلًا على الدفع. بعد الانقطاع، تُطابق السجلات المحلية مع حالات الفواتير والمدفوعات الفعلية. [7]
تستخدم Lightning Network قنوات دفع، فلا يلزم تسجيل كل دفعة على حدة في كتلة. تحتاج عقدتك إلى البقاء متاحة وإلى سيولة واردة: سعة في القنوات تسمح بوصول الأموال إليك. ولذلك تتطلب إدارة مستمرة. يمكنك الاستعانة بخدمة لتوفير السيولة، أو مبادلة بين شبكات الدفع، أو خدمة وصاية تتحكم بالأموال نيابةً عن العميل. لكن هذه الخيارات تختلف في الصلاحيات والرسوم والمخاطر. وجود اسم BTCPay Server على صفحة الدفع لا يبيّن وحده أيّ خيار يستخدمه المتجر، ولا يضمن نجاح كل دفعة. [8]
بيانات استعادة المحفظة ليست نسخة احتياطية للمتجر بأكمله. إلى جانب المفاتيح، تحتاج إلى سجلات الفواتير والإعدادات وبيانات أخرى بحسب طريقة التشغيل. في Lightning، يشكّل تشغيل العقدة بحالة قديمة للقنوات خطرًا خاصًا: فقد تعرّض الاستعادة غير الصحيحة الأموال للخطر. يختلف الانتقال المخطط إلى خادم جديد عن التعافي بعد عطل. أثناء الانتقال، يجب ألّا تستمر العقدة الأصلية في تغيير حالتها أو تعمل بالتزامن مع النسخة المستعادة. اتبع إجراءات البرنامج الذي تستخدمه. اختبر استعادة Lightning بمعزل عن الشبكة والعقد المتصلة، كي لا يؤثر الاختبار في القنوات الفعلية. يتعلق دليل Docker، وهو بيئة تشغّل مكوّنات التطبيق في حاويات منفصلة، بطريقة التثبيت هذه تحديدًا. [9]
الميزة هي أن تقرر بنفسك كيفية تشغيل البنية التي تستقبل مدفوعاتك. لكن لا بدّ ممن يتولى التحديثات ووصول المدير والخدمات المكشوفة للإنترنت والنسخ الاحتياطية القابلة للاستعادة. لا يأخذ البرنامج نسبة من كل دفعة، إلا أن الاستضافة والأجهزة ورسوم الشبكة والمساعدة في Lightning قد تكلّف مالًا. لا تخزّن بيانات شخصية غير ضرورية عن الزبائن. إذا ضاع الكتاب أو أُعيد، يتولى التاجر الشكوى وردّ المال؛ مطوّرو BTCPay Server ليسوا حَكَمًا في عملية البيع. تساعد سجلات الفواتير في الحسابات، لكنها لا تحلّ محل جميع الالتزامات المحاسبية. [10] [3] [7]
توقّفت صفحة الدفع وبقيت المحفظة
يستخدم متجر البيانات العامة لمحفظة خارجية فقط، ثم يتوقف خادمه عن الاستجابة. لا تختفي مدفوعات بيتكوين المستلمة مسبقًا والخاضعة لمفاتيح تلك المحفظة، لكن الزبون قد يعجز عن فتح صفحة دفع جديدة، ولا يرى المتجر حالات الطلبات الحالية. بعد الاستعادة، يتحقق من إعدادات الاستلام ويطابق الفواتير مع المحفظة. لا ينطبق هذا المثال بالطريقة نفسها على مفاتيح سرية فُقدت مع محفظة ساخنة على الخادم، ولا على استعادة قنوات 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هل تكفي كلمات النسخة الاحتياطية للمحفظة لاستعادة كل شيء؟+
قد تستعيد بها محفظة بيتكوين المعنية، لكن ليس قائمة الفواتير أو إعدادات المتجر أو حالة قنوات Lightning تلقائيًا. لهذه الأجزاء نسخ احتياطية وإجراءات خاصة. اختبر الاستعادة بأمان؛ يجب ألّا تتصل نسخة اختبار قديمة من Lightning بالشبكة كما لو كانت العقدة الحالية.