मुख्य आशयावर जा
Change page

स्मार्ट कॉन्ट्रॅक्ट भाषा

इथेरियम बद्दल एक उत्तम गोष्ट म्हणजे स्मार्ट कॉन्ट्रॅक्ट्स तुलनेने डेव्हलपर-अनुकूल भाषा वापरून प्रोग्राम केले जाऊ शकतात. जर तुम्हाला Python किंवा कोणत्याही कर्ली-ब्रॅकेट भाषेचा (curly-bracket language) (नवीन टॅबमध्ये उघडते) अनुभव असेल, तर तुम्हाला ओळखीच्या सिंटॅक्स असलेली भाषा मिळू शकते.

दोन सर्वात सक्रिय आणि देखभाल केल्या जाणाऱ्या भाषा आहेत:

  • Solidity
  • Vyper

Remix IDE हे Solidity आणि Vyper या दोन्ही भाषांमध्ये कॉन्ट्रॅक्ट्स तयार करण्यासाठी आणि तपासण्यासाठी एक सर्वसमावेशक डेव्हलपमेंट वातावरण प्रदान करते. कोडिंग सुरू करण्यासाठी इन-ब्राउझर Remix IDE वापरून पहा (नवीन टॅबमध्ये उघडते).

अधिक अनुभवी डेव्हलपर्स Yul, जी इथेरियम व्हर्च्युअल मशीन (EVM) साठी एक इंटरमीडिएट भाषा आहे, किंवा Yul+, जे Yul चे एक्स्टेंशन आहे, वापरू इच्छितात.

जर तुम्ही उत्सुक असाल आणि अजूनही मोठ्या प्रमाणावर डेव्हलपमेंट सुरू असलेल्या नवीन भाषांची चाचणी घेण्यास मदत करू इच्छित असाल, तर तुम्ही Fe सोबत प्रयोग करू शकता, जी एक उदयोन्मुख स्मार्ट कॉन्ट्रॅक्ट भाषा आहे आणि सध्या ती तिच्या सुरुवातीच्या टप्प्यात आहे.

पूर्व शर्ती

प्रोग्रामिंग भाषांचे, विशेषतः JavaScript किंवा Python चे पूर्वज्ञान तुम्हाला स्मार्ट कॉन्ट्रॅक्ट भाषांमधील फरक समजून घेण्यास मदत करू शकते. भाषांच्या तुलनेत खूप खोलवर जाण्यापूर्वी तुम्ही स्मार्ट कॉन्ट्रॅक्ट्स ही संकल्पना समजून घ्यावी अशी आम्ही शिफारस करतो. स्मार्ट कॉन्ट्रॅक्ट्सची ओळख.

Solidity

  • स्मार्ट कॉन्ट्रॅक्ट्स लागू करण्यासाठी ऑब्जेक्ट-ओरिएंटेड, हाय-लेव्हल भाषा.
  • कर्ली-ब्रॅकेट भाषा जी C++ द्वारे सर्वात जास्त प्रभावित झाली आहे.
  • स्टॅटिकली टाईप केलेली (व्हेरिएबलचा प्रकार कंपाईल करताना माहित असतो).
  • समर्थन करते:
    • इनहेरिटन्स (तुम्ही इतर कॉन्ट्रॅक्ट्स एक्सटेंड करू शकता).
    • लायब्ररी (तुम्ही पुन्हा वापरता येण्याजोगा कोड तयार करू शकता जो तुम्ही वेगवेगळ्या कॉन्ट्रॅक्ट्समधून कॉल करू शकता – जसे इतर ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग भाषांमध्ये स्टॅटिक क्लासमधील स्टॅटिक फंक्शन्स).
    • कॉम्प्लेक्स युझर-डिफाईंड प्रकार.

उदाहरण कॉन्ट्रॅक्ट

हे उदाहरण तुम्हाला Solidity कॉन्ट्रॅक्टचा सिंटॅक्स कसा असतो याची कल्पना देईल. फंक्शन्स आणि व्हेरिएबल्सच्या अधिक तपशीलवार वर्णनासाठी, डॉक्युमेंटेशन पहा (नवीन टॅबमध्ये उघडते).

Vyper

  • पायथॉनिक (Pythonic) प्रोग्रामिंग भाषा
  • स्ट्रॉंग टायपिंग
  • लहान आणि समजण्याजोगा कंपायलर कोड
  • कार्यक्षम बाइटकोड निर्मिती
  • कॉन्ट्रॅक्ट्स अधिक सुरक्षित आणि ऑडिट करण्यासाठी सोपे बनवण्याच्या उद्देशाने जाणीवपूर्वक Solidity पेक्षा कमी वैशिष्ट्ये आहेत. Vyper खालील गोष्टींना समर्थन देत नाही:
    • मॉडिफायर्स
    • इनहेरिटन्स
    • इनलाईन असेंब्ली
    • फंक्शन ओव्हरलोडिंग
    • ऑपरेटर ओव्हरलोडिंग
    • रिकर्सिव्ह कॉलिंग
    • इनफायनाईट-लेंथ लूप्स
    • बायनरी फिक्स्ड पॉईंट्स

अधिक माहितीसाठी, Vyper चे रॅशनल (rationale) वाचा (नवीन टॅबमध्ये उघडते).

उदाहरण

हे उदाहरण तुम्हाला Vyper कॉन्ट्रॅक्टचा सिंटॅक्स कसा असतो याची कल्पना देईल. फंक्शन्स आणि व्हेरिएबल्सच्या अधिक तपशीलवार वर्णनासाठी, डॉक्युमेंटेशन पहा (नवीन टॅबमध्ये उघडते).

Yul आणि Yul+

जर तुम्ही इथेरियमसाठी नवीन असाल आणि अद्याप स्मार्ट कॉन्ट्रॅक्ट भाषांसोबत कोणतेही कोडिंग केले नसेल, तर आम्ही Solidity किंवा Vyper ने सुरुवात करण्याची शिफारस करतो. जेव्हा तुम्हाला स्मार्ट कॉन्ट्रॅक्ट सुरक्षेच्या सर्वोत्तम पद्धती आणि EVM सोबत काम करण्याच्या विशिष्ट गोष्टींची माहिती होईल, तेव्हाच Yul किंवा Yul+ कडे वळा.

Yul

  • इथेरियमसाठी इंटरमीडिएट भाषा.
  • EVM आणि Ewasm (नवीन टॅबमध्ये उघडते) (इथेरियम फ्लेवर्ड WebAssembly) ला समर्थन देते, आणि दोन्ही प्लॅटफॉर्म्सचा वापरण्यायोग्य कॉमन डिनॉमिनेटर (common denominator) म्हणून डिझाइन केलेली आहे.
  • हाय-लेव्हल ऑप्टिमायझेशन टप्प्यांसाठी एक चांगले लक्ष्य जे EVM आणि Ewasm या दोन्ही प्लॅटफॉर्म्सना समान फायदा देऊ शकते.

Yul+

  • Yul चे एक लो-लेव्हल, अत्यंत कार्यक्षम एक्स्टेंशन.
  • सुरुवातीला ऑप्टिमिस्टिक रोलअप कॉन्ट्रॅक्टसाठी डिझाइन केलेले.
  • Yul+ कडे Yul चा एक प्रायोगिक अपग्रेड प्रस्ताव म्हणून पाहिले जाऊ शकते, जे त्यात नवीन वैशिष्ट्ये जोडते.

उदाहरण कॉन्ट्रॅक्ट

खालील साधे उदाहरण पॉवर फंक्शन लागू करते. हे solc --strict-assembly --bin input.yul वापरून कंपाईल केले जाऊ शकते. हे उदाहरण input.yul फाईलमध्ये स्टोअर केले पाहिजे.

जर तुम्हाला आधीच स्मार्ट कॉन्ट्रॅक्ट्सचा चांगला अनुभव असेल, तर Yul मधील संपूर्ण ERC-20 अंमलबजावणी येथे (नवीन टॅबमध्ये उघडते) आढळू शकते.

Fe

  • इथेरियम व्हर्च्युअल मशीन (EVM) साठी स्टॅटिकली टाईप केलेली भाषा.
  • Python आणि Rust द्वारे प्रेरित.
  • शिकण्यास सोपी असण्याचे उद्दिष्ट आहे -- अगदी इथेरियम इकोसिस्टममध्ये नवीन असलेल्या डेव्हलपर्ससाठीही.
  • Fe ची डेव्हलपमेंट अजूनही सुरुवातीच्या टप्प्यात आहे, या भाषेचे अल्फा रिलीज जानेवारी 2021 मध्ये झाले होते.

उदाहरण कॉन्ट्रॅक्ट

खाली Fe मध्ये लागू केलेले एक साधे कॉन्ट्रॅक्ट आहे.

कशी निवड करावी

इतर कोणत्याही प्रोग्रामिंग भाषेप्रमाणेच, हे मुख्यत्वे योग्य कामासाठी योग्य साधन निवडण्यावर तसेच वैयक्तिक पसंतीवर अवलंबून असते.

जर तुम्ही अद्याप यापैकी कोणतीही भाषा वापरून पाहिली नसेल, तर येथे काही गोष्टी विचारात घेण्यासारख्या आहेत:

Solidity बद्दल उत्तम काय आहे?

  • जर तुम्ही नवशिक्या असाल, तर तिथे अनेक ट्युटोरियल्स आणि शिकण्याची साधने उपलब्ध आहेत. याबद्दल अधिक माहिती कोडिंगद्वारे शिका विभागात पहा.
  • चांगली डेव्हलपर टूल्स उपलब्ध आहेत.
  • Solidity ची डेव्हलपर कम्युनिटी मोठी आहे, याचा अर्थ तुम्हाला तुमच्या प्रश्नांची उत्तरे बहुधा खूप लवकर मिळतील.

Vyper बद्दल उत्तम काय आहे?

  • स्मार्ट कॉन्ट्रॅक्ट्स लिहू इच्छिणाऱ्या Python डेव्हलपर्ससाठी सुरुवात करण्याचा एक उत्तम मार्ग.
  • Vyper मध्ये कमी वैशिष्ट्ये आहेत ज्यामुळे ते कल्पनांचे जलद प्रोटोटायपिंग करण्यासाठी उत्तम ठरते.
  • Vyper चे उद्दिष्ट ऑडिट करण्यासाठी सोपे आणि जास्तीत जास्त मानवांना वाचता येण्याजोगे असणे हे आहे.

Yul आणि Yul+ बद्दल उत्तम काय आहे?

  • साधी आणि कार्यक्षम लो-लेव्हल भाषा.
  • रॉ (raw) EVM च्या खूप जवळ जाण्याची अनुमती देते, जे तुमच्या कॉन्ट्रॅक्ट्सचा गॅस वापर ऑप्टिमाइझ करण्यात मदत करू शकते.

भाषांची तुलना

मूलभूत सिंटॅक्स, कॉन्ट्रॅक्ट जीवनचक्र, इंटरफेसेस, ऑपरेटर्स, डेटा स्ट्रक्चर्स, फंक्शन्स, कंट्रोल फ्लो आणि अधिकच्या तुलनेसाठी Auditless ची ही चीटशीट पहा (नवीन टॅबमध्ये उघडते)

पुढील वाचन