ایک مقامی، ملٹی کلائنٹ ٹیسٹ نیٹ پر dApp کو کیسے تیار اور ٹیسٹ کریں
تعارف
یہ گائیڈ آپ کو ایک قابل ترتیب مقامی Ethereum ٹیسٹ نیٹ شروع کرنے، اس پر ایک اسمارٹ کانٹریکٹ تعینات کرنے، اور اپنے dApp کے خلاف ٹیسٹ چلانے کے لیے ٹیسٹ نیٹ استعمال کرنے کے عمل سے آگاہ کرتی ہے۔ یہ گائیڈ ان dApp ڈیولپرز کے لیے بنائی گئی ہے جو لائیو ٹیسٹ نیٹ یا مین نیٹ پر تعینات کرنے سے پہلے مختلف نیٹ ورک کنفیگریشنز کے خلاف مقامی طور پر اپنے dApps تیار اور ٹیسٹ کرنا چاہتے ہیں۔
اس گائیڈ میں، آپ یہ کریں گے:
- Kurtosis (opens in a new tab) کا استعمال کرتے ہوئے
eth-network-package(opens in a new tab) کے ساتھ ایک مقامی Ethereum ٹیسٹ نیٹ شروع کریں گے، - ایک dApp کو مرتب کرنے، تعینات کرنے اور ٹیسٹ کرنے کے لیے اپنے Hardhat dApp ڈیولپمنٹ ماحول کو مقامی ٹیسٹ نیٹ سے جوڑیں گے، اور
- مختلف نیٹ ورک کنفیگریشنز کے خلاف ڈیولپمنٹ اور ٹیسٹنگ ورک فلو کو فعال کرنے کے لیے مقامی ٹیسٹ نیٹ کو کنفیگر کریں گے، جس میں نوڈس کی تعداد اور مخصوص EL/CL کلائنٹ پیئرنگ جیسے پیرامیٹرز شامل ہیں۔
Kurtosis کیا ہے؟
Kurtosis (opens in a new tab) ایک کمپوزایبل بلڈ سسٹم ہے جسے ملٹی کنٹینر ٹیسٹ ماحول کو کنفیگر کرنے کے لیے ڈیزائن کیا گیا ہے۔ یہ خاص طور پر ڈیولپرز کو ایسے قابل تجدید ماحول بنانے کے قابل بناتا ہے جن کے لیے متحرک سیٹ اپ لاجک کی ضرورت ہوتی ہے، جیسے کہ بلاک چین ٹیسٹ نیٹس۔
اس گائیڈ میں، Kurtosis eth-network-package ایک مقامی Ethereum ٹیسٹ نیٹ کو اسپن اپ کرتا ہے جس میں 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 ڈیولپرز کو ان کے استعمال کردہ ٹیسٹ نیٹس پر زیادہ کنٹرول اور لچک فراہم کرتا ہے، جو ایک بڑی وجہ ہے کہ Ethereum Foundation نے مرج (Merge) کو ٹیسٹ کرنے کے لیے Kurtosis کا استعمال کیا (opens in a new tab) اور نیٹ ورک اپ گریڈز کی ٹیسٹنگ کے لیے اس کا استعمال جاری رکھے ہوئے ہے۔
Kurtosis کو سیٹ اپ کرنا
آگے بڑھنے سے پہلے، یقینی بنائیں کہ آپ کے پاس یہ موجود ہیں:
- اپنی مقامی مشین پر Docker انجن انسٹال اور شروع کر لیا ہے (opens in a new tab)
- Kurtosis CLI انسٹال کر لیا ہے (opens in a new tab) (یا اگر آپ کے پاس پہلے سے ہی CLI انسٹال ہے تو اسے تازہ ترین ریلیز میں اپ گریڈ کر لیا ہے)
- Node.js (opens in a new tab)، yarn (opens in a new tab)، اور npx (opens in a new tab) انسٹال کر لیا ہے (اپنے dApp ماحول کے لیے)
ایک مقامی Ethereum ٹیسٹ نیٹ شروع کرنا
ایک مقامی Ethereum ٹیسٹ نیٹ کو اسپن اپ کرنے کے لیے، چلائیں:
1kurtosis --enclave local-eth-testnet run github.com/kurtosis-tech/eth-network-packageنوٹ: یہ کمانڈ --enclave فلیگ کا استعمال کرتے ہوئے آپ کے نیٹ ورک کا نام "local-eth-testnet" رکھتی ہے۔
Kurtosis ان اقدامات کو پرنٹ کرے گا جو وہ پس پردہ لے رہا ہے کیونکہ یہ ہدایات کی تشریح، توثیق، اور پھر ان پر عمل درآمد کرنے کا کام کرتا ہے۔ آخر میں، آپ کو ایک آؤٹ پٹ نظر آنا چاہیے جو درج ذیل سے ملتا جلتا ہو:
1INFO[2023-04-04T18:09:44-04:00] ======================================================2INFO[2023-04-04T18:09:44-04:00] || Created enclave: local-eth-testnet ||3INFO[2023-04-04T18:09:44-04:00] ======================================================4Name: local-eth-testnet5UUID: 39372d756ae86Status: RUNNING7Creation Time: Tue, 04 Apr 2023 18:09:03 EDT89========================================= Files Artifacts =========================================10UUID Name11d4085a064230 cl-genesis-data121c62cb792e4c el-genesis-data13bd60489b73a7 genesis-generation-config-cl14b2e593fe5228 genesis-generation-config-el15d552a54acf78 geth-prefunded-keys165f7e661eb838 prysm-password17054e7338bb59 validator-keystore-01819========================================== User Services ==========================================20UUID Name Ports Status21e20f129ee0c5 cl-client-0-beacon http: 4000/tcp -> <http://127.0.0.1:54261> RUNNING22 metrics: 5054/tcp -> <http://127.0.0.1:54262>23 tcp-discovery: 9000/tcp -> 127.0.0.1:5426324 udp-discovery: 9000/udp -> 127.0.0.1:6047025a8b6c926cdb4 cl-client-0-validator http: 5042/tcp -> 127.0.0.1:54267 RUNNING26 metrics: 5064/tcp -> <http://127.0.0.1:54268>27d7b802f623e8 el-client-0 engine-rpc: 8551/tcp -> 127.0.0.1:54253 RUNNING28 rpc: 8545/tcp -> 127.0.0.1:5425129 tcp-discovery: 30303/tcp -> 127.0.0.1:5425430 udp-discovery: 30303/udp -> 127.0.0.1:5383431 ws: 8546/tcp -> 127.0.0.1:5425232514a829c0a84 prelaunch-data-generator-1680646157905431468 <none> STOPPED3362bd62d0aa7a prelaunch-data-generator-1680646157915424301 <none> STOPPED3405e9619e0e90 prelaunch-data-generator-1680646157922872635 <none> STOPPED35سب دکھائیںمبارک ہو! آپ نے Docker پر CL (lighthouse) اور EL کلائنٹ (geth) کے ساتھ ایک مقامی Ethereum ٹیسٹ نیٹ شروع کرنے کے لیے Kurtosis کا استعمال کیا۔
جائزہ
اس سیکشن میں، آپ نے ایک کمانڈ چلائی جس نے Kurtosis کو ہدایت کی کہ وہ Kurtosis Enclave (opens in a new tab) کے اندر ایک مقامی Ethereum ٹیسٹ نیٹ کو اسپن اپ کرنے کے لیے GitHub پر دور سے ہوسٹ کیے گئے eth-network-package (opens in a new tab) کا استعمال کرے۔ آپ کے انکلیو (enclave) کے اندر، آپ کو "فائل آرٹفیکٹس" (file artifacts) اور "یوزر سروسز" (user services) دونوں ملیں گے۔
آپ کے انکلیو میں موجود فائل آرٹفیکٹس (opens in a new tab) میں وہ تمام ڈیٹا شامل ہے جو EL اور CL کلائنٹس کو بوٹ اسٹریپ کرنے کے لیے تیار اور استعمال کیا گیا ہے۔ یہ ڈیٹا اس Docker امیج (opens in a new tab) سے بنی prelaunch-data-generator سروس کا استعمال کرتے ہوئے بنایا گیا تھا۔
یوزر سروسز آپ کے انکلیو میں کام کرنے والی تمام کنٹینرائزڈ سروسز کو دکھاتی ہیں۔ آپ دیکھیں گے کہ ایک واحد نوڈ، جس میں EL کلائنٹ اور CL کلائنٹ دونوں شامل ہیں، بنایا گیا ہے۔
اپنے dApp ڈیولپمنٹ ماحول کو مقامی Ethereum ٹیسٹ نیٹ سے جوڑیں
dApp ڈیولپمنٹ ماحول کو سیٹ اپ کریں
اب جب کہ آپ کے پاس ایک چلتا ہوا مقامی ٹیسٹ نیٹ ہے، آپ اپنے مقامی ٹیسٹ نیٹ کو استعمال کرنے کے لیے اپنے dApp ڈیولپمنٹ ماحول کو جوڑ سکتے ہیں۔ اس گائیڈ میں آپ کے مقامی ٹیسٹ نیٹ پر بلیک جیک (blackjack) dApp کو تعینات کرنے کے لیے Hardhat فریم ورک کا استعمال کیا جائے گا۔
اپنے dApp ڈیولپمنٹ ماحول کو سیٹ اپ کرنے کے لیے، اس ریپوزٹری کو کلون کریں جس میں ہمارا نمونہ dApp موجود ہے اور اس کی انحصار (dependencies) کو انسٹال کریں، چلائیں:
1git 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) میں آپ کے مقامی Ethereum نیٹ ورک پر ٹوکن کانٹریکٹ تعینات کرنے کے لیے ایک اسکرپٹ شامل ہےtest/(opens in a new tab) میں آپ کے ٹوکن کانٹریکٹ کے لیے ایک سادہ .js ٹیسٹ شامل ہے تاکہ اس بات کی تصدیق کی جا سکے کہ ہمارے بلیک جیک dApp میں ہر کھلاڑی کے لیے 1000 منٹ (mint) کیے گئے ہیںhardhat.config.ts(opens in a new tab) آپ کے Hardhat سیٹ اپ کو کنفیگر کرتا ہے
مقامی ٹیسٹ نیٹ استعمال کرنے کے لیے Hardhat کو کنفیگر کریں
اپنے dApp ڈیولپمنٹ ماحول کے سیٹ اپ کے ساتھ، اب آپ Kurtosis کا استعمال کرتے ہوئے تیار کردہ مقامی Ethereum ٹیسٹ نیٹ کو استعمال کرنے کے لیے Hardhat کو جوڑیں گے۔ اسے مکمل کرنے کے لیے، اپنی hardhat.config.ts کنفیگریشن فائل میں localnet اسٹرکٹ (struct) میں <$YOUR_PORT> کو کسی بھی el-client-<num> سروس سے rpc uri آؤٹ پٹ کے پورٹ سے تبدیل کریں۔ اس نمونے کے معاملے میں، پورٹ 64248 ہوگا۔ آپ کا پورٹ مختلف ہوگا۔
hardhat.config.ts میں مثال:
1localnet: {2url: 'http://127.0.0.1:<$YOUR_PORT>', // TODO: $YOUR_PORT کو ETH NETWORK KURTOSIS PACKAGE کے ذریعے تیار کردہ نوڈ URI کے پورٹ سے تبدیل کریں34// یہ وہ پرائیویٹ کیز ہیں جو eth-network-package کے ذریعے بنائے گئے پہلے سے فنڈڈ ٹیسٹ اکاؤنٹس سے منسلک ہیں5// <https://github.com/kurtosis-tech/eth-network-package/blob/main/src/prelaunch_data_generator/genesis_constants/genesis_constants.star>6accounts: [7 "ef5177cd0b6b21c87db5a0bf35d4084a8a57a9d6a064f86d51ac85f2b873a4e2",8 "48fcc39ae27a0e8bf0274021ae6ebd8fe4a0e12623d61464c498900b28feb567",9 "7988b3a148716ff800414935b305436493e1f25237a2a03e5eebc343735e2f31",10 "b3c409b6b0b3aa5e65ab2dc1930534608239a478106acf6f3d9178e9f9b00b35",11 "df9bb6de5d3dc59595bcaa676397d837ff49441d211878c024eabda2cd067c9f",12 "7da08f856b5956d40a72968f93396f6acff17193f013e8053f6fbb6c08c194d6",13 ],14},سب دکھائیںایک بار جب آپ اپنی فائل کو محفوظ کر لیتے ہیں، تو آپ کا Hardhat dApp ڈیولپمنٹ ماحول اب آپ کے مقامی Ethereum ٹیسٹ نیٹ سے جڑ گیا ہے! آپ یہ چلا کر تصدیق کر سکتے ہیں کہ آپ کا ٹیسٹ نیٹ کام کر رہا ہے:
1npx hardhat balances --network localnetآؤٹ پٹ کچھ اس طرح نظر آنا چاہیے:
10x878705ba3f8Bc32FCf7F4CAa1A35E72AF65CF766 has balance 1000000000000000000000000020x4E9A3d9D1cd2A2b2371b8b3F489aE72259886f1A has balance 1000000000000000000000000030xdF8466f277964Bb7a0FFD819403302C34DCD530A has balance 1000000000000000000000000040x5c613e39Fc0Ad91AfDA24587e6f52192d75FBA50 has balance 1000000000000000000000000050x375ae6107f8cC4cF34842B71C6F746a362Ad8EAc has balance 1000000000000000000000000060x1F6298457C5d76270325B724Da5d1953923a6B88 has balance 10000000000000000000000000یہ اس بات کی تصدیق کرتا ہے کہ Hardhat آپ کا مقامی ٹیسٹ نیٹ استعمال کر رہا ہے اور eth-network-package کے ذریعے بنائے گئے پہلے سے فنڈڈ اکاؤنٹس کا پتہ لگاتا ہے۔
اپنے dApp کو مقامی طور پر تعینات اور ٹیسٹ کریں
dApp ڈیولپمنٹ ماحول کے مقامی Ethereum ٹیسٹ نیٹ سے مکمل طور پر جڑے ہونے کے ساتھ، اب آپ مقامی ٹیسٹ نیٹ کا استعمال کرتے ہوئے اپنے dApp کے خلاف ڈیولپمنٹ اور ٹیسٹنگ ورک فلو چلا سکتے ہیں۔
مقامی پروٹو ٹائپنگ اور ڈیولپمنٹ کے لیے ChipToken.sol اسمارٹ کانٹریکٹ کو مرتب اور تعینات کرنے کے لیے، چلائیں:
1npx hardhat compile2npx hardhat run scripts/deploy.ts --network localnetآؤٹ پٹ کچھ اس طرح نظر آنا چاہیے:
1ChipToken deployed to: 0xAb2A01BC351770D09611Ac80f1DE076D56E0487dاب اپنے مقامی dApp کے خلاف simple.js ٹیسٹ چلانے کی کوشش کریں تاکہ اس بات کی تصدیق کی جا سکے کہ ہمارے بلیک جیک dApp میں ہر کھلاڑی کے لیے 1000 منٹ کیے گئے ہیں:
آؤٹ پٹ کچھ اس طرح نظر آنا چاہیے:
1npx hardhat test --network localnetآؤٹ پٹ کچھ اس طرح نظر آنا چاہیے:
1ChipToken2 mint3 ✔ should mint 1000 chips for PLAYER ONE45 1 passing (654ms)جائزہ
اس مقام پر، اب آپ نے ایک dApp ڈیولپمنٹ ماحول سیٹ اپ کر لیا ہے، اسے Kurtosis کے ذریعے بنائے گئے مقامی Ethereum نیٹ ورک سے جوڑ دیا ہے، اور اپنے dApp کے خلاف ایک سادہ ٹیسٹ مرتب، تعینات، اور چلا لیا ہے۔
اب آئیے دریافت کرتے ہیں کہ آپ مختلف نیٹ ورک کنفیگریشنز کے تحت ہمارے dApps کی ٹیسٹنگ کے لیے بنیادی نیٹ ورک کو کیسے کنفیگر کر سکتے ہیں۔
مقامی Ethereum ٹیسٹ نیٹ کو کنفیگر کرنا
کلائنٹ کنفیگریشنز اور نوڈس کی تعداد کو تبدیل کرنا
آپ کے مقامی Ethereum ٹیسٹ نیٹ کو مختلف EL اور CL کلائنٹ پیئرز کے ساتھ ساتھ نوڈس کی مختلف تعداد استعمال کرنے کے لیے کنفیگر کیا جا سکتا ہے، جو اس منظر نامے اور مخصوص نیٹ ورک کنفیگریشن پر منحصر ہے جسے آپ تیار یا ٹیسٹ کرنا چاہتے ہیں۔ اس کا مطلب یہ ہے کہ، ایک بار سیٹ اپ ہونے کے بعد، آپ ایک حسب ضرورت مقامی ٹیسٹ نیٹ کو اسپن اپ کر سکتے ہیں اور اسے مختلف نیٹ ورک کنفیگریشنز کے تحت انہی ورک فلو (تعیناتی، ٹیسٹ وغیرہ) کو چلانے کے لیے استعمال کر سکتے ہیں تاکہ یہ یقینی بنایا جا سکے کہ سب کچھ توقع کے مطابق کام کر رہا ہے۔ ان دیگر پیرامیٹرز کے بارے میں مزید جاننے کے لیے جنہیں آپ تبدیل کر سکتے ہیں، اس لنک پر جائیں۔
اسے آزما کر دیکھیں! آپ JSON فائل کے ذریعے eth-network-package کو مختلف کنفیگریشن آپشنز پاس کر سکتے ہیں۔ یہ نیٹ ورک پیرامیٹرز JSON فائل وہ مخصوص کنفیگریشنز فراہم کرتی ہے جنہیں Kurtosis مقامی Ethereum نیٹ ورک کو سیٹ اپ کرنے کے لیے استعمال کرے گا۔
ڈیفالٹ کنفیگریشن فائل لیں اور مختلف EL/CL پیئرز کے ساتھ دو نوڈس کو اسپن اپ کرنے کے لیے اس میں ترمیم کریں:
- نوڈ 1
geth/lighthouseکے ساتھ - نوڈ 2
geth/lodestarکے ساتھ - نوڈ 3
geth/tekuکے ساتھ
یہ کنفیگریشن آپ کے dApp کی ٹیسٹنگ کے لیے Ethereum نوڈ کے نفاذ کا ایک متضاد (heterogeneous) نیٹ ورک بناتی ہے۔ آپ کی کنفیگریشن فائل اب اس طرح نظر آنی چاہیے:
1{2 "participants":3 [4 {5 "el_client_type": "geth",6 "el_client_image": "",7 "el_client_log_level": "",8 "cl_client_type": "lighthouse",9 "cl_client_image": "",10 "cl_client_log_level": "",11 "beacon_extra_params": [],12 "el_extra_params": [],13 "validator_extra_params": [],14 "builder_network_params": null,15 },16 {17 "el_client_type": "geth",18 "el_client_image": "",19 "el_client_log_level": "",20 "cl_client_type": "lodestar",21 "cl_client_image": "",22 "cl_client_log_level": "",23 "beacon_extra_params": [],24 "el_extra_params": [],25 "validator_extra_params": [],26 "builder_network_params": null,27 },28 {29 "el_client_type": "geth",30 "el_client_image": "",31 "el_client_log_level": "",32 "cl_client_type": "teku",33 "cl_client_image": "",34 "cl_client_log_level": "",35 "beacon_extra_params": [],36 "el_extra_params": [],37 "validator_extra_params": [],38 "builder_network_params": null,39 },40 ],41 "network_params":42 {43 "preregistered_validator_keys_mnemonic": "giant issue aisle success illegal bike spike question tent bar rely arctic volcano long crawl hungry vocal artwork sniff fantasy very lucky have athlete",44 "num_validator_keys_per_node": 64,45 "network_id": "3151908",46 "deposit_contract_address": "0x4242424242424242424242424242424242424242",47 "seconds_per_slot": 12,48 "genesis_delay": 120,49 "capella_fork_epoch": 5,50 },51}سب دکھائیںہر participants اسٹرکٹ نیٹ ورک میں ایک نوڈ سے میپ ہوتا ہے، لہذا 3 participants اسٹرکٹس Kurtosis کو آپ کے نیٹ ورک میں 3 نوڈس کو اسپن اپ کرنے کے لیے کہیں گے۔ ہر participants اسٹرکٹ آپ کو اس مخصوص نوڈ کے لیے استعمال ہونے والے EL اور CL پیئر کی وضاحت کرنے کی اجازت دے گا۔
network_params اسٹرکٹ ان نیٹ ورک سیٹنگز کو کنفیگر کرتا ہے جو ہر نوڈ کے لیے جینیسس (genesis) فائلیں بنانے کے ساتھ ساتھ نیٹ ورک کے سیکنڈز فی سلاٹ جیسی دیگر سیٹنگز کے لیے استعمال ہوتی ہیں۔
اپنی ترمیم شدہ پیرامیٹرز فائل کو اپنی مرضی کی کسی بھی ڈائرکٹری میں محفوظ کریں (نیچے دی گئی مثال میں، اسے ڈیسک ٹاپ پر محفوظ کیا گیا ہے) اور پھر اسے چلا کر اپنا Kurtosis پیکج چلانے کے لیے استعمال کریں:
1kurtosis clean -a && kurtosis run --enclave local-eth-testnet github.com/kurtosis-tech/eth-network-package "$(cat ~/eth-network-params.json)"نوٹ: kurtosis clean -a کمانڈ یہاں Kurtosis کو ہدایت دینے کے لیے استعمال کی گئی ہے کہ وہ نیا ٹیسٹ نیٹ شروع کرنے سے پہلے پرانے ٹیسٹ نیٹ اور اس کے مواد کو تباہ کر دے۔
ایک بار پھر، Kurtosis تھوڑی دیر کے لیے کام کرے گا اور انفرادی اقدامات کو پرنٹ کرے گا جو ہو رہے ہیں۔ بالآخر، آؤٹ پٹ کچھ اس طرح نظر آنا چاہیے:
1Starlark code successfully run. No output was returned.2INFO[2023-04-07T11:43:16-04:00] ==========================================================3INFO[2023-04-07T11:43:16-04:00] || Created enclave: local-eth-testnet ||4INFO[2023-04-07T11:43:16-04:00] ==========================================================5Name: local-eth-testnet6UUID: bef8c192008e7Status: RUNNING8Creation Time: Fri, 07 Apr 2023 11:41:58 EDT910========================================= Files Artifacts =========================================11UUID Name12cc495a8e364a cl-genesis-data137033fcdb5471 el-genesis-data14a3aef43fc738 genesis-generation-config-cl158e968005fc9d genesis-generation-config-el163182cca9d3cd geth-prefunded-keys178421166e234f prysm-password18d9e6e8d44d99 validator-keystore-01923f5ba517394 validator-keystore-1204d28dea40b5c validator-keystore-22122========================================== User Services ==========================================23UUID Name Ports Status24485e6fde55ae cl-client-0-beacon http: 4000/tcp -> http://127.0.0.1:65010 RUNNING25 metrics: 5054/tcp -> http://127.0.0.1:6501126 tcp-discovery: 9000/tcp -> 127.0.0.1:6501227 udp-discovery: 9000/udp -> 127.0.0.1:544552873739bd158b2 cl-client-0-validator http: 5042/tcp -> 127.0.0.1:65016 RUNNING29 metrics: 5064/tcp -> http://127.0.0.1:65017301b0a233cd011 cl-client-1-beacon http: 4000/tcp -> 127.0.0.1:65021 RUNNING31 metrics: 8008/tcp -> 127.0.0.1:6502332 tcp-discovery: 9000/tcp -> 127.0.0.1:6502433 udp-discovery: 9000/udp -> 127.0.0.1:5603134 validator-metrics: 5064/tcp -> 127.0.0.1:6502235949b8220cd53 cl-client-1-validator http: 4000/tcp -> 127.0.0.1:65028 RUNNING36 metrics: 8008/tcp -> 127.0.0.1:6503037 tcp-discovery: 9000/tcp -> 127.0.0.1:6503138 udp-discovery: 9000/udp -> 127.0.0.1:6078439 validator-metrics: 5064/tcp -> 127.0.0.1:6502940c34417bea5fa cl-client-2 http: 4000/tcp -> 127.0.0.1:65037 RUNNING41 metrics: 8008/tcp -> 127.0.0.1:6503542 tcp-discovery: 9000/tcp -> 127.0.0.1:6503643 udp-discovery: 9000/udp -> 127.0.0.1:6358144e19738e6329d el-client-0 engine-rpc: 8551/tcp -> 127.0.0.1:64986 RUNNING45 rpc: 8545/tcp -> 127.0.0.1:6498846 tcp-discovery: 30303/tcp -> 127.0.0.1:6498747 udp-discovery: 30303/udp -> 127.0.0.1:5570648 ws: 8546/tcp -> 127.0.0.1:6498949e904687449d9 el-client-1 engine-rpc: 8551/tcp -> 127.0.0.1:64993 RUNNING50 rpc: 8545/tcp -> 127.0.0.1:6499551 tcp-discovery: 30303/tcp -> 127.0.0.1:6499452 udp-discovery: 30303/udp -> 127.0.0.1:5809653 ws: 8546/tcp -> 127.0.0.1:6499654ad6f401126fa el-client-2 engine-rpc: 8551/tcp -> 127.0.0.1:65003 RUNNING55 rpc: 8545/tcp -> 127.0.0.1:6500156 tcp-discovery: 30303/tcp -> 127.0.0.1:6500057 udp-discovery: 30303/udp -> 127.0.0.1:5726958 ws: 8546/tcp -> 127.0.0.1:650025912d04a9dbb69 prelaunch-data-generator-1680882122181135513 <none> STOPPED605b45f9c0504b prelaunch-data-generator-1680882122192182847 <none> STOPPED613d4aaa75e218 prelaunch-data-generator-1680882122201668972 <none> STOPPEDسب دکھائیںمبارک ہو! آپ نے کامیابی کے ساتھ اپنے مقامی ٹیسٹ نیٹ کو 1 کے بجائے 3 نوڈس رکھنے کے لیے کنفیگر کر لیا ہے۔ اپنے dApp کے خلاف وہی ورک فلو چلانے کے لیے جو آپ نے پہلے کیے تھے (تعیناتی اور ٹیسٹ)، اپنی hardhat.config.ts کنفیگریشن فائل میں localnet اسٹرکٹ میں <$YOUR_PORT> کو اپنے نئے، 3-نوڈ مقامی ٹیسٹ نیٹ میں کسی بھی el-client-<num> سروس سے rpc uri آؤٹ پٹ کے پورٹ سے تبدیل کر کے وہی کام انجام دیں جو ہم نے پہلے کیے تھے۔
نتیجہ
اور بس! اس مختصر گائیڈ کا خلاصہ کرنے کے لیے، آپ نے:
- Kurtosis کا استعمال کرتے ہوئے Docker پر ایک مقامی Ethereum ٹیسٹ نیٹ بنایا
- اپنے مقامی dApp ڈیولپمنٹ ماحول کو مقامی Ethereum نیٹ ورک سے جوڑا
- ایک dApp تعینات کیا اور مقامی Ethereum نیٹ ورک پر اس کے خلاف ایک سادہ ٹیسٹ چلایا
- بنیادی Ethereum نیٹ ورک کو 3 نوڈس رکھنے کے لیے کنفیگر کیا
ہم آپ سے یہ سننا پسند کریں گے کہ آپ کے لیے کیا اچھا رہا، کیا بہتر کیا جا سکتا ہے، یا آپ کے کسی بھی سوال کا جواب دینا چاہیں گے۔ GitHub (opens in a new tab) کے ذریعے رابطہ کرنے یا ہمیں ای میل کرنے (opens email client) میں ہچکچاہٹ محسوس نہ کریں!
دیگر مثالیں اور گائیڈز
ہم آپ کی حوصلہ افزائی کرتے ہیں کہ آپ ہمارا کوئیک اسٹارٹ (quickstart) (opens in a new tab) (جہاں آپ ایک Postgres ڈیٹا بیس اور اس کے اوپر API بنائیں گے) اور ہماری awesome-kurtosis ریپوزٹری (opens in a new tab) میں ہماری دیگر مثالیں دیکھیں جہاں آپ کو کچھ بہترین مثالیں ملیں گی، بشمول ان کے پیکجز:
- اسی مقامی Ethereum ٹیسٹ نیٹ کو اسپن اپ کرنا (opens in a new tab)، لیکن اضافی سروسز کے ساتھ جیسے کہ ٹرانزیکشن اسپیمر (ٹرانزیکشنز کی نقل کرنے کے لیے)، ایک فورک مانیٹر، اور ایک منسلک Grafana اور Prometheus انسٹینس
- اسی مقامی Ethereum نیٹ ورک کے خلاف سب نیٹ ورکنگ ٹیسٹ (opens in a new tab) انجام دینا
صفحہ کی آخری اپ ڈیٹ: 3 مارچ، 2026