مرکزی مواد پر جائیں
Change page

ٹرانزیکشنز

صفحہ کی آخری اپ ڈیٹ: 23 فروری، 2026

ٹرانزیکشنز اکاؤنٹس کی جانب سے کرپٹوگرافک طور پر سائن کی گئی ہدایات ہوتی ہیں۔ ایک اکاؤنٹ Ethereum نیٹ ورک کی اسٹیٹ کو اپ ڈیٹ کرنے کے لیے ٹرانزیکشن شروع کرے گا۔ سب سے سادہ ٹرانزیکشن ایک اکاؤنٹ سے دوسرے اکاؤنٹ میں ETH منتقل کرنا ہے۔

شرائط

اس صفحے کو بہتر طور پر سمجھنے میں آپ کی مدد کے لیے، ہم تجویز کرتے ہیں کہ آپ پہلے اکاؤنٹس اور ہمارا ایتھیریم کا تعارف پڑھیں۔

ٹرانزیکشن کیا ہے؟

ایتھیریم ٹرانزیکشن سے مراد ایک ایسا عمل ہے جو کسی ایکسٹرنلی اونڈ اکاؤنٹ (externally-owned account) کی طرف سے شروع کیا گیا ہو، دوسرے الفاظ میں ایک ایسا اکاؤنٹ جسے کوئی انسان مینیج کرتا ہو، نہ کہ کوئی کانٹریکٹ۔ مثال کے طور پر، اگر باب ایلس کو 1 ETH بھیجتا ہے، تو باب کے اکاؤنٹ سے رقم کٹنی چاہیے اور ایلس کے اکاؤنٹ میں جمع ہونی چاہیے۔ اسٹیٹ کو تبدیل کرنے والا یہ عمل ایک ٹرانزیکشن کے اندر ہوتا ہے۔

اسٹیٹ میں تبدیلی کا سبب بننے والی ٹرانزیکشن کو ظاہر کرنے والا خاکہ یہ خاکہ Ethereum EVM illustrated (opens in a new tab) سے لیا گیا ہے

ٹرانزیکشنز، جو EVM کی اسٹیٹ کو تبدیل کرتی ہیں، انہیں پورے نیٹ ورک پر براڈکاسٹ کرنے کی ضرورت ہوتی ہے۔ کوئی بھی نوڈ EVM پر ٹرانزیکشن کو ایگزیکیوٹ کرنے کی درخواست براڈکاسٹ کر سکتا ہے؛ ایسا ہونے کے بعد، ایک ویلیڈیٹر ٹرانزیکشن کو ایگزیکیوٹ کرے گا اور اس کے نتیجے میں ہونے والی اسٹیٹ کی تبدیلی کو باقی نیٹ ورک تک پہنچائے گا۔

ٹرانزیکشنز کے لیے فیس درکار ہوتی ہے اور انہیں ایک ویلیڈیٹڈ بلاک میں شامل ہونا چاہیے۔ اس جائزے کو آسان بنانے کے لیے ہم گیس فیس اور ویلیڈیشن کا ذکر کہیں اور کریں گے۔

