ایتھیریم اکاؤنٹس
ایک ایتھیریم اکاؤنٹ ایک ایسی ہستی ہے جس کا ایتھر (ETH) بیلنس ہوتا ہے جو ایتھیریم پر پیغامات بھیج سکتا ہے۔ اکاؤنٹس صارف کے زیر کنٹرول ہو سکتے ہیں یا سمارٹ کنٹریکٹس کے طور پر تعینات کیے جا سکتے ہیں۔
پیشگی شرائط
اس صفحے کو بہتر طور پر سمجھنے میں آپ کی مدد کے لیے، ہم تجویز کرتے ہیں کہ آپ پہلے ہمارا ایتھیریم کا تعارف پڑھیں۔
اکاؤنٹ کی اقسام
ایتھیریم میں اکاؤنٹ کی دو اقسام ہیں:
- بیرونی ملکیت والا اکاؤنٹ (EOA) – نجی کلیدوں والے کسی بھی شخص کے زیر کنٹرول
- کنٹریکٹ اکاؤنٹ – نیٹ ورک پر تعینات ایک سمارٹ کنٹریکٹ، جو کوڈ کے ذریعے کنٹرول ہوتا ہے۔ سمارٹ کنٹریکٹس کے بارے میں جانیں
دونوں اکاؤنٹ کی اقسام میں یہ صلاحیت ہوتی ہے:
- ETH اور ٹوکنز وصول کرنا، رکھنا اور بھیجنا
- تعینات شدہ سمارٹ کنٹریکٹس کے ساتھ تعامل کرنا
اہم اختلافات
بیرونی ملکیت والا
- اکاؤنٹ بنانے پر کوئی لاگت نہیں آتی
- ٹرانزیکشنز شروع کر سکتا ہے
- بیرونی ملکیت والے اکاؤنٹس کے درمیان ٹرانزیکشنز صرف ETH/ٹوکن کی منتقلی ہو سکتی ہیں
- کلیدوں کے ایک تشفیری جوڑے پر مشتمل ہوتا ہے: عوامی اور نجی کلیدیں جو اکاؤنٹ کی سرگرمیوں کو کنٹرول کرتی ہیں
کنٹریکٹ
- کنٹریکٹ بنانے پر لاگت آتی ہے کیونکہ آپ نیٹ ورک اسٹوریج استعمال کر رہے ہیں
- صرف ٹرانزیکشن وصول کرنے کے جواب میں پیغامات بھیج سکتا ہے
- بیرونی اکاؤنٹ سے کنٹریکٹ اکاؤنٹ میں ٹرانزیکشنز کوڈ کو متحرک کر سکتی ہیں جو بہت سے مختلف افعال انجام دے سکتا ہے، جیسے ٹوکنز منتقل کرنا یا یہاں تک کہ ایک نیا کنٹریکٹ بنانا
- کنٹریکٹ اکاؤنٹس میں نجی کلیدیں نہیں ہوتیں۔ اس کے بجائے، وہ سمارٹ کنٹریکٹ کوڈ کی منطق کے ذریعے کنٹرول ہوتے ہیں
ایک اکاؤنٹ کا جائزہ
ایتھیریم اکاؤنٹس کے چار فیلڈز ہوتے ہیں:
nonce– ایک کاؤنٹر جو بیرونی ملکیت والے اکاؤنٹ سے بھیجی گئی ٹرانزیکشنز کی تعداد یا کنٹریکٹ اکاؤنٹ کے ذریعے بنائے گئے کنٹریکٹس کی تعداد کو ظاہر کرتا ہے۔ ہر اکاؤنٹ کے لیے دیے گئے نانس کے ساتھ صرف ایک ٹرانزیکشن پر عمل کیا جا سکتا ہے، جو ری پلے حملوں سے بچاتا ہے جہاں دستخط شدہ ٹرانزیکشنز کو بار بار نشر اور دوبارہ عمل میں لایا جاتا ہے۔balance– اس پتے کی ملکیت میں موجود Wei کی تعداد۔ Wei، ETH کی ایک اکائی ہے اور فی ETH میں 1e+18 Wei ہوتے ہیں۔codeHash– یہ ہیش ایتھیریم ورچوئل مشین (EVM) پر کسی اکاؤنٹ کے کوڈ کا حوالہ دیتا ہے۔ کنٹریکٹ اکاؤنٹس میں کوڈ کے ٹکڑے پروگرام کیے گئے ہوتے ہیں جو مختلف افعال انجام دے سکتے ہیں۔ اگر اکاؤنٹ کو پیغام کی کال موصول ہوتی ہے تو اس EVM کوڈ پر عمل درآمد ہوتا ہے۔ اکاؤنٹ کے دیگر فیلڈز کے برعکس، اسے تبدیل نہیں کیا جا سکتا۔ ایسے تمام کوڈ کے ٹکڑے حالت کے ڈیٹا بیس میں ان کے متعلقہ ہیشز کے تحت بعد میں بازیافت کے لیے موجود ہوتے ہیں۔ اس ہیش ویلیو کو codeHash کے نام سے جانا جاتا ہے۔ بیرونی ملکیت والے اکاؤنٹس کے لیے، codeHash فیلڈ ایک خالی اسٹرنگ کا ہیش ہوتا ہے۔storageRoot– بعض اوقات اسے اسٹوریج ہیش کے نام سے جانا جاتا ہے۔ ایک مرکل پیٹریشیا ٹرائی کے روٹ نوڈ کا 256-bit ہیش جو اکاؤنٹ کے اسٹوریج کے مواد کو انکوڈ کرتا ہے (256-bit انٹیجر ویلیوز کے درمیان ایک میپنگ)، جسے ٹرائی میں 256-bit انٹیجر کلیدوں کے کیچاک-۲۵۶ ہیش سے RLP-انکوڈ شدہ 256-bit انٹیجر ویلیوز کی میپنگ کے طور پر انکوڈ کیا جاتا ہے۔ یہ ٹرائی اس اکاؤنٹ کے اسٹوریج کے مواد کے ہیش کو انکوڈ کرتا ہے، اور پہلے سے طے شدہ طور پر خالی ہوتا ہے۔
خاکہ Ethereum EVM illustrated (opens in a new tab) سے اخذ کیا گیا ہے
بیرونی ملکیت والے اکاؤنٹس اور کلیدی جوڑے
ایک اکاؤنٹ تشفیری کلیدوں کے ایک جوڑے پر مشتمل ہوتا ہے: عوامی اور نجی۔ یہ ثابت کرنے میں مدد کرتے ہیں کہ ٹرانزیکشن پر واقعی بھیجنے والے نے دستخط کیے تھے اور جعل سازی کو روکتے ہیں۔ آپ کی نجی کلید وہ ہے جسے آپ ٹرانزیکشنز پر دستخط کرنے کے لیے استعمال کرتے ہیں، لہذا یہ آپ کو آپ کے اکاؤنٹ سے وابستہ فنڈز کی تحویل فراہم کرتی ہے۔ آپ کبھی بھی حقیقت میں کرپٹو کرنسی نہیں رکھتے، آپ نجی کلیدیں رکھتے ہیں – فنڈز ہمیشہ ایتھیریم کے لیجر پر ہوتے ہیں۔
یہ بدنیتی پر مبنی عناصر کو جعلی ٹرانزیکشنز نشر کرنے سے روکتا ہے کیونکہ آپ ہمیشہ ٹرانزیکشن بھیجنے والے کی تصدیق کر سکتے ہیں۔
اگر ایلس (Alice) اپنے اکاؤنٹ سے باب (Bob) کے اکاؤنٹ میں ایتھر بھیجنا چاہتی ہے، تو ایلس کو ایک ٹرانزیکشن کی درخواست بنانی ہوگی اور اسے تصدیق کے لیے نیٹ ورک پر بھیجنا ہوگا۔ ایتھیریم کا پبلک-کی (public-key) علمِ تشفیر کا استعمال اس بات کو یقینی بناتا ہے کہ ایلس یہ ثابت کر سکے کہ اس نے اصل میں ٹرانزیکشن کی درخواست شروع کی تھی۔ تشفیری میکانزم کے بغیر، ایک بدنیتی پر مبنی حریف ایو (Eve) آسانی سے عوامی طور پر ایک ایسی درخواست نشر کر سکتی ہے جو کچھ اس طرح نظر آتی ہو "5 ETH ایلس کے اکاؤنٹ سے ایو کے اکاؤنٹ میں بھیجیں،" اور کوئی بھی اس بات کی تصدیق نہیں کر پائے گا کہ یہ ایلس کی طرف سے نہیں آئی تھی۔
اکاؤنٹ بنانا
جب آپ کوئی اکاؤنٹ بنانا چاہتے ہیں، تو زیادہ تر لائبریریاں آپ کو ایک بے ترتیب نجی کلید تیار کر کے دیں گی۔
ایک نجی کلید 64 ہیکس (hex) حروف پر مشتمل ہوتی ہے اور اسے پاس ورڈ کے ساتھ انکرپٹ کیا جا سکتا ہے۔
مثال:
fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd036415f
عوامی کلید کو نجی کلید سے بیضوی منحنی ڈیجیٹل دستخط الگورتھم (opens in a new tab) کا استعمال کرتے ہوئے تیار کیا جاتا ہے۔ آپ عوامی کلید کے کیچاک-۲۵۶ ہیش کے آخری 20 بائٹس لے کر اور شروع میں 0x شامل کر کے اپنے اکاؤنٹ کے لیے ایک عوامی پتہ حاصل کرتے ہیں۔
اس کا مطلب ہے کہ بیرونی ملکیت والے اکاؤنٹ (EOA) کا 42 حروف کا پتہ ہوتا ہے (20 بائٹ کا حصہ جو 40 ہیکسا ڈیسیمل حروف کے علاوہ 0x کا سابقہ ہے)۔
مثال:
0x5e97870f263700f46aa00d967821199b9bc5a120
درج ذیل مثال دکھاتی ہے کہ نیا اکاؤنٹ بنانے کے لیے Clef (opens in a new tab) نامی دستخط کرنے والے ٹول کا استعمال کیسے کیا جائے۔ Clef ایک اکاؤنٹ مینجمنٹ اور دستخط کرنے والا ٹول ہے جو ایتھیریم کلائنٹ، Geth (opens in a new tab) کے ساتھ بنڈل آتا ہے۔ 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 کی دستاویزات (opens in a new tab)
آپ کی نجی کلید سے نئی عوامی کلیدیں اخذ کرنا ممکن ہے، لیکن آپ عوامی کلیدوں سے نجی کلید اخذ نہیں کر سکتے۔ اپنی نجی کلیدوں کو محفوظ رکھنا انتہائی ضروری ہے اور، جیسا کہ نام سے ظاہر ہے، نجی (PRIVATE) رکھنا چاہیے۔
آپ کو پیغامات اور ٹرانزیکشنز پر دستخط کرنے کے لیے ایک نجی کلید کی ضرورت ہوتی ہے جو ایک دستخط آؤٹ پٹ کرتی ہے۔ پھر دوسرے لوگ آپ کی عوامی کلید اخذ کرنے کے لیے دستخط لے سکتے ہیں، جس سے پیغام کے مصنف کی تصدیق ہوتی ہے۔ اپنی ایپلیکیشن میں، آپ نیٹ ورک پر ٹرانزیکشنز بھیجنے کے لیے JavaScript لائبریری استعمال کر سکتے ہیں۔
کنٹریکٹ اکاؤنٹس
کنٹریکٹ اکاؤنٹس کا بھی 42 حروف کا ہیکسا ڈیسیمل پتہ ہوتا ہے:
مثال:
0x06012c8cf97bead5deae237070f9587f8e7a266d
کنٹریکٹ کا پتہ عام طور پر اس وقت دیا جاتا ہے جب کوئی کنٹریکٹ ایتھیریم بلاک چین پر تعینات کیا جاتا ہے۔ یہ پتہ بنانے والے کے پتے اور اس پتے سے بھیجی گئی ٹرانزیکشنز کی تعداد ("نانس") سے آتا ہے۔
توثیق کار کی کلیدیں
ایتھیریم میں ایک اور قسم کی کلید بھی ہے، جو اس وقت متعارف کرائی گئی جب ایتھیریم نے ثبوتِ کار (PoW) سے حصہ داری کا ثبوت (PoS) پر مبنی اتفاق رائے پر منتقلی کی۔ یہ 'BLS' کلیدیں ہیں اور انہیں توثیق کاروں کی شناخت کے لیے استعمال کیا جاتا ہے۔ نیٹ ورک کو اتفاق رائے تک پہنچنے کے لیے درکار بینڈوتھ کو کم کرنے کے لیے ان کلیدوں کو مؤثر طریقے سے جمع کیا جا سکتا ہے۔ اس کلیدی جمع کے بغیر توثیق کار کے لیے کم از کم اسٹیک بہت زیادہ ہوگا۔
توثیق کار کی کلیدوں کے بارے میں مزید۔
والیٹس پر ایک نوٹ
اکاؤنٹ کوئی والیٹ نہیں ہوتا۔ والیٹ ایک انٹرفیس یا ایپلیکیشن ہے جو آپ کو اپنے ایتھیریم اکاؤنٹ کے ساتھ تعامل کرنے دیتا ہے، چاہے وہ بیرونی ملکیت والا اکاؤنٹ ہو یا کنٹریکٹ اکاؤنٹ۔
ایک بصری ڈیمو
آسٹن (Austin) کو ہیش فنکشنز اور کلیدی جوڑوں کے بارے میں بتاتے ہوئے دیکھیں۔
مزید مطالعہ
- ایتھیریم اکاؤنٹس کو سمجھنا (opens in a new tab) - Etherscan
کسی ایسے کمیونٹی وسیلے کے بارے میں جانتے ہیں جس نے آپ کی مدد کی ہو؟ اس صفحے میں ترمیم کریں اور اسے شامل کریں!