اپنا پہلا اسمارٹ کانٹریکٹ ڈپلائے کرنا
مجھے یقین ہے کہ آپ بھی ہماری طرح ایتھیریم بلاک چین پر اپنا پہلا اسمارٹ کانٹریکٹ ڈپلائے کرنے اور اس کے ساتھ تعامل کرنے کے لیے پرجوش ہوں گے۔
فکر نہ کریں، چونکہ یہ ہمارا پہلا اسمارٹ کانٹریکٹ ہے، اس لیے ہم اسے ایک لوکل ٹیسٹ نیٹ ورک پر ڈپلائے کریں گے تاکہ آپ کو اسے ڈپلائے کرنے پر کوئی قیمت ادا نہ کرنی پڑے اور آپ جتنا چاہیں اس کے ساتھ کھیل سکیں۔
اپنا کانٹریکٹ لکھنا
پہلا قدم Remix پر جانا (opens in a new tab) اور ایک نئی فائل بنانا ہے۔ Remix انٹرفیس کے اوپری بائیں حصے پر ایک نئی فائل شامل کریں اور اپنی پسند کا فائل نام درج کریں۔
نئی فائل میں، ہم درج ذیل کوڈ پیسٹ کریں گے۔
1// SPDX-License-Identifier: MIT2pragma solidity >=0.5.17;3
4contract Counter {5
6 // کاؤنٹس کی تعداد کو محفوظ رکھنے کے لیے unsigned int قسم کا پبلک ویری ایبل7 uint256 public count = 0;8
9 // وہ فنکشن جو ہمارے کاؤنٹر میں اضافہ کرتا ہے10 function increment() public {11 count += 1;12 }13
14 // کاؤنٹ کی ویلیو حاصل کرنے کے لیے غیر ضروری گیٹر15 function getCount() public view returns (uint256) {16 return count;17 }18
19}اگر آپ پروگرامنگ سے واقف ہیں تو آپ آسانی سے اندازہ لگا سکتے ہیں کہ یہ پروگرام کیا کرتا ہے۔ یہاں لائن بہ لائن وضاحت دی گئی ہے:
- لائن 4: ہم
Counterکے نام سے ایک کانٹریکٹ کی وضاحت کرتے ہیں۔ - لائن 7: ہمارا کانٹریکٹ
countنامی ایک ان سائنڈ انٹیجر (unsigned integer) اسٹور کرتا ہے جو 0 سے شروع ہوتا ہے۔ - لائن 10: پہلا فنکشن کانٹریکٹ کی اسٹیٹ کو تبدیل کرے گا اور ہمارے ویری ایبل
countکوincrement()کرے گا۔ - لائن 15: دوسرا فنکشن صرف ایک گیٹر (getter) ہے تاکہ اسمارٹ کانٹریکٹ کے باہر
countویری ایبل کی ویلیو کو پڑھا جا سکے۔ نوٹ کریں کہ، چونکہ ہم نے اپنےcountویری ایبل کو پبلک کے طور پر بیان کیا ہے، اس لیے یہ ضروری نہیں ہے لیکن اسے ایک مثال کے طور پر دکھایا گیا ہے۔
ہمارے پہلے سادہ اسمارٹ کانٹریکٹ کے لیے بس اتنا ہی۔ جیسا کہ آپ جانتے ہوں گے، یہ Java یا C++ جیسی OOP (آبجیکٹ اورینٹڈ پروگرامنگ) زبانوں کی کلاس کی طرح لگتا ہے۔ اب وقت آگیا ہے کہ ہم اپنے کانٹریکٹ کے ساتھ کھیلیں۔
اپنا کانٹریکٹ ڈپلائے کرنا
چونکہ ہم نے اپنا پہلا اسمارٹ کانٹریکٹ لکھ لیا ہے، اب ہم اسے بلاک چین پر ڈپلائے کریں گے تاکہ اس کے ساتھ کھیل سکیں۔
اسمارٹ کانٹریکٹ کو بلاک چین پر ڈپلائے کرنا دراصل صرف ایک ٹرانزیکشن بھیجنا ہے جس میں مرتب شدہ (compiled) اسمارٹ کانٹریکٹ کا کوڈ شامل ہوتا ہے، بغیر کسی وصول کنندہ کی وضاحت کیے۔
ہم سب سے پہلے بائیں جانب موجود کمپائل آئیکن پر کلک کر کے کانٹریکٹ کو کمپائل کریں گے:
پھر کمپائل بٹن پر کلک کریں:
آپ "Auto compile" کا آپشن منتخب کر سکتے ہیں تاکہ جب بھی آپ ٹیکسٹ ایڈیٹر پر مواد محفوظ کریں تو کانٹریکٹ ہمیشہ کمپائل ہو جائے۔
پھر "deploy and run transactions" اسکرین پر جائیں:
ایک بار جب آپ "deploy and run transactions" اسکرین پر آ جائیں، تو دوبارہ چیک کریں کہ آپ کے کانٹریکٹ کا نام ظاہر ہو رہا ہے اور Deploy پر کلک کریں۔ جیسا کہ آپ صفحے کے اوپری حصے میں دیکھ سکتے ہیں، موجودہ ماحول "JavaScript VM" ہے جس کا مطلب ہے کہ ہم اپنے اسمارٹ کانٹریکٹ کو ایک لوکل ٹیسٹ بلاک چین پر ڈپلائے کریں گے اور اس کے ساتھ تعامل کریں گے تاکہ تیزی سے اور بغیر کسی فیس کے ٹیسٹ کر سکیں۔
ایک بار جب آپ "Deploy" بٹن پر کلک کر لیں گے، تو آپ کو اپنا کانٹریکٹ نیچے ظاہر ہوتا ہوا نظر آئے گا۔ اسے پھیلانے کے لیے بائیں جانب موجود تیر پر کلک کریں تاکہ ہم اپنے کانٹریکٹ کا مواد دیکھ سکیں۔ یہ ہمارا ویری ایبل counter، ہمارا increment() فنکشن اور گیٹر getCounter() ہے۔
اگر آپ count یا getCount بٹن پر کلک کرتے ہیں، تو یہ دراصل کانٹریکٹ کے count ویری ایبل کا مواد بازیافت کرے گا اور اسے ظاہر کرے گا۔ چونکہ ہم نے ابھی تک increment فنکشن کو کال نہیں کیا ہے، اس لیے اسے 0 ظاہر کرنا چاہیے۔
آئیے اب بٹن پر کلک کر کے increment فنکشن کو کال کریں۔ آپ کو ونڈو کے نچلے حصے میں ہونے والی ٹرانزیکشنز کے لاگز ظاہر ہوتے ہوئے نظر آئیں گے۔ آپ دیکھیں گے کہ جب آپ increment بٹن کے بجائے ڈیٹا بازیافت کرنے کے لیے بٹن دباتے ہیں تو لاگز مختلف ہوتے ہیں۔ اس کی وجہ یہ ہے کہ بلاک چین پر ڈیٹا پڑھنے کے لیے کسی ٹرانزیکشن (لکھنے) یا فیس کی ضرورت نہیں ہوتی۔ کیونکہ صرف بلاک چین کی اسٹیٹ کو تبدیل کرنے کے لیے ٹرانزیکشن کرنے کی ضرورت ہوتی ہے:
increment بٹن دبانے کے بعد جو ہمارے increment() فنکشن کو کال کرنے کے لیے ایک ٹرانزیکشن تیار کرے گا، اگر ہم واپس count یا getCount بٹنوں پر کلک کرتے ہیں تو ہم اپنے اسمارٹ کانٹریکٹ کی نئی اپ ڈیٹ شدہ اسٹیٹ کو پڑھیں گے جس میں count ویری ایبل 0 سے بڑا ہوگا۔
اگلے ٹیوٹوریل میں، ہم اس بات کا احاطہ کریں گے کہ آپ اپنے اسمارٹ کانٹریکٹس میں ایونٹس کیسے شامل کر سکتے ہیں۔ ایونٹس کو لاگ کرنا آپ کے اسمارٹ کانٹریکٹ کو ڈیبگ کرنے اور یہ سمجھنے کا ایک آسان طریقہ ہے کہ فنکشن کو کال کرتے وقت کیا ہو رہا ہے۔
صفحہ کی آخری اپ ڈیٹ: ۳ مارچ، ۲۰۲۶







