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

⁦سمارٹ کنٹریکٹس کے ساتھ تعامل⁩

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

یہ صفحہ سمارٹ کنٹریکٹ کے ساتھ تعامل کرنے کے دو بنیادی طریقوں—ڈیٹا پڑھنا اور ڈیٹا لکھنا—اور ان دونوں کاموں کے لیے درکار ٹولز کا احاطہ کرتا ہے۔

پیشگی شرائط

آپ کو سمجھنا چاہیے:

سمارٹ کنٹریکٹ کے ساتھ تعامل کے دو طریقے

سمارٹ کنٹریکٹ کے ساتھ تعامل دو زمروں میں آتا ہے:

کنٹریکٹ سے پڑھنا

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

جب آپ کسی کنٹریکٹ سے پڑھتے ہیں، تو آپ محض اس ڈیٹا کو تلاش کر رہے ہوتے ہیں جو پہلے سے موجود ہے۔ مثال کے طور پر:

  • ERC-20 ٹوکن بیلنس چیک کرنا
  • ایک لامركزی ایکسچینج سے موجودہ قیمت پڑھنا
  • کسی NFT کے مالک کا پتہ لگانا

چونکہ پڑھنے سے حالت تبدیل نہیں ہوتی، اس لیے ان پر گیس خرچ نہیں ہوتی اور کوئی بھی شخص ETH کی ضرورت کے بغیر یہ عمل انجام دے سکتا ہے۔

کنٹریکٹ میں لکھنا

لکھنا ایک حالت تبدیل کرنے والا عمل ہے جس کے لیے ٹرانزیکشن کی ضرورت ہوتی ہے اور اس پر گیس خرچ ہوتی ہے۔

جب آپ کسی کنٹریکٹ میں لکھتے ہیں، تو آپ ایک ایسا فنکشن متحرک کر رہے ہوتے ہیں جو بلاک چین کی حالت کو تبدیل کرتا ہے۔ مثال کے طور پر:

  • ٹوکنز منتقل کرنا
  • لامركزی ایکسچینج پر ٹوکنز کا تبادلہ کرنا
  • NFT کی ڈھلائی

لکھنے کے لیے ہمیشہ درج ذیل کی ضرورت ہوتی ہے:

  1. ایک بیرونی ملکیت والا اکاؤنٹ (EOA) جس میں گیس کے لیے کافی ETH ہو
  2. اکاؤنٹ کی نجی کلید کے ذریعے دستخط شدہ ٹرانزیکشن
  3. ٹرانزیکشن کا مائن ہونا اور بلاک میں شامل ہونا

اکاؤنٹ کی تجرید کے ساتھ، ایک سمارٹ کنٹریکٹ اکاؤنٹ بھی لکھنے کا عمل شروع کر سکتا ہے، اور ایک پے ماسٹر صارف کی جانب سے گیس ادا کر سکتا ہے—لہذا ETH رکھنے والے EOA کی سختی سے ضرورت نہیں ہے۔

کنٹریکٹ کی ABIs کو سمجھنا

کسی سمارٹ کنٹریکٹ کے ساتھ تعامل کرنے کے لیے، آپ کی ایپلی کیشن کو یہ جاننے کی ضرورت ہوتی ہے کہ کنٹریکٹ کیا کر سکتا ہے۔ یہیں پر ایپلیکیشن بائنری انٹرفیس (ABI) کام آتا ہے۔

ایک ABI ایک JSON دستاویز ہے جو درج ذیل کو بیان کرتی ہے:

  • ہر وہ فنکشن جو کنٹریکٹ ظاہر کرتا ہے (نام، ان پٹس، آؤٹ پٹس)
  • ہر وہ ایونٹ جو کنٹریکٹ خارج کر سکتا ہے
  • کنٹریکٹ سے بات کرتے وقت ڈیٹا کو انکوڈ اور ڈیکوڈ کرنے کا طریقہ

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

کنٹریکٹ کی ABI کہاں سے تلاش کریں

  • Etherscan پر تصدیق شدہ کنٹریکٹس - Etherscan (نئے ٹیب میں کھلتا ہے) تصدیق شدہ سورس کوڈ کے لیے خود بخود ABI ظاہر کرتا ہے
  • ڈویلپر کی طرف سے - بہت سے پروجیکٹس اپنی ABIs کو اپنی دستاویزات یا npm پیکجز میں شائع کرتے ہیں
  • سورس سے تیار کریں - اگر آپ کے پاس Solidity سورس کوڈ ہے، تو آپ ABI تیار کرنے کے لیے اسے کمپائل کر سکتے ہیں

کنٹریکٹس کے ساتھ تعامل کے لیے ٹولز اور لائبریریاں

ڈویلپرز عام طور پر ویب ایپ، بیک اینڈ، یا سکرپٹ سے کنٹریکٹس کے ساتھ تعامل کرنے کے لیے JavaScript/TypeScript لائبریری کا استعمال کرتے ہیں۔

کلائنٹ لائبریریاں (JavaScript/TypeScript)

بیک اینڈ لائبریریاں

مثال: Viem کے ساتھ ٹوکن بیلنس پڑھنا

مثال: ethers.js کے ساتھ ٹرانزیکشن بھیجنا

ایونٹس اور لاگز

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

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

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

زیادہ تر کلائنٹ لائبریریاں eth_call کے ذریعے اس کی حمایت کرتی ہیں:

// Viem کے ساتھ
const result = await client.simulateContract({
  address: contractAddress,
  abi,
  functionName: 'swap',
  args: [amountIn],
  account: userAddress,
})

والیٹس اور دستخط کرنا

ایک غیر مرکزی ایپلی کیشن (dapp) میں، صارف کا والیٹ (جیسے میٹاماسک، Rainbow، یا WalletConnect) دستخط کرنے کا کام سنبھالتا ہے۔ آپ براہ راست نجی کلیدوں کا انتظام نہیں کرتے۔

والیٹ لائبریریاں اور کنکشن ٹولز اسے ایبسٹریکٹ (abstract) کر دیتے ہیں تاکہ آپ اپنی ایپلی کیشن کی منطق (logic) بنانے پر توجہ مرکوز کر سکیں۔

مزید مطالعہ