جمع کرائی گئی ٹرانزیکشن میں درج ذیل معلومات شامل ہوتی ہیں:

  • from – بھیجنے والے کا ایڈریس، جو ٹرانزیکشن کو سائن کرے گا۔ یہ ایک ایکسٹرنلی اونڈ اکاؤنٹ ہوگا کیونکہ کانٹریکٹ اکاؤنٹس ٹرانزیکشنز نہیں بھیج سکتے
  • to – وصول کرنے والے کا ایڈریس (اگر یہ ایکسٹرنلی اونڈ اکاؤنٹ ہے، تو ٹرانزیکشن ویلیو منتقل کرے گی۔ اگر یہ کانٹریکٹ اکاؤنٹ ہے، تو ٹرانزیکشن کانٹریکٹ کوڈ کو ایگزیکیوٹ کرے گی)
  • signature – بھیجنے والے کی شناخت۔ یہ اس وقت جنریٹ ہوتا ہے جب بھیجنے والے کی پرائیویٹ کی (private key) ٹرانزیکشن کو سائن کرتی ہے اور تصدیق کرتی ہے کہ بھیجنے والے نے اس ٹرانزیکشن کی اجازت دی ہے
  • nonce - ایک ترتیب وار بڑھنے والا کاؤنٹر جو اکاؤنٹ سے ٹرانزیکشن نمبر کی نشاندہی کرتا ہے
  • value – بھیجنے والے سے وصول کنندہ کو منتقل کی جانے والی ETH کی مقدار (WEI میں ظاہر کی جاتی ہے، جہاں 1ETH = 1e+18wei)
  • input data – صوابدیدی ڈیٹا شامل کرنے کے لیے اختیاری فیلڈ
  • gasLimit – گیس یونٹس کی زیادہ سے زیادہ مقدار جو ٹرانزیکشن کے ذریعے استعمال کی جا سکتی ہے۔ EVM ہر کمپیوٹیشنل قدم کے لیے درکار گیس کے یونٹس کی وضاحت کرتا ہے
  • maxPriorityFeePerGas - استعمال شدہ گیس کی زیادہ سے زیادہ قیمت جسے ویلیڈیٹر کے لیے ٹپ کے طور پر شامل کیا جانا ہے
  • maxFeePerGas - ٹرانزیکشن کے لیے ادا کی جانے والی گیس کے فی یونٹ کی زیادہ سے زیادہ فیس (جس میں baseFeePerGas اور maxPriorityFeePerGas شامل ہیں)

گیس سے مراد وہ کمپیوٹیشن ہے جو ویلیڈیٹر کے ذریعے ٹرانزیکشن کو پروسیس کرنے کے لیے درکار ہوتی ہے۔ صارفین کو اس کمپیوٹیشن کے لیے فیس ادا کرنی پڑتی ہے۔ gasLimit اور maxPriorityFeePerGas ویلیڈیٹر کو ادا کی جانے والی زیادہ سے زیادہ ٹرانزیکشن فیس کا تعین کرتے ہیں۔ گیس کے بارے میں مزید جانیں۔

ٹرانزیکشن آبجیکٹ کچھ اس طرح نظر آئے گا:

1{
2 from: "0xEA674fdDe714fd979de3EdF0F56AA9716B898ec8",
3 to: "0xac03bb73b6a9e108530aff4df5077c2b3d481e5a",
4 gasLimit: "21000",
5 maxFeePerGas: "300",
6 maxPriorityFeePerGas: "10",
7 nonce: "0",
8 value: "10000000000"
9}
سب دکھائیں

لیکن ایک ٹرانزیکشن آبجیکٹ کو بھیجنے والے کی پرائیویٹ کی (private key) کا استعمال کرتے ہوئے سائن کرنے کی ضرورت ہوتی ہے۔ یہ ثابت کرتا ہے کہ ٹرانزیکشن صرف بھیجنے والے کی طرف سے آ سکتی تھی اور اسے دھوکہ دہی سے نہیں بھیجا گیا تھا۔

Geth جیسا ایتھیریم کلائنٹ اس سائننگ کے عمل کو سنبھالے گا۔

مثالی JSON-RPC کال:

1{
2 "id": 2,
3 "jsonrpc": "2.0",
4 "method": "account_signTransaction",
5 "params": [
6 {
7 "from": "0x1923f626bb8dc025849e00f99c25fe2b2f7fb0db",
8 "gas": "0x55555",
9 "maxFeePerGas": "0x1234",
10 "maxPriorityFeePerGas": "0x1234",
11 "input": "0xabcd",
12 "nonce": "0x0",
13 "to": "0x07a565b7ed7d7a678680a4c162885bedbb695fe0",
14 "value": "0x1234"
15 }
16 ]
17}
سب دکھائیں

مثالی جواب:

