آنچه در این مقاله میخوانید [پنهانسازی]
با توجه به افزایش کاربرد قراردادهای هوشمند و نیاز به امنیت در این سیستمها، مقایسه بین زبانهای مختلفی که برای نوشتن این قراردادها استفاده میشوند، از اهمیت بالایی برخوردار است. در این مقاله، به مقایسه امنیتی بین زبان Move و سالیدیتی (Solidity) میپردازیم.
1. طراحی و معماری
سالیدیتی:
- سالیدیتی به عنوان زبان اصلی برای نوشتن قراردادهای هوشمند بر بستر بلاکچین اتریوم طراحی شده است.
- این زبان به توسعهدهندگان اجازه میدهد تا قراردادهای پیچیدهای بنویسند، اما طبیعت دینامیک آن میتواند نقاط ضعف امنیتی ایجاد کند.
- کار با سالیدیتی نیاز به درک عمیق از جزئیات انجام تراکنشها و تأثیرات مختلف آنها دارد.
Move:
- زبان Move اساساً برای بلاکچین “دیمو” طراحی شده و بر روی امنیت و قابلیت انطباق تأکید دارد.
- این زبان به جای استفاده از انواع متغیرهای دینامیک، از مفاهیم معتبر و قدرتمند برای مدیریت داراییها بهره میبرد.
- طراحی Move به توسعهدهندگان اجازه میدهد تا کدهای امنتری نسبت به سالیدیتی بنویسند، زیرا به طور پیشفرض به نوعهای خاصی از خطاها مانند دوبارهخوانی (reentrancy) و دسترسی به وضعیتهای ناصحیح توجه میکند.
2. شیوه های امنیتی
سالیدیتی:
- سالیدیتی با توجه به ساختار آن، نفوذپذیریهای معتبری دارد، بهویژه در مدیریت وضعیت و نگهداری دادهها.
- توسعهدهندگان باید از الگوهای امنیتی مانند Checks-Effects-Interactions و require() و assert() استفاده کنند تا از بروز آسیبپذیریها جلوگیری کنند.
- با توجه به عدم وجود نوعهای ایمن و تضمینهای قوی برای مدیریت داراییها، سالیدیتی به شدت به خطاهای انسانی بستگی دارد.
Move:
- Move به روشهایی برای تعهد به نسخههای خاص دادهها و نگرانیهای امنیتی توجه ویژه دارد.
- این زبان از یک مدل نوعدهی قوی استفاده میکند که به جلوگیری از خطاهای رایج کمک میکند و خطرات ناشی از نفوذپذیری را کاهش میدهد.
- با ارائه سیستم مدیریت داراییها، Move قابلیتهای امنیتی را بهبود میبخشد و از سوءاستفادههای احتمالی جلوگیری میکند.
3. مشکلات امنیتی و آسیب پذیریها
سالیدیتی:
- قراردادهای نوشته شده با سالیدیتی در معرض انواع حملات قرار دارند، مانند حملات دوبارهخوانی، حملات تابع غیرمستقیم و حملات مربوط به شیوههای ضعیف اعتبارسنجی ورودی.
- آسیبپذیریهای مشهور مانند “DAO Hack” نشاندهنده عدم امنیت در طراحیهای سالیدیتی بودند.
Move:
- با وجود اینکه Move نسبت به سالیدیتی ایمنتر به نظر میرسد، اما هنوز نیز میتواند در برابر حملات جدید و تکنیکهای نفوذپذیری آسیبپذیر باشد.
- بهواسطه طراحی مختص به داراییها، Move سعی میکند که بیشتر نقاط ضعف امنیتی سالیدیتی را پوشش دهد، اما این نیز به معنای عدم وجود آسیبپذیریهای خاص نیست.
نتیجه گیری
با توجه به مقایسه بین Move و سالیدیتی، میتوان گفت که Move از نظر امنیتی مزایای بیشتری نسبت به سالیدیتی دارد. ساختار محکم و مدیریت دقیق داراییها در Move به کاهش آسیبپذیریها کمک میکند. اما در نهایت، انتخاب زبان مناسب برای نوشتن قراردادهای هوشمند به پروژه و نیازهای خاص آن وابسته است.