paint-brush
ब्लॉकचेन ❤️ का WASM: अध्याय निर्णयद्वारा@glaze
1,445 रीडिंग
1,445 रीडिंग

ब्लॉकचेन ❤️ का WASM: अध्याय निर्णय

द्वारा Glaze8m2023/11/06
Read on Terminal Reader

बहुत लंबा; पढ़ने के लिए

आर्बिट्रम ने हाल ही में अपने WebAssembly (WASM)-आधारित स्मार्ट कॉन्ट्रैक्ट VM, स्टाइलस को लॉन्च किया है। इससे विस्तारित भाषा समर्थन, कम लागत, अनुकूलन योग्य प्रीकंपाइलर और ईवीएम के साथ अंतरसंचालनीयता जैसे कई लाभ मिलते हैं। WASM अपने प्रदर्शन, कॉम्पैक्ट आकार, पोर्टेबिलिटी और भाषा समर्थन के लिए लोकप्रियता हासिल कर रहा है। पोलकाडॉट और कॉसमॉस जैसी अन्य श्रृंखलाएं भी इसका उपयोग करती हैं। हालाँकि, स्टाइलस की वर्तमान में कुछ सीमाएँ हैं। यह केवल C++ और Rust को सपोर्ट करता है, इसमें जावास्क्रिप्ट/पायथन सपोर्ट का अभाव है। एसडीके अभी भी प्रारंभिक अवस्था में हैं। अभी तक कोई स्थानीय टेस्टनेट या अनुबंध सत्यापन नहीं है। सही भाषा चुनना महत्वपूर्ण है - जावास्क्रिप्ट/पायथन ईडीएसएल अधिक डेवलपर्स को आकर्षित कर सकता है। प्रदर्शन बेंचमार्क से पता चलता है कि WASM, ईवीएम से 4-8 गुना तेज़ हो सकता है। लेकिन 128KB अनुबंध आकार की सीमा है। ईवीएम-डब्ल्यूएएसएम इंटरऑपरेबिलिटी काफी व्यापक है। कस्टम प्रीकंपाइल अभी तक लागू नहीं किए गए हैं। पुनर्प्रवेश वैकल्पिक है लेकिन डिफ़ॉल्ट रूप से अक्षम है। कुल मिलाकर, WASM zk-रोलअप के विरुद्ध आर्बिट्रम के लिए प्रदर्शन को बढ़ावा देता है। लेकिन ईवीएम मूलभूत बनी हुई है, फिलहाल WASM एक "ईवीएम+" पूरक के रूप में है।
featured image - ब्लॉकचेन ❤️ का WASM: अध्याय निर्णय
Glaze HackerNoon profile picture
0-item

आर्बिट्रम के हालिया अपडेट में स्टाइलस वीएम अपग्रेड की सुविधा है, जिसमें कई संवर्द्धन शामिल हैं:


  • विस्तारित भाषा समर्थन
  • कम लागत और मेमोरी उपयोग
  • अनुकूलन योग्य पूर्व-संकलक
  • ईवीएम अनुकूलता


ये सुधार WASM को एकीकृत करने से उत्पन्न हुए हैं, जो क्लाउड-नेटिव वातावरण में अपने कई लाभों के लिए प्रसिद्ध है। WASM की भूमिका पर अधिक विवरण अगले अनुभागों में शामिल किया जाएगा।

अग्रदूतों

आर्बिट्रम ने WASM को अपनी श्रृंखला में पेश किया है, लेकिन ऐसा करने के लिए यह उद्घाटन मंच नहीं है। पोलकाडॉट ने पहले WASM स्मार्ट अनुबंधों के निर्माण की अनुमति दी थी। यह इसके लिए दो भाषाएँ प्रदान करता है: एक एम्बेडेड डीएसएल के समान एक असेंबली स्क्रिप्ट और एक रस्ट-प्रेरित भाषा जिसे स्याही कहा जाता है!


इसी तरह, कॉसमॉस अपने स्मार्ट अनुबंध निष्पादन के लिए कॉसमॉस का उपयोग करता है। डेवलपर्स यहां रस्ट का उपयोग करके स्मार्ट अनुबंध तैयार कर सकते हैं।