1{
2 "jsonrpc": "2.0",
3 "id": 2,
4 "result": {
5 "raw": "0xf88380018203339407a565b7ed7d7a678680a4c162885bedbb695fe080a44401a6e4000000000000000000000000000000000000000000000000000000000000001226a0223a7c9bcf5531c99be5ea7082183816eb20cfe0bbc322e97cc5c7f71ab8b20ea02aadee6b34b45bb15bc42d9c09de4a6754e7000908da72d48cc7704971491663",
6 "tx": {
7 "nonce": "0x0",
8 "maxFeePerGas": "0x1234",
9 "maxPriorityFeePerGas": "0x1234",
10 "gas": "0x55555",
11 "to": "0x07a565b7ed7d7a678680a4c162885bedbb695fe0",
12 "value": "0x1234",
13 "input": "0xabcd",
14 "v": "0x26",
15 "r": "0x223a7c9bcf5531c99be5ea7082183816eb20cfe0bbc322e97cc5c7f71ab8b20e",
16 "s": "0x2aadee6b34b45bb15bc42d9c09de4a6754e7000908da72d48cc7704971491663",
17 "hash": "0xeba2df809e7a612a0a0d444ccfa5c839624bdc00dd29e3340d46df3870f8a30e"
18 }
19 }
20}
سب دکھائیں
  • raw Recursive Length Prefix (RLP) انکوڈ شدہ شکل میں سائن شدہ ٹرانزیکشن ہے
  • tx JSON شکل میں سائن شدہ ٹرانزیکشن ہے

سگنیچر ہیش کے ساتھ، ٹرانزیکشن کو کرپٹوگرافک طور پر ثابت کیا جا سکتا ہے کہ یہ بھیجنے والے کی طرف سے آئی ہے اور نیٹ ورک پر جمع کرائی گئی ہے۔

ڈیٹا فیلڈ

ٹرانزیکشنز کی اکثریت ایک ایکسٹرنلی اونڈ اکاؤنٹ سے کانٹریکٹ تک رسائی حاصل کرتی ہے۔ زیادہ تر کانٹریکٹس Solidity میں لکھے جاتے ہیں اور اپنے ڈیٹا فیلڈ کی تشریح کے مطابق کرتے ہیں۔

پہلے چار بائٹس یہ بتاتے ہیں کہ فنکشن کے نام اور آرگیومنٹس کے ہیش کا استعمال کرتے ہوئے کس فنکشن کو کال کرنا ہے۔ آپ بعض اوقات اس ڈیٹا بیس (opens in a new tab) کا استعمال کرتے ہوئے سلیکٹر سے فنکشن کی شناخت کر سکتے ہیں۔

باقی کال ڈیٹا آرگیومنٹس ہیں، جو ABI کی خصوصیات میں بتائے گئے طریقے کے مطابق انکوڈ کیے گئے ہیں (opens in a new tab)۔

مثال کے طور پر، آئیے اس ٹرانزیکشن (opens in a new tab) کو دیکھتے ہیں۔ کال ڈیٹا دیکھنے کے لیے Click to see More کا استعمال کریں۔

فنکشن سلیکٹر 0xa9059cbb ہے۔ اس سگنیچر کے ساتھ کئی معروف فنکشنز (opens in a new tab) موجود ہیں۔ اس صورت میں کانٹریکٹ کا سورس کوڈ (opens in a new tab) Etherscan پر اپ لوڈ کر دیا گیا ہے، اس لیے ہم جانتے ہیں کہ فنکشن transfer(address,uint256) ہے۔

باقی ڈیٹا یہ ہے:

10000000000000000000000004f6742badb049791cd9a37ea913f2bac38d01279
2000000000000000000000000000000000000000000000000000000003b0559f4

ABI کی خصوصیات کے مطابق، انٹیجر ویلیوز (جیسے ایڈریسز، جو 20-بائٹ انٹیجرز ہوتے ہیں) ABI میں 32-بائٹ الفاظ کے طور پر ظاہر ہوتے ہیں، جن کے شروع میں صفر (zeros) لگائے جاتے ہیں۔ لہذا ہم جانتے ہیں کہ to ایڈریس 4f6742badb049791cd9a37ea913f2bac38d01279 (opens in a new tab) ہے۔ value 0x3b0559f4 = 990206452 ہے۔

ٹرانزیکشنز کی اقسام

ایتھیریم پر ٹرانزیکشنز کی چند مختلف اقسام ہیں:

  • ریگولر ٹرانزیکشنز: ایک اکاؤنٹ سے دوسرے اکاؤنٹ میں ٹرانزیکشن۔
  • کانٹریکٹ ڈیپلائمنٹ ٹرانزیکشنز: 'to' ایڈریس کے بغیر ایک ٹرانزیکشن، جہاں ڈیٹا فیلڈ کو کانٹریکٹ کوڈ کے لیے استعمال کیا جاتا ہے۔
  • کانٹریکٹ کی ایگزیکیوشن: ایک ٹرانزیکشن جو ڈیپلائے کیے گئے اسمارٹ کانٹریکٹ کے ساتھ انٹریکٹ کرتی ہے۔ اس صورت میں، 'to' ایڈریس اسمارٹ کانٹریکٹ کا ایڈریس ہوتا ہے۔

