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

स्थानीय, मल्टी-क्लाइंट टेस्टनेट पर डैप को कैसे विकसित और परीक्षण करें

क्लाइंट्स
नोड्स
स्मार्ट अनुबंध
कम्पोज़ेबिलिटी
सहमति परत
निष्पादन परत
परिक्षण
माध्यमिक
टेडी मितिकु
11 अप्रैल 2023
13 मिनट का पठन

परिचय

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

इस गाइड में, आप:

  • कर्टोसिस (opens in a new tab) का उपयोग करके eth-network-package (opens in a new tab) के साथ एक स्थानीय एथेरियम टेस्टनेट को इंस्टेंटियेट करें,
  • एक डैप को कंपाइल करने, डिप्लॉय करने और टेस्ट करने के लिए अपने हार्डहैट डैप विकास परिवेश को स्थानीय टेस्टनेट से कनेक्ट करें, और
  • विभिन्न नेटवर्क कॉन्फ़िगरेशन के खिलाफ विकास और परीक्षण वर्कफ़्लो को सक्षम करने के लिए, नोड्स की संख्या और विशिष्ट EL/CL क्लाइंट पेयरिंग जैसे पैरामीटर सहित स्थानीय टेस्टनेट को कॉन्फ़िगर करें।

कर्टोसिस क्या है?

कर्टोसिस (opens in a new tab) एक कंपोज़ेबल बिल्ड सिस्टम है जिसे मल्टी-कंटेनर परीक्षण वातावरण को कॉन्फ़िगर करने के लिए डिज़ाइन किया गया है। यह विशेष रूप से डेवलपर्स को पुनरुत्पादनीय वातावरण बनाने में सक्षम बनाता है जिसके लिए डायनामिक सेटअप लॉजिक की आवश्यकता होती है, जैसे कि ब्लॉकचेन टेस्टनेट।

इस गाइड में, कर्टोसिस eth-network-package geth (opens in a new tab) निष्पादन परत (EL) क्लाइंट, साथ ही teku (opens in a new tab), lighthouse (opens in a new tab), और lodestar (opens in a new tab) सहमति परत (CL) क्लाइंट के समर्थन के साथ एक स्थानीय एथेरियम टेस्टनेट को स्पिन करता है। यह पैकेज हार्डहैट नेटवर्क, गनाश और एनविल जैसे फ्रेमवर्क में नेटवर्क के लिए एक कॉन्फ़िगर करने योग्य और कंपोज़ेबल विकल्प के रूप में कार्य करता है। कर्टोसिस डेवलपर्स को उनके द्वारा उपयोग किए जाने वाले टेस्टनेट पर अधिक नियंत्रण और लचीलापन प्रदान करता है, जो एक प्रमुख कारण है कि एथेरियम फाउंडेशन ने मर्ज का परीक्षण करने के लिए कर्टोसिस का उपयोग किया (opens in a new tab) और नेटवर्क अपग्रेड के परीक्षण के लिए इसका उपयोग करना जारी रखता है।

कर्टोसिस को सेट करना

आगे बढ़ने से पहले, सुनिश्चित करें कि आपके पास है:

एक स्थानीय एथेरियम टेस्टनेट को इंस्टेंटियेट करना

एक स्थानीय एथेरियम टेस्टनेट को स्पिन अप करने के लिए, चलाएँ:

kurtosis --enclave local-eth-testnet run github.com/kurtosis-tech/eth-network-package

नोट: यह कमांड आपके नेटवर्क का नाम: "local-eth-testnet” --enclave फ्लैग का उपयोग करके रखता है।

कर्टोसिस उन कदमों को प्रिंट करेगा जो यह अंदर ही अंदर ले रहा है क्योंकि यह निर्देशों की व्याख्या, सत्यापन और फिर निष्पादन के लिए काम करता है। अंत में, आपको एक आउटपुट देखना चाहिए जो निम्नलिखित जैसा दिखता है:

बधाई हो! आपने डॉकर पर एक CL (lighthouse) और EL क्लाइंट (geth) के साथ एक स्थानीय एथेरियम टेस्टनेट को इंस्टेंटियेट करने के लिए कर्टोसिस का उपयोग किया।

समीक्षा

इस अनुभाग में, आपने एक कमांड निष्पादित किया जिसने कर्टोसिस को कर्टोसिस Enclave (opens in a new tab) के भीतर एक स्थानीय एथेरियम टेस्टनेट को स्पिन करने के लिए eth-network-package जो कि गिटहब पर रिमोटली होस्टेड है (opens in a new tab) का उपयोग करने का निर्देश दिया। अपने एन्क्लेव के अंदर, आपको "फ़ाइल कलाकृतियाँ" और "उपयोगकर्ता सेवाएँ" दोनों मिलेंगी।

आपके एन्क्लेव में फ़ाइल कलाकृतियाँ (opens in a new tab) में EL और CL क्लाइंट को बूटस्ट्रैप करने के लिए उत्पन्न और उपयोग किए गए सभी डेटा शामिल हैं। डेटा इस डॉकर छवि (opens in a new tab) से निर्मित prelaunch-data-generator सेवा का उपयोग करके बनाया गया था

यूज़र सेवाएँ आपके एन्क्लेव में संचालित होने वाली सभी कंटेनरीकृत सेवाओं को प्रदर्शित करती हैं। आप देखेंगे कि एक एकल नोड, जिसमें एक EL क्लाइंट और एक CL क्लाइंट दोनों हैं, बनाया गया है।

अपने डैप विकास परिवेश को स्थानीय एथेरियम टेस्टनेट से कनेक्ट करें

डैप विकास परिवेश सेट करें

अब जब आपके पास एक रनिंग स्थानीय टेस्टनेट है, तो आप अपने स्थानीय टेस्टनेट का उपयोग करने के लिए अपने डैप विकास परिवेश को कनेक्ट कर सकते हैं। इस गाइड में हार्डहैट फ्रेमवर्क का उपयोग आपके स्थानीय टेस्टनेट पर एक ब्लैकजैक डैप को डिप्लॉय करने के लिए किया जाएगा।

अपने डैप विकास परिवेश को स्थापित करने के लिए, हमारे सैंपल डैप वाली रिपॉजिटरी को क्लोन करें और इसकी निर्भरताएँ स्थापित करें, चलाएँ:

git clone https://github.com/kurtosis-tech/awesome-kurtosis.git && cd awesome-kurtosis/smart-contract-example && yarn

यहाँ उपयोग किया गया smart-contract-example (opens in a new tab) फ़ोल्डर हार्डहैट (opens in a new tab) फ्रेमवर्क का उपयोग करके एक डैप डेवलपर के लिए विशिष्ट सेटअप है:

  • contracts/ (opens in a new tab) में एक ब्लैकजैक डैप के लिए कुछ सरल स्मार्ट अनुबंध हैं
  • scripts/ (opens in a new tab) में आपके स्थानीय एथेरियम नेटवर्क पर एक टोकन अनुबंध को डिप्लॉय करने के लिए एक स्क्रिप्ट है
  • test/ (opens in a new tab) में आपके टोकन अनुबंध के लिए एक सरल .js परीक्षण है यह पुष्टि करने के लिए कि हमारे ब्लैकजैक डैप में प्रत्येक खिलाड़ी के लिए 1000 मिंट किए गए हैं
  • hardhat.config.ts (opens in a new tab) आपके हार्डहैट सेटअप को कॉन्फ़िगर करता है

स्थानीय टेस्टनेट का उपयोग करने के लिए हार्डहैट को कॉन्फ़िगर करें

आपके डैप विकास परिवेश के सेट हो जाने पर, अब आप कर्टोसिस का उपयोग करके बनाए गए स्थानीय एथेरियम टेस्टनेट का उपयोग करने के लिए हार्डहैट को कनेक्ट करेंगे। इसे पूरा करने के लिए, अपनी hardhat.config.ts कॉन्फ़िग फ़ाइल में localnet स्ट्रक्ट में <$YOUR_PORT> को किसी भी el-client-<num> सेवा से rpc uri आउटपुट के पोर्ट से बदलें। इस सैंपल मामले में, पोर्ट 64248 होगा। आपका पोर्ट अलग होगा।

hardhat.config.ts में उदाहरण:

एक बार जब आप अपनी फ़ाइल सहेज लेते हैं, तो आपका हार्डहैट डैप विकास परिवेश अब आपके स्थानीय एथेरियम टेस्टनेट से जुड़ जाता है! आप यह सत्यापित कर सकते हैं कि आपका टेस्टनेट चलाकर काम कर रहा है:

npx hardhat balances --network localnet

आउटपुट कुछ इस तरह दिखना चाहिए:

0x878705ba3f8Bc32FCf7F4CAa1A35E72AF65CF766 has balance 10000000000000000000000000
0x4E9A3d9D1cd2A2b2371b8b3F489aE72259886f1A has balance 10000000000000000000000000
0xdF8466f277964Bb7a0FFD819403302C34DCD530A has balance 10000000000000000000000000
0x5c613e39Fc0Ad91AfDA24587e6f52192d75FBA50 has balance 10000000000000000000000000
0x375ae6107f8cC4cF34842B71C6F746a362Ad8EAc has balance 10000000000000000000000000
0x1F6298457C5d76270325B724Da5d1953923a6B88 has balance 10000000000000000000000000

यह पुष्टि करता है कि हार्डहैट आपके स्थानीय टेस्टनेट का उपयोग कर रहा है और eth-network-package द्वारा बनाए गए पूर्व-वित्त पोषित खातों का पता लगाता है।

अपने डैप को स्थानीय रूप से डिप्लॉय और टेस्ट करें

dApp विकास परिवेश के स्थानीय एथेरियम टेस्टनेट से पूरी तरह से कनेक्ट होने के साथ, अब आप स्थानीय टेस्टनेट का उपयोग करके अपने dApp के विरुद्ध विकास और परीक्षण वर्कफ़्लो चला सकते हैं।

स्थानीय प्रोटोटाइपिंग और विकास के लिए ChipToken.sol स्मार्ट अनुबंध को कंपाइल और डिप्लॉय करने के लिए, चलाएँ:

npx hardhat compile
npx hardhat run scripts/deploy.ts --network localnet

आउटपुट कुछ इस तरह दिखना चाहिए:

ChipToken को डिप्लॉय किया गया: 0xAb2A01BC351770D09611Ac80f1DE076D56E0487d

अब अपने स्थानीय डैप के खिलाफ simple.js परीक्षण चलाने का प्रयास करें ताकि यह पुष्टि हो सके कि हमारे ब्लैकजैक डैप में प्रत्येक खिलाड़ी के लिए 1000 मिंट किए गए हैं:

आउटपुट कुछ इस तरह दिखना चाहिए:

npx hardhat test --network localnet

आउटपुट कुछ इस तरह दिखना चाहिए:

ChipToken
    mint
PLAYER ONE के लिए 1000 चिप्स मिंट करने चाहिए

  1 पासिंग (654ms)

समीक्षा

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

अब आइए देखें कि आप विभिन्न नेटवर्क कॉन्फ़िगरेशन के तहत हमारे डैप्स के परीक्षण के लिए अंतर्निहित नेटवर्क को कैसे कॉन्फ़िगर कर सकते हैं।

स्थानीय एथेरियम टेस्टनेट को कॉन्फ़िगर करना

क्लाइंट कॉन्फ़िगरेशन और नोड्स की संख्या बदलना

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

इसे आजमा कर देखें! आप एक JSON फ़ाइल के माध्यम से eth-network-package को विभिन्न कॉन्फ़िगरेशन विकल्प पास कर सकते हैं। यह नेटवर्क पैरामीटर्स JSON फ़ाइल विशिष्ट कॉन्फ़िगरेशन प्रदान करती है जिसका उपयोग कर्टोसिस स्थानीय एथेरियम नेटवर्क को सेट करने के लिए करेगा।

डिफ़ॉल्ट कॉन्फ़िगरेशन फ़ाइल लें और इसे अलग-अलग EL/CL जोड़े के साथ तीन नोड्स को स्पिन करने के लिए संपादित करें:

  • नोड 1 geth/lighthouse के साथ
  • नोड 2 geth/lodestar के साथ
  • नोड 3 geth/teku के साथ

यह कॉन्फ़िगरेशन आपके dApp के परीक्षण के लिए एथेरियम नोड कार्यान्वयन का एक विषम नेटवर्क बनाता है। आपकी कॉन्फ़िगरेशन फ़ाइल अब इस तरह दिखनी चाहिए:

प्रत्येक participants स्ट्रक्ट नेटवर्क में एक नोड से मैप करता है, इसलिए 3 participants स्ट्रक्ट कर्टोसिस को आपके नेटवर्क में 3 नोड्स स्पिन करने के लिए कहेंगे। प्रत्येक participants स्ट्रक्ट आपको उस विशिष्ट नोड के लिए उपयोग किए गए EL और CL जोड़ी को निर्दिष्ट करने की अनुमति देगा।

