בשיעור הקודם בנינו חוזה חכם בסיסי והעלינו אותו לבלוקציין של רמיקס (מי שלא מכיר את כל הסביבות, יכול לעבור על הפוסט הזה). הכל טוב ויפה, הכל עובד, אבל יש כמה דברים שצריך להיות מודעים להם, דברים חשובים שהם שימושיים מאד או חשובים להבנה, וכן נתקל בהם לא מעט בהמשך הקורס וכמובן שכל חייכם כמפתחי בלוקציין.
ולשם כך נוצר הפוסט הזה שכולו מוקדש ל ABI.
Application Binary Interface – ABI
אז לאחר שבנינו חוזה ועשינו לא קומפייל ברמיקס. נוכל להבחין בשני כפתורים אלו:

בייטקוד הוא גרסה בשפת מכונה של החוזה וABI הוא למעשה אובייקט שמכיל מידע על החוזה שלנו. אפשר להעתיק ולהדביק ולהתרשם (אפשר גם ללחוץ על compilation details ולראות את האובייקט בממשק של רמיקס). אז הנה דוגמה של ABI של החוזה שבנינו בשיעור הקודם fundme, בואו נסתכל על זה קצת:
[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "fund", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "funders", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "withdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
אפשר לראות שלמעשה זהו תיאור מפורט של החוזה שלנו. למשל, אילו משתנים יש לנו, אילו פונקציות יש בחוזה ועוד.. אוקי אז למה זה טוב??
למעשה המנוע של סולידיטי EVM, איכשהו צריך לקרוא את החוזה שלנו שנכתב בhigh level code ולתרגם אותו לשפה שהמכונה תבין מה החוזה שלנו אמור לעשות, ולאחר שכתבנו את החוזה, החוזה מתורגם לABI וגם המסמך הזה מתורגם לשפה יותר ברורה שהמכונה תוכל להבין מה מבוקשנו ולמעשה באמצעות הABI מתקשרים בין החוזה החכם לבין המנוע, EVM.
סיכום קורס סולידיטי – חלק שני – מה זה ABI
פוסט קצר אך לא ממש הייתה לי היכולת לדחוף את זה לפוסט אחר, וגם אנחנו הולכים להשתמש לא מעט בABI ולהציץ בו לעיתים וגם לקרוא ממנו מידע ולכן חשוב שיהיה לו את הכבוד שלו ולהעניק לו פוסט נפרד במדריך פיתוח סולידיטי זה.