Vyper, Solidity ו-Scrypto: איך שפות החוזים החכמים משתווים

הצצה לשלוש שפות תכנות שונות עבור רשתות בלוקצ'יין וכיצד הן משתוות.

רשת Ethereum הביאה חוזים חכמים לתחום הבלוקצ'יין, ויצרה מושגים כמו מימון מבוזר (DeFi) אפשרי. 

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

ככל שתעשיית הבלוקצ'יין ממשיכה לצמוח ורשתות בלוקצ'יין חדשות צצות, שפות תכנות נוספות מובאות לחלל, בעיקר Vyper ו-Scrypto.

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

מהי סולידיות?

Solidity היא שפת תכנות מכוונת עצמים וברמה גבוהה לבניית חוזים חכמים ב-Ethereum blockchain ורשתות blockchain אחרות כמו BNB Smart Chain ו-Avalanche. השפה פותחה ב-2014 וחולקת קווי דמיון עם שפות תכנות כמו JavaScript, C++ ו-Python.

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

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

Solidity משתמשת גם במהדר כדי להמיר את הקוד הקריא לאדם ברמה גבוהה לקוד קריא במכונה שמתבצע ב-Ethereum Virtual Machine (EVM).

מה זה ויפר?

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

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

מה זה סקריפטו?

Scrypto היא שפת חוזים חכמה מוכוונת נכסים. השפה פותחה על ידי Radix, מבוססת על Rust, ושומרת על רוב התכונות של Rust תוך הוספת פונקציות ותחביר ספציפיים עבור Radix Engine v2. מכיוון ש-Scrypto מונחה נכסים, הוא יכול לקיים אינטראקציה עם נכסים כגון אסימונים, שהם סוג של משאב בתוך השפה. 

בשפות קידוד כמו Solidity, אסימוני ERC-20 קיימים כחוזים חכמים ב-EVM. נכסים בתוך Scrypto הם משאבים שקיימים בתוך קונטיינרים וכספות. במילים פשוטות, זה כמו להחזיק דלי (המיכל) ולמלא אותו במטבעות (הנכס) שניתן לאחסן בתוך קופת חזירים (הכספת).

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

Scrypto מתמקדת גם בלהיות ידידותית למפתחים בכך שהיא מאפשרת להם לכתוב רק את הקוד הדרוש תוך אינטראקציה עם המכולות והמשאבים כדי לאפשר פונקציונליות בתוך DApp. אבטחה היא עיקרון נוסף שבו מפתחים יכולים לתת הוראות ספציפיות ל-DApp במקום לתת הרשאות גורפות.

איך משווים שפות החוזים החכמים

לסולידיטי מגוון רחב של משאבי למידה מקוונים ותמיכה קהילתית רבה בשל השימוש ברשתות בלוקצ'יין גדולות כמו Ethereum. ל-Solidity יש גם מגוון רחב של תכונות שנלקחו מתכנות מונחה עצמים (OOP), מה שהופך אותו מודולרי וקל יותר לפתרון בעיות כאשר יש בעיה. לדוגמה, אם אובייקט ממחלקה מסוימת היה מתקלקל, ניתן היה לאתר אותו למקור המחלקה. 

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

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

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

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

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

אדם סימונס, קצין אסטרטגיה ראשי ב-RDX Works - המפתחים מאחורי Radix - אמר ל-Cointelegraph, "החזקת הכלים הנכונים לתפקיד עושה הבדל גדול - וכרגע, למפתחי בלוקצ'יין אין את הכלים הנכונים. לא מדובר רק בהפיכת השפות לפשוטות יותר, אלא ביצירת כלי מפתחים אינטואיטיביים ומאובטחים", ממשיך:

"בשיאה, DeFi צמח ליותר מ-200 מיליארד דולר TVL תוך שנתיים בלבד - אז ברור שיש רמות גבוהות מאוד של ביקוש. עם זאת, למרות הגידול הזה פי 200 בהון, מספר המפתחים גדל רק פי 2, לסך של כ-19,000 (מתוך כ-30 מיליון מפתחים ברחבי העולם).

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