گیس پر

جیسا کہ ذکر کیا گیا ہے، ٹرانزیکشنز کو ایگزیکیوٹ کرنے کے لیے گیس خرچ ہوتی ہے۔ سادہ ٹرانسفر ٹرانزیکشنز کے لیے گیس کے 21000 یونٹس درکار ہوتے ہیں۔

لہذا باب کو ایلس کو 1 ETH بھیجنے کے لیے 190 gwei کی baseFeePerGas اور 10 gwei کی maxPriorityFeePerGas پر، باب کو درج ذیل فیس ادا کرنی ہوگی:

1(190 + 10) * 21000 = 4,200,000 gwei
2--or--
30.0042 ETH

باب کے اکاؤنٹ سے -1.0042 ETH کاٹے جائیں گے (ایلس کے لیے 1 ETH + گیس فیس میں 0.0042 ETH)

ایلس کے اکاؤنٹ میں +1.0 ETH جمع کیے جائیں گے

بیس فیس برن (burn) کر دی جائے گی -0.00399 ETH

ویلیڈیٹر ٹپ اپنے پاس رکھتا ہے +0.000210 ETH

یہ خاکہ دکھاتا ہے کہ غیر استعمال شدہ گیس کیسے واپس کی جاتی ہے یہ خاکہ Ethereum EVM illustrated (opens in a new tab) سے لیا گیا ہے

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

اسمارٹ کانٹریکٹ انٹریکشنز

کسی بھی ایسی ٹرانزیکشن کے لیے گیس درکار ہوتی ہے جس میں اسمارٹ کانٹریکٹ شامل ہو۔

اسمارٹ کانٹریکٹس میں ایسے فنکشنز بھی شامل ہو سکتے ہیں جنہیں view (opens in a new tab) یا pure (opens in a new tab) فنکشنز کہا جاتا ہے، جو کانٹریکٹ کی اسٹیٹ کو تبدیل نہیں کرتے۔ اس طرح، کسی EOA سے ان فنکشنز کو کال کرنے کے لیے کسی گیس کی ضرورت نہیں ہوگی۔ اس صورتحال کے لیے بنیادی RPC کال eth_call ہے۔

eth_call کا استعمال کرتے ہوئے رسائی حاصل کرنے کے برعکس، ان view یا pure فنکشنز کو عام طور پر اندرونی طور پر بھی کال کیا جاتا ہے (یعنی، خود کانٹریکٹ سے یا کسی دوسرے کانٹریکٹ سے) جس پر گیس خرچ ہوتی ہے۔

ٹرانزیکشن کا لائف سائیکل

ایک بار ٹرانزیکشن جمع کرانے کے بعد درج ذیل ہوتا ہے:

  1. ایک ٹرانزیکشن ہیش کرپٹوگرافک طور پر جنریٹ ہوتا ہے: 0x97d99bc7729211111a21b12c933c949d4f31684f1d6954ff477d0477538ff017
  2. پھر ٹرانزیکشن کو نیٹ ورک پر براڈکاسٹ کیا جاتا ہے اور ایک ٹرانزیکشن پول میں شامل کیا جاتا ہے جو دیگر تمام زیر التواء نیٹ ورک ٹرانزیکشنز پر مشتمل ہوتا ہے۔
  3. ٹرانزیکشن کی تصدیق کرنے اور اسے "کامیاب" سمجھنے کے لیے ایک ویلیڈیٹر کو آپ کی ٹرانزیکشن کا انتخاب کرنا چاہیے اور اسے ایک بلاک میں شامل کرنا چاہیے۔
  4. جیسے جیسے وقت گزرتا ہے آپ کی ٹرانزیکشن پر مشتمل بلاک کو "justified" اور پھر "finalized" میں اپ گریڈ کر دیا جائے گا۔ یہ اپ گریڈز اس بات کو بہت زیادہ یقینی بناتے ہیں کہ آپ کی ٹرانزیکشن کامیاب رہی اور اسے کبھی تبدیل نہیں کیا جائے گا۔ ایک بار جب کوئی بلاک "finalized" ہو جاتا ہے تو اسے صرف نیٹ ورک لیول کے حملے سے ہی تبدیل کیا جا سکتا ہے جس پر کئی اربوں ڈالر لاگت آئے گی۔