WASM के लिए ब्लॉकचेन की एफ़िनिटी की खोज करने से पहले, आइए WASM को चुनने के लिए कॉसमॉस और पोलकाडॉट के तर्क की समीक्षा करें।


कॉसमॉस इन फायदों के लिए WASM का प्रचार करता है:

  • जंग पुस्तकालय अनुकूलता
  • एक व्यापक डेवलपर समुदाय
  • पुनर्प्रवेश हमले की रोकथाम सहित बढ़ी हुई सुरक्षा
  • सरलीकृत परीक्षण प्रक्रियाएँ
  • श्रेष्ठ प्रदर्शन


पोलकाडॉट का WASM रनटाइम निम्नलिखित विशेषताएं प्रदर्शित करता है:

  • असाधारण प्रदर्शन
  • ईवीएम अंतरसंचालनीयता
  • हार्डवेयर और सॉफ्टवेयर प्लेटफ़ॉर्म स्वतंत्रता
  • संविदा आकार
  • टाइपस्क्रिप्ट के समान जंग और असेंबली स्क्रिप्ट के लिए समर्थन


पोलकाडॉट, कॉसमॉस और आर्बिट्रम कई WASM-प्रेरित लाभ साझा करते हैं। हालाँकि, आर्बिट्रम की विशिष्ट पेशकशें हैं जिन पर हम बाद में कॉस्मॉस विशिष्टताओं के साथ चर्चा करेंगे।

मी था

आइए देखें कि WASM क्या है और इसके पीछे की प्रेरणाएँ क्या हैं।

WASM क्या है?

WebAssembly (WASM) एक बाइनरी अनुदेश प्रारूप है। यह कोड को मूल अनुप्रयोगों, विशेष रूप से वेब ब्राउज़र के भीतर तुलनीय गति से निष्पादित करने में सक्षम बनाता है। सी और रस्ट जैसी भाषाओं के संकलन लक्ष्य के रूप में, इसे गति, दक्षता और सुरक्षा के लिए अनुकूलित किया गया है। WASM वेब प्रदर्शन में उल्लेखनीय रूप से सुधार करता है और वेब कार्यक्षमताओं का विस्तार करता है।


WASM वेब से निकटता से जुड़ा हुआ है, क्योंकि यह ब्राउज़र जैसे जावास्क्रिप्ट वातावरण में काम करता है। इन परिवेशों में, डेवलपर्स के पास WASM API तक पूर्ण पहुंच के साथ-साथ संपूर्ण वेब API समर्थन भी है। यह नियंत्रण डेवलपर्स को वेब इंटरैक्शन को बेहतर बनाने की अनुमति देता है।

WASM का विकास

WASM की अवधारणा इसे कहीं भी चलाने के लिए एक बार कोड लिखने के आदर्श के इर्द-गिर्द घूमती है।


2016 में, प्रोग्रामों ने अक्सर डोमेन विशिष्ट भाषाओं (डीएसएल) के माध्यम से नई सुविधाएँ पेश कीं। डीएसएल बनाने में रखरखाव, दक्षता और सुरक्षा को संतुलित करना शामिल है। उद्योग ने इन पहलुओं से समझौता किए बिना कई सर्वरों पर फ़ंक्शन तैनात करने का एक तरीका खोजा।


विभिन्न समाधानों की जाँच की गई, प्रत्येक की अपनी चुनौतियाँ थीं:

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


WASM एक समाधान के रूप में उभरा। WASM कंपाइलर्स का विकास शुरू हुआ, और 2018 तक, विभिन्न आर्किटेक्चर और उपकरणों में सार्वभौमिक कोड संगतता की अवधारणा का विस्तार किया गया। जावा के विपरीत, लक्ष्य सुरक्षा से समझौता करना नहीं था।


2019 में, क्रॉस-लैंग्वेज इंटरऑपरेबिलिटी के लिए WASM मॉड्यूल को उन्नत करते हुए, घटक मॉडल पेश किया गया था। उदाहरण के लिए, इस नवाचार ने विभिन्न भाषाओं में लागू एक सार्वभौमिक HTTP लाइब्रेरी के निर्माण को सक्षम बनाया, जो जटिल मुद्दों को नवीन रूप से संबोधित करता है।

आज WASM था

