تحدي استدعاء عقد EVM
يعد تحدي EVM Contract Call Challenge عبارة عن آلية لمكافحة البريد العشوائي تتحقق من الشروط الموجودة على السلسلة قبل السماح بالنشر. فهو يتيح لأصحاب المجتمع مطالبة المؤلفين باستيفاء المعايير المحددة في العقد الذكي - على سبيل المثال، الاحتفاظ بحد أدنى من رصيد الرمز المميز - من أجل النشر.
كود المصدر: github.com/bitsocialnet/evm-contract-call
المتطلبات
- Node.js >= 22
- ESM فقط - لا تقوم هذه الحزمة بشحن إصدارات CommonJS.
التثبيت
npm install @bitsocial/evm-contract-challenge
خيارات التكوين
| الخيار | اكتب | الوصف |
|---|---|---|
chainTicker | string | السلسلة المطلوب الاستعلام عنها (على سبيل المثال، eth، matic، avax). |
address | string | عنوان العقد الذكي للاتصال به. |
abi | string | جزء ABI للوظيفة التي يتم استدعاؤها. |
condition | string | تعبير مقارنة يتم تقييمه مقابل قيمة إرجاع العقد (على سبيل المثال، > 1000). |
error | string | تظهر رسالة الخطأ للمؤلفين الذين لا يستوفون الشرط. |
مثال
مالك المجتمع الذي يريد قصر النشر على المؤلفين الذين يمتلكون أكثر من 1000 من رمز ERC-20 معين، سيقوم بتكوين التحدي من خلال:
chainTicker:"eth"address: عنوان عقد الرمز المميزabi: واجهة برمجة التطبيقات لـbalanceOf(address)condition:"> 1000"error:"You must hold more than 1,000 tokens to post in this community."
عندما يحاول مؤلف النشر، يستدعي التحدي balanceOf بعنوان المؤلف ويتحقق مما إذا كانت القيمة التي تم إرجاعها تفي بالشرط. إذا حدث ذلك، يستمر النشر؛ وإلا، يتم إرجاع رسالة الخطأ المكونة.
متى تستخدمه
يعتبر تحدي EVM Contract Call مثاليًا لما يلي:
- مجتمعات ذات بوابات رمزية تقيد النشر على حاملي الرموز المميزة.
- الوصول عبر بوابات NFT حيث تكون ملكية NFT محددة مطلوبة.
- مساحات حوكمة DAO حيث تقتصر المشاركة على حاملي الرموز المميزة للحوكمة.
بالنسبة للمجتمعات التي لا تعتمد على الهوية على السلسلة، فكر في مانع البريد العشوائي أو تحدي القسيمة بدلاً من ذلك.