شعار زيفيرنت

ما هي المدفوعات المتكررة PoC وكيف تعمل؟

التاريخ:

صورة ملف تعريف Lisk Hacker Noon

@يسكيسك

نقوم بتمكين المطورين من خلال مجموعة أدوات تطوير البرامج لتطبيقات blockchain المكتوبة بلغة JavaScript.

في فريق Moosty ، نتعلم بالممارسة. من خلال بناء دليل على المفاهيم ، نتعرف على تقنية blockchain وإنشاء ديناميكيات الشبكة. نحن نعمل مع المجتمعات (عبر الإنترنت وغير متصل) ومعاهد ومنظمات المعرفة ولدينا رابط قوي مع مجتمع Lisk ومجتمع LCU والشركات المحلية في أوتريخت. هل ترغب في الانضمام إلينا في رحلة الابتكار هذه؟ دعونا نبني معًا برهانًا على المفهوم.

مقدمة المشروع

المدفوعات المتكررة هي دليل على المفهوم الذي تم إجراؤه باستخدام ليسك SDK. يُظهر حلاً تقنيًا بسيطًا نسبيًا يستخدم المعاملات المخصصة لبناء عقد حتمي بين طرفين (نظير إلى نظير). يسمح لك بإعداد عقد مع أي شخص يقوم بإنشاء حساب (محفظة) في النظام. يتم تخزين الحسابات والعقد وجميع التغييرات وجميع الأنشطة على blockchain ، والتي تم إنشاؤها خصيصًا لـ PoC هذا.

حصل المشروع على بناة ليسك منحة. فيما بعد نتوسع في إثبات المفهوم. 

حالة الاستخدام "دعم من قبل جهة حكومية"

الوضع الحالي

منظمة (أ) تتقدم بطلب للحصول على إعانة من الحكومة (ب). يتم دفع هذا حاليًا بمبلغ واحد لمدة عام واحد. يجب أن يفي الطرف المستلم بشروط معينة خلال هذه الفترة. إذا لم يستوف المتلقي الشروط في نهاية العام ، فيجب سداد المنحة كليًا أو جزئيًا.

لماذا يجب أن تعمل بشكل مختلف؟

في حالة عدم امتثال الطرف "أ" للشروط ويجب سداد الدعم كليًا أو جزئيًا ، فإنك تواجه مشكلة تتمثل في أن المبلغ بالكامل قد تم إنفاقه بالفعل في معظم الحالات. وهذا يضمن أن مقدم الدعم (الطرف ب) ، غير مؤكد من المبلغ الذي سيتم استرداده وأن هذا الطرف "أ" قد يواجه مشاكل مالية.

كيف يعمل الدفع المتكرر؟

يضع الطرف "أ" العقد مع شروط الدفع ، بما في ذلك عدد المرات ، ومتى ، والمبلغ. يملأ الطرف "ب" الخزنة بالرموز لتلبية شروط العقد. في أي فترة يحق بموجبها للطرف "أ" الحصول على الرموز المميزة من العقد ، يمكن للطرف "أ" تنفيذ معاملة لتلقي الرموز المميزة لتلك الفترة.

إذا أراد الطرف "ب" إنهاء العقد قبل الأوان ، فيجب دفع الرسوم المحددة مسبقًا إلى الطرف "أ" ، وسيتلقى الطرف "ب" الرموز المتبقية من الخزنة. يمكن مقارنة ذلك بالإنهاء المبكر للعقد.

Future

"في المستقبل ، يمكنك إنشاء عقد بينك وبين جارك الذي يصادف أنه مدرس غيتار. قمت بإعداد عقد لمدة عام واحد ، حيث تدفع له مبلغًا متفقًا عليه كل شهر. تقوم بعد ذلك بإيداع دفعة شهر واحد مقدمًا ، وإذا قام أي من الطرفين بإنهاء العقد ، فسيتم تقديم الشهر الأخير إلى المعلم. بمجرد إبرام العقد يصبح غير قابل للتغيير وينشئ اتفاقية شفافة قابلة للقراءة بين الطرفين ".

