سالیدیفا

محدودیت حجم یک قرارداد هوشمند در EVM چقدره؟

در ۲۲ نوامبر ۲۰۱۶ با انتشار هارد فورک Spurious Dragon و معرفی EIP-170، محدودیت حجم یک قرارداد هوشمند نیز تعریف شد.

حداکثر حجم یک قرارداد هوشمند در اتریوم 24.576 کیلوبایت است.

برای یک برنامه نویس سالیدیتی دانستن این محدودیت بسیار مهم است. چرا که باعث می شود از تکرار کد ها پرهیز کند و کد ها را تا حد ممکن بهینه تر بنویسد.

در صورتی حجم اسمارت کانترکت از این مقدار عبور شود با خطایی مشابه خطای زیر مواجه خواهید شد.

Warning: Contract code size exceeds 24576 bytes (a limit introduced in Spurious Dragon). This contract may not be deployable on Mainnet. Consider enabling the optimizer (with a low “runs” value!), turning off revert strings, or using libraries.

هدف از ایجاد این محدودیت مقابله با حمله های DDOS بود. با اینکه عملیات در سالیدیتی بی هزینه نخواهند بود، اما ممکن است موقعیت هایی پیش بیاید که مهاجم با هزینه پایین، منابع سخت افزاری نود های شبکه را درگیر کار سخت کند.

در مقالات بعد به این اشاره خواهیم کرد که چطور حجم قرارداد هوشمند را میتوان حساب کرد. همچنین راهکار های رعایت این محدودیت را نیز معرفی خواهیم کرد.