ממשיכים לאחד החלקים היותר חשובים ב remix IDE , בכללי כל הנושא של deploy של חוזה חכם לרשת כלשהי הוא נושא מהותי, מכוון שאנחנו לא רוצים לעשות טעויות כי זה בלתי ניתן לשינוי, כמו כן לא רוצים לזבל את הרשתות השונות בין אם זה testnet או בוודאי mainnet שכאן זה גם יעלה לנו ביוקר.
נלחץ על האייקון של האייקון של איתריום ונגלה הרבה אפשרויות שחשוב מאוד שנכיר ונכיר היטב. ארצה רק לנצל פה את ההזדמנות לציין שלעשות deploy זה אפשרי לא רק עם סולידיטי, בהמשך נראה איך לעשות זאת עם קובץ JavaScript , כן אפשר לעשות את זה גם בשפות שונות בין אם זה פייטון או nodejs וכו..
כעת נמשיך, באם הגעתם למקום הנכון אתם תראו את התצוגה הבאה :

ראשית נעבור על האפשרויות שיש באזור השמאלי:
- Environment
- Account
- Gas limit
- Value
- Contract
- Deploy (כפתור כתום)
- Deployed Contracts
אלו הדברים המרכזיים שאנחנו נלמד פה בפוסט ונתרכז בהם, וכן ארשום בקצרה גם האפשרויות הנוספות.
Environment
סביבות הם למעשה רשתות בלוקציין שונות, בהם נוכל להשתמש לצורך בניית חוזים חכמים, למשל אם אתם מפתחים משהו, יש לכם את הסביבה הלוקאית שלכם וככל הנראה גם סביבת טסט כלשהי ובטוח תהיה גם סביבה של פרודקשן. אז גם בפיתוח בלוקציין יש מספר סביבות באותו הסגנון. הסביבה הראשונה תיהיה סביבה לוקאלית שרמיקס מספקת לנו, יש גם סביבות לוקליות נוספות פופולאריות כגון ganache שדיברתי עליה לא מעט בקורס blockchain האחרון שהעליתי , שגם נוכל להשתמש לצורך פיתוח, סביבות אלו יספקו לנו חשבונות דמו, עם המון איתריום בהם (כמובן שזה איתריום דמו ולא אמיתי) חשוב לזכור שאלו כתובת דמו , אין להעביר אליהם מטבעות או אסטים אמיתיים מרשתות הראשיות כי אז ילך לכם הנכס או הכסף.
להלן כל הסביבות שרמיקס מאפשר לנו לעבוד איתם:

רמיקס MV – (השניים ראשונים – זה לא באמת משנה אם זה ברלין או לונדון – השנוי קשור לfork של איתריום), יספקו סביבה "חד פעמית" על גבי הבראוזר, כך שתוכלו להריץ בדיקות "לוקליות" על רשת בלוקציין מינימלית שרמיקס מביא איתו ומאכלס אותו בדפדפן (indexedDB).
injected Provider – מטה מאסק, נוכל להתחבר עם לרמיקס עם הארנק של מטה מסאק לאחת הסביבות שנבחר למשל goerli ושמה להעלות את החוזה ולעשות עליו את כל הטסטים שנרצה, מי שלא מכיר goerli זוהי סביבה שמדמה את הסביבה המקורית (mainnet) אז ככה שאפשר לעשות את כל הטעויות והבדיקות בסביבית הטסט לפני שמעלים למיינט, מאד חשוב הנושא הזה כי ברגע שתעלו את החוזה לכם לסביבה האמיתית אי אפשר לשנות יותר כלום.
ganache and hardhat env – הסביבות הללו הינן לוקליות , את הסביבה הלוקלית של ganache אנחנו מכירים כבר מהפוסטים הקודמים, אבל ישנה סביבה נוספת לוקלית שלא פחות פופולארית, hardhat הינה ספרייה חשובה מאד שכמעט בכל פרויקט בלוקציין משתמשים בה, מביאה איתה סט כלים שימושי מאד ואנחנו עוד נכיר אותה היטב. מלבד הכלים שhardhat מציעה , הינה גם מספקת לנו סביבה לוקלית של בלוקציין ומי שעובד צמוד עם hardhat והתרגל עליה יוכל גם לבדוק את החוזה שלנו מול remix.
connect wallet – אפשרות להתחבר עם אחד הארנקים ברשימה שremix מציע ולעלות את החוזה לאחד הארנקים הללו , שימו לב כי חיבור זה לרוב הינו שימוש לעלות חוזה על הmainnet אז לפני שאתם מעלים חוזה דרך ארנק אמיתי צריך לעשות בדיקות מקיפות (כפי שכבר ציינתי מספר פעמים) .
לוחצים על deploy ומעלים את החוזה שלכם
הגיע הזמן לעשות את המעשה המיוחל, מעלים את החוזה שלנו לאחת סביבות הטסט , נבחר כרגע ב VM (סביבת טסט כמובן). חשוב לזכור שחוזה חייב להיות משוייך לארנק מסויים, כך שיהיה לכם ארנק שהוא למעשה הבעלים של אותו חוזה.

