تخطي إلى المحتوى الرئيسي

كيفية تنفيذ سوق ⁦ERC-721⁩

العقود الذكية
erc-721
solidity
الرموز المميزة
متوسط
ألبرتو كويستا كانيادا
19 مارس 2020
5 دقيقة للقراءة

في هذا المقال، سأوضح لك كيفية برمجة Craigslist على سلسلة كتل إيثيريوم.

قبل Gumtree وEbay وCraigslist، كانت لوحات الإعلانات المبوبة تُصنع في الغالب من الفلين أو الورق. كانت هناك لوحات إعلانات مبوبة في ممرات المدارس، والصحف، وأعمدة إنارة الشوارع، وواجهات المتاجر.

تغير كل ذلك مع ظهور الإنترنت. تضاعف عدد الأشخاص الذين يمكنهم رؤية لوحة إعلانات مبوبة معينة بشكل كبير. ومع ذلك، أصبحت الأسواق التي تمثلها أكثر كفاءة وتوسعت إلى حجم عالمي. تُعد Ebay شركة ضخمة تعود أصولها إلى لوحات الإعلانات المبوبة المادية هذه.

مع سلسلة الكتل، من المقرر أن تتغير هذه الأسواق مرة أخرى، دعني أوضح لك كيف.

تحقيق الدخل

سيحتاج نموذج العمل الخاص بلوحة الإعلانات المبوبة على سلسلة كتل عامة إلى أن يكون مختلفًا عن نموذج Ebay والشركات المشابهة.

أولاً، هناك زاوية اللامركزية. تحتاج المنصات الحالية إلى صيانة خوادمها الخاصة. بينما تتم صيانة المنصة اللامركزية بواسطة مستخدميها، وبالتالي تنخفض تكلفة تشغيل المنصة الأساسية إلى الصفر بالنسبة لمالك المنصة.

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

سيعرف قادة الأعمال الذين يتمتعون برؤية أوسع مني كيفية تحقيق الدخل من هذا. كل ما أراه هو أن هذا يختلف عن الوضع الراهن ومن المحتمل أن يكون مربحًا.

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

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

أنا سعيد فقط ببنائه. دعونا نلقي نظرة على الكود.

التنفيذ

منذ بعض الوقت بدأنا مستودعًا مفتوح المصدر (opens in a new tab) يحتوي على أمثلة لتنفيذ حالات العمل وأشياء أخرى مفيدة، يرجى إلقاء نظرة.

الكود الخاص بـ لوحة إعلانات إيثيريوم المبوبة (opens in a new tab) موجود هناك، يرجى استخدامه وتجربته بحرية. فقط كن على دراية بأن الكود لم يتم تدقيقه وتحتاج إلى بذل العناية الواجبة بنفسك قبل السماح بوضع الأموال فيه.

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

struct Trade {
  address poster;
  uint256 item;
  uint256 price;
  bytes32 status; // مفتوح، منفذ، ملغى
}

لذا هناك شخص ينشر الإعلان. عنصر للبيع. سعر للعنصر. حالة التداول التي يمكن أن تكون مفتوحة، أو منفذة، أو ملغاة.

سيتم الاحتفاظ بجميع هذه التداولات في تعيين (mapping). لأن كل شيء في Solidity يبدو وكأنه تعيين. وأيضًا لأنه مريح.

mapping(uint256 => Trade) public trades;

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

بعد ذلك يأتي السؤال حول ماهية تلك العناصر التي نتعامل معها، وما هي هذه العملة المستخدمة للدفع مقابل المعاملة.

بالنسبة للعناصر، سنطلب فقط أن تنفذ واجهة ERC-721 (opens in a new tab)، وهي في الحقيقة مجرد طريقة لتمثيل عناصر العالم الحقيقي في سلسلة الكتل، على الرغم من أنها تعمل بشكل أفضل مع الأصول الرقمية (opens in a new tab). سنقوم بتحديد عقد ERC-721 الخاص بنا في المُنشئ، مما يعني أن أي أصول في لوحة الإعلانات المبوبة الخاصة بنا يجب أن تكون قد تم ترميزها مسبقًا.

بالنسبة للمدفوعات، سنفعل شيئًا مشابهًا. تحدد معظم مشاريع سلسلة الكتل عملة مشفرة ERC-20 (opens in a new tab) خاصة بها. يفضل البعض الآخر استخدام عملة سائدة مثل DAI. في لوحة الإعلانات المبوبة هذه، تحتاج فقط إلى تحديد عملتك عند الإنشاء. سهل جدًا.

constructor (
  address _currencyTokenAddress, address _itemTokenAddress
) public {
  currencyToken = IERC20(_currencyTokenAddress);
  itemToken = IERC721(_itemTokenAddress);
  tradeCounter = 0;
}

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

الكود أدناه يفعل ذلك بالضبط. يضع العنصر في حساب الضمان، وينشئ الإعلان، ويقوم ببعض مهام التنظيم.

قبول التداول يعني اختيار إعلان (تداول)، ودفع السعر، واستلام العنصر. الكود أدناه يسترد تداولًا. يتحقق من توفره. يدفع ثمن العنصر. يسترد العنصر. ويُحدّث الإعلان.

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

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

هذا كل شيء. لقد وصلت إلى نهاية التنفيذ. من المدهش حقًا مدى إيجاز بعض مفاهيم الأعمال عند التعبير عنها في الكود، وهذه إحدى تلك الحالات. تحقق من العقد الكامل في مستودعنا (opens in a new tab).

الخاتمة

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

تصادف أيضًا أن تكون لوحات الإعلانات المبوبة أداة سهلة التكرار في بيئة سلسلة الكتل، مع ميزات محددة للغاية ستجعل تحدي العمالقة الحاليين ممكنًا.

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

كما هو الحال دائمًا، إذا كنت بصدد بناء أي شيء ممتع وترحب ببعض النصائح، فيرجى مراسلتي (opens in a new tab)! يسعدني دائمًا المساعدة.