بنية تحتية خدمية مرنة

اليوم تستخدم الأداة فقط ملف حفنة من المعاملات المخصصة. من خلال هذه المعاملات المخصصة الست ، لدينا القدرة على بناء تطبيق blockchain قوي يعمل على إنشاء حل تعاقد مرن بين طرفين. يمنحك إمكانية إنشاء ما يلي:

  • آلية دفع تعويضات شهرية.
  • قدِّم دعمًا يتم بموجبه فتح الأموال تلقائيًا بعد 3 (أو أكثر) أشهر ، ما لم ينهي شخص ما العقد.
  • اشتراك تدفع فيه كامل المبلغ مقدمًا (لتحصل على خصم).
  • عقد خدمة تدفع فيه فترتين مقدمًا.
  • خصص مصروف الجيب لأطفالك.
  • جدولة التبرعات الشهرية بحد أقصى.

سيكون هناك العديد من الاحتمالات عندما نقوم بتوسيع وظائف هذه المعاملات ، أو عند إضافة معاملات مخصصة جديدة ودمج 10 أو ربما 20 معاملة مختلفة.

على سبيل المثال: قم بإنشاء صندوق تمويل جماعي مع دفع تعويضات شهرية (كحد أقصى) إلى الحشد الجماعي. 

دعنا نعرف إذا كانت لديك أفكار أفضل! 

تفاصيل تقنية

يحتوي هذا القسم على مقدمة للتفاصيل الفنية ويقدم نظرة عامة على الأطر المختلفة المستخدمة ، والمعاملات المخصصة التي تم إنشاؤها ، وأخيراً تجربتنا من العمل مع Lisk SDK.

مكونات PoC

  • النهاية الخلفية: تعمل المعاملات المخصصة التي يمكن تشغيلها على blockchain.
  • واجهة برمجة تطبيقات HTTP ممتدة تربط الواجهة الخلفية والأمامية.
  • الواجهة الأمامية: محفظة ReactJS للواجهة الأمامية لإدارة العقود (التفاعل مع المعاملات).

المعاملات المخصصة

"تعتبر المعاملات جزءًا أساسيًا من تطبيقات blockchain التي تم إنشاؤها باستخدام Lisk SDK ، لأنها تحدد مجموعة الإجراءات التي يمكن أن يقوم بها المستخدمون في الشبكة. تنتمي كل معاملة إلى نوع معاملة محدد مسجل في الشبكة. "  وثائق Lisk SDK.

يستخدم إثبات المفهوم هذا ستة معاملات مخصصة مختلفة. معاملات مختلفة يمكن أن تتفاعل مع محافظ العقد كما هو موضح أدناه:

  • إنشاء - عقد العقد.
  • مراجعة / قبول - مراجعة العقد والتحقق منه.
  • عقد الصندوق - إيداع الرموز في العقد.
  • سحب - احصل على الرموز المميزة من العقد. 
  • الإنهاء - الإنهاء المبكر للعقد. 
  • معاملة الحنفية - تزود المحفظة برموز تسجيل واسم مستخدم.

ملاحظة: ستعمل المعاملات بوحدات الدقائق في إثبات المفهوم هذا لمحاكاة العقود بشكل أسرع.

رؤية افتح مستودع تسجيل نوع المعاملة Lisk للحصول على قائمة بجميع أنواع معاملات Lisk المسجلة. يمكن للجميع تقديم طلب سحب لإضافة تسجيلات جديدة أو تحديثها ، وكذلك إعادة استخدام المعاملات المخصصة المسجلة من أجل إعداد تطبيق blockchain الخاص بك بسرعة.

نوع العقد

