چالش تماس قرارداد 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: ABI برایbalanceOf(address)condition:"> 1000"error:"You must hold more than 1,000 tokens to post in this community."
هنگامی که نویسنده تلاش میکند تا منتشر کند، چالش balanceOf را با آدرس نویسنده فراخوانی میکند و بررسی میکند که آیا مقدار بازگشتی شرایط را برآورده میکند یا خیر. اگر چنین شود، انتشار ادامه می یابد. در غیر این صورت، پیغام خطای پیکربندی شده برگردانده می شود.
زمان استفاده از آن
چالش تماس قرارداد EVM برای موارد زیر ایده آل است:
- ** انجمن های دارای دروازه توکن ** که ارسال پست را به دارندگان توکن محدود می کنند.
- دسترسی با دروازه NFT که در آن مالکیت یک NFT خاص مورد نیاز است.
- فضاهای حاکمیت DAO که در آن مشارکت به دارندگان توکن حکومتی محدود می شود.
برای جوامعی که به هویت زنجیرهای متکی نیستند، به جای آن مسدودکننده اسپم یا چالش کوپن را در نظر بگیرید.