WASM प्रभावशाली विशेषताओं की एक श्रृंखला का दावा करता है:


  • उच्च प्रदर्शन : WASM कोड कुशलतापूर्वक और तेज़ी से चलता है।
  • संक्षिप्त आकार : WASM का बाइनरी प्रारूप एक छोटा पदचिह्न सुनिश्चित करता है।
  • पोर्टेबिलिटी : यह समान बाइटकोड को किसी भी WASM-संगत रनटाइम पर संचालित करने की अनुमति देता है।
  • भाषा समर्थन : WASM C/C++ और रस्ट से लेकर गो और स्विफ्ट तक कई भाषाओं का समर्थन करता है।
  • जावास्क्रिप्ट इंजन संगतता : WASM JS इंजन के भीतर निर्बाध रूप से काम करता है।
  • सैंडबॉक्सिंग : एक मजबूत डिफ़ॉल्ट सैंडबॉक्स बाहरी हस्तक्षेप को रोकने के लिए मेमोरी और सीपीयू पहुंच को प्रतिबंधित करता है।
  • रैपिड स्टार्टअप : WASM मॉड्यूल आमतौर पर मिलीसेकंड में बूट होते हैं।


WASM समुदाय सक्रिय रूप से विभिन्न प्रोग्रामिंग भाषाओं में एकीकरण और प्रदर्शन को बढ़ा रहा है।

लेखनी

WASM की क्षमता की खोज और ब्लॉकचेन में इसका उपयोग हमें आर्बिट्रम स्टाइलस की सीमाओं की ओर वापस ले जाता है।

स्टाइलस की कार्यप्रणाली

स्टाइलस कैसे संचालित होता है इसका सरलीकृत विवरण यहां दिया गया है:


  1. डेवलपर्स अपने स्मार्ट अनुबंधों को WASM में संकलित करने के लिए क्लैंग या रस्टसी जैसे मानक WASM कंपाइलरों का उपयोग करते हैं।
  2. परिणामी WASM बाइटकोड को संपीड़ित अवस्था में आर्बिट्रम श्रृंखला में अपलोड किया जाता है।
  3. ArbWasm प्रीकंपाइल के compileProgram विधि के माध्यम से, बाइटकोड सुरक्षा, गैस मीटरिंग के लिए उपकरण से गुजरता है, और सत्यापनकर्ता के हार्डवेयर के लिए तैयार किए गए मूल कोड में संकलित किया जाता है। प्रदर्शन और सुरक्षा बढ़ाने के लिए यह कदम महत्वपूर्ण है।
  4. आह्वान पर, अनुबंध WASM रनटाइम पर चलता है, जैसे कि वासमर, जो ईवीएम की तुलना में काफी तेज़ और अधिक गैस-कुशल है।


प्रतीत होता है कि अतिरिक्त तीसरा चरण, वास्तव में, महत्वपूर्ण है। WASM कोड को मूल मशीन कोड में परिवर्तित करने से निष्पादन गति तेज हो जाती है। इसके अलावा, यह अतिरिक्त संकलन चरण "संकलन बम" को रोकने में मदद करता है।


"संकलन बम" दुर्भावनापूर्ण कोड है जिसे संकलन के दौरान सिस्टम संसाधनों को ख़त्म करने, संभावित रूप से कंपाइलर को क्रैश करने या रोकने के लिए डिज़ाइन किया गया है। यह सॉफ़्टवेयर विकास प्रक्रिया में बाधा डालने के उद्देश्य से सेवा से इनकार करने वाले हमले के रूप में कार्य करता है।

स्टाइलस के बारे में चिंताएँ

भाषा समर्थन

स्टाइलस ने C++ और रस्ट को शामिल करने के लिए आर्बिट्रम के डेवलपर समुदाय का विस्तार किया है। हालाँकि, इसमें अभी भी आज के सबसे प्रचलित डेवलपर समुदायों को शामिल करना बाकी है। यह ब्राउज़र में स्मार्ट अनुबंध निष्पादन की सुविधा देता है लेकिन अभी तक जावास्क्रिप्ट और पायथन का समर्थन नहीं करता है।


प्रोग्रामिंग भाषा उपयोगकर्ता


प्रारंभिक चरण में ऐसी परियोजनाएं हैं जो पायथन और जावास्क्रिप्ट को WASM से जोड़ने का प्रयास कर रही हैं। लेकिन, कचरा संग्रहण और प्रदर्शन संबंधी चिंताओं की जटिलताओं के कारण ये व्यापक रूप से अपनाने के लिए तैयार नहीं हैं।

