لنفترض وجود شخصين هم رامي و ربا, ربا تعمل لدى رامي كمديرة لمواضيع منتدى لرامي, حيث تقوم بفحص محتوى كل منشور لتحدد ما اذا كان يحتوي أي عناصره مخالفة لقوانين المنتدى, ويتم الدفع بشكل يومي على عدد المناشير التي فحصتها ربا. المشكلة أن في بعض الأحيان تنسى ربا عدد المناشير التي فحصتها بسبب العدد الكبير, أو أن ينسى رامي أن يدفع لها ما يترتب عليه بسبب ضفط العمل. فـربا تريد أن يدفع لها على كل منشور منجز بعد الانتهاء من فحصه مباشرة. لكن رامي لا يستطيع القيام بذلك لان رسوم ارسال معاملة بهذه القيمة الصغيرة جداً سيتجاوز قيمة رسوم المعاملة حتماً, بالتالي سيدفع رامي كرسوم ضعف ما قد يدفعه لربا, فاقترحت ربا عليه استخدام قنوات الدفع بالغة الصغر Micropayment Channels.
يطلب رامي المفتاح العام الخاص بربا منها ويقوم بإنشاء معاملتين, الثانية منهما تنفق/تصرف الأولى (يجب أن يكونوا يهذا الترتيب لسهولة الفهم) وهم على الشكل الآتي:
1- المعاملة الأولى:
معاملة تدفع 100 mBTC من محفظة رامي الى نص برمجي P2SH (أي يمكن صرف خرج المعاملة الى أي مفتاح عام) و الذي يشكل UTXO تحتاج الى توقيعين لانفاقها 2of2 multisig redeem script, أي الى توقيع رامي و توقيع ربا معا. و توقيع هذه المعاملة و بثها لن يفيد رامي بشيئ حاليا بل سيبقي أموال رامي تحت رحمة ربا (حتى ترضى عليه لرامي و تتكرم وتوقع المعاملة و يقدر يبثها على الشبكة ليتم تسجيلها ضمن البلوكتشين). لذلك يبقي رامي هذه المعاملة له, ولا يشاركها مع ربا بعد. هذه المعاملة هي السند أو العقد Bond or Contract Transaction.
2- المعاملة الثانية:
معاملة إعادة المال Refund Transaction. كما قلنا أن المعاملة الثانية تصرف/تنفق الأولى, فهذا يعني أن معاملة إعادة المال Refund هي التي تنفق الـ UTXO من المعاملة الأولى Bond, أي أن الخرج من المعاملة الأولى Bond هو دخل للمعاملة الثانية Refund ينفقها كلها ناقص رسوم المعاملة لصالح رامي ولكن عليها قفل مؤقت يمنع انفاقها لبعد فترة 24 ساعة مطبقة عن طريق locktime (سيتم شرح الـ locktime لاحقاً). لا يستطيع رامي توقيع هذه المعاملة بمفرده, يجب على ربا أن توقعها معه لانها تحتاج ايضا الى توقيعين واحد من كل من رامي و ربا, هذه المعاملة هي ما يضمن حق رامي في حال قررت ربا التلاعب وعدم العمل فيستطيع رامي بعد أن حصل على توقيع ربا, بعد أن يوقع هو هذه المعاملة أيضاً, أن يرسالها الى الشبكة لتنفذ بعد 24 ساعة. ويسترجع أمواله. ستتوضح هذه النقطة بالاستمرار بالقراءة.
قبل أن تقوم ربا بتوقيع معاملة اعادة المال تتأكد أن القفل المؤقت عليها فعلا لمدة 24 ساعة كما هو متفق عليه. ثم تقوم بتوقيعها, و تعطي نسخة منها لرامي. ثم تسأل رامي أن يعطيها معاملة السند وتتأكد أن معاملة اعادة المال تنفق معاملة السند أو العقد. الآن يمكن لربا أن تبث هذه المعاملة أو العقد الى الشبكة لتتأكد أن رامي لن يتمكن من انفاق هذه الـ100 ميليبتكوين الا بعد مرور 24 ساعة و هذا هو فتح قناة دفعات بالغة الصغر microtransaction Channel. الى الآن لم يصرف رامي أي شيء سوى رسوم معاملة السند أو العقد التي قيمتها 100 ميليبتكوين, وسيمكنه أيضاً بث معاملة اعادة المال خلال 24 ساعة لاسترجاع كامل المبلغ. ومعاملة اعادة المال هي المعاملة التي يتم تحديثها عند انتهاء رباب من فحص كل بوست لتأخذ مستحقاتها على كل بوست بلحظة الانتهاء منه, سنرى كيف.
الآن عندما تقوم ربا بانجاز العمل ألا وهو مراجعة بوست واحد لان هذا ما تريده هي, لنقل أنه تم الاتفاق على انفاق 1 mBTC لكل بوست, فتقوم ربا بانشاء نسخة جديدة من معاملة اعادة المال وتعطيها لرامي كي يقوم بتوقيعها و ارسالها لربا مرة أخرى, بما أن جزء من الخرج الآن يجب أن يرسل الى ربا. فالنسخة الثانية من معاملة اعادة المال تنفق 1 mBTC لصالح ربا و الباقي لصالح رامي, بعد أن توقعها ربا يمكن اعتبارها على أنها الحالة الأحدث لمعاملة اعادة المال, ولكن لا يوجد لهذه المعاملة أي قفل مؤقت, أي يمكن لربا أن توقع هذه النسخة من المعاملة و تبثها مباشرة الى الشبكة ليتم انفاق خرج معاملة السند أو العقد. لكن لن تفعل ربا ذلك مباشرة, ما يزال هناك عمل لينجز. لاحظ أن رامي لا يملك النسخة الجديدة الموقعة من ربا, كي لا يحاول أن يبث معاملة لديها حالة قديمة و بالتالي تتعرض ربا للخسارة و النصب.
يعيد كل من رامي و ربا نفس العملية - من الانتهاء من فحص بوست فتتلقى أجرها - حتى تنتهي ربا من العمل لهذا اليوم, أو الى أن يبقى وقت قصير لانتهاء مؤقت القفل على المعاملة الثانية أي معاملة اعادة المال النسخة الأولى التي أنشأها رامي في البداية. فتقوم ربا هنا بتوقيع النسخة النهائية من معاملة اعادة المال وتبثها الى الشبكة, لتأخد ما لها و يُدْفَعْ ما عليها كخرج غير منفق لمعاملة اعادة المال, خرج لرامي و خرج لربا. و هكذا تنتهي العملية, و يتم اغلاق القناة.
هل يوجد شبه بين قنوات الدفع بالغة الصغر و شبكة البرق؟ أم هل هي سبب شبكة البرق؟
يمكنك القراءة عن شبكة البرق هنا , ويمكنك الاطلاع على رؤية Vitalik مؤسس Ethereum عن معنى اللامركزية هنا.
المصادر:
- https://bitcoinj.github.io/working-with-micropayments
- https://bitcoin.org/en/contracts-guide#micropayment-channel
- https://bitcoin.org/en/transactions-guide#term-p2sh
Long BitcoinBTC.Short the Banks