وقت خواندن: 4 دقیقه
این راهنما می تواند به شما کمک کند تا آن اشکال بدی که شما را آزار می دهد و ابزارهایی برای اصلاح آنها پیدا کنید.
اشکال زدایی برای هر چرخه توسعه نرم افزار بسیار مهم است. انسان ها همیشه اشتباه می کنند به همین دلیل است که ما شکست ناپذیر هستیم. ما اشتباه می کنیم و از آنها درس می گیریم. اشکال زدایی فرآیندی است برای اینکه بفهمیم کد ما در کجا عقب مانده است، آن را برطرف کنیم و در مورد آن خطا یاد بگیریم تا تکرار نشود.
توسعه قراردادهای هوشمند برای ساخت برنامه های بلاک چین بسیار مهم است. اما مانند هر چرخه توسعه نرمافزار دیگری، اشکالزدایی قراردادهای هوشمند گاهی اوقات میتواند چالشبرانگیز باشد، و از آنجایی که در اینجا اغلب با مقدار زیادی پول سروکار داریم، نمیتوانیم چیزی را به شانس واگذار کنیم. ما باید در نوشتن قراردادهای هوشمند کامل و در اشکال زدایی کامل باشیم. به همین دلیل است که ما این وبلاگ را ایجاد کرده ایم تا بتوانید از بهترین ها درباره اشکال زدایی بیاموزید.
قبل از رفع هر چیزی، باید مشکل را بدانیم، بنابراین بیایید با شناسایی انواع مختلف اشکال در توسعه قراردادهای هوشمند شروع کنیم.
خطاهای رایج
در این بخش، انواع مختلف اشکالاتی را که توسعه دهندگان قراردادهای هوشمند به طور منظم با آن مواجه می شوند، بررسی خواهیم کرد.
- اشتباه نوشتاری:- رفع این خطا آسان است. این زمانی اتفاق میافتد که یک برنامهنویس اشتباه کدی را مرتکب میشود که از درک آن توسط رایانه جلوگیری میکند، مانند از دست دادن یک نقطه ویرگول.
- خطای منطقی:- این نوع خطا گاهی اوقات می تواند به سختی پیدا شود. این برنامه از اجرا جلوگیری نمی کند، اما عملکرد برنامه تغییر می کند. این برنامه به طور غیرمنتظره ای مانند یک قرارداد هوشمند عمل می کند که هنگام ارسال پول از یک حساب به حساب دیگر، پول را به آدرس نادرست منتقل می کند.
- خطای زمان اجرا:- پیش بینی این خطاها سخت است. آنها در یک زمان غیر منتظره و مکان های غیر منتظره می آیند. این اتفاق در هنگام اجرای قراردادهای هوشمند رخ می دهد و به دلیل رسیدگی ناکارآمد استثناها اتفاق می افتد. به عنوان مثال، این ممکن است زمانی اتفاق بیفتد که یک قرارداد نتواند ورودیهای غیرمنتظره را مدیریت کند یا تلاشهایی برای انجام عملیات ممنوع شده توسط بلاکچین زیربنایی انجام دهد. به عنوان مثال، یک قرارداد سعی در انتقال پول بیشتر از پارامتر مجاز دارد.
- خطاهای اجرا برگشت:- این زمانی اتفاق می افتد که کاربر هر درخواست نامشروعی را که برخلاف منطق قرارداد هوشمند باشد، ارائه دهد، درخواست لغو و برگردانده می شود. این به این دلیل اتفاق میافتد که گاهی اوقات قراردادهای هوشمند نیازمند رعایت الزامات خاصی برای پردازش تراکنش هستند. با این حال، کاربر بدون انجام الزامات، تراکنش را ادامه می دهد و سپس تراکنش به جلو منتقل نمی شود و برگردانده می شود. به عنوان مثال، یک کاربر در تلاش است 100 دلار را انتقال دهد اما 50 دلار موجودی دارد.
- سرریز پشته: - منابع برای اجرای عملیات هزینه گاز دارد. هرچه عملکرد سنگین باشد، هزینه بیشتری دارد. برخی از مکانیسم های سنگین در کدگذاری حلقه ها و
تماس های بازگشتی<!– wp:paragraph –> فراخوانی بازگشتی شرطی است که می تواند به خود ارجاع داده و آنها را بارها و بارها در یک حلقه دوباره فراخوانی کند. تابع بازگشتی از حالت پایه (اگر) و حالت القایی (دیگر) استفاده می کند. حملات ورود مجدد با بهره برداری از تماس های بازگشتی در کد انجام می شود. <br/><!– /wp:paragraph –>
” data-gt-translate-attributes=”[{"ویژگی":"data-cmtooltip", "format":"html"}]”>تماس های بازگشتی. سرریز پشته مربوط به
تماس های بازگشتی<!– wp:paragraph –> فراخوانی بازگشتی شرطی است که می تواند به خود ارجاع داده و آنها را بارها و بارها در یک حلقه دوباره فراخوانی کند. تابع بازگشتی از حالت پایه (اگر) و حالت القایی (دیگر) استفاده می کند. حملات ورود مجدد با بهره برداری از تماس های بازگشتی در کد انجام می شود. <br/><!– /wp:paragraph –>” data-gt-translate-attributes=”[{"ویژگی":"data-cmtooltip", "format":"html"}]”>تماس های بازگشتی.
تماس های بازگشتی<!– wp:paragraph –> فراخوانی بازگشتی شرطی است که می تواند به خود ارجاع داده و آنها را بارها و بارها در یک حلقه دوباره فراخوانی کند. تابع بازگشتی از حالت پایه (اگر) و حالت القایی (دیگر) استفاده می کند. حملات ورود مجدد با بهره برداری از تماس های بازگشتی در کد انجام می شود. <br/><!– /wp:paragraph –>” data-gt-translate-attributes=”[{"خصیصه":"data-cmtooltip", "format":"html"}]”>تماس های بازگشتی روشی برای فراخوانی یک تابع در یک تابع با ورودی های مختلف است. می تواند یک عملکرد تکرار شونده را به عنوان دستگاه آب نیشکر در نظر بگیرد. دستگاه به عنوان یک عملکرد و نیشکر به عنوان ورودی رفتار می کند. هر بار نیشکر از دستگاه به معنای فراخوانی عملکرد است. بعد از یک بار نیشکر دوباره زیر دستگاه می رود و این روند مدام تکرار می شود. عود یعنی همین. اما همانطور که میخواهیم هزینههای گاز و منابع EVM را کاهش دهیم، اتریوم تماس مجدد را تا 1024 بار محدود میکند. هنگامی که یک تابع را برای 1025 بار فراخوانی می کنید، منجر به سرریز پشته می شود.
- خطای JUMP:- وقتی می خواهید تابعی را فراخوانی کنید که وجود ندارد یا از زبان اسمبلی استفاده کنید و به حافظه کاذب اشاره کنید، با خطا مواجه می شوید. این ممکن است حتی زمانی اتفاق بیفتد که تابعی از یک قرارداد دیگر را فراخوانی کنید، اما آن تابع وجود ندارد. به این نوع خطاها خطاهای پرش می گویند.
اینها برخی از خطاهای رایج قراردادهای هوشمند بود که توسعه دهندگان با آن مواجه می شوند. گاهی اوقات تشخیص و درک خطاها دشوار است. برای یافتن خطاها و تلاش برای رفع آنها، از ابزارهای مختلفی کمک می گیریم. اجازه دهید در بخش بعدی آنها را یکی یکی مرور کنیم.
چهار ابزار مفید اشکال زدایی
در این بخش، با ابزارهایی آشنا میشویم که بهشدت برای شناسایی و رفع اشکالات توسط اکثر توسعهدهندگان با تجربه در سراسر جهان استفاده میشوند. بیا بریم.
کلاه ایمنی
این ابزار به طور گسترده برای آزمایش قراردادهای هوشمند بر روی پارامترهای مختلف مورد استفاده و پذیرفته شده است. این یک محیط توسعه منبع باز برای اتریوم فراهم می کند. این شامل ابزارهایی برای توسعه، آزمایش و استقرار قراردادهای هوشمند است. دیباگر داخلی آن برای بسیاری از توسعه دهندگان در سراسر جهان مفید است. این در مرحله آزمایش نیز نقش مهمی ایفا می کند.
تروفل
این یک چارچوب توسعه محبوب برای اتریوم است. مانند hardhat، شامل ابزارهایی برای توسعه، آزمایش و استقرار قراردادهای هوشمند است و همچنین ساخته شده است اشکال زدای ترافل، که به توسعه دهندگان کمک می کند تا در مرحله آزمایش تجربه توسعه روانی داشته باشند.
ریمیکس
این همان چیزی است که تقریباً همه توسعه دهندگان زمانی که برای اولین بار سفر خود را در وب 3 شروع کردند با آن روبرو شدند. این یک ویرایشگر کد آنلاین برای solidity است، بنابراین برای شروع توسعه نیازی به نصب آفلاین نیست. ویژگی اشکال زدایی داخلی آن به توسعه دهندگان اجازه می دهد کد را اسکن کرده و مسائل متغیر را بررسی کنند. و همه اینها به صورت آنلاین بدون نیاز به ابزارهای آفلاین هستند.
Etherscan
این یک بلاک کاوشگر قابل اعتماد و محبوب برای اتریوم است. این به توسعه دهندگان اجازه می دهد تا قراردادهای هوشمند مستقر در بلاک چین اتریوم را بررسی و اشکال زدایی کنند. با استفاده از این، می توانید معاملات و فعالیت هر آدرس یا قراردادی را ردیابی کنید. این به شما کمک میکند اگر قرارداد هوشمند شما با مشکلات زنجیرهای مواجه باشد، مشکل کجاست.
نتیجه
اشکال زدایی قراردادهای هوشمند دشوار و گاهی اوقات خسته کننده است، اما یک مرحله مهم مربوط به امنیت و آزمایش است. این جایی است که آسیب پذیری ها به احتمال زیاد خود را به هکرها نشان می دهند و می توانند پروتکل را به شکست کامل سوق دهند. برای نجات خود از چنین شرایطی، بسیار توصیه می شود که به سراغ ممیزی بروید.
QuillAudits برای مدت طولانی در این عمودی بوده است و دارای یک تیم متخصص است که می تواند هر آسیب پذیری احتمالی را مدیریت کند و به شما کمک کند پروتکل خود را ایمن کنید. با توجه به تست، اهمیت آن و ارتباط آن با اشکال زدایی، وبلاگ مفصل را بخوانید که به شما در درک هر جنبه کمک می کند. https://blog.quillhash.com/2023/02/16/testing-and-formal-verification/. از وب سایت ما دیدن کنید و پروژه خود را ممیزی کنید!
12 نمایش ها
- محتوای مبتنی بر SEO و توزیع روابط عمومی. امروز تقویت شوید.
- پلاتوبلاک چین. Web3 Metaverse Intelligence. دانش تقویت شده دسترسی به اینجا.
- منبع: https://blog.quillhash.com/2023/03/03/4-most-useful-smart-contract-debugging-tools/
- a
- درباره ما
- حساب
- در میان
- فعالیت
- نشانی
- پس از
- در برابر
- معرفی
- اجازه می دهد تا
- همیشه
- مقدار
- و
- دیگر
- برنامه های کاربردی
- دور و بر
- ظاهر
- مجلس
- حمله
- تلاشها
- ممیزی
- برج میزان
- پایه
- زیرا
- بهترین
- مسدود کردن
- بلاکچین
- برنامه های blockchain
- بلاگ
- اشکال
- اشکالات
- بنا
- ساخته
- ساخته شده در
- صدا
- نام
- تماس ها
- نمی توان
- حمل
- مورد
- معین
- به چالش کشیدن
- شانس
- موقعیت
- رمز
- برنامه نویسی
- بیا
- مشترک
- کامل
- کامپیوتر
- شرط
- قرارداد
- قرارداد
- هزینه
- هزینه
- بسیار سخت
- برش
- چرخه
- مقدار
- مستقر
- استقرار
- دقیق
- توسعه دهنده
- توسعه دهندگان
- در حال توسعه
- پروژه
- مختلف
- مشکل
- در طی
- هر
- سردبیر
- محیط
- خطا
- خطاهای
- ethereum
- blockchain اتریوم
- حتی
- هر
- EVM
- مثال
- استثنا
- اجرا کردن
- اعدام
- تجربه
- با تجربه
- کارشناس
- اکتشاف
- جستجوگر
- نما
- نتواند
- شکست
- ویژگی
- پرداخت
- پیدا کردن
- نام خانوادگی
- رفع
- به جلو
- چارچوب
- از جانب
- خسته کننده، اذیت کننده
- تابع
- قابلیت
- GAS
- دریافت کنید
- Go
- می رود
- راهنمایی
- هکرها
- دسته
- اداره
- رخ دادن
- اتفاق می افتد
- سخت
- به شدت
- سنگین
- کمک
- مفید
- کمک می کند
- اینجا کلیک نمایید
- خیلی
- HTTPS
- بزرگ
- انسان
- شناسایی
- شناسایی
- اهمیت
- in
- شامل
- ناکارآمد
- ورودی
- موضوع
- مسائل
- IT
- خود
- سفر
- پرش
- دانستن
- عقب مانده
- زبان
- رهبری
- یاد گرفتن
- یادگیری
- ترک کردن
- اجازه می دهد تا
- احتمالا
- محدودیت
- طولانی
- مدت زمان طولانی
- دستگاه
- ساخت
- باعث می شود
- بسیاری
- به معنی
- حافظه
- روش
- گم
- اشتباه
- پول
- بیش
- اکثر
- نیاز
- بعد
- آنلاین نیست.
- روی زنجیره
- ONE
- آنلاین
- منبع باز
- عمل
- عملیات
- دیگر
- پارامتر
- پارامترهای
- کامل
- فاز
- اماکن
- افلاطون
- هوش داده افلاطون
- PlatoData
- نقطه
- محبوب
- ممکن
- پیش بینی
- در حال حاضر
- جلوگیری از
- درآمد حاصل
- روند
- برنامه
- پروژه
- پروتکل
- فراهم می کند
- کویل هاش
- خواندن
- عود
- مکرر
- بازگشتی
- با توجه
- به طور منظم
- مربوط
- ارتباط
- مکرر
- درخواست
- نیاز
- مورد نیاز
- منابع
- نتایج
- نقش
- دویدن
- همان
- ذخیره
- اسکن
- بخش
- امن
- تیم امنیت لاتاری
- در حال ارسال
- هوشمند
- قرارداد هوشمند
- قراردادهای هوشمند
- So
- نرم افزار
- توسعه نرم افزار
- استحکام
- برخی از
- پشته
- صحنه
- آغاز شده
- هنوز
- چنین
- گرفتن
- تیم
- تست
- La
- جهان
- شان
- خودشان
- از طریق
- زمان
- بار
- به
- هم
- ابزار
- ابزار
- مسیر
- معامله
- معاملات
- انتقال
- نقل و انتقالات
- مزاحم
- مورد اعتماد
- انواع
- زیر
- اساسی
- فهمیدن
- درک
- غیر منتظره
- us
- استفاده کنید
- کاربر
- مختلف
- آسیب پذیری ها
- آسیب پذیری
- Web3
- سایت اینترنتی
- چی
- که
- به طور گسترده ای
- اراده
- در داخل
- بدون
- جهان
- در سرتاسر جهان
- خواهد بود
- نوشته
- شما
- شما
- خودت
- زفیرنت