---
title: "⁦مقامی، ملٹی کلائنٹ آزمائشی نیٹ ورک پر غیر مرکزی ایپلی کیشن (dapp) تیار اور ٹیسٹ کرنے کا طریقہ⁩"
description: "⁦یہ گائیڈ آپ کو پہلے یہ بتائے گی کہ غیر مرکزی ایپلی کیشن (dapp) کو تعینات کرنے اور ٹیسٹ کرنے کے لیے آزمائشی نیٹ ورک استعمال کرنے سے پہلے ملٹی کلائنٹ مقامی ایتھیریم آزمائشی نیٹ ورک کو کیسے شروع اور کنفیگر کیا جائے۔⁩"
author: "ٹیڈی میٹیکو"
tags:
  [
    "کلائنٹس",
    "نوڈز",
    "سمارٹ کنٹریکٹس",
    "قابلِ ترکیبیت",
    "اتفاق رائے کی تہہ",
    "عمل درآمد کی تہہ",
    "ٹیسٹنگ",
  ]
skill: intermediate
breadcrumb: "⁦ملٹی کلائنٹ آزمائشی نیٹ ورک⁩"
lang: ur
published: 2023-04-11
---

## تعارف {#introduction}

یہ گائیڈ آپ کو ایک قابلِ تشکیل مقامی ایتھیریم آزمائشی نیٹ ورک شروع کرنے، اس پر سمارٹ کنٹریکٹ تعینات کرنے، اور اپنی غیر مرکزی ایپلی کیشن (dapp) کے خلاف ٹیسٹ چلانے کے لیے آزمائشی نیٹ ورک استعمال کرنے کے عمل سے آگاہ کرتی ہے۔ یہ گائیڈ ان dapp ڈیولپرز کے لیے بنائی گئی ہے جو لائیو آزمائشی نیٹ ورک یا مین نیٹ پر تعینات کرنے سے پہلے مختلف نیٹ ورک کنفیگریشنز کے خلاف مقامی طور پر اپنی dapps تیار اور ٹیسٹ کرنا چاہتے ہیں۔

اس گائیڈ میں، آپ یہ کریں گے:

- [Kurtosis](https://www.kurtosis.com/) کا استعمال کرتے ہوئے [`eth-network-package`](https://github.com/kurtosis-tech/eth-network-package) کے ساتھ ایک مقامی ایتھیریم آزمائشی نیٹ ورک شروع کریں گے،
- ایک dapp کو مرتب کرنے، تعینات کرنے اور ٹیسٹ کرنے کے لیے اپنے Hardhat dapp ڈیولپمنٹ ماحول کو مقامی آزمائشی نیٹ ورک سے جوڑیں گے، اور
- مختلف نیٹ ورک کنفیگریشنز کے خلاف ڈیولپمنٹ اور ٹیسٹنگ ورک فلو کو فعال کرنے کے لیے مقامی آزمائشی نیٹ ورک کو کنفیگر کریں گے، جس میں نوڈز کی تعداد اور مخصوص EL/CL کلائنٹ کی جوڑی جیسے پیرامیٹرز شامل ہیں۔

### Kurtosis کیا ہے؟ {#what-is-kurtosis}

[Kurtosis](https://www.kurtosis.com/) ایک قابلِ ترکیب بلڈ سسٹم ہے جسے ملٹی کنٹینر ٹیسٹ ماحول کو کنفیگر کرنے کے لیے ڈیزائن کیا گیا ہے۔ یہ خاص طور پر ڈیولپرز کو ایسے قابلِ تولید ماحول بنانے کے قابل بناتا ہے جن کے لیے متحرک سیٹ اپ منطق کی ضرورت ہوتی ہے، جیسے کہ بلاک چین آزمائشی نیٹ ورکس۔

اس گائیڈ میں، Kurtosis eth-network-package ایک مقامی ایتھیریم آزمائشی نیٹ ورک شروع کرتا ہے جس میں [`geth`](https://geth.ethereum.org/) عمل درآمد کی تہہ (EL) کلائنٹ کے ساتھ ساتھ [`teku`](https://consensys.io/teku)، [`lighthouse`](https://lighthouse.sigmaprime.io/)، اور [`lodestar`](https://lodestar.chainsafe.io/) اتفاق رائے کی تہہ (CL) کلائنٹس کی معاونت شامل ہے۔ یہ پیکیج Hardhat Network، Ganache، اور Anvil جیسے فریم ورکس میں نیٹ ورکس کے لیے ایک قابلِ تشکیل اور قابلِ ترکیب متبادل کے طور پر کام کرتا ہے۔ Kurtosis ڈیولپرز کو ان کے استعمال کردہ آزمائشی نیٹ ورکس پر زیادہ کنٹرول اور لچک فراہم کرتا ہے، جو ایک بڑی وجہ ہے کہ [ایتھیریم فاؤنڈیشن نے دی مرج کو ٹیسٹ کرنے کے لیے Kurtosis کا استعمال کیا](https://www.kurtosis.com/blog/testing-the-ethereum-merge) اور نیٹ ورک اپ گریڈز کی ٹیسٹنگ کے لیے اس کا استعمال جاری رکھے ہوئے ہے۔

## Kurtosis کو سیٹ اپ کرنا {#setting-up-kurtosis}

آگے بڑھنے سے پہلے، یقینی بنائیں کہ آپ کے پاس یہ موجود ہیں:

- اپنی مقامی مشین پر [Docker انجن انسٹال اور شروع کر لیا ہے](https://docs.kurtosis.com/install/#i-install--start-docker)
- [Kurtosis CLI انسٹال کر لی ہے](https://docs.kurtosis.com/install#ii-install-the-cli) (یا اگر آپ کے پاس پہلے سے ہی CLI انسٹال ہے تو اسے تازہ ترین ریلیز پر اپ گریڈ کر لیا ہے)
- [Node.js](https://nodejs.org/en)، [yarn](https://classic.yarnpkg.com/lang/en/docs/install/#mac-stable)، اور [npx](https://www.npmjs.com/package/npx) انسٹال کر لیے ہیں (آپ کے dapp ماحول کے لیے)

## مقامی ایتھیریم آزمائشی نیٹ ورک شروع کرنا {#instantiate-testnet}

مقامی ایتھیریم آزمائشی نیٹ ورک شروع کرنے کے لیے، یہ چلائیں:

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

نوٹ: یہ کمانڈ `--enclave` فلیگ کا استعمال کرتے ہوئے آپ کے نیٹ ورک کا نام "local-eth-testnet" رکھتی ہے۔

Kurtosis اندرونی طور پر اٹھائے جانے والے اقدامات کو پرنٹ کرے گا کیونکہ یہ ہدایات کی تشریح، توثیق، اور پھر ان پر عمل درآمد کرنے کا کام کرتا ہے۔ آخر میں، آپ کو ایک آؤٹ پٹ نظر آنی چاہیے جو درج ذیل سے ملتی جلتی ہو:

```python
INFO[2023-04-04T18:09:44-04:00] ======================================================
INFO[2023-04-04T18:09:44-04:00] ||          Created enclave: local-eth-testnet      ||
INFO[2023-04-04T18:09:44-04:00] ======================================================
Name:            local-eth-testnet
UUID:            39372d756ae8
Status:          RUNNING
Creation Time:   Tue, 04 Apr 2023 18:09:03 EDT

========================================= Files Artifacts =========================================
UUID           Name
d4085a064230   cl-genesis-data
1c62cb792e4c   el-genesis-data
bd60489b73a7   genesis-generation-config-cl
b2e593fe5228   genesis-generation-config-el
d552a54acf78   geth-prefunded-keys
5f7e661eb838   prysm-password
054e7338bb59   validator-keystore-0

========================================== User Services ==========================================
UUID           Name                                           Ports                                         Status
e20f129ee0c5   cl-client-0-beacon                             http: 4000/tcp -> <http://127.0.0.1:54261>    RUNNING
                                                              metrics: 5054/tcp -> <http://127.0.0.1:54262>
                                                              tcp-discovery: 9000/tcp -> 127.0.0.1:54263
                                                              udp-discovery: 9000/udp -> 127.0.0.1:60470
a8b6c926cdb4   cl-client-0-validator                          http: 5042/tcp -> 127.0.0.1:54267             RUNNING
                                                              metrics: 5064/tcp -> <http://127.0.0.1:54268>
d7b802f623e8   el-client-0                                    engine-rpc: 8551/tcp -> 127.0.0.1:54253       RUNNING
                                                              rpc: 8545/tcp -> 127.0.0.1:54251
                                                              tcp-discovery: 30303/tcp -> 127.0.0.1:54254
                                                              udp-discovery: 30303/udp -> 127.0.0.1:53834
                                                              ws: 8546/tcp -> 127.0.0.1:54252
514a829c0a84   prelaunch-data-generator-1680646157905431468   <none>                                        STOPPED
62bd62d0aa7a   prelaunch-data-generator-1680646157915424301   <none>                                        STOPPED
05e9619e0e90   prelaunch-data-generator-1680646157922872635   <none>                                        STOPPED

```

مبارک ہو! آپ نے Docker پر CL (`lighthouse`) اور EL کلائنٹ (`geth`) کے ساتھ ایک مقامی ایتھیریم آزمائشی نیٹ ورک شروع کرنے کے لیے Kurtosis کا استعمال کیا ہے۔

### جائزہ {#review-instantiate-testnet}

اس سیکشن میں، آپ نے ایک کمانڈ چلائی جس نے Kurtosis کو ہدایت کی کہ وہ Kurtosis [Enclave](https://docs.kurtosis.com/advanced-concepts/enclaves/) کے اندر ایک مقامی ایتھیریم آزمائشی نیٹ ورک شروع کرنے کے لیے [GitHub پر دور دراز سے ہوسٹ کیے گئے `eth-network-package`](https://github.com/kurtosis-tech/eth-network-package) کا استعمال کرے۔ آپ کے انکلیو (enclave) کے اندر، آپ کو "فائل آرٹفیکٹس" اور "صارف کی خدمات" دونوں ملیں گے۔

آپ کے انکلیو میں موجود [فائل آرٹفیکٹس](https://docs.kurtosis.com/advanced-concepts/files-artifacts/) میں وہ تمام ڈیٹا شامل ہے جو EL اور CL کلائنٹس کو بوٹ اسٹریپ کرنے کے لیے تیار اور استعمال کیا گیا ہے۔ یہ ڈیٹا اس [Docker امیج](https://github.com/ethpandaops/ethereum-genesis-generator) سے بنی `prelaunch-data-generator` سروس کا استعمال کرتے ہوئے بنایا گیا تھا۔

صارف کی خدمات آپ کے انکلیو میں کام کرنے والی تمام کنٹینرائزڈ خدمات کو ظاہر کرتی ہیں۔ آپ دیکھیں گے کہ ایک واحد نوڈ، جس میں EL کلائنٹ اور CL کلائنٹ دونوں شامل ہیں، بنایا گیا ہے۔

## اپنے dapp ڈیولپمنٹ ماحول کو مقامی ایتھیریم آزمائشی نیٹ ورک سے جوڑیں {#connect-your-dapp}

### dapp ڈیولپمنٹ ماحول سیٹ اپ کریں {#set-up-dapp-env}

اب جب کہ آپ کے پاس ایک چلتا ہوا مقامی آزمائشی نیٹ ورک ہے، آپ اپنے مقامی آزمائشی نیٹ ورک کو استعمال کرنے کے لیے اپنے dapp ڈیولپمنٹ ماحول کو جوڑ سکتے ہیں۔ اس گائیڈ میں آپ کے مقامی آزمائشی نیٹ ورک پر بلیک جیک dapp کو تعینات کرنے کے لیے Hardhat فریم ورک کا استعمال کیا جائے گا۔

اپنے dapp ڈیولپمنٹ ماحول کو سیٹ اپ کرنے کے لیے، اس ریپوزٹری کو کلون کریں جس میں ہماری نمونہ dapp شامل ہے اور اس کی انحصاریاں (dependencies) انسٹال کریں، یہ چلائیں:

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

یہاں استعمال ہونے والے [smart-contract-example](https://github.com/kurtosis-tech/awesome-kurtosis/tree/main/smart-contract-example) فولڈر میں [Hardhat](https://hardhat.org/) فریم ورک استعمال کرنے والے dapp ڈیولپر کے لیے عام سیٹ اپ شامل ہے:

- [`contracts/`](https://github.com/kurtosis-tech/awesome-kurtosis/tree/main/smart-contract-example/contracts) میں بلیک جیک dapp کے لیے چند سادہ سمارٹ کنٹریکٹس شامل ہیں
- [`scripts/`](https://github.com/kurtosis-tech/awesome-kurtosis/tree/main/smart-contract-example/scripts) میں آپ کے مقامی ایتھیریم نیٹ ورک پر ٹوکن کنٹریکٹ تعینات کرنے کے لیے ایک اسکرپٹ شامل ہے
- [`test/`](https://github.com/kurtosis-tech/awesome-kurtosis/tree/main/smart-contract-example/test) میں آپ کے ٹوکن کنٹریکٹ کے لیے ایک سادہ .js ٹیسٹ شامل ہے تاکہ اس بات کی تصدیق کی جا سکے کہ ہماری بلیک جیک dapp میں ہر کھلاڑی کے لیے <span dir="ltr">1000</span> منٹ (mint) کیے گئے ہیں
- [`hardhat.config.ts`](https://github.com/kurtosis-tech/awesome-kurtosis/blob/main/smart-contract-example/hardhat.config.ts) آپ کے Hardhat سیٹ اپ کو کنفیگر کرتا ہے

### مقامی آزمائشی نیٹ ورک استعمال کرنے کے لیے Hardhat کو کنفیگر کریں {#configure-hardhat}

اپنے dapp ڈیولپمنٹ ماحول کے سیٹ اپ کے ساتھ، اب آپ Kurtosis کا استعمال کرتے ہوئے تیار کردہ مقامی ایتھیریم آزمائشی نیٹ ورک کو استعمال کرنے کے لیے Hardhat کو جوڑیں گے۔ اسے مکمل کرنے کے لیے، اپنی `hardhat.config.ts` کنفیگریشن فائل میں `localnet` اسٹرکٹ (struct) میں موجود `<$YOUR_PORT>` کو کسی بھی `el-client-<num>` سروس سے rpc uri آؤٹ پٹ کی پورٹ سے تبدیل کریں۔ اس نمونے کے معاملے میں، پورٹ `64248` ہوگی۔ آپ کی پورٹ مختلف ہوگی۔

`hardhat.config.ts` میں مثال:

```js
localnet: {
url: 'http://127.0.0.1:<$YOUR_PORT>',// TODO: $YOUR_PORT کو ETH نیٹ ورک Kurtosis پیکج کے ذریعے تیار کردہ نوڈ URI کے پورٹ سے تبدیل کریں

// یہ eth-network-package کے ذریعے بنائے گئے پہلے سے فنڈڈ آزمائشی اکاؤنٹس سے وابستہ نجی کلیدیں ہیں
// <https://github.com/kurtosis-tech/eth-network-package/blob/main/src/prelaunch_data_generator/genesis_constants/genesis_constants.star>
accounts: [
    "ef5177cd0b6b21c87db5a0bf35d4084a8a57a9d6a064f86d51ac85f2b873a4e2",
    "48fcc39ae27a0e8bf0274021ae6ebd8fe4a0e12623d61464c498900b28feb567",
    "7988b3a148716ff800414935b305436493e1f25237a2a03e5eebc343735e2f31",
    "b3c409b6b0b3aa5e65ab2dc1930534608239a478106acf6f3d9178e9f9b00b35",
    "df9bb6de5d3dc59595bcaa676397d837ff49441d211878c024eabda2cd067c9f",
    "7da08f856b5956d40a72968f93396f6acff17193f013e8053f6fbb6c08c194d6",
  ],
},
```

ایک بار جب آپ اپنی فائل محفوظ کر لیتے ہیں، تو آپ کا Hardhat dapp ڈیولپمنٹ ماحول اب آپ کے مقامی ایتھیریم آزمائشی نیٹ ورک سے جڑ گیا ہے! آپ یہ چلا کر تصدیق کر سکتے ہیں کہ آپ کا آزمائشی نیٹ ورک کام کر رہا ہے:

```python
npx hardhat balances --network localnet
```

آؤٹ پٹ کچھ اس طرح نظر آنی چاہیے:

```python
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 کو تعینات اور ٹیسٹ کریں {#deploy-and-test-dapp}

dapp ڈیولپمنٹ ماحول کے مقامی ایتھیریم آزمائشی نیٹ ورک سے مکمل طور پر جڑ جانے کے بعد، اب آپ مقامی آزمائشی نیٹ ورک کا استعمال کرتے ہوئے اپنی dapp کے خلاف ڈیولپمنٹ اور ٹیسٹنگ ورک فلو چلا سکتے ہیں۔

مقامی پروٹو ٹائپنگ اور ڈیولپمنٹ کے لیے `ChipToken.sol` سمارٹ کنٹریکٹ کو مرتب اور تعینات کرنے کے لیے، یہ چلائیں:

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

آؤٹ پٹ کچھ اس طرح نظر آنی چاہیے:

```python
ChipToken deployed to: 0xAb2A01BC351770D09611Ac80f1DE076D56E0487d
```

اب اپنی مقامی dapp کے خلاف `simple.js` ٹیسٹ چلانے کی کوشش کریں تاکہ اس بات کی تصدیق کی جا سکے کہ ہماری بلیک جیک dapp میں ہر کھلاڑی کے لیے <span dir="ltr">1000</span> منٹ (mint) کیے گئے ہیں:

آؤٹ پٹ کچھ اس طرح نظر آنی چاہیے:

```python
npx hardhat test --network localnet
```

آؤٹ پٹ کچھ اس طرح نظر آنی چاہیے:

```python
ChipToken
    mint
      ✔ should mint 1000 chips for PLAYER ONE

  1 passing (654ms)
```

### جائزہ {#review-dapp-workflows}

اس مقام پر، اب آپ نے ایک dapp ڈیولپمنٹ ماحول سیٹ اپ کر لیا ہے، اسے Kurtosis کے ذریعے بنائے گئے مقامی ایتھیریم نیٹ ورک سے جوڑ دیا ہے، اور اپنی dapp کے خلاف ایک سادہ ٹیسٹ مرتب، تعینات، اور چلا لیا ہے۔

اب آئیے دریافت کرتے ہیں کہ آپ مختلف نیٹ ورک کنفیگریشنز کے تحت ہماری dapps کی ٹیسٹنگ کے لیے بنیادی نیٹ ورک کو کیسے کنفیگر کر سکتے ہیں۔

## مقامی ایتھیریم آزمائشی نیٹ ورک کو کنفیگر کرنا {#configure-testnet}

### کلائنٹ کنفیگریشنز اور نوڈز کی تعداد کو تبدیل کرنا {#configure-client-config-and-num-nodes}

آپ کے مقامی ایتھیریم آزمائشی نیٹ ورک کو مختلف EL اور CL کلائنٹ کے جوڑوں کے ساتھ ساتھ نوڈز کی مختلف تعداد استعمال کرنے کے لیے کنفیگر کیا جا سکتا ہے، جس کا انحصار اس منظر نامے اور مخصوص نیٹ ورک کنفیگریشن پر ہے جسے آپ تیار یا ٹیسٹ کرنا چاہتے ہیں۔ اس کا مطلب یہ ہے کہ، ایک بار سیٹ اپ ہونے کے بعد، آپ ایک حسب ضرورت مقامی آزمائشی نیٹ ورک شروع کر سکتے ہیں اور اسے مختلف نیٹ ورک کنفیگریشنز کے تحت انہی ورک فلوز (تعیناتی، ٹیسٹ وغیرہ) کو چلانے کے لیے استعمال کر سکتے ہیں تاکہ یہ یقینی بنایا جا سکے کہ سب کچھ توقع کے مطابق کام کر رہا ہے۔ ان دیگر پیرامیٹرز کے بارے میں مزید جاننے کے لیے جنہیں آپ تبدیل کر سکتے ہیں، اس لنک پر جائیں۔

اسے آزما کر دیکھیں! آپ JSON فائل کے ذریعے `eth-network-package` کو مختلف کنفیگریشن آپشنز پاس کر سکتے ہیں۔ یہ نیٹ ورک پیرامیٹرز JSON فائل وہ مخصوص کنفیگریشنز فراہم کرتی ہے جنہیں Kurtosis مقامی ایتھیریم نیٹ ورک سیٹ اپ کرنے کے لیے استعمال کرے گا۔

ڈیفالٹ کنفیگریشن فائل لیں اور مختلف EL/CL جوڑوں کے ساتھ دو نوڈز شروع کرنے کے لیے اس میں ترمیم کریں:

- `geth`/`lighthouse` کے ساتھ نوڈ 1
- `geth`/`lodestar` کے ساتھ نوڈ 2
- `geth`/`teku` کے ساتھ نوڈ 3

یہ کنفیگریشن آپ کی dapp کی ٹیسٹنگ کے لیے ایتھیریم نوڈ کے نفاذ کا ایک متضاد (heterogeneous) نیٹ ورک بناتی ہے۔ آپ کی کنفیگریشن فائل اب اس طرح نظر آنی چاہیے:

```yaml
{
  "participants":
    [
      {
        "el_client_type": "geth",
        "el_client_image": "",
        "el_client_log_level": "",
        "cl_client_type": "lighthouse",
        "cl_client_image": "",
        "cl_client_log_level": "",
        "beacon_extra_params": [],
        "el_extra_params": [],
        "validator_extra_params": [],
        "builder_network_params": null,
      },
      {
        "el_client_type": "geth",
        "el_client_image": "",
        "el_client_log_level": "",
        "cl_client_type": "lodestar",
        "cl_client_image": "",
        "cl_client_log_level": "",
        "beacon_extra_params": [],
        "el_extra_params": [],
        "validator_extra_params": [],
        "builder_network_params": null,
      },
      {
        "el_client_type": "geth",
        "el_client_image": "",
        "el_client_log_level": "",
        "cl_client_type": "teku",
        "cl_client_image": "",
        "cl_client_log_level": "",
        "beacon_extra_params": [],
        "el_extra_params": [],
        "validator_extra_params": [],
        "builder_network_params": null,
      },
    ],
  "network_params":
    {
      "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",
      "num_validator_keys_per_node": 64,
      "network_id": "3151908",
      "deposit_contract_address": "0x4242424242424242424242424242424242424242",
      "seconds_per_slot": 12,
      "genesis_delay": 120,
      "capella_fork_epoch": 5,
    },
}
```

ہر `participants` اسٹرکٹ (struct) نیٹ ورک میں ایک نوڈ سے میپ ہوتا ہے، لہذا <span dir="ltr">3</span> `participants` اسٹرکٹس Kurtosis کو آپ کے نیٹ ورک میں <span dir="ltr">3</span> نوڈز شروع کرنے کا بتائیں گے۔ ہر `participants` اسٹرکٹ آپ کو اس مخصوص نوڈ کے لیے استعمال ہونے والے EL اور CL جوڑے کی وضاحت کرنے کی اجازت دے گا۔

`network_params` اسٹرکٹ ان نیٹ ورک سیٹنگز کو کنفیگر کرتا ہے جو ہر نوڈ کے لیے جینیسس (genesis) فائلیں بنانے کے ساتھ ساتھ نیٹ ورک کے سیکنڈز فی سلاٹ جیسی دیگر سیٹنگز کے لیے استعمال ہوتی ہیں۔

اپنی ترمیم شدہ پیرامیٹرز فائل کو اپنی مرضی کی کسی بھی ڈائرکٹری میں محفوظ کریں (نیچے دی گئی مثال میں، اسے ڈیسک ٹاپ پر محفوظ کیا گیا ہے) اور پھر اسے چلا کر اپنا Kurtosis پیکیج چلانے کے لیے استعمال کریں:

```python
kurtosis 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 تھوڑی دیر کے لیے کام کرے گا اور ہونے والے انفرادی اقدامات کو پرنٹ کرے گا۔ بالآخر، آؤٹ پٹ کچھ اس طرح نظر آنی چاہیے:

```python
Starlark code successfully run. No output was returned.
INFO[2023-04-07T11:43:16-04:00] ==========================================================
INFO[2023-04-07T11:43:16-04:00] ||          Created enclave: local-eth-testnet          ||
INFO[2023-04-07T11:43:16-04:00] ==========================================================
Name:            local-eth-testnet
UUID:            bef8c192008e
Status:          RUNNING
Creation Time:   Fri, 07 Apr 2023 11:41:58 EDT

========================================= Files Artifacts =========================================
UUID           Name
cc495a8e364a   cl-genesis-data
7033fcdb5471   el-genesis-data
a3aef43fc738   genesis-generation-config-cl
8e968005fc9d   genesis-generation-config-el
3182cca9d3cd   geth-prefunded-keys
8421166e234f   prysm-password
d9e6e8d44d99   validator-keystore-0
23f5ba517394   validator-keystore-1
4d28dea40b5c   validator-keystore-2

========================================== User Services ==========================================
UUID           Name                                           Ports                                            Status
485e6fde55ae   cl-client-0-beacon                             http: 4000/tcp -> http://127.0.0.1:65010         RUNNING
                                                              metrics: 5054/tcp -> http://127.0.0.1:65011
                                                              tcp-discovery: 9000/tcp -> 127.0.0.1:65012
                                                              udp-discovery: 9000/udp -> 127.0.0.1:54455
73739bd158b2   cl-client-0-validator                          http: 5042/tcp -> 127.0.0.1:65016                RUNNING
                                                              metrics: 5064/tcp -> http://127.0.0.1:65017
1b0a233cd011   cl-client-1-beacon                             http: 4000/tcp -> 127.0.0.1:65021                RUNNING
                                                              metrics: 8008/tcp -> 127.0.0.1:65023
                                                              tcp-discovery: 9000/tcp -> 127.0.0.1:65024
                                                              udp-discovery: 9000/udp -> 127.0.0.1:56031
                                                              validator-metrics: 5064/tcp -> 127.0.0.1:65022
949b8220cd53   cl-client-1-validator                          http: 4000/tcp -> 127.0.0.1:65028                RUNNING
                                                              metrics: 8008/tcp -> 127.0.0.1:65030
                                                              tcp-discovery: 9000/tcp -> 127.0.0.1:65031
                                                              udp-discovery: 9000/udp -> 127.0.0.1:60784
                                                              validator-metrics: 5064/tcp -> 127.0.0.1:65029
c34417bea5fa   cl-client-2                                    http: 4000/tcp -> 127.0.0.1:65037                RUNNING
                                                              metrics: 8008/tcp -> 127.0.0.1:65035
                                                              tcp-discovery: 9000/tcp -> 127.0.0.1:65036
                                                              udp-discovery: 9000/udp -> 127.0.0.1:63581
e19738e6329d   el-client-0                                    engine-rpc: 8551/tcp -> 127.0.0.1:64986          RUNNING
                                                              rpc: 8545/tcp -> 127.0.0.1:64988
                                                              tcp-discovery: 30303/tcp -> 127.0.0.1:64987
                                                              udp-discovery: 30303/udp -> 127.0.0.1:55706
                                                              ws: 8546/tcp -> 127.0.0.1:64989
e904687449d9   el-client-1                                    engine-rpc: 8551/tcp -> 127.0.0.1:64993          RUNNING
                                                              rpc: 8545/tcp -> 127.0.0.1:64995
                                                              tcp-discovery: 30303/tcp -> 127.0.0.1:64994
                                                              udp-discovery: 30303/udp -> 127.0.0.1:58096
                                                              ws: 8546/tcp -> 127.0.0.1:64996
ad6f401126fa   el-client-2                                    engine-rpc: 8551/tcp -> 127.0.0.1:65003          RUNNING
                                                              rpc: 8545/tcp -> 127.0.0.1:65001
                                                              tcp-discovery: 30303/tcp -> 127.0.0.1:65000
                                                              udp-discovery: 30303/udp -> 127.0.0.1:57269
                                                              ws: 8546/tcp -> 127.0.0.1:65002
12d04a9dbb69   prelaunch-data-generator-1680882122181135513   <none>                                           STOPPED
5b45f9c0504b   prelaunch-data-generator-1680882122192182847   <none>                                           STOPPED
3d4aaa75e218   prelaunch-data-generator-1680882122201668972   <none>                                           STOPPED
```

مبارک ہو! آپ نے کامیابی کے ساتھ اپنے مقامی آزمائشی نیٹ ورک کو <span dir="ltr">1</span> کے بجائے <span dir="ltr">3</span> نوڈز رکھنے کے لیے کنفیگر کر لیا ہے۔ اپنی dapp کے خلاف وہی ورک فلوز چلانے کے لیے جو آپ نے پہلے کیے تھے (تعینات اور ٹیسٹ)، اپنی `hardhat.config.ts` کنفیگریشن فائل میں `localnet` اسٹرکٹ میں موجود `<$YOUR_PORT>` کو اپنے نئے، <span dir="ltr">3</span>-نوڈ مقامی آزمائشی نیٹ ورک میں کسی بھی `el-client-<num>` سروس سے rpc uri آؤٹ پٹ کی پورٹ سے تبدیل کر کے وہی کام انجام دیں جو ہم نے پہلے کیے تھے۔

## نتیجہ {#conclusion}

اور بس! اس مختصر گائیڈ کا خلاصہ کرنے کے لیے، آپ نے:

- Kurtosis کا استعمال کرتے ہوئے Docker پر ایک مقامی ایتھیریم آزمائشی نیٹ ورک بنایا
- اپنے مقامی dapp ڈیولپمنٹ ماحول کو مقامی ایتھیریم نیٹ ورک سے جوڑا
- مقامی ایتھیریم نیٹ ورک پر ایک dapp تعینات کی اور اس کے خلاف ایک سادہ ٹیسٹ چلایا
- بنیادی ایتھیریم نیٹ ورک کو <span dir="ltr">3</span> نوڈز رکھنے کے لیے کنفیگر کیا

ہم آپ سے یہ سننا پسند کریں گے کہ آپ کے لیے کیا اچھا رہا، کیا بہتر کیا جا سکتا ہے، یا آپ کے کسی بھی سوال کا جواب دینا چاہیں گے۔ [GitHub](https://github.com/kurtosis-tech/kurtosis/issues/new/choose) کے ذریعے رابطہ کرنے یا [ہمیں ای میل کرنے](mailto:feedback@kurtosistech.com) میں ہچکچاہٹ محسوس نہ کریں!

### دیگر مثالیں اور گائیڈز {#other-examples-guides}

ہم آپ کی حوصلہ افزائی کرتے ہیں کہ آپ ہماری [کوئیک اسٹارٹ](https://docs.kurtosis.com/quickstart) (جہاں آپ ایک Postgres ڈیٹا بیس اور اس کے اوپر API بنائیں گے) اور ہماری [awesome-kurtosis ریپوزٹری](https://github.com/kurtosis-tech/awesome-kurtosis) میں ہماری دیگر مثالیں دیکھیں جہاں آپ کو کچھ بہترین مثالیں ملیں گی، بشمول ان کے پیکیجز:

- [وہی مقامی ایتھیریم آزمائشی نیٹ ورک شروع کرنا](https://github.com/kurtosis-tech/eth2-package)، لیکن اضافی منسلک خدمات کے ساتھ جیسے کہ ٹرانزیکشن اسپیمر (ٹرانزیکشنز کی نقل کرنے کے لیے)، ایک فورک مانیٹر، اور ایک منسلک Grafana اور Prometheus انسٹینس
- اسی مقامی ایتھیریم نیٹ ورک کے خلاف [سب نیٹ ورکنگ ٹیسٹ](https://github.com/kurtosis-tech/awesome-kurtosis/tree/main/ethereum-network-partition-test) انجام دینا