קודקודייל
  • קודקודייל
  • מי אתם קודקודייל?
  • קורסים בחינם
  • צרו קשר
  • בניית אתרים
    • וורדפרס
  • נגישות אתרים
  • כל הקטגוריות
    • אנגולר
    • HTML
    • CSS
    • Javascript
    • Typescript
    • NodeJs
    • בלוקציין
  • קודקודייל
  • מי אתם קודקודייל?
  • קורסים בחינם
  • צרו קשר
  • בניית אתרים
    • וורדפרס
  • נגישות אתרים
  • כל הקטגוריות
    • אנגולר
    • HTML
    • CSS
    • Javascript
    • Typescript
    • NodeJs
    • בלוקציין
קודקודייל
  • קודקודייל
  • מי אתם קודקודייל?
  • קורסים בחינם
  • צרו קשר
  • בניית אתרים
    • וורדפרס
  • נגישות אתרים
  • כל הקטגוריות
    • אנגולר
    • HTML
    • CSS
    • Javascript
    • Typescript
    • NodeJs
    • בלוקציין
  • קודקודייל
  • מי אתם קודקודייל?
  • קורסים בחינם
  • צרו קשר
  • בניית אתרים
    • וורדפרס
  • נגישות אתרים
  • כל הקטגוריות
    • אנגולר
    • HTML
    • CSS
    • Javascript
    • Typescript
    • NodeJs
    • בלוקציין
ראשי ♦ בלוקציין ♦ קורס סולידיטי – חלק ראשון – receive & fallback

קורס סולידיטי – חלק ראשון – receive & fallback

וינר יאיר 10 במרץ 2023 אין תגובות

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

בחלק זה נלמד על שתי פונקציות קצה שיש להם חשיבות לא קטנה והן receive & fallback. במשך הפוסט אציג את ההבדלים בין שתי פונקציות אלו וכיצד יש להשתמש בהן.

פונקציית fallback

נניח ומישהו , מסיבה כלשהיא, בחר להעביר איתר ישירות לחוזה, כלומר השתמש בכתובת של החוזה והתכוון להעביר איתר תוכלו לממש את הטרנזקציה הזו באמצעות fallback. למשל דוגמה כזו: שימו לב שפונקציות receive & fallback לא מקבלות את המילה function בהתחלה

// SPDX-License-Identifier: UNLICENSED

pragma solidity ^0.8.9;

contract FallbackAndRecieve {
  
  constructor() {}
      event Log(string func, address sender, uint value, bytes data);
     
      fallback() external payable {
        emit Log("fallback", msg.sender, msg.value, msg.data);
      } 
}

אפשר לראות פה שבחרנו להגדיר את הפונקציה כpayable ללא הגדרה זו החוזה לא יוכל לקבל תשלום ולכן זה מאד מומלץ לשים הגדרה זו, אלא אם יש לכם רצונות אחרים.

עכשיו ניגש לרמיקס ונשלח טרנזקציה לחוזה עצמו באמצעות כפתור transact המופיע בתוך החוזה בחלק התחתון (צד שמאל בDeployed Contracts):

העברת תשלום ישירות לחוזה מתבצע עם transact button
העברת תשלום ישירות לחוזה מתבצע עם transact button

לאחר שתלחצו על זה הטרנזקצייה תתבצע כל עוד שמתם ערך מספרי בvalue למשל 2 ether:

העברה של איתריום והגדרת הvalue
העברה של איתריום והגדרת הvalue

לאחר שתתבצע העברה תראו כי גם האיוונט שלנו נשלח דרך fallback מה שאומר שהפונקציה אכן רצה:

פרטי הטרנזקצייה בשליחת איתר ישירות לכתובת החוזה
פרטי הטרנזקציה בשליחת איתר ישירות לכתובת החוזה

נמשיך להסבר קצר יותר של פונקציית הreceive מכוון שהינן דומות מאד אציג את השוני בין שניהן בהסבר של receive.

פונקציית receive