भाषा अनुकूलता

स्टाइलस वर्तमान में अपने एसडीके के माध्यम से सी/सी++ और रस्ट का समर्थन करता है। ये एसडीके संबंधित भाषाओं के टूल के साथ संगत हैं। वे देशी क्रिप्टोग्राफी जैसे तृतीय-पक्ष पुस्तकालयों के एकीकरण की भी अनुमति देते हैं। मुख्य बाधा इन पुस्तकालयों से जुड़ी गैस लागत है।


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


अभी तक, स्टाइलस के पास स्थानीय परीक्षण वातावरण नहीं है। डेवलपर्स को एसडीके के भीतर परीक्षण करने के लिए प्रोत्साहित किया जाता है। स्टाइलस पर स्मार्ट कॉन्ट्रैक्ट चलाने के लिए टेस्टनेट एकमात्र विकल्प है। हालाँकि, टेस्टनेट ने अभी तक स्मार्ट अनुबंध सत्यापन लागू नहीं किया है।


विभिन्न ईआरसी टोकन और यूनिस्वैप वी2 जैसे प्लेटफॉर्म को स्टाइलस में पोर्ट करने का काम चल रहा है।

भाषा चयन

डोमेन-विशिष्ट भाषा (डीएसएल), एम्बेडेड डीएसएल (ईडीएसएल), या सामान्य प्रोग्रामिंग भाषा के बीच चयन करना चुनौतीपूर्ण है। डेवलपर्स को नियंत्रण के लिए "धातु के करीब" काम करने के लाभों को उच्च-स्तरीय अमूर्त द्वारा प्रदान की जाने वाली उपयोग की आसानी के मुकाबले तौलना चाहिए, जो लचीलेपन को सीमित कर सकता है।


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


सामान्य प्रोग्रामिंग भाषाओं को विकास के लिए एसडीके के उपयोग की आवश्यकता होती है। यह टूलींग की परतें जोड़ता है, वाचालता बढ़ाता है, और अभिव्यंजकता कम करता है। इसके परिणामस्वरूप लंबी एपीआई कॉल और जटिल ऑब्जेक्ट संचालन भी हो सकता है।


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



कुल डेवलपर्स


प्रदर्शन

WASM में निष्पादन गति को महत्वपूर्ण रूप से बढ़ाने और बंडल आकार को कम करने की क्षमता है। हालाँकि स्टाइलस को मेननेट पर तैनात नहीं किया गया है, अन्य नेटवर्क के बेंचमार्क एक उपयोगी संदर्भ के रूप में काम करते हैं।


ये बेंचमार्क दर्शाते हैं कि निष्पादन समय को 4 से 8 गुना तक कम किया जा सकता है, और संकलित आकार को आधा किया जा सकता है।

WASM निष्पादन समय


WASM अनुबंध का आकार


स्टाइलस अनुबंध आकार पर एक सीमा लगाता है, जो लगभग 128KB असम्पीडित है। यह बाधा बहुत बड़े स्मार्ट अनुबंधों को सॉलिडिटी जैसी भाषाओं से स्टाइलस में स्थानांतरित करना चुनौतीपूर्ण बना देती है। यह सीमा स्टाइलस कोडबेस में स्पष्ट है:


 // arbos/programs/programs.go const MaxWasmSize = 128 * 1024 // Maximum WASM size allowed const initialFreePages = 2 // Number of initial free pages const initialPageGas = 1000 // Gas cost for an initial page const initialPageRamp = 620674314 // Adjusts for a target size cost const initialPageLimit = 128 // Maximum number of pages allowed const initialInkPrice = 10000 // Ink price per EVM gas const initialCallScalar = 8 // Scalar for call cost


यह ध्यान रखना महत्वपूर्ण है कि WASM को शुरू करने और बंद करने के लिए कुछ ओवरहेड खर्च करना पड़ता है। बहुत हल्के संचालन के लिए, ईवीएम WASM की तुलना में अधिक लागत प्रभावी हो सकता है।

ईवीएम-डब्ल्यूएएसएम इंटरऑपरेबिलिटी

ईवीएम और डब्ल्यूएएसएम समान स्टोरेज स्लॉट और स्टेट ट्री का उपयोग करते हैं। स्टाइलस WASM के भीतर ईवीएम एपीआई को लागू करके ईवीएम के साथ अंतरसंचालनीयता प्राप्त करता है। यह एकीकरण WASM में व्यापक रूप से अपनाए गए होस्ट I/O मोड का उपयोग करता है। WASM में समर्थित ईवीएम एपीआई की पूरी सूची नीचे दी गई है, जो व्यापक अंतरसंचालनीयता समर्थन को दर्शाती है।


 read_args write_result storage_load_bytes32 storage_store_bytes32 call_contract delegate_call_contract static_call_contract do_call create1 create2 do_create read_return_data return_data_size emit_log account_balance account_codehash evm_gas_left evm_ink_left block_basefee block_coinbase block_gas_limit block_number block_timestamp chainid contract_address msg_reentrant msg_sender msg_value native_keccak256 tx_gas_price tx_ink_price tx_prigin memoery_grow console_log_text console_log console_tee

कस्टम प्रीकंपाइल

कस्टम प्रीकंपाइल एक अभिनव अवधारणा है। उनमें कम निष्पादन लागत पर उन्नत क्रिप्टो प्रिमिटिव को ऑन-चेन एकीकृत करने की क्षमता है। उदाहरण के लिए, ऑन-चेन मशीन लर्निंग की लागत कम करने के लिए टेंसर गणनाओं को पूर्व-संकलित किया जा सकता है। हालाँकि, वर्तमान कोडबेस में कस्टम प्रीकंपाइल कार्यक्षमता का कोई सबूत नहीं है। जबकि ईवीएम के लिए प्रीकंपाइल मौजूद हैं, उन्हें स्वैपेबल होने के लिए डिज़ाइन नहीं किया गया है।


संभावना है कि WASM की क्षमताओं का लाभ उठाते हुए ये सुविधाएँ अभी भी विकसित की जा रही हैं। यह ईवीएम को WASM-लिखित कार्यों को कॉल करने में सक्षम करेगा, जिन्हें बाद में मशीन कोड में संकलित किया जाएगा।

पुनर्प्रवेश

CosmWasm के अभिनेता मॉडल के विपरीत, जो पुनर्प्रवेश का समर्थन नहीं करता है, स्टाइलस के रस्ट एसडीके में एक वैकल्पिक सुविधा के रूप में पुनर्प्रवेश शामिल है। डिफ़ॉल्ट रूप से, यह सुविधा बंद है. डेवलपर्स के पास अपने अनुबंधों में पुनः प्रवेश सक्षम करने का विकल्प होता है।


रीएंट्रेंसी को सक्रिय करने से एपीआई प्रभावित होती है क्योंकि डेवलपर्स को यह सुनिश्चित करना होगा कि वे कॉल के दौरान स्टोरेज कैश को साफ़ करें और अन्य सुरक्षा उपायों पर विचार करें। रीएंट्रेंट कॉल से जुड़ी संभावित कमजोरियों को रोकने के लिए यह सावधानी आवश्यक है।


पुनर्प्रवेश

निष्कर्ष

WASM क्लाउड-नेटिव डोमेन में लोकप्रियता हासिल कर रहा है, कई ब्लॉकचेन इसे स्मार्ट अनुबंध निष्पादन के लिए अपना रहे हैं। हालाँकि आर्बिट्रम इस एकीकरण में अग्रणी नहीं है, लेकिन इसका कार्यान्वयन अत्यधिक प्रभावशाली हो सकता है। WASM ब्लॉकचेन परिदृश्य को पूरी तरह से बदलने या ईवीएम को बदलने की स्थिति में नहीं है। हालाँकि, यह उभरते zk-रोलअप के खिलाफ आर्बिट्रम की बढ़त को बढ़ा सकता है। आर्बिट्रम का शब्द "ईवीएम+" इस परिदृश्य का उपयुक्त वर्णन करता है। ईवीएम स्मार्ट कॉन्ट्रैक्ट प्लेटफ़ॉर्म के लिए नींव तैयार करता है, और WASM आर्बिट्रम के लिए अतिरिक्त प्रदर्शन को बढ़ावा दे सकता है।