முக்கிய உள்ளடக்கத்திற்குத் தாவு

உள்ளூர், பல-கிளையண்ட் சோதனை வலையமைப்பில் ஒரு பரவலாக்கப்பட்ட செயலியை (dapp) உருவாக்கி சோதிப்பது எப்படி

கிளையண்டுகள்
கணுக்கள்
திறன் ஒப்பந்தங்கள்
தொகுக்கக்கூடிய தன்மை
கருத்தொருமிப்பு அடுக்கு
செயலாக்க அடுக்கு
சோதனை
இடைநிலை
டெடி மிட்டிக்கு
11 ஏப்ரல், 2023
10 நிமிட வாசிப்பு

அறிமுகம்

இந்த வழிகாட்டி கட்டமைக்கக்கூடிய உள்ளூர் எத்திரியம் சோதனை வலையமைப்பைத் தொடங்குவது, அதில் ஒரு திறன் ஒப்பந்தத்தை நிலைநிறுத்துவது மற்றும் உங்கள் பரவலாக்கப்பட்ட செயலிக்கு (dapp) எதிராக சோதனைகளை இயக்க சோதனை வலையமைப்பைப் பயன்படுத்துவது ஆகிய செயல்முறைகளை விளக்குகிறது. நேரடி சோதனை வலையமைப்பு அல்லது முதன்மை வலைப்பின்னலில் நிலைநிறுத்துவதற்கு முன்பு, வெவ்வேறு பிணைய உள்ளமைவுகளுக்கு எதிராக தங்கள் பரவலாக்கப்பட்ட செயலிகளை (dapps) உள்ளூரில் உருவாக்கி சோதிக்க விரும்பும் dapp டெவலப்பர்களுக்காக இந்த வழிகாட்டி வடிவமைக்கப்பட்டுள்ளது.

இந்த வழிகாட்டியில், நீங்கள் பின்வருவனவற்றைச் செய்வீர்கள்:

  • Kurtosis (புதிய தாவலில் திறக்கும்) ஐப் பயன்படுத்தி eth-network-package (புதிய தாவலில் திறக்கும்) உடன் ஒரு உள்ளூர் எத்திரியம் சோதனை வலையமைப்பைத் தொடங்குவீர்கள்,
  • ஒரு பரவலாக்கப்பட்ட செயலியை (dapp) தொகுக்க, நிலைநிறுத்த மற்றும் சோதிக்க உங்கள் Hardhat dapp மேம்பாட்டுச் சூழலை உள்ளூர் சோதனை வலையமைப்புடன் இணைப்பீர்கள், மற்றும்
  • பல்வேறு பிணைய உள்ளமைவுகளுக்கு எதிராக மேம்பாடு மற்றும் சோதனை பணிப்பாய்வுகளைச் செயல்படுத்த, கணுக்களின் எண்ணிக்கை மற்றும் குறிப்பிட்ட EL/CL கிளையண்ட் இணைப்புகள் போன்ற அளவுருக்கள் உட்பட உள்ளூர் சோதனை வலையமைப்பைக் கட்டமைப்பீர்கள்.

Kurtosis என்றால் என்ன?

Kurtosis (புதிய தாவலில் திறக்கும்) என்பது பல-கண்டெய்னர் சோதனைச் சூழல்களை உள்ளமைக்க வடிவமைக்கப்பட்ட ஒரு தொகுக்கக்கூடிய உருவாக்க அமைப்பாகும். தொகுதிச்சங்கிலி சோதனை வலையமைப்புகள் போன்ற மாறும் அமைப்பு தர்க்கம் தேவைப்படும் மீண்டும் உருவாக்கக்கூடிய சூழல்களை உருவாக்க இது டெவலப்பர்களுக்கு குறிப்பாக உதவுகிறது.

இந்த வழிகாட்டியில், Kurtosis eth-network-package ஆனது geth (புதிய தாவலில் திறக்கும்) செயலாக்க அடுக்கு (EL) கிளையண்ட், அத்துடன் teku (புதிய தாவலில் திறக்கும்), lighthouse (புதிய தாவலில் திறக்கும்), மற்றும் lodestar (புதிய தாவலில் திறக்கும்) கருத்தொருமிப்பு அடுக்கு (CL) கிளையண்டுகளுக்கான ஆதரவுடன் ஒரு உள்ளூர் எத்திரியம் சோதனை வலையமைப்பைத் தொடங்குகிறது. இந்தத் தொகுப்பு Hardhat Network, Ganache மற்றும் Anvil போன்ற கட்டமைப்புகளில் உள்ள பிணையங்களுக்கு கட்டமைக்கக்கூடிய மற்றும் தொகுக்கக்கூடிய மாற்றாகச் செயல்படுகிறது. Kurtosis டெவலப்பர்கள் பயன்படுத்தும் சோதனை வலையமைப்புகளின் மீது அதிக கட்டுப்பாட்டையும் நெகிழ்வுத்தன்மையையும் வழங்குகிறது, இதுவே எத்தீரியம் அறக்கட்டளை ஒருங்கிணைப்பைச் சோதிக்க Kurtosis ஐப் பயன்படுத்தியதற்கும் (புதிய தாவலில் திறக்கும்) பிணைய மேம்படுத்தல்களைச் சோதிக்க அதைத் தொடர்ந்து பயன்படுத்துவதற்கும் ஒரு முக்கிய காரணமாகும்.

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 (புதிய தாவலில் திறக்கும்) க்குள் உள்ளூர் எத்திரியம் சோதனை வலையமைப்பைத் தொடங்க GitHub இல் தொலைவிலிருந்து ஹோஸ்ட் செய்யப்பட்ட eth-network-package (புதிய தாவலில் திறக்கும்) ஐப் பயன்படுத்த Kurtosis ஐ இயக்கும் கட்டளையை நீங்கள் செயல்படுத்தினீர்கள். உங்கள் என்கிளேவிற்குள், "கோப்பு கலைப்பொருட்கள்" (file artifacts) மற்றும் "பயனர் சேவைகள்" (user services) இரண்டையும் நீங்கள் காண்பீர்கள்.

