मुख्य सामग्री पर जाएं
Change page

स्मार्ट अनुबंध भाषाएं

इथेरियम के बारे में एक बेहतरीन बात यह है कि स्मार्ट अनुबंधों को अपेक्षाकृत डेवलपर-अनुकूल भाषाओं का उपयोग करके प्रोग्राम किया जा सकता है। यदि आपको Python या किसी कर्ली-ब्रैकेट भाषा (नए टैब में खुलता है) का अनुभव है, तो आप परिचित सिंटैक्स वाली भाषा पा सकते हैं।

दो सबसे सक्रिय और मेंटेन की जाने वाली भाषाएं हैं:

  • Solidity
  • Vyper

Remix एकीकृत विकास वातावरण (आईडीई) Solidity और Vyper दोनों में अनुबंध बनाने और परीक्षण करने के लिए एक व्यापक विकास वातावरण प्रदान करता है। कोडिंग शुरू करने के लिए इन-ब्राउज़र Remix आईडीई आज़माएं (नए टैब में खुलता है)।

अधिक अनुभवी डेवलपर Yul का भी उपयोग करना चाह सकते हैं, जो इथेरियम वर्चुअल मशीन (EVM) के लिए एक मध्यवर्ती (intermediate) भाषा है, या Yul+, जो Yul का एक एक्सटेंशन है।

यदि आप उत्सुक हैं और नई भाषाओं का परीक्षण करने में मदद करना पसंद करते हैं जो अभी भी भारी विकास के अधीन हैं, तो आप Fe के साथ प्रयोग कर सकते हैं, जो एक उभरती हुई स्मार्ट अनुबंध भाषा है और वर्तमान में अभी भी अपने शुरुआती चरण में है।

पूर्वापेक्षाएँ

प्रोग्रामिंग भाषाओं, विशेष रूप से JavaScript या Python का पूर्व ज्ञान, आपको स्मार्ट अनुबंध भाषाओं में अंतर को समझने में मदद कर सकता है। हम यह भी सलाह देते हैं कि भाषा की तुलना में बहुत गहराई तक जाने से पहले आप स्मार्ट अनुबंधों को एक अवधारणा के रूप में समझें। स्मार्ट अनुबंधों का परिचय।

Solidity

  • स्मार्ट अनुबंधों को लागू करने के लिए ऑब्जेक्ट-ओरिएंटेड, उच्च-स्तरीय भाषा।
  • कर्ली-ब्रैकेट भाषा जो C++ से सबसे अधिक गहराई से प्रभावित हुई है।
  • स्टैटिकली टाइप्ड (वेरिएबल का प्रकार कंपाइल समय पर ज्ञात होता है)।
  • समर्थन करता है:
    • इनहेरिटेंस (आप अन्य अनुबंधों का विस्तार कर सकते हैं)।
    • लाइब्रेरी (आप पुन: प्रयोज्य (reusable) कोड बना सकते हैं जिसे आप विभिन्न अनुबंधों से कॉल कर सकते हैं - जैसे अन्य ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग भाषाओं में एक स्टैटिक क्लास में स्टैटिक फ़ंक्शन)।
    • जटिल उपयोगकर्ता-परिभाषित प्रकार (Complex user-defined types)।

उदाहरण अनुबंध

यह उदाहरण आपको इस बात का अंदाज़ा देगा कि 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 के साथ शुरुआत करने की सलाह देते हैं। Yul या Yul+ को तभी देखें जब आप स्मार्ट अनुबंध सुरक्षा सर्वोत्तम प्रथाओं और EVM के साथ काम करने की बारीकियों से परिचित हो जाएं।

Yul

  • इथेरियम के लिए मध्यवर्ती (Intermediate) भाषा।
  • EVM और Ewasm (नए टैब में खुलता है) (एक इथेरियम फ्लेवर्ड WebAssembly) का समर्थन करता है, और इसे दोनों प्लेटफ़ॉर्म के एक उपयोगी सामान्य हर (common denominator) के रूप में डिज़ाइन किया गया है।
  • उच्च-स्तरीय अनुकूलन (optimisation) चरणों के लिए अच्छा लक्ष्य जो EVM और Ewasm दोनों प्लेटफ़ॉर्म को समान रूप से लाभान्वित कर सकता है।