פונקציית receive דומה מאד לfallback ולמעשה גם אם יהיה לכם פונקציית receive יכול להיות שעדיין תצטרכו את ל fallback מכוון ש receive תרוץ רק כאשר calldata יהיה ריק. אבל במידה ואין פונקציית receive אז עדיין תשלח פונקציית fallback . לכן גם בדוגמה שלנו הראשונה נשלחה fallback כי לא הייתה receive אבל אם הייתה למשל בדוגמה הזו ולא נשלח דטה receive כן תרוץ ו fallback לא.

// SPDX-License-Identifier: UNLICENSED

pragma solidity ^0.8.9;

contract FallbackAndRecieve {
  
  constructor() {}
      event Log(string func, address sender, uint value, bytes data);
     
      fallback() external payable {
       emit Log("fallback", msg.sender, msg.value, msg.data);
      } 

      receive() external payable {
       emit Log("fallback", msg.sender, msg.value, "");
      } 
}

סיכום שיעור אחרון בחלק הראשון של קורס סולידיטי

אז למדנו עוד משו אלמנטרי והן פונקציות receive & fallback שמגנות יכולות להגן ולהפעיל קוד אם מישהו שלח לחוזה ישירות בקשה עם מידע או ללא מידע וכן לקבל כסף לחוזה במידה ונרצה או אפילו אם בטעות מישו ישלח תשלום דרך החוזה תוכלו לקבלו.

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

פוסטים קשורים:

solidiitiy couse-codcodile Payableקורס סולידיטי – חלק ראשון -Payable functions קורס בלוקציין סולידיטי modifiersקורס סולידיטי – חלק ראשון – modifiers remix-קורס-סולידיטיקורס סולידיטי – חלק ראשון – memory, calldata and storage remix-קורס-סולידיטיקורס סולידיטי – חלק ראשון – constant, immutable
blockchain מפתח בלוקציין מתכנת בלוקציין קורס בלוקציין קורס בלוקציין בחינם קורס סולידיטי

אודות המחבר

יאיר וינר להציג את כל הפוסטים של וינר יאיר


« פוסט קודם
פוסט הבא »

השארת תגובה

ביטול

חיפוש באתר
בחירת העורכים
29 בדצמבר 2023 עידן יצחקי

שדה טקסט עשיר עם תמונות

אתם הולכים להיות מופתעים עד כמה HTML יכול להיות חכם ולבצע משהו כל כך מורכב, שאם אנחנו היינו רוצים ליצור

1 באוקטובר 2021 עידן יצחקי

איך למשוך דינמית favicon של אתרים אחרים ב-JS

בפוסט זה נראה איך אפשר על פי לינקים בדף למשוך את ה-favicon מהדומיין שלהם באופן דינמי, בדיקה של תקינות התמונה

פופולרי
Javascript functions – היכרות עם סוגי פונקציות
Javascript
21 בדצמבר 2024 אין תגובות
Nested routing in angular standalone component
Typescript
15 בנובמבר 2024 תגובה אחת
בחרו לפי תגיות
angular blockchain css ethers express front-end fullstack GQL html javascript next js nextjs nodejs react hooks reactjs solidity webgl אנגולר בלוקציין וורדפרס לימודי אנגולר לימודי וורדפרס לימוד ריאקט מדריך front-end מדריך GQL מדריך אנגולר מדריך וורדפרס מדריך חינם react מדריך ריאקט מפתח בלוק מפתח בלוקציין מתכנת front-end מתכנת בלוקציין מתכנת פרונט סולידיטי קורס front end קורס fullstack קורס nextjs קורס אנגולר קורס בלוקציין קורס בלוקציין בחינם קורס סולידיטי קורס ריאקט קורס תכנות קורס תכנות בחינם
סינון על פי קטגוריות
CSS fullstack HTML IIS Javascript nodeJs SEO Typescript אנגולר בלוקציין בניית אתרים וורדפרס חיפוש עבודה כלים נוספים כללי נגישות קורסים ריאקט תלת מימד תקלות ופתרונות
צור קשר
כל הזכויות שמורות לקודקודייל
ליצירת קשר: @ קודקודייל
גלילה לראש העמוד