داموندمگ

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

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

بلاک چین یکی از مهم‌ترین تکنولوژی‌های سال‌های اخیر است، که توانسته تحولات زیادی ایجاد کند. این تکنولوژی زیرمجموعه‌های زیادی همراه خود آورده است، که یکی از آن‌ها قراردادهای هوشمند هستند. این قراردادها کاربردهای زیادی در ارز دیجیتال دارند، به همین دلیل به کانالی تبدیل شده‌اند که افراد سودجو مانند هکرها، از آن برای سرقت دارایی کاربران استفاده می‌کنند. این مسئله به این دلیل است که برنامه‌نویسی قراردادهای هوشمند بهینه نیست و حفره‌های امنیتی مختلفی در آن وجود دارد. به همین دلیل به بازبینی کد قراردادهای هوشمند نیاز داریم.

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

قرارداد هوشمند چیست

  1. قرارداد هوشمند، توافقی بین دو نفر در قالب کد کامپیوتری است. آن‌ها روی بلاک چین اجرا می‌شوند، بنابراین در یک پایگاه داده عمومی ذخیره می‌شوند و نمی‌توان آن‌ها را تغییر داد.
  2. تراکنش‌هایی که در یک قرارداد هوشمند اتفاق می‌افتند توسط بلاک چین پردازش می‌شوند، به این معنی که می‌توانند به صورت خودکار و بدون شخص ثالث ارسال شوند.
  3. معاملات فقط زمانی اتفاق می‌افتد که شرایط قرارداد برآورده شود. شخص ثالثی وجود ندارد، بنابراین هیچ مشکلی در مورد اعتماد وجود نخواهد داشت.

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

هک دائو

یکی از شناخته‌شده‌ترین حمله‌ها در این حوزه، هک دائو است. The DAO یکی از اولین دائوهای راه‌اندازی شده بود که در زمان شروع کار خود سرمایه بسیاری جذب کرد و از قراردادهای هوشمند استفاده می‌کرد. اما متأسفانه به دلیل وجود حفره‌های امنیتی و اشکالاتی در قاررداد هوشمند خود، باعث شد هکرها بتوانند حدود 70 میلیون دلار معادل یک سوم بودجه کل پروژه را سرقت کنند.

مطلب پیشنهادی  تتا چیست؟ Theta با توکن THETA

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

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

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

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

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

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

بازبینی کد چگونه انجام می‌شود؟

بازبینی کد چگونه انجام می‌شود؟

Audit، کاری است که نیاز به نظم دارد، بنابراین مسیر و مراحل مشخصی هم دارد، که باید یک به یک انجام شوند. این مراحل عبارتند از:

تعیین نسخه

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

مطلب پیشنهادی  سریع ترین بلاکچین کدام است؟

درک پروژه

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

بازبینی داکیومنت پروژه

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

تحلیل کدهای اولیه

تحلیل قرارداد هوشمند

بازبینی کد قرارداد هوشمند با بررسی کدهای اولیه پروژه توسط تیم بازبین ادامه می‌یابد. این افراد باید بررسی کنند که هر کد به چه منظوری استفاده شده و چه معنایی دارد.

تحلیل استاتیک

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

تحلیل کیفی کدها

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

بررسی وجود مشکلات معمول

حالا به بخشی می‌رسیم که تعریف بازبینی کد قرارداد هوشمند، بر اساس آن شکل گرفته است. در اینجا تمام اشکالات احتمالی مورد بررسی قرار می‌گیرند، این اشکالات عبارتند از: ورود مجدد (reentrancy)، همپوشانی متغیرها (shadowing of variables)، سرریز و ته‌ریز و (overflow and underflow)، حملات DOS و غیره. لیست کامل این اشکالات در گیت هاب قابل مشاهده است.

تحلیل اجرای کد

حالا نوبت به اجرای کد می‌رسد. در این مرحله باید بررسی شود که آیا کدها توانایی انجام آنچه در داکیومنت‌ها عنوان شده است را دارند یا خیر.  نتایج این مرحله به طور کامل ثبت می‌شوند.

مطلب پیشنهادی  راه کارهای لایه‌ دوم بلاک چین : افزایش سرعت + مقبولیت بیشتر

تنظیم گزارش

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

شرکت های بازبینی کد

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

  1. سرتیک (Certik)
  2. کوانت استمپ (Quantstamp)
  3. هکن (Hacken)
  4. کانسنسیس دیلیجنس (ConsenSys Diligence)
  5. اوپن زپلین (OpenZeppelin)
  6. پک شیلد (Peckshield)

این شرکت‌ها علاوه بر خدمات معمول بازبینی کد، سیستم‌های خودکاری هم برای تشخیص مشکلات امنیتی دارند. ضمن اینکه حامیان و مشتریان بزرگ آن‌ها، دلیلی بر اعتماد هستند و مشخص می‌کنند این شرکت‌ها کار خود را به خوبی انجام می‌دهند.

سخن پایانی

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

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

سؤالات متداول

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

قراردادهای هوشمند کدهایی در شبکه‌های مختلف هستند که کمک می‌کنند فرآیندها بدون دخالت اشخاص و به صورت خودکار انجام شوند.

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

این کار کمک می‌کند تا از حملات احتمالی هکرها و برخی مشکلات امنیتی جلوگیری شود. این کار در چند مرحله توسط تیمی خارج از پروژه انجام می‌شود.

آیا بازبینی کد، نتیجه صد در صدی دارد؟

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

دسته بندی مطالب
مطالب مرتبط
مطالب مرجع

ارز دیجیتال چیست؟

بلاک چین چیست؟

متاورس چیست؟

NFT چیست؟

دیفای (DeFi) چیست؟

صرافی غیرمتمرکز چیست؟

کیف پول چیست؟

تحلیل تکنیکال چیست؟

ایردراپ چیست؟

استیکینگ ارز دیجیتال چیست؟

بیت کوین چیست؟

اتریوم چیست؟

تتر چیست؟

خرید و فروش ارز های دیجیتال
ما را دنبال کنید
نظرات کاربران

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

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