Yul+

  • Yul का एक निम्न-स्तरीय, अत्यधिक कुशल एक्सटेंशन।
  • शुरुआत में एक ऑप्टिमिस्टिक रोलअप अनुबंध के लिए डिज़ाइन किया गया था।
  • Yul+ को Yul के लिए एक प्रयोगात्मक अपग्रेड प्रस्ताव के रूप में देखा जा सकता है, जो इसमें नई सुविधाएँ जोड़ता है।

उदाहरण अनुबंध

निम्नलिखित सरल उदाहरण एक पावर फ़ंक्शन लागू करता है। इसे solc --strict-assembly --bin input.yul का उपयोग करके संकलित (compile) किया जा सकता है। उदाहरण को input.yul फ़ाइल में संग्रहीत किया जाना चाहिए।

यदि आप पहले से ही स्मार्ट अनुबंधों के साथ अच्छी तरह से अनुभवी हैं, तो Yul में एक पूर्ण ERC-20 कार्यान्वयन यहाँ (नए टैब में खुलता है) पाया जा सकता है।

Fe

  • इथेरियम वर्चुअल मशीन (EVM) के लिए स्टैटिकली टाइप्ड भाषा।
  • Python और Rust से प्रेरित।
  • इसका उद्देश्य सीखना आसान होना है -- यहां तक कि उन डेवलपर्स के लिए भी जो इथेरियम इकोसिस्टम में नए हैं।
  • Fe का विकास अभी भी अपने शुरुआती चरण में है, भाषा का अल्फा रिलीज़ जनवरी 2021 में हुआ था।

उदाहरण अनुबंध

निम्नलिखित Fe में लागू किया गया एक सरल अनुबंध है।

कैसे चुनें

किसी भी अन्य प्रोग्रामिंग भाषा की तरह, यह मुख्य रूप से सही काम के लिए सही टूल चुनने के साथ-साथ व्यक्तिगत प्राथमिकताओं के बारे में है।

यदि आपने अभी तक किसी भी भाषा की कोशिश नहीं की है, तो यहां कुछ बातों पर विचार किया जाना चाहिए:

Solidity के बारे में क्या बढ़िया है?

  • यदि आप एक शुरुआती हैं, तो वहां कई ट्यूटोरियल और सीखने के उपकरण मौजूद हैं। इसके बारे में कोडिंग करके सीखें अनुभाग में अधिक देखें।
  • अच्छे डेवलपर टूल उपलब्ध हैं।
  • Solidity का एक बड़ा डेवलपर समुदाय है, जिसका अर्थ है कि आपको अपने सवालों के जवाब बहुत जल्दी मिलने की संभावना है।

Vyper के बारे में क्या बढ़िया है?

  • उन Python डेवलपर्स के लिए शुरुआत करने का शानदार तरीका जो स्मार्ट अनुबंध लिखना चाहते हैं।
  • Vyper में कम संख्या में विशेषताएं हैं जो इसे विचारों की त्वरित प्रोटोटाइपिंग के लिए बहुत अच्छा बनाती हैं।
  • Vyper का उद्देश्य ऑडिट करने में आसान और अधिकतम मानव-पठनीय (human-readable) होना है।

Yul और Yul+ के बारे में क्या बढ़िया है?

  • सरल और कार्यात्मक निम्न-स्तरीय भाषा।
  • रॉ (raw) EVM के बहुत करीब जाने की अनुमति देता है, जो आपके अनुबंधों के गैस उपयोग को अनुकूलित (optimize) करने में मदद कर सकता है।

भाषाओं की तुलना

बुनियादी सिंटैक्स, अनुबंध जीवनचक्र, इंटरफेस, ऑपरेटर, डेटा संरचनाओं, फ़ंक्शन, नियंत्रण प्रवाह (control flow), और बहुत कुछ की तुलना के लिए Auditless द्वारा इस चीटशीट (नए टैब में खुलता है) को देखें।

आगे की पढ़ाई