உங்கள் என்கிளேவில் உள்ள கோப்பு கலைப்பொருட்கள் (புதிய தாவலில் திறக்கும்) EL மற்றும் CL கிளையண்டுகளைத் துவக்க உருவாக்கப்பட்ட மற்றும் பயன்படுத்தப்பட்ட அனைத்து தரவையும் உள்ளடக்கியது. இந்த Docker படத்திலிருந்து (புதிய தாவலில் திறக்கும்) உருவாக்கப்பட்ட prelaunch-data-generator சேவையைப் பயன்படுத்தி தரவு உருவாக்கப்பட்டது.

பயனர் சேவைகள் உங்கள் என்கிளேவில் இயங்கும் அனைத்து கண்டெய்னராக்கப்பட்ட சேவைகளையும் காண்பிக்கின்றன. EL கிளையண்ட் மற்றும் CL கிளையண்ட் இரண்டையும் கொண்ட ஒரு கணு உருவாக்கப்பட்டுள்ளதை நீங்கள் கவனிப்பீர்கள்.

உங்கள் dapp மேம்பாட்டுச் சூழலை உள்ளூர் எத்திரியம் சோதனை வலையமைப்புடன் இணைக்கவும்

dapp மேம்பாட்டுச் சூழலை அமைத்தல்

இப்போது உங்களிடம் இயங்கும் உள்ளூர் சோதனை வலையமைப்பு இருப்பதால், உங்கள் உள்ளூர் சோதனை வலையமைப்பைப் பயன்படுத்த உங்கள் dapp மேம்பாட்டுச் சூழலை இணைக்கலாம். உங்கள் உள்ளூர் சோதனை வலையமைப்பில் ஒரு பிளாக்ஜாக் (blackjack) dapp ஐ நிலைநிறுத்த இந்த வழிகாட்டியில் Hardhat கட்டமைப்பு பயன்படுத்தப்படும்.

உங்கள் dapp மேம்பாட்டுச் சூழலை அமைக்க, எங்கள் மாதிரி dapp ஐக் கொண்ட களஞ்சியத்தை குளோன் செய்து அதன் சார்புகளை நிறுவவும், இதை இயக்கவும்:

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

இங்கு பயன்படுத்தப்படும் smart-contract-example (புதிய தாவலில் திறக்கும்) கோப்புறையானது Hardhat (புதிய தாவலில் திறக்கும்) கட்டமைப்பைப் பயன்படுத்தும் ஒரு dapp டெவலப்பருக்கான வழக்கமான அமைப்பைக் கொண்டுள்ளது:

உள்ளூர் சோதனை வலையமைப்பைப் பயன்படுத்த 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 கட்டமைப்புகள் உங்கள் பிணையத்தில் 3 கணுக்களைத் தொடங்க Kurtosis க்குச் சொல்லும். ஒவ்வொரு participants கட்டமைப்பும் அந்த குறிப்பிட்ட கணுவிற்குப் பயன்படுத்தப்படும் EL மற்றும் CL இணையை குறிப்பிட உங்களை அனுமதிக்கும்.

network_params கட்டமைப்பானது ஒவ்வொரு கணுவிற்கும் தொடக்கக் கோப்புகளை (genesis files) உருவாக்கப் பயன்படுத்தப்படும் பிணைய அமைப்புகளையும், பிணையத்தின் ஒரு நேரப்பகுதிக்கான விநாடிகள் (seconds per slot) போன்ற பிற அமைப்புகளையும் கட்டமைக்கிறது.

நீங்கள் திருத்திய அளவுருக்கள் கோப்பை நீங்கள் விரும்பும் எந்த கோப்பகத்திலும் சேமிக்கவும் (கீழே உள்ள எடுத்துக்காட்டில், இது டெஸ்க்டாப்பில் சேமிக்கப்பட்டுள்ளது) பின்னர் இதை இயக்குவதன் மூலம் உங்கள் 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 (புதிய தாவலில் திறக்கும்) வழியாகத் தொடர்புகொள்ளவோ அல்லது எங்களுக்கு மின்னஞ்சல் அனுப்பவோ (மின்னஞ்சல் செயலியைத் திறக்கும்) தயங்க வேண்டாம்!

பிற எடுத்துக்காட்டுகள் மற்றும் வழிகாட்டிகள்

எங்கள் விரைவுத் தொடக்கத்தை (புதிய தாவலில் திறக்கும்) (அதில் நீங்கள் ஒரு Postgres தரவுத்தளத்தையும் அதன் மேல் API ஐயும் உருவாக்குவீர்கள்) மற்றும் எங்கள் awesome-kurtosis களஞ்சியத்தில் (புதிய தாவலில் திறக்கும்) உள்ள பிற எடுத்துக்காட்டுகளைப் பார்க்க உங்களை ஊக்குவிக்கிறோம், அங்கு நீங்கள் பின்வருவனவற்றிற்கான தொகுப்புகள் உட்பட சில சிறந்த எடுத்துக்காட்டுகளைக் காண்பீர்கள்: