قضيت هذا الأسبوع ترميز أول تطبيق محبوب للحيوانات الأليفة استنادًا إلى روبوت دردشة Telegram والذي يعمل بمثابة محفظة Bitcoin ويسمح بإرسال واستقبال النصائح بين مستخدمي Telegram وغيرهم ممن يطلق عليهم "تطبيقات Lightning". أفترض أنك معتاد على استخدام Bitcoin & Telegram بشكل عام ، وسأحاول النشر على المكشوف دون الدخول في التفاصيل. يمكن العثور على مزيد من الموارد حول Bitcoin هنا ، Telegram هو مجرد مراسلة فورية تتيح لك إنشاء تطبيقاتك المخصصة (برامج الدردشة) باستخدام نظامهم الأساسي.
ما هي النقاط الرئيسية لهذا التطبيق؟
- يسمح بتقييم أفكار المستخدمين الآخرين وإجاباتهم بقيمة حقيقية بدلاً من
"الإعجابات الافتراضية". وبذلك يرتفع المحادثة عبر الإنترنت إلى مستوى جديد تمامًا - مثال حقيقي على تطبيق الدفع الجزئي الذي يمكنه العمل مع كيانات أخرى
عبر الإنترنت باستخدام بروتوكول مفتوح - جميع الوحدات هي مشاريع مفتوحة المصدر ويمكن إعادة استخدامها وتعديلها بسهولة
لمشروعك الخاص. لا يعتمد التطبيق على خدمات تجارية خارجية.
حتى أنه يقع ضمن مجال التجارة الإلكترونية ، والذي يتم إغلاقه حاليًا تقريبًا ، التطبيق
يعتمد على الحلول المفتوحة.
ما هي حالات الاستخدام؟
شيء مثل هذا ...
أو هكذا.
ماذا تعني الأرقام؟ هذه هي وحدات البيتكوين - ساتوشي . بالنسبة إلى منتصف عام 2019 ، فإن قيمة satoshis تبلغ 0.06 دولار. يمكنك إنفاقها عبر الإنترنت أو استبدالها بعملتك المحلية باستخدام العديد من الخدمات المتاحة. لذلك ليس هذا مجرد "رقم آخر في قاعدة بيانات" أو "كوبونات يمكنك إنفاقها في متجر شريكنا" ، بل هو أموال إنترنت حقيقية .
قد تسأل عما يجب عليك فعله ، إذا لم يكن لديك أي عملة بيتكوين تستخدمها في التطبيق. يمكنك ببساطة تلقي نصيحة من مستخدم التطبيق الحالي أو شراء كمية صغيرة من البيتكوين على مختلف البورصات أو محافظ بيتكوين للهاتف المحمول أو الكمبيوتر الشخصي.



عندما تحصل على عملة البيتكوين ، يمكنك بدء @ atomic_tipbot وإيداع / إيداع.
سترى فاتورة ، يمكنك تحديد طريقة الدفع المفضلة وإرسال الأموال فقط لمسح رمز الاستجابة السريعة أو بضغطة زر ( "فتح في محفظة" ) على الفاتورة.



أكد الدفع في محفظتك المحمولة ، وسترى شاشة تأكيد على الفور تقريبًا في Telegram.
حتى الآن ، لمسنا جزأين منفصلين من التطبيق: نظام telegram bot back-end ونظام معالجة الدفع (يشبه في الواقع الواجهة الأمامية).
لإنشاء بوت Telegram هذا ، استعملت Python Telegram Bot . وبالطبع ، فإن الروبوت مفتوح المصدر .
كنظام معالجة الدفع لإنشاء الفواتير ، والتحقق من الحالة ، وإرسال الإخطار والعناية UX يستخدم BTCPayServer الذي يمكن العثور على الوثائق هنا .
إذا كنت تبحث عن كيفية معالجة أحداث الدفع مباشرةً ، فيمكنك الاطلاع على الصفحات الإلكترونية لـ Electrum CLI للمدفوعات على الإنترنت والتحقق من حلول المدفوعات خارج السلسلة (Lightning) مثل Lightning-charge أو Sparko .
قلت "لا طرف ثالث" و "لا خدمات سحابية"!؟
نعم هذا صحيح. في تطبيقي ، أستخدم استضافة مجانية مشتركة لمثيل BTCPayServer - BTCPayJungle ، لكن من الممكن أن يتم الدوران حتى على خادمك المخصص. فقط تذكر أنك تحتاج بعد ذلك إلى حوالي 500 جيجابايت من المساحة لتخزين Bitcoin و Litecoin blockchain. لا يحتفظ BTCPayServer بأي مفاتيح خاصة أو معلومات حساسة يمكن أن تسمح للمتسللين بالتحكم في الأموال الموجودة في محفظتك. بالنسبة للمدفوعات على مستوى السلسلة (ستاندارت) ، يتعين عليك توفير مفتاح xpub من محفظتك إلى BTCPayServer حتى تتمكن من إنشاء عناوين عامة. بهذه الطريقة ، تتيح بنية BTCPay معالجة المدفوعات بطريقة غير موثوق بها حتى في البيئة المشتركة. من السهل جدًا التهيئة إذا كنت تستخدم محافظًا مجربة مثل Electrum .
ما هي شبكة البرق؟
إنه شيء مثل الإضافة إلى Bitcoin التي تضيف طبقة تجريد إضافية وتسمح بإجراء معاملات بيتكوين فورية وخالية تقريبًا. كل هذه الأشياء ممكنة بفضل سحر التشفير متعدد التوقيعات ، والذي يُطلق عليه غالبًا العقد الذكي . هناك تطبيقات متعددة لبروتوكول LN. أنا أستخدم تطبيق c-lightning .
الفرق الرئيسي بين المدفوعات على السلاسل وخارجها (البرق) هي في كيفية تخزين المعاملات. يتم بث جميع المعاملات على الشبكة إلى الشبكة بأكملها بحيث تسجل كل عقدة بيتكوين قيد التشغيل هذه المعاملة في blockchain ، إذا تم تعدين الكتلة التي تحتوي على هذه المعاملة. مهلا ، BitFury ، هل أنا على حق؟ ؛) هذا هو السبب في أننا نسمي هذه المعاملات على السلسلة . سيتم تخزين هذه المعاملات في blockchain حتى نهاية وجودها. من الممكن للجمهور تتبع وتحليل ومراقبة أي من هذه المعاملات عبر الشبكة.
في حالة حدوث المعاملات خارج الحدود (Lightning) ، تحدث الأشياء بطريقة أخرى. تحتوي كل عقدة صاعقة (قد تكون كثيرة) على عنوان سلسلة ، يبدأ منها كل واحد. عند تلقي الأموال على هذا العنوان ، قد يؤدي استخدام عقدة تقنيات التشفير إلى فتح ما يسمى قناة البرق إلى عقدة أخرى ، ما يعني أن هاتين العقدتين توصلت إلى اتفاق حول توفر الأموال بينهما. في وقت لاحق ، يتم تخزين جميع المعاملات التي يتم إجراؤها عبر قناة (المعاملات الخاصة ، أو قد يتم توجيه المعاملة من عقدة أخرى) فقط على هاتين العقدتين (والعقدة المتوسطة إذا كان هناك مثل). المعاملات الوحيدة التي يتم تخزينها في blockchain الشبكات هي المعاملات قناة فتح وإغلاق. هذا هو السبب في المعاملات البرق نسميه خارج السلسلة . في الغالب أنها موجودة فقط في ملف قاعدة بيانات العقدة.
يتم تصور كل شيء على الرسم البياني

قصة قصيرة:
1) يرسل المستخدم رسالة وطلبات إيداع لبوت على برقية
2) برقية يطلق التطبيق بيثون الروبوت
3) التطبيق بيثون يرسل طلب إلى BTCPayServer
4) تقوم BTCPayServer بإنشاء عناوين واردة لـ BTC و LTC ، بالإضافة إلى الاتصال بـ lightning-charge ، والتي تحصل على بيانات من البرنامج الخفي c-lightning . نتيجة لذلك ، حصلنا على إطار HTML جيد التعامل لمعالجة الدفع
5) يدفع المستخدم الفاتورة وسترى التأكيد
6) يرسل BTCPayServer إشعار دفع الفاتورة (IPN) إلى عنوان url المحدد لإعادة الاتصال ، في حالتنا
سينتقل إلى callbacks.py (تطبيق بيثون آخر للاستماع إلى عمليات الاسترجاعات)
7) وفقا لإكمال تفاصيل الدفع ، يتم تغيير رصيد المستخدم ويحصل المستخدم على إشعار
... إذا قرر المستخدم سحب الأموال (نصائح تلقاها) ...
8) يستمع تطبيق python الخاص بـ Bot إلى نص أو صورة QR ، عندما يحصل على بيانات الفاتورة (سلسلة طويلة من الأحرف) ، ثم يرسل طلبًا لدفع تلك الفاتورة إلى paylightning.py * لتطبيق python آخر ، والذي يقوم بتهيئة عمليات الدفع باستخدام c-lightning RPC.

* لكي نكون منصفين ، أحتاج إلى أن أذكر أن paylightning.py الخاص بي-pay-wrapper.py غير مكتمل وقد يعود سلبيًا كاذبًا في بعض الحالات المحددة. يجب عليك استخدام غلاف الدفع الذي تم اختباره جيدًا من أجل البرق في حالة الاستخدام الشبيه بالإنتاج.
يمكن للمستخدمين إرسال نصائح لبعضهم البعض في محادثات المجموعة وإرسال / استقبال القيمة دون أي قيود. ولكن هذا ليس كل شيء. بفضل بروتوكول شبكة Lightning Network ، والذي هو عبارة عن شبكة دفع موحدة ومبسطة ، يمكنك إرسال نفس العملات المعدنية إلى تطبيقات مختلفة تمامًا. هناك تلميح botcoin آخر على التلغراف - @ lntxbot. يمكن للمستخدم طلب إيداع لهذا الروبوت