يُبرم العقد بقواعد مختلفة يجب الالتزام بها كما هو موضح أدناه:

  • الوحدة: الوحدة الزمنية [يومية ، أسبوعية ، شهرية ، سنوية].
  • سعر الوحدة: كم عدد الرموز التي يمكن لكل وحدة استردادها من الخزنة.
  • وحدات الدفع المسبق: كم عدد الوحدات * السعر الذي يجب أن يكون في الخزنة.
  • البداية: عندما يبدأ العقد.
  • إجمالي الوحدات: كم عدد الوحدات التي يحتويها العقد.
  • رسوم الإنهاء: مقدار الرسوم المدفوعة مع الإلغاء المبكر للعقد.
  • المستلم: ما هو العنوان الذي يمكن أن تستغرق كل وحدة رموز وقت من الخزنة (الجزء أ).
  • المتعاقد: ما هو العنوان الذي يجوز أن يملأ الخزنة (دفعة ب).
  • الوصف: وصف العقد.
  • الاسم: اسم العقد. 

كيف تعمل؟

يمكن إبرام العقد من قبل المرسل المستقبلي أو المتلقي للعقد. يمكن للطرف الآخر الموافقة على هذا العقد أو تعديله من خلال عملية التحقق من الصحة.

إذا تم تعديل العقد ، يجب أن يوافق الطرف الأول على هذا التعديل أو يرفضه. يمكن تكرار هذه العملية حتى يتفق الطرفان. يمكن ملء الخزنة من قبل المرسل (الطرف ب) ، مع معاملة صندوق مخصص تستخدم مبالغ دفع كاملة وتفعيل العقد.

يمكن للطرف المستلم (أ) استرداد الرموز المميزة من الخزنة بمعاملة إذا كان العقد يسمح بذلك في ذلك الوقت. إذا لم يتم استيفاء شروط الدفع المسبق ، فلن يتم تفعيل العقد.

يمكن لكلا الطرفين إنهاء العقد قبل الأوان من خلال معاملة إنهاء يتم فيها إعادة المبلغ المتبقي إلى الطرف (ب) ، بعد خصم الرسوم القصيرة ، وبعد ذلك ، يتم دفع الرسوم القصيرة إلى الطرف أ.

SDK 4.0

يستخدم PoC هذا Lisk SDK 4.0. يوفر هذا الرسوم الديناميكية وحالة السلسلة. يتم استخدام متجر الدولة المتسلسل لتحديد وقت المعاملة ويمكن أن يحدد من حالة العقد عدد الرموز المميزة غير القابلة للفتح. في هذا الإصدار من SDK ، تتم إزالة الطابع الزمني من المعاملة الأساسية ويتم تقديم nonce.

نظرًا للطبيعة المتزايدة لـ nonce ، تسترد الواجهة الأمامية حساب nonce من blockchain في كل مرة ، قبل توقيع المعاملة مباشرة. 

// slotTypes = [minutes, hours, days, months] in seconds
export const getPastSlots = ( start, now, type, length, unit
) => { const slot = slotTypes[type] * length; return Math.floor((now - start) / slot) - unit;
}
const unitsAvailable = getPastSlots( contract.asset.start, store.chain.lastBlockHeader.timestamp, contract.asset.unit.type, contract.asset.unit.typeAmount, contract.asset.payments
);

حل الرسوم الديناميكي

الرسوم الديناميكية تعمل مثل السحر. نظرًا لعدم وجود وثائق (حيث بدأنا في استخدام الإصدار 4 في وقت مبكر جدًا) ، فقد استغرق الأمر بعض الوقت لمعرفة كيفية حسابها. لقد حللناها بالطريقة التالية الموضحة أدناه:

const tx = new FundContractTransaction({ nonce: nonce.toString(), senderPublicKey: publicKey, asset: { ...data }
}); tx.fee = (tx.minFee + BigInt(65000)).toString();
tx.sign(config.networkIdentifier, passphrase);

BIGINT