ایک بصری ڈیمو

آسٹن کو ٹرانزیکشنز، گیس، اور مائننگ کے بارے میں بتاتے ہوئے دیکھیں۔

ٹائپڈ ٹرانزیکشن انویلپ

ایتھیریم میں اصل میں ٹرانزیکشنز کے لیے ایک ہی فارمیٹ تھا۔ ہر ٹرانزیکشن میں ایک nonce، گیس کی قیمت، گیس کی حد، to ایڈریس، ویلیو، ڈیٹا، v، r، اور s شامل تھے۔ یہ فیلڈز RLP-انکوڈڈ ہیں، جو کچھ اس طرح نظر آتے ہیں:

RLP([nonce, gasPrice, gasLimit, to, value, data, v, r, s])

ایتھیریم نے متعدد قسم کی ٹرانزیکشنز کو سپورٹ کرنے کے لیے ترقی کی ہے تاکہ نئی خصوصیات جیسے ایکسیس لسٹس اور EIP-1559 (opens in a new tab) کو پرانے ٹرانزیکشن فارمیٹس کو متاثر کیے بغیر لاگو کیا جا سکے۔

EIP-2718 (opens in a new tab) وہ ہے جو اس رویے کی اجازت دیتا ہے۔ ٹرانزیکشنز کی تشریح اس طرح کی جاتی ہے:

TransactionType || TransactionPayload

جہاں فیلڈز کی تعریف اس طرح کی گئی ہے:

  • TransactionType - 0 اور 0x7f کے درمیان ایک نمبر، کل 128 ممکنہ ٹرانزیکشن اقسام کے لیے۔
  • TransactionPayload - ٹرانزیکشن کی قسم کے ذریعے بیان کردہ ایک صوابدیدی بائٹ ایرے (byte array)۔

TransactionType ویلیو کی بنیاد پر، ایک ٹرانزیکشن کو اس طرح درجہ بند کیا جا سکتا ہے:

  1. ٹائپ 0 (لیگیسی) ٹرانزیکشنز: ایتھیریم کے آغاز سے استعمال ہونے والا اصل ٹرانزیکشن فارمیٹ۔ ان میں EIP-1559 (opens in a new tab) کی خصوصیات شامل نہیں ہیں جیسے ڈائنامک گیس فیس کیلکولیشنز یا اسمارٹ کانٹریکٹس کے لیے ایکسیس لسٹس۔ لیگیسی ٹرانزیکشنز میں ان کی سیریلائزڈ شکل میں ان کی قسم کی نشاندہی کرنے والے مخصوص پریفکس کی کمی ہوتی ہے، جو Recursive Length Prefix (RLP) انکوڈنگ کا استعمال کرتے وقت بائٹ 0xf8 سے شروع ہوتی ہیں۔ ان ٹرانزیکشنز کے لیے TransactionType ویلیو 0x0 ہے۔

  2. ٹائپ 1 ٹرانزیکشنز: ایتھیریم کے برلن اپ گریڈ کے حصے کے طور پر EIP-2930 (opens in a new tab) میں متعارف کرائی گئی، ان ٹرانزیکشنز میں ایک accessList پیرامیٹر شامل ہے۔ یہ فہرست ان ایڈریسز اور اسٹوریج کیز (storage keys) کی وضاحت کرتی ہے جن تک ٹرانزیکشن رسائی کی توقع رکھتی ہے، جس سے اسمارٹ کانٹریکٹس پر مشتمل پیچیدہ ٹرانزیکشنز کے لیے ممکنہ طور پر گیس کی لاگت کو کم کرنے میں مدد ملتی ہے۔ EIP-1559 فیس مارکیٹ کی تبدیلیاں ٹائپ 1 ٹرانزیکشنز میں شامل نہیں ہیں۔ ٹائپ 1 ٹرانزیکشنز میں ایک yParity پیرامیٹر بھی شامل ہوتا ہے، جو یا تو 0x0 یا 0x1 ہو سکتا ہے، جو secp256k1 سگنیچر کی y-ویلیو کی پیریٹی (parity) کی نشاندہی کرتا ہے۔ ان کی شناخت بائٹ 0x01 سے شروع ہونے سے ہوتی ہے، اور ان کی TransactionType ویلیو 0x1 ہے۔

  3. ٹائپ 2 ٹرانزیکشنز، جنہیں عام طور پر EIP-1559 ٹرانزیکشنز کہا جاتا ہے، وہ ٹرانزیکشنز ہیں جو ایتھیریم کے لندن اپ گریڈ میں، EIP-1559 (opens in a new tab) میں متعارف کرائی گئی تھیں۔ یہ ایتھیریم نیٹ ورک پر معیاری ٹرانزیکشن کی قسم بن گئی ہیں۔ یہ ٹرانزیکشنز ایک نیا فیس مارکیٹ میکانزم متعارف کراتی ہیں جو ٹرانزیکشن فیس کو بیس فیس اور ترجیحی فیس (priority fee) میں الگ کر کے پیشین گوئی کو بہتر بناتا ہے۔ یہ بائٹ 0x02 سے شروع ہوتی ہیں اور ان میں maxPriorityFeePerGas اور maxFeePerGas جیسی فیلڈز شامل ہوتی ہیں۔ ٹائپ 2 ٹرانزیکشنز اب اپنی لچک اور کارکردگی کی وجہ سے ڈیفالٹ ہیں، خاص طور پر نیٹ ورک کے زیادہ ہجوم کے ادوار میں صارفین کو ٹرانزیکشن فیس کو زیادہ پیشین گوئی کے ساتھ مینیج کرنے میں مدد کرنے کی ان کی صلاحیت کے لیے پسند کی جاتی ہیں۔ ان ٹرانزیکشنز کے لیے TransactionType ویلیو 0x2 ہے۔

  4. ٹائپ 3 (بلاب) ٹرانزیکشنز کو ایتھیریم کے ڈنکن اپ گریڈ کے حصے کے طور پر EIP-4844 (opens in a new tab) میں متعارف کرایا گیا تھا۔ یہ ٹرانزیکشنز "بلاب" (blob) ڈیٹا (Binary Large Objects) کو زیادہ مؤثر طریقے سے ہینڈل کرنے کے لیے ڈیزائن کی گئی ہیں، خاص طور پر کم قیمت پر ایتھیریم نیٹ ورک پر ڈیٹا پوسٹ کرنے کا طریقہ فراہم کر کے لیئر 2 رول اپس کو فائدہ پہنچاتی ہیں۔ بلاب ٹرانزیکشنز میں اضافی فیلڈز شامل ہوتی ہیں جیسے blobVersionedHashes، maxFeePerBlobGas، اور blobGasPrice۔ یہ بائٹ 0x03 سے شروع ہوتی ہیں، اور ان کی TransactionType ویلیو 0x3 ہے۔ بلاب ٹرانزیکشنز ایتھیریم کی ڈیٹا کی دستیابی اور اسکیلنگ کی صلاحیتوں میں نمایاں بہتری کی نمائندگی کرتی ہیں۔

  5. ٹائپ 4 ٹرانزیکشنز کو ایتھیریم کے پیکٹرا اپ گریڈ کے حصے کے طور پر EIP-7702 (opens in a new tab) میں متعارف کرایا گیا تھا۔ یہ ٹرانزیکشنز اکاؤنٹ ایبسٹریکشن کے ساتھ فارورڈ-کمپیٹیبل ہونے کے لیے ڈیزائن کی گئی ہیں۔ یہ EOAs کو ان کی اصل فعالیت سے سمجھوتہ کیے بغیر عارضی طور پر اسمارٹ کانٹریکٹ اکاؤنٹس کی طرح برتاؤ کرنے کی اجازت دیتی ہیں۔ ان میں ایک authorization_list پیرامیٹر شامل ہوتا ہے، جو اس اسمارٹ کانٹریکٹ کی وضاحت کرتا ہے جسے EOA اپنا اختیار سونپتا ہے۔ ٹرانزیکشن کے بعد، EOA کے کوڈ فیلڈ میں ڈیلیگیٹ کیے گئے اسمارٹ کانٹریکٹ کا ایڈریس ہوگا۔

مزید مطالعہ

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

کیا یہ مضمون مددگار تھا؟