זמן קריאה: 4 דקות
המדריך הזה יכול לעזור לך למצוא את הבאג המגעיל הזה שמטריד אותך ואת הכלים לתקן אותם.
איתור באגים הוא חיוני לכל מחזור פיתוח תוכנה; בני אדם תמיד עושים טעויות. לכן אנחנו בלתי מנוצחים; אנחנו עושים טעויות ולומדים מהן. איתור באגים הוא תהליך של זיהוי היכן הקוד שלנו בפיגור, תיקון זה וללמוד על השגיאה הזו כך שהיא לא תחזור על עצמה.
פיתוח חוזים חכם הוא חיוני לבניית יישומי בלוקצ'יין. אבל כמו בכל מחזור פיתוח תוכנה אחר, איתור באגים בחוזים חכמים יכול לפעמים להיות מאתגר, וכיוון שכאן אנו מתמודדים לעתים קרובות עם כמות עצומה של כסף, איננו יכולים להשאיר דבר ליד המקרה. עלינו להיות מושלמים בכתיבת חוזים חכמים ומושלמים בניפוי באגים. זו הסיבה שהמצאנו את הבלוג הזה כדי שתוכל ללמוד על ניפוי באגים מהטובים ביותר.
לפני תיקון משהו, אנחנו צריכים לדעת את הבעיה, אז בואו נתחיל בזיהוי סוגים שונים של באגים בפיתוח חוזים חכמים.
שגיאות נפוצות
בחלק זה, נחקור סוגים שונים של באגים שמפתחי חוזים חכמים נתקלים בהם באופן קבוע.
- שגיאת תחביר:- שגיאה זו קלה לתיקון. זה קורה כאשר מפתח עושה טעות בקוד שמונעת מהמחשב להבין אותו, כמו פספוס של נקודה-פסיק.
- שגיאה לוגית:- סוג זה של שגיאה יכול לפעמים להיות קשה למצוא. זה לא מונע את הביצוע, אבל הפונקציונליות של התוכנית משתנה. תוכנית זו מתנהגת באופן בלתי צפוי כמו חוזה חכם המעביר כסף לכתובת השגויה בעת שליחת כסף מחשבון אחד לאחר.
- שגיאת זמן ריצה:- קשה לחזות שגיאות אלו. הם מגיעים בזמן לא צפוי ובמקומות לא צפויים. זה מתרחש במהלך ביצוע חוזים חכמים וקורה עקב טיפול חריג לא יעיל. לדוגמה, זה עשוי להתרחש כאשר חוזה נכשל בטיפול בתשומות בלתי צפויות או ניסיונות לבצע פעולה האסורה על ידי הבלוקצ'יין הבסיסי. לדוגמה, חוזה מנסה להעביר יותר כסף מהפרמטר המותר.
- ביצוע שגיאות שהוחזרו:- זה קורה כשהמשתמש מבקש כל בקשה לא לגיטימית שהיא נגד ההיגיון של החוזה החכם אז הבקשה מבוטלת ומבוטלת. זה קורה מכיוון שלפעמים חוזים חכמים דורשים לעמוד בדרישות מסוימות כדי לעבד את העסקה. עם זאת, המשתמש ממשיך בעסקה מבלי למלא את הדרישות, ואז העסקה לא מועברת ולא מבוטלת. לדוגמה, משתמש מנסה להעביר $100 אך יש לו יתרה של $50.
- הצפת מחסנית:- המשאבים לביצוע הפעולות עולים עמלת גז. ככל שהפונקציה כבדה, כך העלות גבוהה יותר. חלק מהמנגנונים הכבדים בקידוד הם לולאות ו
שיחות רקורסיביות<!– wp:paragraph –>קריאה רקורסיבית היא מצב שיכול להתייחס לעצמו ולקרוא להם שוב ושוב בלולאה. הפונקציה הרקורסיבית משתמשת במקרה בסיסי (אם) ובמקרה אינדוקציה (אחר). התקפות כניסה מחדש מבוצעות על ידי ניצול קריאות רקורסיביות בקוד. <br/><!– /wp:paragraph –>
” data-gt-translate-attributes=”[{"attribute":"data-cmtooltip", "format":"html"}]">שיחות רקורסיביות. הצפת מחסנית קשורה
שיחות רקורסיביות<!– wp:paragraph –>קריאה רקורסיבית היא מצב שיכול להתייחס לעצמו ולקרוא להם שוב ושוב בלולאה. הפונקציה הרקורסיבית משתמשת במקרה בסיסי (אם) ובמקרה אינדוקציה (אחר). התקפות כניסה מחדש מבוצעות על ידי ניצול קריאות רקורסיביות בקוד. <br/><!– /wp:paragraph –>” data-gt-translate-attributes=”[{"attribute":"data-cmtooltip", "format":"html"}]">שיחות רקורסיביות.
שיחות רקורסיביות<!– wp:paragraph –>קריאה רקורסיבית היא מצב שיכול להתייחס לעצמו ולקרוא להם שוב ושוב בלולאה. הפונקציה הרקורסיבית משתמשת במקרה בסיסי (אם) ובמקרה אינדוקציה (אחר). התקפות כניסה מחדש מבוצעות על ידי ניצול קריאות רקורסיביות בקוד. <br/><!– /wp:paragraph –>” data-gt-translate-attributes=”[{"attribute":"data-cmtooltip", "format":"html"}]">שיחות רקורסיביות הן שיטה להפעלת פונקציה בתוך אותה פונקציה עם קלטות שונות. יכול לחשוב על פונקציה חוזרת כמו מכונת מיץ קני סוכר. המכונה מתנהגת כפונקציה וקנה הסוכר כקלט. כל ריצה של קנה סוכר מהמכונה פירושה קריאת פונקציה. לאחר פעם אחת, קנה הסוכר נכנס שוב מתחת למכונה, והתהליך הזה חוזר על עצמו. זה מהי הישנות. אבל מכיוון שאנו רוצים לקצץ בעלויות הגז ובמשאבי ה-EVM, ethereum מגביל את הקריאה החוזרת לעד 1024 פעמים. כאשר אתה קורא לפונקציה בפעם ה-1025, זה גורם להצפת מחסנית.
- שגיאת JUMP:- כאשר אתה מנסה לקרוא לפונקציה שאינה קיימת או להשתמש בשפת assembly ולהצביע על זיכרון שקרי, זה גורם לשגיאה. זה יכול לקרות אפילו כאשר אתה קורא לפונקציה של חוזה אחר, אבל הפונקציה הזו לא קיימת. שגיאות מסוג זה נקראות שגיאות JUMP.
אלו היו כמה שגיאות נפוצות של חוזים חכמים שנתקלים בהם מפתחים; לפעמים קשה לזהות ולהבין שגיאות. כדי למצוא את השגיאות ולנסות לתקן אותן, אנו נעזרים בכלים שונים. הבה נעבור עליהם אחד אחד בחלק הבא.
ארבעה כלי ניפוי באגים שימושיים
בחלק זה, נלמד על כלים המשמשים רבות לזיהוי ופתרון באגים על ידי רוב המפתחים המנוסים ברחבי העולם. בוא נלך.
כובע קשה
כלי זה נמצא בשימוש נרחב ומקובל לבדיקת חוזים חכמים על פרמטרים שונים. הוא מספק סביבת פיתוח בקוד פתוח עבור Ethereum. הוא כולל כלים לפיתוח, בדיקה ופריסה של חוזים חכמים. מאתר הבאגים המובנה שלו מועיל למפתחים רבים ברחבי העולם. זה משחק תפקיד כבד גם בשלב הבדיקה.
כְּמֵהָה
זוהי מסגרת פיתוח פופולרית עבור Ethereum. כמו Hardhat, הוא כולל כלים לפיתוח, בדיקה ופריסה של חוזים חכמים וגם בנה מאתר באגים כמהין, המסייע למפתחים עם חווית פיתוח חלקה בשלב הבדיקות.
Remix
זה זה שכמעט כל מפתח נתקל בו כשהתחילו את דרכו לראשונה ב-web3. זהו עורך קוד מקוון לסולידיות, כך שאין צורך בהתקנה לא מקוונת כדי להתחיל בפיתוח. תכונת ניפוי הבאגים המובנית שלו מאפשרת למפתחים לסרוק את הקוד ולבדוק בעיות משתנות. וכל זה מקוון ללא צורך בכלים לא מקוונים.
Etherscan
זהו סייר בלוקים מהימן ופופולרי עבור Ethereum. זה מאפשר למפתחים לבדוק ולבצע ניפוי באגים בחוזים חכמים הפרוסים ב-Ethereum blockchain. באמצעות זה, אתה יכול לעקוב אחר עסקאות ופעילות של כל כתובת או חוזה. זה עוזר לך לזהות היכן תהיה הבעיה אם החוזה החכם שלך מתמודד עם בעיות בשרשרת.
סיכום
איתור באגים בחוזים חכמים הוא קשה ולפעמים מתסכל, אך זהו שלב מכריע הקשור לאבטחה ובדיקות. זה המקום שבו סביר להניח שפגיעויות יופיעו בפני האקרים ויכולות להוביל את הפרוטוקול לכישלון מוחלט. כדי להציל את עצמך מנסיבות כאלה, מומלץ מאוד ללכת לביקורות.
QuillAudits נמצאת בתעשייה זו במשך זמן רב ויש לה צוות מומחים שיכול לטפל בכל פגיעות אפשרית ולעזור לך לאבטח את הפרוטוקול שלך. לגבי הבדיקה, חשיבותה והקשר שלה עם איתור באגים, קרא את הבלוג המפורט, שיעזור לך להבין כל היבט https://blog.quillhash.com/2023/02/16/testing-and-formal-verification/. בקר באתר האינטרנט שלנו וקבל ביקורת על הפרויקט שלך!
12 צפיות
- הפצת תוכן ויחסי ציבור מופעל על ידי SEO. קבל הגברה היום.
- Platoblockchain. Web3 Metaverse Intelligence. ידע מוגבר. גישה כאן.
- מקור: https://blog.quillhash.com/2023/03/03/4-most-useful-smart-contract-debugging-tools/
- a
- אודות
- חֶשְׁבּוֹן
- לרוחב
- פעילות
- כתובת
- לאחר
- נגד
- תעשיות
- מאפשר
- תמיד
- כמות
- ו
- אחר
- יישומים
- סביב
- אספקט
- עצרת
- המתקפות
- ניסיונות
- ביקורת
- איזון
- בסיס
- כי
- הטוב ביותר
- לחסום
- blockchain
- יישומי
- בלוג
- חרק
- באגים
- בִּניָן
- נבנה
- מובנה
- שיחה
- נקרא
- שיחות
- לא יכול
- לשאת
- מקרה
- מסוים
- אתגר
- סיכוי
- בנסיבות
- קוד
- סִמוּל
- איך
- Common
- להשלים
- המחשב
- מצב
- חוזה
- חוזים
- עלות
- עלויות
- מכריע
- חותך
- מחזור
- עסקה
- פרס
- פריסה
- מְפוֹרָט
- מפתח
- מפתחים
- מתפתח
- צעצועי התפתחות
- אחר
- קשה
- בְּמַהֲלָך
- כל אחד
- עורך
- סביבה
- שגיאה
- שגיאות
- ethereum
- הבלוק
- אֲפִילוּ
- כל
- EVM
- דוגמה
- יוצא מן הכלל
- מבצע
- הוצאת להורג
- ניסיון
- מנוסה
- מומחה
- לחקור
- חוקר
- מול
- נכשל
- כשלון
- מאפיין
- תשלום
- ראשון
- לסדר
- קדימה
- מסגרת
- החל מ-
- מתסכל
- פונקציה
- פונקציונלי
- גז
- לקבל
- Go
- Goes
- מדריך
- האקרים
- לטפל
- טיפול
- לקרות
- קורה
- קשה
- בִּכְבֵדוּת
- כבד
- לעזור
- מועיל
- עוזר
- כאן
- מאוד
- HTTPS
- עצום
- בני אדם
- לזהות
- זיהוי
- חשיבות
- in
- כולל
- לֹא יָעִיל
- קלט
- סוגיה
- בעיות
- IT
- עצמו
- מסע
- לקפוץ
- לדעת
- הַשׁהָיָה
- שפה
- עוֹפֶרֶת
- לִלמוֹד
- למידה
- יציאה
- מאפשר לי
- סביר
- גבולות
- ארוך
- הרבה זמן
- מכונה
- לעשות
- עושה
- רב
- אומר
- זכרון
- שיטה
- חסר
- טעות
- כסף
- יותר
- רוב
- צורך
- הבא
- לא מחובר
- על השרשרת
- ONE
- באינטרנט
- קוד פתוח
- מבצע
- תפעול
- אחר
- פרמטר
- פרמטרים
- שלב
- מקומות
- אפלטון
- מודיעין אפלטון
- אפלטון נתונים
- נקודה
- פופולרי
- אפשרי
- לחזות
- להציג
- למנוע
- ההכנסות
- תהליך
- תכנית
- פּרוֹיֶקט
- פרוטוקול
- מספק
- קווילהש
- חומר עיוני
- הישנות
- חוזר
- רקורסיבי
- בדבר
- באופן קבוע
- קָשׁוּר
- יחס
- חזר
- לבקש
- לדרוש
- דרישות
- משאבים
- תוצאות
- תפקיד
- הפעלה
- אותו
- שמור
- סריקה
- סעיף
- לבטח
- אבטחה
- שליחה
- חכם
- חוזה חכם
- חוזים חכמים
- So
- תוכנה
- פיתוח תוכנה
- מוּצָקוּת
- כמה
- לערום
- התמחות
- החל
- עוד
- כזה
- לקחת
- נבחרת
- בדיקות
- השמיים
- העולם
- שֶׁלָהֶם
- עצמם
- דרך
- זמן
- פִּי
- ל
- גַם
- כלי
- כלים
- לעקוב
- עסקה
- עסקות
- להעביר
- העברות
- מטריד
- מהימן
- סוגים
- תחת
- בְּסִיסִי
- להבין
- הבנה
- לא צפוי
- us
- להשתמש
- משתמש
- שונים
- פגיעויות
- פגיעות
- Web3
- אתר
- מה
- אשר
- באופן נרחב
- יצטרך
- בתוך
- לְלֹא
- עוֹלָם
- עולמי
- היה
- כתיבה
- אתה
- עצמך
- זפירנט