נבחר את אחת הכתובות של הארנקים השונים (ארנקי דמה כמובן) , כרגע נתקדם לבחירת החוזה שלנו, ללא שינויים ב gas limit או value, בערכים אלא משתמשים באינטראקציה עם החוזה לאחר שהעלנו אותו.
אז כעת נוודא שהחוזה שלנו נבחר ב contract

ונלחץ על הכפתור הצהוב , Deploy!
עכשיו יש פה כמה דברים חדשים סופר מעניינים , למשל יש לנו חוזה שעלה לרשת! , ואפשר לראות שהוא זמין לנו ב Deploy Contracts :

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

דבר נוסף מעניין מאד זה הטרנזקציה שנשמרה בבלוקציין בעת העלאת החוזה, כפי שאתם יודעים כל הרעיון של בבלוקציין הוא רישום של הטרזקציות . והנה אפשר לראות שגם עבור העלאת חוזה חכם נשמרת הטרנזקציה, כמו כן אם אתם רוצים להיות מתכנתי בלוקציין טובים עליכם להבין אז המכניזם וחלק ניכר הוא להבין מה בעצם נרשם בכל טרנזקציה שלכם. למשל : תפתחו את הפירוט של הטרנזקציה בכפתור הdebug ותגלו את הפרטים להלן:

אפשר לראות המון מידע רלוונטי כמו מי הארנק שיצר את הטרנזקציה , החוזה (הקובץ) שהעלתם , כמה gas שילמתם ועוד.. (נציג ונדבר על הדברים הללו כמעט בכל שלב בקורס). כמו כן אם תסתכלו עכשיו על כמות האיתריום שיש לארנק הבעלים של חוזה זה תראו שהוא השתנה ואין בו את אותו הסכום שהיה לפני העלאת החוזה, עלויות אלו הן העלויות המדוייקות שיהיו לכם על החוזה הזה גם במידה ותרצו לעלות אותו לרשת הראשית
ועכשיו החלק שבו תוכלו להפעיל את החוזה שלכם, הרי כתבנו 2 פונקציות, אחת של קריאה ואחת של כתיבה, ואפשר לראות שיש לנו 2 כפתורים , אחד כחול ואחד כתום , כחול מייצג פקודות של read מהבלוקציין, לא עולות gas fees וכתומות שמייצגות כתיבה ולכן יש עלויות שהינן משתנות בהתאם לעבודה שהן עושות, פעולות גדולות יהיו יקרות ופעולות פשוטות יהיו זולות.
אם תלחצו על הכפתור הכחול תראו מייל את הערך של אותו משתנה שבחרנו להחזיר מהפונקציה למשל:

עכשיו ננסה להשתמש בפונקציה של write data ונשים איזה ערך כלשהו למשל 111 . ונלחץ על הכפתור הכתום כעת. שימוש לב שנוצרה טרנזקציה, כל שינוי בבלוקציין נשמר ! ועכשיו שתלחצו שוב על הכפתור הכחול תראו שהערך שלנו השתנה בהתאם.

סיכום השיעור – קורס סולידיטי – DEPLOY – remix
כל הכבוד לכם על סיום הפרק של רמיקס בחלק הראשון של קורס מתכנת בלוקציין עם סולידיטי . עכשיו שקיבלתם קצת מושג כללי על תהליכי העבודה בכתיבת חוזה חכם כגון , קומפיילר ודיפלויימנט, סביבות וטרנזקציות. נוכל לעבוד ולצלול לתוך הפרקטיקה בסולידי וגם לבחור תמיד את הקוד שכתבנו על סביבת הטסט הלוקלית (בהמשך גם סביבות טסט מבוזרת) . אתם ממש בעיצומו של התהליך להפוך למתכנתי בלוקציין אז יהיו סבלניים , השיעור הבא יעלה בקרוב 🙌🐊