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

स्थानिक, मल्टी-क्लायंट टेस्टनेटवर विकेंद्रित ॲप्लिकेशन (dapp) कसे विकसित आणि तपासले जावे

क्लायंट्स
नोड्स
स्मार्ट कॉन्ट्रॅक्ट्स
संयोज्यता
सहमती स्तर
अंमलबजावणी स्तर
चाचणी
मध्यम
टेडी मितिकू
11 एप्रिल, 2023
10 मिनिटांचे वाचन

परिचय

हे मार्गदर्शक तुम्हाला कॉन्फिगर करण्यायोग्य स्थानिक इथेरियम टेस्टनेट सुरू करण्याची, त्यावर स्मार्ट कॉन्ट्रॅक्ट प्रस्थापित करण्याची आणि तुमच्या विकेंद्रित ॲप्लिकेशन (dapp) ची चाचणी घेण्यासाठी टेस्टनेट वापरण्याची प्रक्रिया समजावून सांगते. हे मार्गदर्शक अशा dapp डेव्हलपर्ससाठी डिझाइन केले आहे ज्यांना थेट टेस्टनेट किंवा मुख्यनेटवर प्रस्थापित करण्यापूर्वी वेगवेगळ्या नेटवर्क कॉन्फिगरेशनवर त्यांचे dapps स्थानिक पातळीवर विकसित आणि तपासायचे आहेत.

या मार्गदर्शकामध्ये, तुम्ही:

  • Kurtosis (opens in a new tab) वापरून eth-network-package (opens in a new tab) सह स्थानिक इथेरियम टेस्टनेट सुरू कराल,
  • dapp संकलित करण्यासाठी, प्रस्थापित करण्यासाठी आणि तपासण्यासाठी तुमचे Hardhat dapp डेव्हलपमेंट वातावरण स्थानिक टेस्टनेटशी कनेक्ट कराल, आणि
  • विविध नेटवर्क कॉन्फिगरेशनवर डेव्हलपमेंट आणि चाचणी वर्कफ्लो सक्षम करण्यासाठी नोड्सची संख्या आणि विशिष्ट EL/CL क्लायंट जोड्यांसारख्या पॅरामीटर्ससह स्थानिक टेस्टनेट कॉन्फिगर कराल.

Kurtosis म्हणजे काय?

Kurtosis (opens in a new tab) ही मल्टी-कंटेनर चाचणी वातावरणे कॉन्फिगर करण्यासाठी डिझाइन केलेली एक संयोज्य बिल्ड प्रणाली आहे. हे विशेषतः डेव्हलपर्सना ब्लॉकचेन टेस्टनेटसारख्या डायनॅमिक सेटअप लॉजिकची आवश्यकता असलेली पुनरुत्पादक वातावरणे तयार करण्यास सक्षम करते.

या मार्गदर्शकामध्ये, Kurtosis 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) क्लायंट्सच्या समर्थनासह स्थानिक इथेरियम टेस्टनेट सुरू करते. हे पॅकेज Hardhat Network, Ganache आणि Anvil सारख्या फ्रेमवर्क्समधील नेटवर्क्ससाठी कॉन्फिगर करण्यायोग्य आणि संयोज्य पर्याय म्हणून काम करते. Kurtosis डेव्हलपर्सना ते वापरत असलेल्या टेस्टनेट्सवर अधिक नियंत्रण आणि लवचिकता देते, हेच एक प्रमुख कारण आहे की इथेरियम फाउंडेशनने द मर्ज तपासण्यासाठी Kurtosis वापरले (opens in a new tab) आणि नेटवर्क अपग्रेड्स तपासण्यासाठी त्याचा वापर करणे सुरू ठेवले आहे.

Kurtosis सेट करणे

पुढे जाण्यापूर्वी, तुमच्याकडे खालील गोष्टी असल्याची खात्री करा:

स्थानिक इथेरियम टेस्टनेट सुरू करणे

स्थानिक इथेरियम टेस्टनेट सुरू करण्यासाठी, हे रन करा:

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

टीप: ही कमांड --enclave फ्लॅग वापरून तुमच्या नेटवर्कला "local-eth-testnet" असे नाव देते.

