بازبینی کد (Audit) قرارداد هوشمند چیست؟

بازبینی کد قرارداد هوشمند شامل ارزیابی کدها و شناسایی معایب موجود در آنها است. این امر به بهبود امنیت و توان عملیاتی قراردادها کمک می کند.

نوشته شده در مقالات 7 دقیقه مدت مطالعه · >
بازبینی کد قرارداد هوشمند

بازبینی کد قرارداد هوشمند (Smart Contract Audit) به امری رایج در اکوسیستم امور مالی غیرمتمرکز (دیفای) تبدیل شده است. این بازبینی ها از اهمیت بالایی برخوردارند و می توانند در تصمیم گیری سرمایه گذاران برای انتخاب پروژه ها موثر باشند.

امروزه اکثر فعالان بازار رمز ارز می دانند که بازبینی کد قراردادهای هوشمند برای حفظ امنیت سایبری چقدر مهم است. با این حال، کمتر کسی با نحوه انجام شدن این فرایند، تکنیک ها، ابزارها و نتایج آن آشنایی دارند. در این مقاله قصد داریم نگاهی به جزئیات فرایند بازبینی امنیتی کد قراردادهای هوشمند بیندازیم تا دانش شما در این زمینه ارتقا یابد.

بازبینی کد قرارداد هوشمند چیست؟

در فرایند بازبینی، کدهای قرارداد هوشمند یک پروژه مورد بررسی و ارزیابی قرار می گیرند. این قراردادها معمولا با زبان برنامه نویسی سالیدیتی (Solidity) نوشته شده اند و از طریق گیت هاب (GitHub) در دسترس هستند. بازبینی امنیتی بیشتر برای پروژه هایی اهمیت دارد که بخواهند میلیون ها دلار تراکنش را پردازش کنند. یا پروژه هایی که باید تعداد بسیار زیادی کاربر را تحت پوشش خود قرار دهند. فرایند بازبینی کد معمولا شامل چهار مرحله زیر است:

  1. قراردادهای هوشمند به تیم بازبینی ارائه می شوند تا تحلیل های اولیه روی آنها انجام شود.
  2. تیم بازبینی نتیجه تحلیل ها را به پروژه گزارش می دهد تا بر اساس این نتایج اقدام کنند.
  3. تیم پروژه تغییراتی را بر اساس معایب پیدا شده ایجاد می کند.
  4. گزارش نهایی توسط تیم بازبینی ارائه می شود که در آن تغییرات جدید یا خطاهای بزرگ در نظر گرفته شده اند.

بازبینی کد قراردادهای هوشمند آنقدر برای برخی افراد مهم است که تصمیم گیری های سرمایه گذاری خود را بر اساس آن انجام می دهند. این فرایند به یک استاندارد برای پروژه هایی تبدیل شده که می خواهند به طور جدی فعالیت خود را ادامه دهند. برخی شرکت های بازبینی نیز به رهبران این صنعت تبدیل شده اند و اعتبار زیادی را برای خود کسب کرده اند.

دلیل نیاز به بازبینی کد قرارداد هوشمند

از آنجا که سرمایه بسیار زیادی از طریق قراردادهای هوشمند پردازش شده یا درون آنها قفل می شوند، هکرها علاقه زیادی به آنها پیدا کرده اند. چون کافی است یک خطای کوچک در کد آنها ایجاد شود تا بتوانند پول بسیار زیادی را به جیب بزنند. همانطور که حدود 60 میلیون دلار ETH طی یک حمله به DAO بلاکچین اتریوم از دست رفت. این موضوع حتی باعث ایجاد یک هاردفورک برای شبکه اتریوم شد.

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

بازبینی کد قرارداد هوشمند به چه صورت انجام می شود؟

هر کدام از تیم ها و شرکت ها برای بازبینی کدها از تکنیک های خاص خود استفاده می کنند، اما فرایند کلی آن تقریبا مشابه است. مراحل بازبینی کد بدین شرح است:

  1. مشخصه های قرارداد هوشمند و معماری پروژه توسط پروژه تعریف شده و هدف از بازبینی کدها مشخص می شود. بدین شکل، تیم بازبینی برای نوشتن و استفاده از کدها می داند که اهداف پروژه چیست.
  2. یک برآورد از هزینه ها ارائه می شود.
  3. تیم بازبینی مشغول انجام تست (دستی و خودکار) روی کدها می شود.
  4. یک گزارش ابتدایی از خطاهای پیدا شده به پروژه داده می شود تا مسئولان پروژه آنها را رفع کنند.
  5. یک گزارش نهایی منتشر می شود که اقدامات اخیر پروژه و خطاهای جدید کدها در آن بررسی شده است.

سوژه های بازبینی کد

در ادامه به بررسی چند نمونه از اهداف و سوژه های بازبینی کد می پردازیم.

راندمان

بازبینی کدهای قرارداد هوشمند صرفا برای بررسی نواقص امنیتی نیست. بلکه برخی از آن ها روی موضوع بازدهی و بهینه سازی تمرکز می کنند. بعضی قراردادها، دسته پیچیده ای از تراکنش ها را انجام می دهند تا بتوانند فعالیت خود را تکمیل کنند. با توجه به اینکه هزینه های گس در شبکه هایی مثل اتریوم سرسام آور است، قراردادهایی که بازدهی زیادی داشته باشند می توانند باعث کاهش چشمگیر هزینه تراکنش ها شوند.

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

ضعف های امنیتی قرارداد

