כבר כל העולם שמע על בלוקציין ועל התקדמות האינטרנט ל web3 וכמובן שכל העולם עובר ומשתמש במטבעות דיגיטליים .. ובכל זאת יש מפתחים שעוד לא יודעים על מה מדובר , כלומר איך זה עובד ברמת קוד, הריי מעייני המפתח חשוב לראות איך הדברים נראים וכיצד עם עובדים ומה שנקרא "ללכלך את הידיים" . אז לפני שניגש לקוד ניתן קצת רקע על מה הפוסט .
על מה הפוסט בעצם,
בפוסט הזה אני אסביר ואלמד איך תוכלו ליצור מטבע משלכם, על בלוקציין של ETHEREUM. מי שלא מבין מה זה אומר יכול לקרוא קצת פה: מבוא לבלוקציין.
ERC20
מכוון שיש הרבה אפשרויות לכתוב טוקן(מטבע דיגיטלי) משלכם וכמו בכל תחום בעיקר בתחום הפיתוח יש סטנדרטים, ERC20 הוא סטנדרט למבטע דיגיטלי על בלוקציין של ETHEREUM. מי שעוד לא יודע אז בשביל לרשום חוזה חכם על בסיס ETHEREUM יש ללמוד שפת תכנות שנקראת SOLIDITY שהומצאה במיוחד עבור איטריום, לעומת סולנה למשל שפותח בRUST וישנם (כל בלוקציין והבחירה שלו כמובן).
אז ניגש לקוד של ERC20 ונלמד אותו:
abstract contract ERC20Token {
function name() virtual public view returns (string);
function symbol() virtual public view returns (string);
function decimals() virtual public view returns (uint8);
function totalSupply() virtual public view returns (uint256);
function balanceOf(address _owner) virtual public view returns (uint256 balance);
function transferFrom(address _from, address _to, uint256 _value) virtual public returns (bool success);
function transfer(address _to, uint256 _value) virtual public returns (bool success);
function approve(address _spender, uint256 _value) virtual public returns (bool success);
function allowance(address _owner, address _spender) virtual public view returns (uint256 remaining);
event Transfer(address indexed _from, address indexed _to, uint256 _value);
event Approval(address indexed _owner, address indexed _spender, uint256 _value);
}הנה לנו קובץ SOL המכיל את כל מה שאנחנו צריכים בשביל להכיר את החוזה לייצירת טוקן בסטנדרט ERC20. בשביל שנכיר יותר טוב את הדברים שאנחנו גם נבנה טוקן כדוגמה ואפילו נתביע אותו בבלוקציין! אבל זה כבר יהיה סידרת פוסטים שלמה שממש תלמד אתכם איך להיות מתכנתי סולידיטי (המתינו בסבלנות זה יקח קצת זמן). אז בואו נעבור ונכיר את מה שקורה פה, כרגע הכל יושב בabstruct ובמקום class יש לנו בסולידי מה שנקרא contract . ניתן לראות את כל כל הפונקציות שיש לממש בחוזה שלנו על מנת שהוא יחשב הסטנדרט של ERC20. את הקוד הזה גם תוכלו למצוא באתר של ETHEREUM , כמו כן ניתן גם להשתמש בOPENZEPPELIN שהיא דרך פופולארית מאד לייבוא את הסטדנדטים של ERC20 לחוזה שלנו.
אז למעשה החוזה הוא מאד בסיסי ותמיד עושים עליו תוספות ושינויים כל אחד והצרכים שלו אבל בפוסט הזה נברר קודם מה זמין לנו כאן.
אז אפשר לראות שיש פה כל מיני טייפים , כי סולידיטי היא statically-typed language . ואני לא אכנס כרגע לפירוט של כל טייפ ומתי להשתמש בו ואשאיר את זה לקורס סולידיטי שיפתח בקרוב.
אז כפי שאפשר לראות יש לנו כמה פונקציות חלקם מאד ברורות וחלקם נסביר לפרטים:
- name – מחזירה את השם של הטוקן שנגדיר עבור אותו טוקן
- symbol – כל טוקן יש לו מעיין קיצור \ראשי תיבות , וזהו הסימבול, למשל ETH של ETHEREUM
- decimals – זהו תחם שאפשר להעמיק בו ונעמיק בו בהמשך , כרגע שהוא הפירוק של הטוקן אחרי הנקודה, כלומר אם תרצו שיהיה 3 ספרות אחרי הנקודה או יותר או פחות, יש איזו קונבנציה במטבעות על איטריום להשתמש ב18 ספרות לאחר הנקודה.
- totalSupply הינו הערך הסופי שתנפיקו למטבעות שלכם , כמו כן חשוב לציין שאפשר לעשות שיהיה אפשר להוסיף עוד מטבעות או שלא יהיה אפשר להוסיף יותר מטבעות ויש שעושים אפשרות של שריפת מטבעות (burn tokens)
- balanceOf מאפשר לנו לראות כמה מטבעות שייכים לאדם ספציפי , שימו לב שהפונקציה מקבלת address כלומר כתובת ארנק.
- transferFrom הפונקציה החשובה ביותר בסיפור. היא שתעביר את הטוקנים מאדם לאדם וגם תעשה שימוש בevent (בהמשך)
- transfer תהיה דומה מאד לtransferFrom . ההבל בניהם שtransferFrom מקבלת גם את כתובת השולח בעוד ש transfer מקבלת רק ערך ולאן להעביר (יש לזה שימושים שונים במקרים מסויימים. לרוב transfer מחזירה את הtransferFrom.
- approve ,allowance שני אלו אחראיות על לאפשר שימוש בטוקנים מארנקים שונים. לרוב לא נרצה לאפשר למישהו לעשות שימוש בטוקנים שלנו או בטוקנים של אחרים . אפשר לעשות עם זה דברים מגניבים אבל פחות נפוץ.
- Transfer פונקציה זו היא מסוג EVENT מה שאומר שהיא תרשום בבלוקציין את העברה וכך למעשה חתמנו את הזכויות החדשות בין השולח למקבל.
מאד פשוט לייצר חוזה בסיסי וגם פשוט להבנה, אם לומר את האמת לא צריך לדעת כלום בשביל לצייר טוקן בסיסי. יש הרבה מנועים שעושים את זה ואתם רק מזינים את הערכים עבור הטוקן שלכם.
כמה קל לייצר מטבע דיגיטלי משלכם! אבל זה לא נגמר פה.
לא בשביל זה הגעתם לקודקודייל . חשבנו רבות איך נוכל לשלב במה לעולמות החדשים הללו אצלנו באתר ויהיה הכי נכון עבורכם ללמוד את הבסיס לפני הכל ולכן בשלבים הבאים נלמד סולידיטי ברמה סבירה שנוכל לרשום בעצמנו טוקן ורק נשתמש בסטנדרט של ERC20 וגם וכל לשלב את הכל לתוך ממשק client side וכך נרים פרויקט שלם שילמד אתכם וגם יקנה לכם פקרטיקה.
בהצלחה. 🐊





