پرش به مطلب اصلی

چالش تماس قرارداد EVM

EVM Contract Call Challenge یک مکانیسم ضد هرزنامه است که قبل از اجازه انتشار، شرایط موجود در زنجیره را تأیید می کند. این به صاحبان انجمن اجازه می دهد تا برای ارسال پست، از نویسندگان بخواهند که معیارهای تعریف شده توسط قرارداد هوشمند را رعایت کنند - به عنوان مثال، حداقل موجودی توکن را داشته باشند.

کد منبع: github.com/bitsocialnet/evm-contract-call

الزامات

  • Node.js >= 22
  • فقط ESM -- این بسته بیلدهای CommonJS را ارسال نمی کند.

نصب و راه اندازی

npm install @bitsocial/evm-contract-challenge

گزینه های پیکربندی

گزینهنوعتوضیحات
chainTickerstringزنجیره پرس و جو (به عنوان مثال، eth، matic، avax).
addressstringآدرس قرارداد هوشمند برای تماس.
abistringقطعه ABI برای تابعی که فراخوانی می شود.
conditionstringیک عبارت مقایسه ای که در برابر مقدار بازگشتی قرارداد ارزیابی می شود (به عنوان مثال، > 1000).
errorstringپیام خطا به نویسندگانی که شرایط را ندارند نشان داده می شود.

مثال

مالک انجمنی که می خواهد پست کردن را به نویسندگانی که بیش از 1000 توکن خاص ERC-20 دارند محدود کند، چالش را با این موارد پیکربندی می کند:

  • chainTicker: "eth"
  • address: آدرس قرارداد توکن
  • abi: ABI برای balanceOf(address)
  • condition: "> 1000"
  • error: "You must hold more than 1,000 tokens to post in this community."

هنگامی که نویسنده تلاش می‌کند تا منتشر کند، چالش balanceOf را با آدرس نویسنده فراخوانی می‌کند و بررسی می‌کند که آیا مقدار بازگشتی شرایط را برآورده می‌کند یا خیر. اگر چنین شود، انتشار ادامه می یابد. در غیر این صورت، پیغام خطای پیکربندی شده برگردانده می شود.

زمان استفاده از آن

چالش تماس قرارداد EVM برای موارد زیر ایده آل است:

  • ** انجمن های دارای دروازه توکن ** که ارسال پست را به دارندگان توکن محدود می کنند.
  • دسترسی با دروازه NFT که در آن مالکیت یک NFT خاص مورد نیاز است.
  • فضاهای حاکمیت DAO که در آن مشارکت به دارندگان توکن حکومتی محدود می شود.

برای جوامعی که به هویت زنجیره‌ای متکی نیستند، به جای آن مسدودکننده اسپم یا چالش کوپن را در نظر بگیرید.