मुख्य सामग्रीवर जा
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 खालील गोष्टींना सपोर्ट करत नाही:
    • मॉडिफायर्स (Modifiers)
    • इनहेरिटन्स (Inheritance)
    • इनलाइन असेंब्ली (Inline assembly)
    • फंक्शन ओव्हरलोडिंग (Function overloading)
    • ऑपरेटर ओव्हरलोडिंग (Operator overloading)
    • रिकर्सिव्ह कॉलिंग (Recursive calling)
    • इनफायनाईट-लेंथ लूप्स (Infinite-length loops)
    • बायनरी फिक्स्ड पॉईंट्स (Binary fixed points)

v0.4.0 पासून, 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 ची ही चीटशीट पहा (नवीन टॅबमध्ये उघडते)

पुढील वाचन