החלק המרכזי של כל פרוייקט בלוקציין הוא כתיבת החוזה החכם. כל מתכנת בלוקציין חייב לדעת לכתוב חוזה אחרת אין כל סיבה להגדירו מתכנת בלוקציין. אז מה עושים ואיך מתחילים חוזה חכם? נתחיל בסקירה קצרצרה:
איך כותבים חוזה חכם
אז כפי שהצגנו בתחילת הקורס אנחנו נשתמש בסולידיטי (Solidity) שמאפשרת לנו לכתוב חוזה חכם על בסיס ethereum שזהו הבלוקציין הפופולארי ביותר . חשוב לציין שיש בלוקציינים שונים אחרים למשל של solana או algorand שכתיבת חוזה חכם בכל אחת מהרשתות הללו תיהיה שונה כמעט לחלוטין. אז אם אתם רוצים להיות מפתחי בלוקציין חשוב לציין איזה בלוקציין, כמובן שאפשר להכיר את כולם אבל זה מאוד מורכב ודורש המון זמן והשקעה כי יש המון רשתות שונות וכל אחת עלולה לבחור טכנולוגיה שונה לחלוטין ולכן עדיפות גבוהה להעמיק בבלוקציין מסויים או 2 ועדיף שיהיו פופולאריות.
אז אנחנו נלמד לעבור עם חוזה חכם של ethereum ונכתוב solidity!. אציין כי לא נלמד סולידיטי מ א-ת. נלמד צעדים בסיסייים שיקנו לכם את הכלים להמשיך וללמוד בעצמכם.
VSCODE & SOLIDITY & REMIX
רובנו מכירים את vscode כ IDE נוח לעבודה, וגם אנחנו בחרנו לעבוד איתו בקורס זה. אז שלב ראשון יהיה עליכם להוריד תוסיף שנקרא solidity :
תוכלו כבר לאחר ההתקנה של התוסף לכתוב קובץ חדש (תוכלו למקם אותו היכן שתרצו) ולשים לו את הסיומת
sol.
והנה לכם קובץ שמוכן לקבל קצת סולידיטי 🙂
ונתחיל עם ההגדרות הראשוניות שהם דרישות השפה:
יש להגדיר בהערה את הרישיון שיש לכם . לרוב נבחר את :
// SPDX-License-Identifier: MIT
ודבר שני שחשוב להגדיר זה הגרסה של סולידיטי שבה אתם משתמשים ונוכל לרשום משהו כזה:
pragma solidity ^0.8.0;
אפשר גם לרשום 0.6.0 מעלה (^) .
וניגש לדוגמה הראשונה שלנו:
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; contract SimpleContract { string public storedData; function set(string memory myText) public { storedData = myText; } function get() public view returns (string memory) { return storedData; } }
והנה לנו חוזה בלוקציין של ethereum . אומנם אין פה משהו מאד פרקטי אבל זה למעשה הבסיס.
אפשר למצוא פה פונקציה שעושה GET למידע שנשמר בבלוקציין (READ) וגם SET שמבקש לשמור את המידע החדש בבלוקציין (WRITE). נמשיך ונסביר כיצד משתמשים בזה וכמובן אנחנו משתמשים בסביבת הבדיקות הלוקלית שלנו וגם את החוזה אנחנו נשמור בסביבת הטסט הזו , כי אחרת נצטרך לשלם כסף עבור כל פעולה שנעשת בבלוקציין (למעשה רק פעולות כמו READ אינן עולות כסף).
מה שיש לנו שהוא מעניין זה ההגדרה של ה string memory שבעצם מאפשרת לנו לשמור משתנה "בזיכרון" של רשת האיתריום (בגדול יש טכנולוגיה הזו אפשרות לשמור משתנים בשלושה מקומות: storage, memory and stack. חוץ מזה הפונקציות מאד ברורות ופשוטות לקריאה ולהבנה.
עכשיו שיש לנו את זה נצטרך להעלות את החוזה לבלוקציין ואז גם לתקשר איתו באמצעות האפליקציה שלנו. דרך ראשון נשתמש בREMIX שהוא חברו הטוב ביותר של כל מפתח בלוקציין ב ethereum.
נא לגשת לכתובת הבאה:remix.ethereum.org .זהו IDE מבוסס ווב.
בצד ימין תוכלו לפתוח workspace חדש ולמחוק את כל הקצבים שיש בתיקיית הcontracts ולהקים קובץ חדש ולהעתיק את הקוד שלנו אליו.
לאחר מכן ישנם כמה שלבים שיש לעבור:
- לעשות compile – בטאב האמצעי המופיע בצד השמאלי ביותר.
לאחר שתראו כי מופיע וי ירוק על האייקון של הטאב תוכלו לעבור לטאב האחרון
2. deploy – מעלים את החוזה החכם לרשת. כמו כן חשוב ביותר לבחור את הסביבה שתיהיה על איזו רשת של טסטים במקרה שלנו ganache תוודאו שמטה מסק מוגדר על ganache כמובן.
לאחר מכן תוכלו ללחוץ על Deploy ולאחר מכן (תוך כמה שניות) יופיע לכם בחלק התחתון החוזה שלכם שהועלה.
אם תפתחו אותו תוכלו לראות את המטודות שהגדרתם ותוכל ממש להריץ אותן בREMIX. למשל אם נלחץ על GET לא נקבל כלום אבל אם נרצה להוסיף משו לבלוקציין נוכל לבחור בSET ואז יהיה לכם אפשרות להוסיף ערך כלשהו. מכוון שSET כותבת לתוך הבלוקציין וכל פעולה שהיא שאינה קריאה עולה לנו Gas אז יפתח לכם החלון של מטה מסק שיסביר לכם שאתם משתמשים עכשיו ברשת איתריום ושצריך לשלם גז.. למזלנו אנחנו ברשת הטסטים אז הכל מתנהל בחשבונות דמו ככה שזה לא מאמת עולה כסף אבל אם תעשו את אותו הדבר על הMAIN NET זה יעלה לכם כסף מהאיתריום שלכם בחשבון האמיתי אז שימו לב.
לסיכום שיעור זה – קורס בלוקציין – חוזה חכם Contract
אז עברנו על דברים ממש בסיסיים ולא ירדנו לעמוק של הדברים אבל אי אפשר להפציץ בפוסט אחד המון וגם חשוב שנצליח להתקדם. כפי שכבר ציינו להיות מפתח בלוקציין זה לא דבר כלכך פשוט וגם מלווה באחריות אז הפוסטים שלנו מנוסחים כמה שיותר פשוטים ונקודתיים על מנת לא להתפזר וכן לבנות משהו שעובד שיתן לכם ביטחון ובסיס להמשיך . אז נתראה בשיעור הבא שבו נתחיל לחבר את החוזה הבסיסי שזה עתה יצרנו לאפליקציה הריאקטית שיצרנו לפניכן. בהצלחה 🐊🌝