ממשיכים לתוך החלקים היותר עסיסיים של החלק הראשון בקורס סולידיטי, מזכיר ומציין כי קורס זה מתאים בעיקר למתכנתי בלוקציין על איתריום בתחילת דרכם, כל התוכן המוצג פה הינו בסיסי , בהמשך קורסים גם למתקדמים.
סולידטי , statically typed language
אם יצא לכם לקרוא קצת על סולידיטי הרבה אומרים שהיא דומה לjavascript , זה נכון ולא נכון. אחד הדברים שמאפיינים את js שאין צורך להגדיר בה טייפים, וגם ישנם דברים נוספים ששונים לגמרי מכתיבה של js , אבל אכן יש דמיון .
חשוב מאוד להשתמש בטייפים בסולידיטי , אין שום הנחות כאן, אין גם אפשרות לשים any . חייבים להגדיר כל משתנה או פונקציה בצורה מדוייקת ונכונה. אם תעשו טעות , או שלא תוכלו לקמפל את החוזה שלכם. או שתשלמו על זה ביוקר, אחד הנושאים החמים ברשת gas optimization, בחלקו הגדול קשור לטייפים שאתם מגדירים למשתנים השונים. (בהמשך עוד נדון על gas optimization).
נעבור כעת על הטייפים הכי בסיסיים שעובדים איתם בסולידיטי:
- int\uint\uint256
- bytes
- address
- boolean
- string
נדבר מעט על כל אחד מהטייפים הללו כעת על מנת שיהיה ברור לכם מתי להשתמש בהם ולאחר מכן אציג דוגמאות.
int\uint\uint256 – מספרים חיוביים ושליליים
מייצגים מספרים שלמים חיוביים או שליליים, אם תרצו לתמוך במספרים שליליים int הוא הטייפ הנכון uint מייצג מספרים חיוביים (unsigned and signed numbers).
כמו כן הטייפ uint256 שהינו הנפוץ ביותר ככותב סולידיטי, אם אתם מפתחים ב-higth level אולי לא תכירו את הטייפ הזה (אבל זה בסדר גמור אסביר פה כל מה שצריך לדעת בנושא של טייפ זה). גם אנחנו נעשה בו שימוש רב בחוזים החכמים השונים שנכתוב בקורס זה.
הינו מייצג מספרים מספר חיובי (unsigned) ומפה מגיע החלק הראשון של הטייפ uint. ומה מייצג ה256? למעשה מייצג מחרוזת של מספרים עד 256 ביטים כך שכל ספרה מייצגת ביט אחד, כלומר מספר בעורך 256 ספרות בבסיס 2, כלומר 0-1. חושב לציין שסולידיטי לא תומך במספרים לא שלמים.
// SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.9; contract ReadWrite { int fav1 = -45; uint8 fav2 = 244; uint256 fav3 = 33465787967543245834645645654; }
bytes – מאפיין כללי למחרוזת.
אפשר להגדיר משתנים שהם קבועים, בין אורך 1 ל32 , למשל bytes4 יהיה משתנה של לא יותר מ4 תווית. משתנה דינאמי יורד באמצעות המאפיין bytes.
// SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.9; contract ReadWrite { bytes2 fav1 = "f"; bytes10 fav2 = "434556hgdf"; bytes15 fav3 = "434556hgdf4t65"; bytes32 fav4 = "434556hgdf4t65434556hgdf4t653121"; bytes favorite = "adfadsfhadsk fhadksfh akds fhlkjadhf ljadhsf adjhsfl kadhsflk j....."; }
address – מאפיין ייחודי שמגדיר שמתשנה הינו כתובת.
כתובת של חוזה או ארנק של איתריום הינה גם ה20 בייטס של ה- public key של אותו ארנק או חוזה. המאפיין הזה נוכן לנו אפשרות להגדיר משתנה שיודע להכיל כתובת תקינה, כמו כן לכתובת יש אפשרויות רבות נראה בהמשך, לצורך ההמחשה אפשר לראות את הקוד הבא שבו אנחנו מגדירים משתנה שהוא כתובת ולאחר מכן מבקשים לקבל את ה balance של אותה הכתובת:
// SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.9; contract ReadWrite { address public myAddress = 0x7595C1B36110c1cddB021626d2f43E25BdF6Cd16; function getBalance() public view returns(uint256) { return myAddress.balance; } }
בתמונה אפשר לראות חוזה שהעליתי (לרשת טסט goerli) אפשר לראות בצד שמאל למטה שיש משתנה שמחזיק כתובת ופונקציה שהחזירה את הערך שנמצא בארנק זה.

Boolean – בדומה לכל שפה אנחנו מדברים על true and false
בדומה לכל שפה ישנם משתנים שהינם true , false . עוזרים לנו בתנאים השונים שלנו שקוד. אין יותר מידי מה להוסיף המפאיין הזה מאד פשוט וברור אבל אי אפשר שלא לציין אותו בפוסט זה שמדבר על המאפיינים הבסייסים.
String – משתנה שמחזיק מחזורת של תווים.
גם string מוכר לנו כמעט מכל שפה שהיא, וגם פה אין יותר מידי התחקמויות. לפעמים שואלים מה ההבדל בין string לבין bytes אז למעשה הם מתנהגים אותו דבר, רק שאם bytes אפשר להגדיר גודל של מחרוזת עם מוסיפים מספר כלשהו למשל bytes4 יהיה מחזורת של עד 4 תווים.
סיכום basic types in solidity
אולי פוסט מעט בסיסי ומקווה שלא שיעמם אתכם אבל מאוד חשוב להקדיש זמן בללמוד על כל הטייפים ובשביל לא להגזים ואתם החלטתי לעשות זאת לאט לאט ולדבר על הטייפים הבסיסיים ביותר בסולידיטי. זכרו שסולידיטי היא שפה מבוססת טייפים (בדומה לC) ואי אפשר להימנע מכך. ככל שתעמיקו את הידע שלכם בטייפים יהיה לכם יותר קל בעבודה עם שפה זו. ב