بالنسبة للواجهة الأمامية ، كانت لدينا مشكلة في BigInt (قضية) ، لأن BigInt يستخدم مكتبة Buffer لـ js في المستعرض الذي لم يكمل بعد تكامل

`buffer.readBigUint64BE()`

. تُستخدم هذه الوظيفة في Lisk SDK وهي ضرورية لتوقيع المعاملات.

طلب السحب لهذه الوظيفة قيد الإعداد ولكن لم يتم قبوله حتى وقت كتابة هذا التقرير. قمنا بإصلاحه عن طريق تفرع من المخزن المؤقت ودمجه مع طلب السحب لجعله يعمل في الوقت الحالي.

واجهة برمجة تطبيقات HTTP

الافتراضي Lisk واجهة برمجة تطبيقات HTTP تم توسيعه بوحدة واجهة برمجة تطبيقات إضافية لإتاحة البحث عن أسماء مستخدمين جزئية ، وحقول أصول محددة للتعاقد ، وحقول أصول خاصة بالمعاملات.

على سبيل المثال ، يحتوي كل عقد على معاملات خاصة به ولكن الحساب ليس هو المرسل أبدًا لأي معاملات.

لتجميع جميع المعاملات الخاصة بالعقد ، ستتلقى واجهة برمجة التطبيقات المعاملات من كيان المعاملة عن طريق إضافة ملف

`asset_contains`

التصفية إلى كيان المعاملة. هذا يجعل من الممكن البحث عن

`.asset.contractPublicKey`

===

`contract.publicKey`

الواجهة الأمامية

يعد إنشاء معاملات مخصصة في النهاية الخلفية أمرًا سهلاً نسبيًا عندما تبدأ في الحصول على تعليق منه. العنصر الأكثر استهلاكا للوقت هو الواجهة الأمامية ، اعتمادًا على متطلبات واجهة المستخدم ، وربط الاثنين معًا. يمكن تحسين عملية جمع البيانات من blockchain بشكل أكبر ، ولكنها خارج نطاق إثبات المفهوم هذا. 

أسلوب التراجع عن الأصول () 

بالإضافة إلى ذلك،

UndoAsset()

قد يكون من الصعب إنشاء طريقة في معاملة مخصصة باستخدام بيانات اسمية ثابتة. نتطلع إلى الحل الجديد لإنشاء معاملات مخصصة بدون طريقة UndoAsset () ، والتي تم التخطيط لها بالفعل في إصدار لاحق من SDK. سيضمن حل ذلك أن ترسل معاملة المراجعة بيانات أقل بكثير ، وبالتالي تستخدم موارد أقل للشبكة ، مما يؤدي بدوره إلى رسوم ديناميكية أقل.

الموارد

إذا كنت تشعر بالإلهام وترغب في بناء دليل خاص بك على تطبيق blockchain ، فراجع برنامج Lisk Builders. يمكن العثور على مزيد من المعلومات حول البرنامج وإجراءات التقديم على صفحة الويب Lisk الخاصة بـ برنامج Lisk Builders.

إخلاء المسؤولية: تمت كتابة منشور المدونة هذا بواسطة عضو مجتمعنا ، Jurre (ليسك شات اسم المستخدم: Jurre | Moosty) كجزء من مشاركته في برنامج Lisk Builders.

by يسك @يسك. نقوم بتمكين المطورين من خلال مجموعة أدوات تطوير البرامج لتطبيقات blockchain المكتوبة بلغة JavaScript.زورنا

الاوسمة (تاج)

انضم إلى Hacker Noon

قم بإنشاء حسابك المجاني لفتح تجربة القراءة المخصصة الخاصة بك.

كوينسمارت. Beste Bitcoin-Börse في أوروبا
المصدر: https://hackernoon.com/what-is-the-recurring-payments-poc-and-how-does-it-work-6ql323i؟source=rss

بقعة_صورة

أحدث المعلومات الاستخباراتية

بقعة_صورة