"מפתחים מהססים ללכת במשרה מלאה ב-Web3 בשל עקומת הלמידה התלולה של Solidity ורמות הסיכון הגבוהות סביב אבטחה. למרות המפתחים המוכשרים ביותר ומיליוני דולרים שהושקעו בביקורות אבטחה, DeFi עדיין מוציאה שטפי דם מפריצות וניצולים. זה לבד מספיק כדי להרתיע מפתחים מלהיכנס לחלל".

"השפות והכלים הנכונים יאפשרו למפתחים להצמיח את כל התעשייה הרבה יותר מהר. בדיוק כפי שמנועי משחקים נתנו למפתחים את הכלים לחולל מהפכה בייצור משחקי וידאו בשנות ה-90, השפות והכלים הנכונים של Web3 יאפשרו למפתחים להאיץ את הצמיחה של Web3", הוסיף סימונס.

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

עסקאות ב-Ethereum הן בדרך כלל קריאה לחוזה חכם (שכן DApps ואסימונים ב-Ethereum הם חוזים חכמים). לעומת זאת, עסקאות ב-Scrypto כרוכות בהעברת נכסים מרכיב אחד למשנהו.

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

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

לדוגמא אחרת, אם DApp החלפה (כמו Uniswap) היה מקודד עם Scrypto, המפתחים יצטרכו רק לקודד את שיטת המסחר עבור ההחלפה. ראשית, ה-DEX יצטרך לזהות את המיכל הנכנס של אסימון A של משתמש, ולאחר מכן לחשב את שער החליפין. לאחר מכן, האסימונים הנכנסים יופקדו, וה-DEX ישלח את הכמות הנכונה של Token B בחזרה למשתמש.

באיזו שפת תכנות על מפתחי בלוקצ'יין לבחור?

מפתחים יכולים להשתמש בשפות תכנות מסורתיות (C++, Python, JavaScript) לפיתוח בלוקצ'יין וכן בפתרונות שנבנו במיוחד כמו Solidity, Vyper ו-Scrypto. שפות תכנות מרובות יכולות להיות מועילות לתחום הבלוקצ'יין מכיוון שהיא נותנת למפתחים מגוון כלים לעבוד איתם. 

לדוגמה, מפתחים שמכירים את C++, JavaScript ו-Python עשויים למצוא את Solidity אטרקטיבית. מפתחים שמכירים את Python עשויים להימשך לכיוון Vyper, בעוד שמפתחים שמכירים את Rust עשויים לבחור להשתמש בשפת Scrypto.

לאחרונה: אסימונים חברתיים יהיו המנוע של Web3, מבסיסי מעריצים ועד תמריצים

סימונס מסכים ואומר ל-Cointelegraph, "עם שפות נוספות שיגיעו ל-Web3, סביר להניח שנראה פרק זמן שבו יש לא מעט גישות מתחרות. מכיוון ששפות אלו מוצאות התאמה לשוק המוצר עם מפתחים והכי חשוב מאפשרות למפתחים אלה לבנות אפליקציות DApps חזקות, שימושיות ומאובטחות, סביר להניח שנראה את התעשייה נמשכת לאלה שמספקות את התוצאות הטובות ביותר."

Solidity תהיה כמובן הבחירה עבור מפתחים שרוצים לעבוד על Ethereum ורשתות בלוקצ'יין דומות. במקביל, Vyper ו-Scrypto יכולים למשוך מפתחים המעדיפים פשטות ואבטחה נוספת. Scrypto עשוי להיות עדיף גם עבור מפתחים בשל הפשטות המוגברת והגישה מוכוונת הנכסים שלו.

מקור: https://cointelegraph.com/news/vyper-solidity-and-scrypto-how-the-smart-contract-languages-compare