بازبینی های کد معمولا شامل پیدا کردن ضعف های امنیتی قرارداد هستند. برخی از این ضعف ها را به راحتی می توان شناسایی کرد. اما پیدا کردن اکثر ضعف ها نیازمند تکنیک ها و استراتژی های پیچیده است. برای مثال، از طریق قراردادهای هوشمند ضعیف می توان حملات وام آنی انجام داد و در بازار دستکاری کرد. تکنیک مورد استفاده توسط تیم های بازبینی برای شناسایی این نوع ضعف، شبیه سازی حملات روی قرارداد هوشمند است. این تکنیک به آزمون شکستن معروف است و طی آن، چنین معایبی شناسایی می شوند:

  1. ضعف در برابر ورود مجدد (Reentrancy): این حمله زمانی رخ می دهد که یک تابع به یک قرارداد غیرقابل اعتماد فراخوان خارجی بدهد. سپس قرارداد غیرقابل اعتماد یک فراخوان معکوس به تابع اصلی می دهد تا دارایی ها را به سرقت ببرد.
  2. سرریز و پاریز عدد صحیح (Integer Overflow & Underflow): وقتی یک عملیات محاسباتی توسط قرارداد هوشمند انجام شود، اما خروجی از ظرفیت حافظه بیشتر شود. (معمولا 18 مرتبه اعشار). این امر باعث می شود تا نتیجه محاسبه تغییر پیدا کند.
  3. فرانت رانینگ (Front Running): در صورتی که کدها به شکل مناسبی ساختاربندی نشده باشند، برای خرید و فروش های بازار پیش اخطار ایجاد می شود. در نتیجه، سایر افراد از این اطلاعات سوء استفاده می کنند و بر اساس آنها به ترید می پردازند.

ضعف های امنیتی پلتفرم

اکثر بازبینی ها شامل ارزیابی شبکه میزبانی کننده از قراردادها و حتی API استفاده شده برای برقراری ارتباط با اپلیکیشن غیرمتمرکز هستند. ممکن است یک پروژه در برابر حملات DDoS شکننده باشد یا UI وب سایت آن آلوده شده باشد. در این صورت، کاربرانی که کیف پول خود را به اپلیکیشن های بلاکچینی مخرب متصل کرده باشند در خطر خواهند بود.

گزارش بازبینی کد چیست؟

گزارش بازبینی در پایان فرایند به پروژه ارائه می شود. پروژه ها موظف اند اطلاعات موجود در گزارش را با کاربران و اعضای انجمن خود به اشتراک بگذارند. در غیر اینصورت، سطح شفافیت پروژه افت می کند و افراد کمتری به آن اعتماد خواهند کرد. اکثر این گزارش ها معایب پیدا شده را در دسته بندی هایی قرار می دهند و آنها را بر اساس اهمیت مرتب می کنند. همچنین در آنها ذکر می شود که پروژه تا چه زمانی فرصت رفع معایب را دارد تا بتواند گزارش پایانی را دریافت کند.

یک گزارش استاندارد باید شامل خلاصه ای از اطلاعات، مثال هایی از کدهای زاید و توصیه ها باشد. همچنین باید توضیح دهد که معایب پیدا شده در چه جایی از کدها هستند. پس از اینکه اقداماتی بر اساس گزارش اولیه انجام شد، گزارش نهایی توسط تیم بازبینی منتشر می شود.

معرفی تیم های بازبینی کد

در این بخش از مقاله شما را با معروف ترین شرکت های بازبینی کد قرارداد هوشمند آشنا می کنیم.

سرتیک (CertiK)

سرتیک (CertiK) به عنوان معتبرترین تیم بازبینی کد شناخته می شود و کدهای قرارداد هوشمند صدها پروژه توسط آنها مورد ارزیابی قرار گرفته است. از جمله قراردادهای پنکیک سواپ (PancakeSwap)، که بزرگترین بازارساز خودکار BSC است. در تصویر زیر می توانید بخشی از گزارش بازبینی سرتیک برای پنکیک سواپ را مشاهده کنید.

گزارش بازبینی پنکیک سواپ
گزارش بازبینی پنکیک سواپ

یک قسمت از وب سایت سرتیک به پروژه های بازبینی شده اختصاص یافته تا بتوانید آنها را با یکدیگر مقایسه کنید. هر کدام از پروژه ها دارای یک امتیاز هستند که سطح امنیتی آنها را نشان می دهد. در بخش دیگری از این وب سایت نیز می توانید لیست پروژه های در حال بازبینی را مشاهده کنید.

ConsenSys Diligence

ConsenSys توسط ژوزف لوبین (یکی از موسسان اتریوم) راه اندازی شده و یکی از معروف ترین نهادهای رمزارزی در زمینه توسعه بلاکچین است. این تیم وظیفه بازبینی قراردادهای هوشمند اتریوم را بر عهده دارد. همچنین به یک سرویس خودکار برای بررسی قراردادهای EVM مجهز شده است.

هزینه بازبینی کد قرارداد هوشمند چقدر است؟

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

سخن پایانی

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

مطالب مرتبط

آینده پول

آینده پول

نوشته شده در مقالات
  ·   4 دقیقه مدت مطالعه
ویژگی های بلاک چین

سه ویژگی بلاک چین که مانع کلاهبرداری می شود

نوشته شده در مقالات, مقالات بلاکچین
  ·   3 دقیقه مدت مطالعه
برداشت های اشتباه از بیت کوین

بیت کوین و سه باور غلط در مورد آن

نوشته شده در مقالات, مقالات بیت کوین
  ·   2 دقیقه مدت مطالعه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.

×