ما عليك سوى إعادة توجيه البيانات من @ lntxbot إلىatomic_tipbot و voul'a!
لم يعد هذا "تبادل الأرقام في قاعدة البيانات" بعد الآن ، ولكن الدفع بين "قواعد بيانات" منفصلة وغير مرتبطة. لدى بوت بالفعل عدد قليل من "LApps" المدمجة: sat2.io و lnsms.world .
قد تسأل ، ما يعني بالضبط التكامل LApp ؟
كل عقدة شبكة Lightning تكون بمثابة محفظة بيتكوين. لديها توازن على حد سواء وخارج السلسلة. عادةً ما يستخدم الرصيد المتسلسل لفتح قنوات وتخزين الأموال من القنوات المغلقة في مهام صيانة العقد القصيرة. الرصيد خارج السلسلة هو بالضبط ما يستخدم لتبادل الأموال بين العقد. تتمثل الوظائف الأساسية لكل عقدة في القدرة على إرسال الأموال أو استلامها ، لذلك توفر العقدة كبرنامج طرق الدفع والفاتورة . سأظهر باختصار كيف يحدث ذلك:
user@ln-node:/ % lightning-cli invoice 1000000000 internal_description external_description { "payment_hash" : "64c0c8f5f8f708b08487ad1376f3d256f92ccb9606987ba395c2b4193efde5a0", "expires_at" : 1558709834, "bolt11" : "lnbc10m1pwdaj72pp5vnqv3a0c7uytppy845fhdu7j2mujejukq6v8hgu4c26pj0hauksqdpqv4u8getjdeskchmyv4ekxunfwp6xjmmwxqyjw5qcqp2rzjqw3qcrp2u3ggke56wrjlstcg76drmfw680cvjum88sl7ja7mpas7xzxz8sqqfecqqyqqqqlgqqqqqqgqjqn8e3ml733dkms2txxldnuwsllwhhkldss73268hdka3e7f083vjhjqurwqrndqd2rcd85pw7vkywnr4dq7yfd59r0g2mw4wzztwr6dcprxzej6" }
يتم إنشاء فاتورة BOLT11 في هذه الحالة ، وهو تنسيق موحد لطلبات الدفع في شبكة Bitcoin (وكذلك Litecoin). تتضمن هذه السلسلة بيانات حول مستلم الفاتورة ، المبلغ ، الطابع الزمني ، انتهاء الصلاحية ، إلخ. لفك تشفير هذه السلسلة c-lightning يوفر طريقة فك التشفير:
user@ln-node:/ % lightning-cli decodepay lnbc10m1pwdaj72pp5vnqv3a0c7uytppy845fhdu7j2mujejukq6v8hgu4c26pj0hauksqdpqv4u8getjdeskchmyv4ekxunfwp6xjmmwxqyjw5qcqp2rzjqw3qcrp2u3ggke56wrjlstcg76drmfw680cvjum88sl7ja7mpas7xzxz8sqqfecqqyqqqqlgqqqqqqgqjqn8e3ml733dkms2txxldnuwsllwhhkldss73268hdka3e7f083vjhjqurwqrndqd2rcd85pw7vkywnr4dq7yfd59r0g2mw4wzztwr6dcprxzej6 { "currency" : "bc", "created_at" : 1558105034, "expiry" : 604800, "payee" : "025a14b8ed40583d67aec92da19453e0b2d1fbbf75f96f85d3dd0ff61a51ee0490", "msatoshi" : 1000000000, "amount_msat" : "1000000000msat", "description" : "external_description", "min_final_cltv_expiry" : 10, "routes" : [ [ { "pubkey" : "03a20c0c2ae4508b669a70e5f82f08f69a3da5da3bf0c973673c3fe977db0f61e3", "short_channel_id" : "574012x1255x1", "fee_base_msat" : 1000, "fee_proportional_millionths" : 1, "cltv_expiry_delta" : 144 } ] ], "payment_hash" : "64c0c8f5f8f708b08487ad1376f3d256f92ccb9606987ba395c2b4193efde5a0", "signature" : "304502210099f31dffd18b6db8296637db3e3a1ffbaf7b7db087a2ad1eedb7639f25e78b25022079038370073681aa1e1a7a05de6588e98ead078896d0a37a15b755c212dc3d37" }
البرق المبادرة القطرية decodepay lnbc10m1pwdaj72pp5vnqv3a0c7uytppy845fhdu7j2mujejukq6v8hgu4c26pj0hauksqdpqv4u8getjdeskchmyv4ekxunfwp6xjmmwxqyjw5qcqp2rzjqw3qcrp2u3ggke56wrjlstcg76drmfw680cvjum88sl7ja7mpas7xzxz8sqqfecqqyqqqqlgqqqqqqgqjqn8e3ml733dkms2txxldnuwsllwhhkldss73268hdka3e7f083vjhjqurwqrndqd2rcd85pw7vkywnr4dq7yfd59r0g2mw4wzztwr6dcprxzej6 user@ln-node:/ % lightning-cli decodepay lnbc10m1pwdaj72pp5vnqv3a0c7uytppy845fhdu7j2mujejukq6v8hgu4c26pj0hauksqdpqv4u8getjdeskchmyv4ekxunfwp6xjmmwxqyjw5qcqp2rzjqw3qcrp2u3ggke56wrjlstcg76drmfw680cvjum88sl7ja7mpas7xzxz8sqqfecqqyqqqqlgqqqqqqgqjqn8e3ml733dkms2txxldnuwsllwhhkldss73268hdka3e7f083vjhjqurwqrndqd2rcd85pw7vkywnr4dq7yfd59r0g2mw4wzztwr6dcprxzej6 { "currency" : "bc", "created_at" : 1558105034, "expiry" : 604800, "payee" : "025a14b8ed40583d67aec92da19453e0b2d1fbbf75f96f85d3dd0ff61a51ee0490", "msatoshi" : 1000000000, "amount_msat" : "1000000000msat", "description" : "external_description", "min_final_cltv_expiry" : 10, "routes" : [ [ { "pubkey" : "03a20c0c2ae4508b669a70e5f82f08f69a3da5da3bf0c973673c3fe977db0f61e3", "short_channel_id" : "574012x1255x1", "fee_base_msat" : 1000, "fee_proportional_millionths" : 1, "cltv_expiry_delta" : 144 } ] ], "payment_hash" : "64c0c8f5f8f708b08487ad1376f3d256f92ccb9606987ba395c2b4193efde5a0", "signature" : "304502210099f31dffd18b6db8296637db3e3a1ffbaf7b7db087a2ad1eedb7639f25e78b25022079038370073681aa1e1a7a05de6588e98ead078896d0a37a15b755c212dc3d37" }
في حال احتجنا إلى دفع بعض الفاتورة ، يجب أن نستخدم طريقة الدفع الخاصة بـ c-lightning:
user@ln-node:/ % lightning-cli pay lnbc2u1pwdana3pp5c0nyfgq974hr8huflt9uutyalj4maaw3q5594xp89jkvw74jme3sdql2pshjgr5dus8q6r0dejjqampd3kx2aqcqzpgwjgn45gy80jwjhgm3tpsxg33j6h6pehdus0mnjerrad943cz3vs83g30lyhlhfjxtqvtl76vttkuhs5jekuxpsqmf98l8265pwmm76gp4e7z6j { "id" : 163, "payment_hash" : "c3e644a005f56e33df89facbce2c9dfcabbef5d105285a98272cacc77ab2de63", "destination" : "03021c5f5f57322740e4ee6936452add19dc7ea7ccf90635f95119ab82a62ae268", "msatoshi" : 200000, "amount_msat" : "200000msat", "msatoshi_sent" : 200003, "amount_sent_msat" : "200003msat", "created_at" : 1558106072, "status" : "complete", "payment_preimage" : "1a9552b9f4e9199e26839353f870b12cc85b7674a2fb134e78aa370032611019", "bolt11" : "lnbc2u1pwdana3pp5c0nyfgq974hr8huflt9uutyalj4maaw3q5594xp89jkvw74jme3sdql2pshjgr5dus8q6r0dejjqampd3kx2aqcqzpgwjgn45gy80jwjhgm3tpsxg33j6h6pehdus0mnjerrad943cz3vs83g30lyhlhfjxtqvtl76vttkuhs5jekuxpsqmf98l8265pwmm76gp4e7z6j" }
البرق المبادرة القطرية lnbc2u1pwdana3pp5c0nyfgq974hr8huflt9uutyalj4maaw3q5594xp89jkvw74jme3sdql2pshjgr5dus8q6r0dejjqampd3kx2aqcqzpgwjgn45gy80jwjhgm3tpsxg33j6h6pehdus0mnjerrad943cz3vs83g30lyhlhfjxtqvtl76vttkuhs5jekuxpsqmf98l8265pwmm76gp4e7z6j الأجور user@ln-node:/ % lightning-cli pay lnbc2u1pwdana3pp5c0nyfgq974hr8huflt9uutyalj4maaw3q5594xp89jkvw74jme3sdql2pshjgr5dus8q6r0dejjqampd3kx2aqcqzpgwjgn45gy80jwjhgm3tpsxg33j6h6pehdus0mnjerrad943cz3vs83g30lyhlhfjxtqvtl76vttkuhs5jekuxpsqmf98l8265pwmm76gp4e7z6j { "id" : 163, "payment_hash" : "c3e644a005f56e33df89facbce2c9dfcabbef5d105285a98272cacc77ab2de63", "destination" : "03021c5f5f57322740e4ee6936452add19dc7ea7ccf90635f95119ab82a62ae268", "msatoshi" : 200000, "amount_msat" : "200000msat", "msatoshi_sent" : 200003, "amount_sent_msat" : "200003msat", "created_at" : 1558106072, "status" : "complete", "payment_preimage" : "1a9552b9f4e9199e26839353f870b12cc85b7674a2fb134e78aa370032611019", "bolt11" : "lnbc2u1pwdana3pp5c0nyfgq974hr8huflt9uutyalj4maaw3q5594xp89jkvw74jme3sdql2pshjgr5dus8q6r0dejjqampd3kx2aqcqzpgwjgn45gy80jwjhgm3tpsxg33j6h6pehdus0mnjerrad943cz3vs83g30lyhlhfjxtqvtl76vttkuhs5jekuxpsqmf98l8265pwmm76gp4e7z6j" }
تتم معالجة جميع حالات المدفوعات من خلال الشبكة بالكامل والعقدة الخاصة بك. ليست لديك حاجة (ولكن لديك إمكانية للقيام بذلك) للتواصل على الإطلاق مع مطوري التطبيقات من جانب المتلقي أو واجهة برمجة التطبيقات الخاصة بهم أو بعض موفري معالجة البطاقات أو أي بنك للحصول على تأكيد بشأن دفعتك أو تحرير أموال من حسابك حساب. لا توجد أي رسوم على إعادة الحساب أو أي نوع آخر من التأثير الخارجي على رصيدك في الحسابات. كل ما تحتاجه هو برنامج يعمل وفقًا لقواعد الشبكة اللامركزية. هذا حل لتبادل القيمة عبر الإنترنت ، دون الحاجة إلى أي نوع من التحكيم في الوسط الذي يقرر توافق الدفع الخاص بك مع بعض القواعد ، وأحيانًا غير معروف من قبل لجميع الأطراف. لا توجد قواعد "داخلية" في البيتكوين ، وجميع القواعد التي يحتاج إليها التطبيق مع القواعد مفتوحة ومعروفة.
وهذا يجعل من الممكن تبادل القيمة بشكل فوري ومجاني تقريبًا وفوريًا عبر الإنترنت بين الأشخاص أو حتى البرامج نفسها بطريقة مستقلة حقًا.
إذا كانت هناك طريقة للحصول على بيانات الدفع من تطبيق آخر ، فأنت قادر على التعامل معها من الناحية المالية. كما في المثال الخاص بنا ، lnsms.world هو تطبيق ويب يسمح لك بإرسال الرسائل القصيرة إلى أي رقم ودفع ثمنها باستخدام bitcoin. لدمج مثل هذا الخيار في تطبيقنا ، نحتاج ببساطة إلى تمرير البيانات المطلوبة من نموذج الويب إلى lnsms.world:
payload = { 'number': phone_number, 'text': text, 'force_unicode': 0 } send_req = requests.post('https://lnsms.world/invoice', data=payload) if send_req.status_code == 201: plain_invoice = str(send_req.text)
لا أعرف لسبب ما ، لكن استجابة lnsms برمز حالة HTTP 201 وإرجاع فاتورة BOLT11. حسنًا ، هذا يكفي لدفع هذه الفاتورة وسيقوم المستخدمون بإرسال رسائل قصيرة بعد تلقي الدفع. يمكننا أن نفرض بعض الرسوم على أعلى أم لا ، وهذا هو خيارنا الحر.
الآن ، تخيل أن الروبوت الخاص بك هو في الواقع تطبيق أكثر فائدة ولا يدفع روبوتًا آخر ، ولكن كيانًا آخر ، متصل بالإنترنت. أو ، قد تكون هذه المدفوعات بين البرامج والآلات والمخازن ومقدمي الخدمات على أساس منتظم تكرار كل بضع ثوان؟ هل تشعر بقوة المدفوعات الصغيرة؟ هكذا سيبدو إنترنت الأشياء. يوجد الآن بالفعل مشاريع مثل https://althea.org/ وفي المستقبل القريب سنواجه تغييرات كبيرة في مجال ما نسميه التجارة الإلكترونية.
إذا كنت تحب هذا المنشور وستحاول دفعات بيتكوين بنفسك ، فيمكنك أن تترك لي نصيحة على صفحتي البقشيش .