network_params स्ट्रक्ट नेटवर्क सेटिंग्स को कॉन्फ़िगर करता है जिनका उपयोग प्रत्येक नोड के लिए जेनेसिस फ़ाइलें बनाने के लिए किया जाता है, साथ ही नेटवर्क के प्रति स्लॉट सेकंड जैसी अन्य सेटिंग्स भी।

अपनी संपादित पैरामीटर्स फ़ाइल को अपनी इच्छानुसार किसी भी डायरेक्टरी में सहेजें (नीचे दिए गए उदाहरण में, इसे डेस्कटॉप पर सहेजा गया है) और फिर चलाकर अपना कर्टोसिस पैकेज चलाने के लिए इसका उपयोग करें:

kurtosis clean -a && kurtosis run --enclave local-eth-testnet github.com/kurtosis-tech/eth-network-package "$(cat ~/eth-network-params.json)"

नोट: kurtosis clean -a कमांड का उपयोग यहाँ कर्टोसिस को नया शुरू करने से पहले पुराने टेस्टनेट और उसकी सामग्री को नष्ट करने का निर्देश देने के लिए किया जाता है।

फिर से, कर्टोसिस थोड़ी देर के लिए काम करेगा और हो रहे अलग-अलग कदमों को प्रिंट करेगा। आखिरकार, आउटपुट कुछ इस तरह दिखना चाहिए:

बधाई हो! आपने अपने स्थानीय टेस्टनेट को 1 के बजाय 3 नोड्स रखने के लिए सफलतापूर्वक कॉन्फ़िगर किया है। अपने dApp (डिप्लॉय और टेस्ट) के खिलाफ पहले किए गए समान वर्कफ़्लो को चलाने के लिए, अपने hardhat.config.ts कॉन्फ़िग फ़ाइल में localnet स्ट्रक्ट में <$YOUR_PORT> को अपने नए, 3-नोड स्थानीय टेस्टनेट में किसी भी el-client-<num> सेवा से rpc uri आउटपुट के पोर्ट से बदलकर हमारे द्वारा पहले किए गए समान संचालन करें।

निष्कर्ष

और बस इतना ही! इस संक्षिप्त गाइड को संक्षेप में बताने के लिए, आपने:

  • कर्टोसिस का उपयोग करके डॉकर पर एक स्थानीय एथेरियम टेस्टनेट बनाया
  • अपने स्थानीय dApp विकास परिवेश को स्थानीय एथेरियम नेटवर्क से जोड़ा
  • एक dApp को डिप्लॉय किया और स्थानीय एथेरियम नेटवर्क पर उसके खिलाफ एक सरल परीक्षण चलाया
  • अंतर्निहित एथेरियम नेटवर्क को 3 नोड्स के लिए कॉन्फ़िगर किया

हम आपसे यह सुनना पसंद करेंगे कि आपके लिए क्या अच्छा रहा, क्या सुधार किया जा सकता है, या आपके किसी भी प्रश्न का उत्तर देने के लिए। गिटहब (opens in a new tab) के माध्यम से या हमें ईमेल करें (opens email client) के माध्यम से संपर्क करने में संकोच न करें!

अन्य उदाहरण और गाइड

हम आपको हमारे क्विकस्टार्ट (opens in a new tab) (जहां आप शीर्ष पर एक Postgres डेटाबेस और API बनाएंगे) और हमारे awesome-kurtosis रिपॉजिटरी (opens in a new tab) में हमारे अन्य उदाहरणों को देखने के लिए प्रोत्साहित करते हैं, जहां आपको कुछ बेहतरीन उदाहरण मिलेंगे, जिनमें इनके लिए पैकेज शामिल हैं:

  • उसी स्थानीय एथेरियम टेस्टनेट को स्पिन करना, लेकिन अतिरिक्त सेवाओं से जुड़ा हुआ है जैसे कि एक ट्रांज़ैक्शन स्पैमर (लेन-देन का अनुकरण करने के लिए), एक फोर्क मॉनिटर, और एक कनेक्टेड ग्राफाना और प्रोमेथियस इंस्टेंस
  • उसी स्थानीय एथेरियम नेटवर्क के खिलाफ सब-नेटवर्किंग परीक्षण (opens in a new tab) करना

पेज का अंतिम अपडेट: 3 मार्च 2026

क्या यह ट्यूटोरियल उपयोगी था?