
سالیدیتی در ورژن0.8.7، برای پشتیبانی از آپدیت لندن تغییراتی را ارائه دادهاست، این ورژن شامل بهبودهای مختلف برای SMTChecker، تبدیل Yul به کد EVM و رفع برخی از باگها میباشد.
سلام دوستان ??
من سارا هستم و در این پست تغییراتِ جدیدی که زبان سالیدیتی در ورژن 0.8.7 اعمال کرده و در بلاگ سالیدیتی گزارش داده رو ترجمه کردم.
امیدوارم بتونید از این پست استفاده کنید. خوشحال میشم نظرات و انتقادات شما رو بدونم. [email protected]
پی نوشت سارا: برای اینکه مطالب راستچین بمونن در ابتدای بعضی از بولتها حرف "آ" رو قراردادم.
سالیدتی پشتیبانی از آپکد BASEFEE (EIP-3198و EIP-1559) را افزایش میدهد که هزینه پایه بلاک را نشان میدهد. از طریق block.basefee جهانی یا با استفاده از ()basefee در اسمبلی داخلی یا Yul قابل دسترسی است.
قرارداد زیر یک نمونه را نشان میدهد:
contract Basefee { functionbasefee_global() external view returns (uint) { returnblock.basefee; } functionbasefee_inline_assembly() external view returns (uint ret) { assembly{ ret := basefee() } } }
آ SMTChecker اکنون همه گزارشات اثبات نشده تارگت را در یک پیام واحد جمع میکند، خروجی ابزار را از بین میبرد و خوشبختانه هرگونه اطلاعات مهم را بیشتر نمایان می کند. گزینه خط فرمان --model-checker-show-unprovedو گزینه settings.modelChecker.showUnproved=true میتواند برای لیست تمام تارگتهای اثبات نشده استفاده شود.
کدگذاری SMT عملیات تقسیم و باقیمانده در واقع از کدگذاری معادل با ضرب و متغیرهای slack برای عملکرد حل کننده استفاده میکند. با این حال، برخی از حل کنندههای غیر پیش فرض با کدگذاری دقیق این عملیات بهتر کار میکنند. گزینه خط فرمان --model-checker-div-mod-no-slacksو گزینه settings.modelChecker.divModNoSlacksبه کاربر اجازه میدهند تا کدگذاری دقیق را برای تقسیم و باقیمانده انتخاب کند. انتظار میرود این گزینه فقط در هنگام استفاده از حل کنندههای دیگر به غیر از z3 مفید باشد.
در نهایت، اهداف underflow و overflow به طور پیش فرض دیگر بررسی نمیشوند. این به دنبال استفاده گسترده از چکهای تولید شده توسط کامپایلر است که انتظار میرود در Solidity> = 0.8.0 رخ دهد. همچنان میتوان با انتخاب آنها از طریق گزینه خط فرمان--model-checker-targets یا تنظیماتsettings.modelChecker.targetsچکهای Underflow و overflowرا انجام داد.
لطفاً برای اطلاعات بیشتر در مورد این مسئله و سایر گزینههای بررسی مدل، مستند SMTCheckerرا در مستند سالیدیتی ببینید.
block.basefee جهانی را معرفی کنید.()basefeeرا معرفی کنید.ویژگیهای کامپایلر:
--pretty-json با --standard--jsonنیز کار می کند.--model-checker-show-unprovedیا گزینه settings.modelChecker.showUnproved لیست کرد.--model-checker-div-mod-slacksو گزینه settings.modelChecker.divModWithSlacksاست.bytes.concat()، خرابی را برطرف کنید.bytes.concat() با جلوگیری از چنین لیترالهایی، خطای کامپایلر داخلی را رفع کنید. optimizer-runs-- را در حالت اسمبلی / یول اعمال کنید.--standard-json ، خرابی را برطرف کنید.--standard-json ، -را به عنوان نام فایل دریافت میکند، JSON را از ورودی استاندارد بخوانید.آ Yul Code Generator: خطای کامپایلر داخلی را هنگام استفاده از کلمه طولانی با bitwise نفی برطرف کنید.
آ Yul Code Generator: مکان رفرنسهای منبع را برای فراخوانی با توابع داخلی ثابت کنید.
آ Yul Parser: مکان رفرنسهای منبع را برای دستورات ifبرطرف کنید.
نسخه جدید سالیدیتی را از اینجا بارگیری کنید.
منبع