Kurtosis सूचनांचा अर्थ लावण्यासाठी, प्रमाणित करण्यासाठी आणि नंतर त्यांची अंमलबजावणी करण्यासाठी काम करत असताना अंतर्गतपणे घेत असलेल्या पायऱ्या प्रिंट करेल. शेवटी, तुम्हाला खालीलप्रमाणे आउटपुट दिसेल:

अभिनंदन! तुम्ही Docker वर CL (lighthouse) आणि EL क्लायंट (geth) सह स्थानिक इथेरियम टेस्टनेट सुरू करण्यासाठी Kurtosis वापरले.

आढावा

या विभागात, तुम्ही एक कमांड कार्यान्वित केली जिने Kurtosis ला Kurtosis Enclave (opens in a new tab) मध्ये स्थानिक इथेरियम टेस्टनेट सुरू करण्यासाठी GitHub वर दूरस्थपणे होस्ट केलेले eth-network-package (opens in a new tab) वापरण्याचे निर्देश दिले. तुमच्या एन्क्लेव्हमध्ये, तुम्हाला "file artifacts" आणि "user services" दोन्ही मिळतील.

तुमच्या एन्क्लेव्हमधील File Artifacts (opens in a new tab) मध्ये EL आणि CL क्लायंट्स बूटस्ट्रॅप करण्यासाठी व्युत्पन्न केलेला आणि वापरलेला सर्व डेटा समाविष्ट आहे. हा डेटा या Docker इमेज (opens in a new tab) मधून तयार केलेली prelaunch-data-generator सेवा वापरून तयार केला गेला होता.

वापरकर्ता सेवा तुमच्या एन्क्लेव्हमध्ये कार्यरत असलेल्या सर्व कंटेनराइज्ड सेवा प्रदर्शित करतात. तुमच्या लक्षात येईल की EL क्लायंट आणि CL क्लायंट दोन्ही वैशिष्ट्यीकृत करणारा एकच नोड तयार केला गेला आहे.

तुमचे dapp डेव्हलपमेंट वातावरण स्थानिक इथेरियम टेस्टनेटशी कनेक्ट करा

dapp डेव्हलपमेंट वातावरण सेट करा

आता तुमच्याकडे कार्यरत स्थानिक टेस्टनेट असल्याने, तुम्ही तुमचे स्थानिक टेस्टनेट वापरण्यासाठी तुमचे dapp डेव्हलपमेंट वातावरण कनेक्ट करू शकता. या मार्गदर्शकामध्ये तुमच्या स्थानिक टेस्टनेटवर ब्लॅकजॅक dapp प्रस्थापित करण्यासाठी Hardhat फ्रेमवर्क वापरले जाईल.

तुमचे dapp डेव्हलपमेंट वातावरण सेट करण्यासाठी, आमचे नमुना dapp असलेल्या रिपॉझिटरीचे क्लोन करा आणि त्याचे अवलंबित्व स्थापित करा, हे रन करा:

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) फोल्डरमध्ये Hardhat (opens in a new tab) फ्रेमवर्क वापरणाऱ्या dapp डेव्हलपरसाठी सामान्य सेटअप आहे:

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

स्थानिक टेस्टनेट वापरण्यासाठी Hardhat कॉन्फिगर करा

तुमचे dapp डेव्हलपमेंट वातावरण सेट केल्यावर, तुम्ही आता Kurtosis वापरून व्युत्पन्न केलेले स्थानिक इथेरियम टेस्टनेट वापरण्यासाठी Hardhat कनेक्ट कराल. हे साध्य करण्यासाठी, तुमच्या hardhat.config.ts कॉन्फिग फाइलमधील localnet स्ट्रक्टमधील <$YOUR_PORT> ला कोणत्याही el-client-<num> सेवेच्या rpc uri आउटपुटच्या पोर्टने बदला. या नमुना प्रकरणात, पोर्ट 64248 असेल. तुमचा पोर्ट वेगळा असेल.

hardhat.config.ts मधील उदाहरण:

एकदा तुम्ही तुमची फाइल सेव्ह केली की, तुमचे Hardhat dapp डेव्हलपमेंट वातावरण आता तुमच्या स्थानिक इथेरियम टेस्टनेटशी कनेक्ट झाले आहे! तुम्ही हे रन करून तुमचे टेस्टनेट काम करत आहे याची पडताळणी करू शकता:

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

हे पुष्टी करते की Hardhat तुमचे स्थानिक टेस्टनेट वापरत आहे आणि eth-network-package द्वारे तयार केलेली पूर्व-निधी असलेली खाती शोधते.

तुमचे dapp स्थानिक पातळीवर प्रस्थापित करा आणि तपासा

dapp डेव्हलपमेंट वातावरण स्थानिक इथेरियम टेस्टनेटशी पूर्णपणे कनेक्ट झाल्यामुळे, तुम्ही आता स्थानिक टेस्टनेट वापरून तुमच्या dapp वर डेव्हलपमेंट आणि चाचणी वर्कफ्लो चालवू शकता.

स्थानिक प्रोटोटायपिंग आणि डेव्हलपमेंटसाठी ChipToken.sol स्मार्ट कॉन्ट्रॅक्ट संकलित आणि प्रस्थापित करण्यासाठी, हे रन करा:

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

आउटपुट यासारखे काहीतरी दिसावे:

ChipToken deployed to: 0xAb2A01BC351770D09611Ac80f1DE076D56E0487d

आता आमच्या ब्लॅकजॅक dapp मधील प्रत्येक खेळाडूसाठी 1000 मिंट केले आहेत याची पुष्टी करण्यासाठी तुमच्या स्थानिक dapp वर simple.js चाचणी चालवण्याचा प्रयत्न करा:

आउटपुट यासारखे काहीतरी दिसावे:

npx hardhat test --network localnet

आउटपुट यासारखे काहीतरी दिसावे:

ChipToken
    mint
      ✔ should mint 1000 chips for PLAYER ONE

  1 passing (654ms)

आढावा

या टप्प्यावर, तुम्ही आता एक dapp डेव्हलपमेंट वातावरण सेट केले आहे, ते Kurtosis द्वारे तयार केलेल्या स्थानिक इथेरियम नेटवर्कशी कनेक्ट केले आहे, आणि तुमच्या dapp वर एक साधी चाचणी संकलित, प्रस्थापित आणि चालवली आहे.

आता आपण वेगवेगळ्या नेटवर्क कॉन्फिगरेशन अंतर्गत आमच्या dapps ची चाचणी घेण्यासाठी अंतर्निहित नेटवर्क कसे कॉन्फिगर करू शकता ते पाहूया.

स्थानिक इथेरियम टेस्टनेट कॉन्फिगर करणे

क्लायंट कॉन्फिगरेशन आणि नोड्सची संख्या बदलणे

तुम्हाला विकसित किंवा चाचणी करायच्या असलेल्या परिस्थिती आणि विशिष्ट नेटवर्क कॉन्फिगरेशनवर अवलंबून, तुमचे स्थानिक इथेरियम टेस्टनेट भिन्न EL आणि CL क्लायंट जोड्या, तसेच नोड्सची भिन्न संख्या वापरण्यासाठी कॉन्फिगर केले जाऊ शकते. याचा अर्थ असा की, एकदा सेट केल्यावर, तुम्ही सानुकूलित स्थानिक टेस्टनेट सुरू करू शकता आणि सर्वकाही अपेक्षेप्रमाणे कार्य करत असल्याची खात्री करण्यासाठी विविध नेटवर्क कॉन्फिगरेशन अंतर्गत समान वर्कफ्लो (प्रस्थापना, चाचण्या इ.) चालवण्यासाठी त्याचा वापर करू शकता. तुम्ही सुधारित करू शकणाऱ्या इतर पॅरामीटर्सबद्दल अधिक जाणून घेण्यासाठी, या लिंकला भेट द्या.

प्रयत्न करून पहा! तुम्ही JSON फाइलद्वारे eth-network-package ला विविध कॉन्फिगरेशन पर्याय पास करू शकता. ही नेटवर्क पॅरामीटर्स JSON फाइल विशिष्ट कॉन्फिगरेशन प्रदान करते जे Kurtosis स्थानिक इथेरियम नेटवर्क सेट करण्यासाठी वापरेल.

डीफॉल्ट कॉन्फिगरेशन फाइल घ्या आणि भिन्न EL/CL जोड्यांसह दोन नोड्स सुरू करण्यासाठी ती संपादित करा:

  • geth/lighthouse सह नोड 1
  • geth/lodestar सह नोड 2
  • geth/teku सह नोड 3

हे कॉन्फिगरेशन तुमच्या dapp च्या चाचणीसाठी इथेरियम नोड अंमलबजावणीचे एक विषम नेटवर्क तयार करते. तुमची कॉन्फिगरेशन फाइल आता अशी दिसली पाहिजे:

प्रत्येक participants स्ट्रक्ट नेटवर्कमधील नोडशी मॅप करते, त्यामुळे 3 participants स्ट्रक्ट्स Kurtosis ला तुमच्या नेटवर्कमध्ये 3 नोड्स सुरू करण्यास सांगतील. प्रत्येक participants स्ट्रक्ट तुम्हाला त्या विशिष्ट नोडसाठी वापरलेली EL आणि CL जोडी निर्दिष्ट करण्याची अनुमती देईल.

network_params स्ट्रक्ट नेटवर्क सेटिंग्ज कॉन्फिगर करते ज्याचा वापर प्रत्येक नोडसाठी जेनेसिस फाइल्स तयार करण्यासाठी तसेच नेटवर्कच्या प्रति स्लॉट सेकंदांसारख्या इतर सेटिंग्जसाठी केला जातो.

तुमची संपादित पॅरामीटर्स फाइल तुम्हाला हव्या असलेल्या कोणत्याही डिरेक्टरीमध्ये सेव्ह करा (खालील उदाहरणात, ती डेस्कटॉपवर सेव्ह केली आहे) आणि नंतर हे रन करून तुमचे Kurtosis पॅकेज चालवण्यासाठी त्याचा वापर करा:

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

टीप: नवीन सुरू करण्यापूर्वी जुने टेस्टनेट आणि त्यातील सामग्री नष्ट करण्यासाठी Kurtosis ला सूचना देण्यासाठी येथे kurtosis clean -a कमांड वापरली जाते.

पुन्हा, Kurtosis थोडा वेळ काम करेल आणि होत असलेल्या वैयक्तिक पायऱ्या प्रिंट करेल. शेवटी, आउटपुट यासारखे काहीतरी दिसावे:

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

निष्कर्ष

आणि एवढेच! या लहान मार्गदर्शकाचा सारांश सांगायचा तर, तुम्ही:

  • Kurtosis वापरून Docker वर स्थानिक इथेरियम टेस्टनेट तयार केले
  • तुमचे स्थानिक dapp डेव्हलपमेंट वातावरण स्थानिक इथेरियम नेटवर्कशी कनेक्ट केले
  • स्थानिक इथेरियम नेटवर्कवर dapp प्रस्थापित केले आणि त्यावर एक साधी चाचणी चालवली
  • अंतर्निहित इथेरियम नेटवर्क 3 नोड्स असण्यासाठी कॉन्फिगर केले

तुमच्यासाठी काय चांगले झाले, काय सुधारले जाऊ शकते याबद्दल तुमच्याकडून ऐकायला किंवा तुमच्या कोणत्याही प्रश्नांची उत्तरे द्यायला आम्हाला आवडेल. GitHub (opens in a new tab) द्वारे संपर्क साधण्यास किंवा आम्हाला ईमेल करण्यास (opens email client) संकोच करू नका!

इतर उदाहरणे आणि मार्गदर्शके

आम्ही तुम्हाला आमचे क्विकस्टार्ट (opens in a new tab) (जिथे तुम्ही Postgres डेटाबेस आणि त्यावर API तयार कराल) आणि आमच्या awesome-kurtosis रिपॉझिटरीमधील (opens in a new tab) आमची इतर उदाहरणे तपासण्यासाठी प्रोत्साहित करतो जिथे तुम्हाला काही उत्तम उदाहरणे मिळतील, ज्यामध्ये खालील पॅकेजेस समाविष्ट आहेत: