---
title: "ایتھیریم اکاؤنٹس"
description: "ایتھیریم اکاؤنٹس کی وضاحت – ان کے ڈیٹا اسٹرکچرز اور کلیدی جوڑے کے علمِ تشفیر کے ساتھ ان کا تعلق۔"
lang: ur
---

ایک [ایتھیریم](/) اکاؤنٹ ایک ایسی ہستی ہے جس کا ایتھر (<span dir="ltr">ETH</span>) بیلنس ہوتا ہے جو ایتھیریم پر پیغامات بھیج سکتا ہے۔ اکاؤنٹس صارف کے زیر کنٹرول ہو سکتے ہیں یا سمارٹ کنٹریکٹس کے طور پر تعینات کیے جا سکتے ہیں۔

## پیشگی شرائط {#prerequisites}

اس صفحے کو بہتر طور پر سمجھنے میں آپ کی مدد کے لیے، ہم تجویز کرتے ہیں کہ آپ پہلے ہمارا [ایتھیریم کا تعارف](/developers/docs/intro-to-ethereum/) پڑھیں۔

## اکاؤنٹ کی اقسام {#types-of-account}

ایتھیریم میں اکاؤنٹ کی دو اقسام ہیں:

- بیرونی ملکیت والا اکاؤنٹ (EOA) – نجی کلیدوں والے کسی بھی شخص کے زیر کنٹرول
- کنٹریکٹ اکاؤنٹ – نیٹ ورک پر تعینات ایک سمارٹ کنٹریکٹ، جو کوڈ کے ذریعے کنٹرول ہوتا ہے۔ [سمارٹ کنٹریکٹس](/developers/docs/smart-contracts/) کے بارے میں جانیں

دونوں اکاؤنٹ کی اقسام میں یہ صلاحیت ہوتی ہے:

- <span dir="ltr">ETH</span> اور ٹوکنز وصول کرنا، رکھنا اور بھیجنا
- تعینات شدہ سمارٹ کنٹریکٹس کے ساتھ تعامل کرنا

### اہم اختلافات {#key-differences}

**بیرونی ملکیت والا**

- اکاؤنٹ بنانے پر کوئی لاگت نہیں آتی
- ٹرانزیکشنز شروع کر سکتا ہے
- بیرونی ملکیت والے اکاؤنٹس کے درمیان ٹرانزیکشنز صرف <span dir="ltr">ETH</span>/ٹوکن کی منتقلی ہو سکتی ہیں
- کلیدوں کے ایک تشفیری جوڑے پر مشتمل ہوتا ہے: عوامی اور نجی کلیدیں جو اکاؤنٹ کی سرگرمیوں کو کنٹرول کرتی ہیں

**کنٹریکٹ**

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

## ایک اکاؤنٹ کا جائزہ {#an-account-examined}

ایتھیریم اکاؤنٹس کے چار فیلڈز ہوتے ہیں:

- `nonce` – ایک کاؤنٹر جو بیرونی ملکیت والے اکاؤنٹ سے بھیجی گئی ٹرانزیکشنز کی تعداد یا کنٹریکٹ اکاؤنٹ کے ذریعے بنائے گئے کنٹریکٹس کی تعداد کو ظاہر کرتا ہے۔ ہر اکاؤنٹ کے لیے دیے گئے نانس کے ساتھ صرف ایک ٹرانزیکشن پر عمل کیا جا سکتا ہے، جو ری پلے حملوں سے بچاتا ہے جہاں دستخط شدہ ٹرانزیکشنز کو بار بار نشر اور دوبارہ عمل میں لایا جاتا ہے۔
- `balance` – اس پتے کی ملکیت میں موجود <span dir="ltr">Wei</span> کی تعداد۔ <span dir="ltr">Wei</span>، <span dir="ltr">ETH</span> کی ایک اکائی ہے اور فی <span dir="ltr">ETH</span> میں <span dir="ltr">1e+18 Wei</span> ہوتے ہیں۔
- `codeHash` – یہ ہیش ایتھیریم ورچوئل مشین (<span dir="ltr">EVM</span>) پر کسی اکاؤنٹ کے _کوڈ_ کا حوالہ دیتا ہے۔ کنٹریکٹ اکاؤنٹس میں کوڈ کے ٹکڑے پروگرام کیے گئے ہوتے ہیں جو مختلف افعال انجام دے سکتے ہیں۔ اگر اکاؤنٹ کو پیغام کی کال موصول ہوتی ہے تو اس <span dir="ltr">EVM</span> کوڈ پر عمل درآمد ہوتا ہے۔ اکاؤنٹ کے دیگر فیلڈز کے برعکس، اسے تبدیل نہیں کیا جا سکتا۔ ایسے تمام کوڈ کے ٹکڑے حالت کے ڈیٹا بیس میں ان کے متعلقہ ہیشز کے تحت بعد میں بازیافت کے لیے موجود ہوتے ہیں۔ اس ہیش ویلیو کو <span dir="ltr">codeHash</span> کے نام سے جانا جاتا ہے۔ بیرونی ملکیت والے اکاؤنٹس کے لیے، <span dir="ltr">codeHash</span> فیلڈ ایک خالی اسٹرنگ کا ہیش ہوتا ہے۔
- `storageRoot` – بعض اوقات اسے اسٹوریج ہیش کے نام سے جانا جاتا ہے۔ ایک [مرکل پیٹریشیا ٹرائی](/developers/docs/data-structures-and-encoding/patricia-merkle-trie/) کے روٹ نوڈ کا <span dir="ltr">256-bit</span> ہیش جو اکاؤنٹ کے اسٹوریج کے مواد کو انکوڈ کرتا ہے (<span dir="ltr">256-bit</span> انٹیجر ویلیوز کے درمیان ایک میپنگ)، جسے ٹرائی میں <span dir="ltr">256-bit</span> انٹیجر کلیدوں کے کیچاک-۲۵۶ ہیش سے <span dir="ltr">RLP</span>-انکوڈ شدہ <span dir="ltr">256-bit</span> انٹیجر ویلیوز کی میپنگ کے طور پر انکوڈ کیا جاتا ہے۔ یہ ٹرائی اس اکاؤنٹ کے اسٹوریج کے مواد کے ہیش کو انکوڈ کرتا ہے، اور پہلے سے طے شدہ طور پر خالی ہوتا ہے۔

![A diagram showing the make up of an account](./accounts.png)
_خاکہ [Ethereum EVM illustrated](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf) سے اخذ کیا گیا ہے_

## بیرونی ملکیت والے اکاؤنٹس اور کلیدی جوڑے {#externally-owned-accounts-and-key-pairs}

ایک اکاؤنٹ تشفیری کلیدوں کے ایک جوڑے پر مشتمل ہوتا ہے: عوامی اور نجی۔ یہ ثابت کرنے میں مدد کرتے ہیں کہ ٹرانزیکشن پر واقعی بھیجنے والے نے دستخط کیے تھے اور جعل سازی کو روکتے ہیں۔ آپ کی نجی کلید وہ ہے جسے آپ ٹرانزیکشنز پر دستخط کرنے کے لیے استعمال کرتے ہیں، لہذا یہ آپ کو آپ کے اکاؤنٹ سے وابستہ فنڈز کی تحویل فراہم کرتی ہے۔ آپ کبھی بھی حقیقت میں کرپٹو کرنسی نہیں رکھتے، آپ نجی کلیدیں رکھتے ہیں – فنڈز ہمیشہ ایتھیریم کے لیجر پر ہوتے ہیں۔

یہ بدنیتی پر مبنی عناصر کو جعلی ٹرانزیکشنز نشر کرنے سے روکتا ہے کیونکہ آپ ہمیشہ ٹرانزیکشن بھیجنے والے کی تصدیق کر سکتے ہیں۔

اگر ایلس (Alice) اپنے اکاؤنٹ سے باب (Bob) کے اکاؤنٹ میں ایتھر بھیجنا چاہتی ہے، تو ایلس کو ایک ٹرانزیکشن کی درخواست بنانی ہوگی اور اسے تصدیق کے لیے نیٹ ورک پر بھیجنا ہوگا۔ ایتھیریم کا پبلک-کی (public-key) علمِ تشفیر کا استعمال اس بات کو یقینی بناتا ہے کہ ایلس یہ ثابت کر سکے کہ اس نے اصل میں ٹرانزیکشن کی درخواست شروع کی تھی۔ تشفیری میکانزم کے بغیر، ایک بدنیتی پر مبنی حریف ایو (Eve) آسانی سے عوامی طور پر ایک ایسی درخواست نشر کر سکتی ہے جو کچھ اس طرح نظر آتی ہو "<span dir="ltr">5 ETH</span> ایلس کے اکاؤنٹ سے ایو کے اکاؤنٹ میں بھیجیں،" اور کوئی بھی اس بات کی تصدیق نہیں کر پائے گا کہ یہ ایلس کی طرف سے نہیں آئی تھی۔

## اکاؤنٹ بنانا {#account-creation}

جب آپ کوئی اکاؤنٹ بنانا چاہتے ہیں، تو زیادہ تر لائبریریاں آپ کو ایک بے ترتیب نجی کلید تیار کر کے دیں گی۔

ایک نجی کلید <span dir="ltr">64</span> ہیکس (hex) حروف پر مشتمل ہوتی ہے اور اسے پاس ورڈ کے ساتھ انکرپٹ کیا جا سکتا ہے۔

مثال:

`fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd036415f`

عوامی کلید کو نجی کلید سے [بیضوی منحنی ڈیجیٹل دستخط الگورتھم](https://wikipedia.org/wiki/Elliptic_Curve_Digital_Signature_Algorithm) کا استعمال کرتے ہوئے تیار کیا جاتا ہے۔ آپ عوامی کلید کے کیچاک-۲۵۶ ہیش کے آخری <span dir="ltr">20</span> بائٹس لے کر اور شروع میں `0x` شامل کر کے اپنے اکاؤنٹ کے لیے ایک عوامی پتہ حاصل کرتے ہیں۔

اس کا مطلب ہے کہ بیرونی ملکیت والے اکاؤنٹ (<span dir="ltr">EOA</span>) کا <span dir="ltr">42</span> حروف کا پتہ ہوتا ہے (<span dir="ltr">20</span> بائٹ کا حصہ جو <span dir="ltr">40</span> ہیکسا ڈیسیمل حروف کے علاوہ `0x` کا سابقہ ہے)۔

مثال:

`0x5e97870f263700f46aa00d967821199b9bc5a120`

درج ذیل مثال دکھاتی ہے کہ نیا اکاؤنٹ بنانے کے لیے [Clef](https://geth.ethereum.org/docs/tools/clef/introduction) نامی دستخط کرنے والے ٹول کا استعمال کیسے کیا جائے۔ Clef ایک اکاؤنٹ مینجمنٹ اور دستخط کرنے والا ٹول ہے جو ایتھیریم کلائنٹ، [Geth](https://geth.ethereum.org) کے ساتھ بنڈل آتا ہے۔ `clef newaccount` کمانڈ ایک نیا کلیدی جوڑا بناتی ہے اور انہیں ایک انکرپٹڈ کی اسٹور میں محفوظ کرتی ہے۔

```
> clef newaccount --keystore <path>

Please enter a password for the new account to be created:
> <password>

------------
INFO [10-28|16:19:09.156] Your new key was generated       address=0x5e97870f263700f46aa00d967821199b9bc5a120
WARN [10-28|16:19:09.306] Please backup your key file      path=/home/user/go-ethereum/data/keystore/UTC--2022-10-28T15-19-08.000825927Z--5e97870f263700f46aa00d967821199b9bc5a120
WARN [10-28|16:19:09.306] Please remember your password!
Generated account 0x5e97870f263700f46aa00d967821199b9bc5a120
```

[Geth کی دستاویزات](https://geth.ethereum.org/docs)

آپ کی نجی کلید سے نئی عوامی کلیدیں اخذ کرنا ممکن ہے، لیکن آپ عوامی کلیدوں سے نجی کلید اخذ نہیں کر سکتے۔ اپنی نجی کلیدوں کو محفوظ رکھنا انتہائی ضروری ہے اور، جیسا کہ نام سے ظاہر ہے، **نجی (PRIVATE)** رکھنا چاہیے۔

آپ کو پیغامات اور ٹرانزیکشنز پر دستخط کرنے کے لیے ایک نجی کلید کی ضرورت ہوتی ہے جو ایک دستخط آؤٹ پٹ کرتی ہے۔ پھر دوسرے لوگ آپ کی عوامی کلید اخذ کرنے کے لیے دستخط لے سکتے ہیں، جس سے پیغام کے مصنف کی تصدیق ہوتی ہے۔ اپنی ایپلیکیشن میں، آپ نیٹ ورک پر ٹرانزیکشنز بھیجنے کے لیے <span dir="ltr">JavaScript</span> لائبریری استعمال کر سکتے ہیں۔

## کنٹریکٹ اکاؤنٹس {#contract-accounts}

کنٹریکٹ اکاؤنٹس کا بھی ایک <span dir="ltr">42</span> حروف کا ہیکسا ڈیسیمل پتہ ہوتا ہے:

مثال:

`0x06012c8cf97bead5deae237070f9587f8e7a266d`

کنٹریکٹ کا پتہ عام طور پر اس وقت دیا جاتا ہے جب کوئی کنٹریکٹ ایتھیریم بلاک چین پر تعینات کیا جاتا ہے۔ یہ پتہ تخلیق کار کے پتے اور اس پتے سے بھیجی گئی ٹرانزیکشنز کی تعداد ("نانس") سے حاصل ہوتا ہے۔ اس طرح `CREATE` آپریشن ایک پتہ اخذ کرتا ہے۔

کنٹریکٹس کو [`CREATE2`](https://eips.ethereum.org/EIPS/eip-1014) کے ساتھ بھی تعینات کیا جا سکتا ہے، جو تخلیق کار کے پتے، تخلیق کار کی منتخب کردہ ایک ویلیو ("سالٹ")، اور کنٹریکٹ کے تخلیقی کوڈ کے ہیش سے پتہ اخذ کرتا ہے۔ اس میں کوئی نانس شامل نہیں ہوتا، لہذا کنٹریکٹ کے وجود میں آنے سے پہلے ہی پتے کا حساب لگایا جا سکتا ہے اور یہ تبدیل نہیں ہوتا، چاہے تخلیق کار اس دوران کتنی ہی دوسری ٹرانزیکشنز کیوں نہ بھیجے۔ اس سے کسی ایسے کنٹریکٹ کا حوالہ دینا ممکن ہو جاتا ہے جسے ابھی تک تعینات نہیں کیا گیا ہے۔

## توثیق کار کی کلیدیں {#validators-keys}

ایتھیریم میں ایک اور قسم کی کلید بھی ہے، جو اس وقت متعارف کرائی گئی جب ایتھیریم نے ثبوتِ کار (PoW) سے حصہ داری کا ثبوت (PoS) پر مبنی اتفاق رائے پر منتقلی کی۔ یہ '<span dir="ltr">BLS</span>' کلیدیں ہیں اور انہیں توثیق کاروں کی شناخت کے لیے استعمال کیا جاتا ہے۔ نیٹ ورک کو اتفاق رائے تک پہنچنے کے لیے درکار بینڈوتھ کو کم کرنے کے لیے ان کلیدوں کو مؤثر طریقے سے جمع کیا جا سکتا ہے۔ اس کلیدی جمع کے بغیر توثیق کار کے لیے کم از کم اسٹیک بہت زیادہ ہوگا۔

[توثیق کار کی کلیدوں کے بارے میں مزید](/developers/docs/consensus-mechanisms/pos/keys/)۔

## والیٹس پر ایک نوٹ {#a-note-on-wallets}

اکاؤنٹ کوئی والیٹ نہیں ہوتا۔ والیٹ ایک انٹرفیس یا ایپلیکیشن ہے جو آپ کو اپنے ایتھیریم اکاؤنٹ کے ساتھ تعامل کرنے دیتا ہے، چاہے وہ بیرونی ملکیت والا اکاؤنٹ ہو یا کنٹریکٹ اکاؤنٹ۔

## ایک بصری ڈیمو {#a-visual-demo}

آسٹن (Austin) کو ہیش فنکشنز اور کلیدی جوڑوں کے بارے میں بتاتے ہوئے دیکھیں۔

<VideoWatch slug="hash-function-eth-build" />

<VideoWatch slug="key-pair-eth-build" />

## مزید مطالعہ {#further-reading}

- [ایتھیریم اکاؤنٹس کو سمجھنا](https://info.etherscan.com/understanding-ethereum-accounts/) - Etherscan

_کسی ایسے کمیونٹی وسیلے کے بارے میں جانتے ہیں جس نے آپ کی مدد کی ہو؟ اس صفحے میں ترمیم کریں اور اسے شامل کریں!_

## متعلقہ موضوعات {#related-topics}

- [سمارٹ کنٹریکٹس](/developers/docs/smart-contracts/)
- [ٹرانزیکشنز](/developers/docs/transactions/)
