ప్రధాన కంటెంట్‌కు దాటవేయి

స్థానిక, బహుళ-క్లయింట్ టెస్ట్‌నెట్‌లో dappను ఎలా అభివృద్ధి చేయాలి మరియు పరీక్షించాలి

క్లయింట్లు
నోడ్‌లు
స్మార్ట్ కాంట్రాక్ట్‌లు
కూర్చదగిన సామర్థ్యం
ఏకాభిప్రాయ పొర
అమలు పొర
పరీక్షించడం
మధ్యస్థ స్థాయి
టెడీ మిటికు
11 ఏప్రిల్, 2023
10 నిమిషాల పఠనం
పేజీని సవరించండి (opens in a new tab)

పరిచయం

ఈ గైడ్ కాన్ఫిగర్ చేయగల స్థానిక ఎథీరియం టెస్ట్‌నెట్‌ను ఇన్‌స్టాన్షియేట్ చేయడం, దానికి స్మార్ట్ కాంట్రాక్ట్‌ను డిప్లాయ్ చేయడం మరియు మీ వికేంద్రీకృత అప్లికేషన్ (dapp)పై పరీక్షలను అమలు చేయడానికి టెస్ట్‌నెట్‌ను ఉపయోగించే ప్రక్రియను వివరిస్తుంది. లైవ్ టెస్ట్‌నెట్ లేదా మెయిన్‌నెట్‌కు డిప్లాయ్ చేయడానికి ముందు వివిధ నెట్‌వర్క్ కాన్ఫిగరేషన్‌లకు వ్యతిరేకంగా తమ dappలను స్థానికంగా అభివృద్ధి చేసి, పరీక్షించాలనుకునే dapp డెవలపర్‌ల కోసం ఈ గైడ్ రూపొందించబడింది.

ఈ గైడ్‌లో, మీరు వీటిని చేస్తారు:

  • 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 Enclave (opens in a new tab) లోపల స్థానిక ఎథీరియం టెస్ట్‌నెట్‌ను ప్రారంభించడానికి GitHubలో రిమోట్‌గా హోస్ట్ చేయబడిన eth-network-package (opens in a new tab)ని ఉపయోగించమని Kurtosisని నిర్దేశించే కమాండ్‌ను మీరు అమలు చేశారు. మీ ఎన్‌క్లేవ్ లోపల, మీరు "ఫైల్ ఆర్టిఫ్యాక్ట్‌లు" మరియు "వినియోగదారు సేవలు" రెండింటినీ కనుగొంటారు.

మీ ఎన్‌క్లేవ్‌లోని ఫైల్ ఆర్టిఫ్యాక్ట్‌లు (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) మా బ్లాక్‌జాక్ dappలోని ప్రతి క్రీడాకారుడికి 1000 ముద్రించబడిందని నిర్ధారించడానికి మీ టోకెన్ కాంట్రాక్ట్ కోసం ఒక సాధారణ .js పరీక్షను కలిగి ఉంటుంది
  • 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పై ఒక సాధారణ పరీక్షను కంపైల్ చేసారు, డిప్లాయ్ చేసారు మరియు అమలు చేసారు.

ఇప్పుడు వివిధ నెట్‌వర్క్ కాన్ఫిగరేషన్‌ల క్రింద మా dappలను పరీక్షించడానికి అంతర్లీన నెట్‌వర్క్‌ను మీరు ఎలా కాన్ఫిగర్ చేయవచ్చో అన్వేషిద్దాం.

స్థానిక ఎథీరియం టెస్ట్‌నెట్‌ను కాన్ఫిగర్ చేయడం

క్లయింట్ కాన్ఫిగరేషన్‌లు మరియు నోడ్‌ల సంఖ్యను మార్చడం

మీరు అభివృద్ధి చేయాలనుకుంటున్న లేదా పరీక్షించాలనుకుంటున్న దృశ్యం మరియు నిర్దిష్ట నెట్‌వర్క్ కాన్ఫిగరేషన్‌పై ఆధారపడి, విభిన్న EL మరియు CL క్లయింట్ జతలను, అలాగే వివిధ సంఖ్యలో నోడ్‌లను ఉపయోగించడానికి మీ స్థానిక ఎథీరియం టెస్ట్‌నెట్‌ను కాన్ఫిగర్ చేయవచ్చు. దీని అర్థం, ఒకసారి సెటప్ చేసిన తర్వాత, మీరు అనుకూలీకరించిన స్థానిక టెస్ట్‌నెట్‌ను ప్రారంభించవచ్చు మరియు ప్రతిదీ ఆశించిన విధంగా పనిచేస్తుందని నిర్ధారించుకోవడానికి వివిధ నెట్‌వర్క్ కాన్ఫిగరేషన్‌ల క్రింద అదే వర్క్‌ఫ్లోలను (డిప్లాయ్‌మెంట్, పరీక్షలు మొదలైనవి) అమలు చేయడానికి దాన్ని ఉపయోగించవచ్చు. మీరు సవరించగల ఇతర పారామితుల గురించి మరింత తెలుసుకోవడానికి, ఈ లింక్‌ను సందర్శించండి.

దీన్ని ప్రయత్నించండి! మీరు JSON ఫైల్ ద్వారా eth-network-packageకి వివిధ కాన్ఫిగరేషన్ ఎంపికలను పంపవచ్చు. ఈ నెట్‌వర్క్ పారామితుల JSON ఫైల్ స్థానిక ఎథీరియం నెట్‌వర్క్‌ను సెటప్ చేయడానికి Kurtosis ఉపయోగించే నిర్దిష్ట కాన్ఫిగరేషన్‌లను అందిస్తుంది.

డిఫాల్ట్ కాన్ఫిగరేషన్ ఫైల్‌ను తీసుకోండి మరియు విభిన్న EL/CL జతలతో రెండు నోడ్‌లను ప్రారంభించడానికి దాన్ని సవరించండి:

  • geth/lighthouseతో నోడ్ 1
  • geth/lodestarతో నోడ్ 2
  • geth/tekuతో నోడ్ 3

ఈ కాన్ఫిగరేషన్ మీ dappను పరీక్షించడం కోసం ఎథీరియం నోడ్ అమలుల యొక్క భిన్నమైన నెట్‌వర్క్‌ను సృష్టిస్తుంది. మీ కాన్ఫిగరేషన్ ఫైల్ ఇప్పుడు ఈ విధంగా ఉండాలి:

ప్రతి participants స్ట్రక్ట్ నెట్‌వర్క్‌లోని ఒక నోడ్‌కు మ్యాప్ చేయబడుతుంది, కాబట్టి 3 participants స్ట్రక్ట్‌లు మీ నెట్‌వర్క్‌లో 3 నోడ్‌లను ప్రారంభించమని Kurtosisకి చెబుతాయి. ప్రతి 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)లోని మా ఇతర ఉదాహరణలను తనిఖీ చేయమని మేము మిమ్మల్ని ప్రోత్సహిస్తున్నాము, ఇక్కడ మీరు వీటి కోసం ప్యాకేజీలతో సహా కొన్ని గొప్ప ఉదాహరణలను కనుగొంటారు:

పేజీ చివరి నవీకరణ: 3 మార్చి, 2026