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

اپنا پہلا سمارٹ کنٹریکٹ تعینات کرنا

سمارٹ کنٹریکٹس
remix
solidity
تعینات کرنا
ابتدائی
jdourlens
۳ اپریل، ۲۰۲۰
5 منٹ کا مطالعہ

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

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

اپنا کنٹریکٹ لکھنا

پہلا قدم Remix پر جانا (opens in a new tab) اور ایک نئی فائل بنانا ہے۔ Remix انٹرفیس کے اوپری بائیں حصے پر ایک نئی فائل شامل کریں اور اپنی پسند کا فائل کا نام درج کریں۔

Adding a new file in the Remix interface

نئی فائل میں، ہم درج ذیل کوڈ پیسٹ کریں گے۔

اگر آپ پروگرامنگ کے عادی ہیں تو آپ آسانی سے اندازہ لگا سکتے ہیں کہ یہ پروگرام کیا کرتا ہے۔ یہاں لائن بہ لائن وضاحت دی گئی ہے:

  • لائن 4: ہم Counter کے نام سے ایک کنٹریکٹ کی وضاحت کرتے ہیں۔
  • لائن 7: ہمارا کنٹریکٹ count نامی ایک ان سائنڈ انٹیجر (unsigned integer) کو اسٹور کرتا ہے جو 0 سے شروع ہوتا ہے۔
  • لائن 10: پہلا فنکشن کنٹریکٹ کی حالت کو تبدیل کرے گا اور ہمارے ویری ایبل count کو increment() کرے گا۔
  • لائن 15: دوسرا فنکشن صرف ایک گیٹر (getter) ہے تاکہ سمارٹ کنٹریکٹ کے باہر count ویری ایبل کی قدر کو پڑھا جا سکے۔ نوٹ کریں کہ، چونکہ ہم نے اپنے count ویری ایبل کو پبلک کے طور پر بیان کیا ہے، اس لیے یہ ضروری نہیں ہے لیکن اسے ایک مثال کے طور پر دکھایا گیا ہے۔

ہمارے پہلے سادہ سمارٹ کنٹریکٹ کے لیے بس اتنا ہی ہے۔ جیسا کہ آپ جانتے ہوں گے، یہ Java یا C++ جیسی OOP (Object-Oriented Programming) زبانوں کی ایک کلاس کی طرح لگتا ہے۔ اب وقت آگیا ہے کہ ہم اپنے کنٹریکٹ کے ساتھ کھیلیں۔

اپنا کنٹریکٹ تعینات کرنا

چونکہ ہم نے اپنا بالکل پہلا سمارٹ کنٹریکٹ لکھ لیا ہے، اب ہم اسے بلاک چین پر تعینات کریں گے تاکہ اس کے ساتھ کھیل سکیں۔

سمارٹ کنٹریکٹ کو بلاک چین پر تعینات کرنا دراصل کسی وصول کنندہ کی وضاحت کیے بغیر مرتب شدہ (compiled) سمارٹ کنٹریکٹ کے کوڈ پر مشتمل ایک ٹرانزیکشن بھیجنا ہے۔

ہم سب سے پہلے بائیں جانب موجود کمپائل آئیکن پر کلک کر کے کنٹریکٹ کو کمپائل کریں گے:

The compile icon in the Remix toolbar

پھر کمپائل بٹن پر کلک کریں:

The compile button in the Remix solidity compiler

آپ “Auto compile” آپشن کو منتخب کرنے کا انتخاب کر سکتے ہیں تاکہ جب بھی آپ ٹیکسٹ ایڈیٹر پر مواد محفوظ کریں تو کنٹریکٹ ہمیشہ کمپائل ہو جائے۔

پھر "deploy and run transactions" اسکرین پر جائیں:

The deploy icon in the Remix toolbar

ایک بار جب آپ "deploy and run transactions" اسکرین پر آ جائیں، تو دوبارہ چیک کریں کہ آپ کے کنٹریکٹ کا نام ظاہر ہو رہا ہے اور Deploy پر کلک کریں۔ جیسا کہ آپ صفحے کے اوپری حصے میں دیکھ سکتے ہیں، موجودہ ماحول “JavaScript VM” ہے جس کا مطلب ہے کہ ہم اپنے سمارٹ کنٹریکٹ کو ایک مقامی ٹیسٹ بلاک چین پر تعینات کریں گے اور اس کے ساتھ تعامل کریں گے تاکہ تیزی سے اور بغیر کسی فیس کے ٹیسٹ کر سکیں۔

The deploy button in the Remix solidity compiler

ایک بار جب آپ “Deploy” بٹن پر کلک کر لیں گے، تو آپ کو اپنا کنٹریکٹ نیچے ظاہر ہوتا ہوا نظر آئے گا۔ اسے پھیلانے کے لیے بائیں جانب موجود تیر پر کلک کریں تاکہ ہم اپنے کنٹریکٹ کا مواد دیکھ سکیں۔ یہ ہمارا ویری ایبل counter، ہمارا increment() فنکشن اور گیٹر getCounter() ہے۔

اگر آپ count یا getCount بٹن پر کلک کرتے ہیں، تو یہ دراصل کنٹریکٹ کے count ویری ایبل کا مواد بازیافت کرے گا اور اسے ظاہر کرے گا۔ چونکہ ہم نے ابھی تک increment فنکشن کو کال نہیں کیا ہے، اس لیے اسے 0 دکھانا چاہیے۔

The function button in the Remix solidity compiler

آئیے اب بٹن پر کلک کر کے increment فنکشن کو کال کریں۔ آپ کو ونڈو کے نچلے حصے میں ہونے والی ٹرانزیکشنز کے لاگز ظاہر ہوتے ہوئے نظر آئیں گے۔ آپ دیکھیں گے کہ جب آپ increment بٹن کے بجائے ڈیٹا بازیافت کرنے کے لیے بٹن دباتے ہیں تو لاگز مختلف ہوتے ہیں۔ اس کی وجہ یہ ہے کہ بلاک چین پر ڈیٹا پڑھنے کے لیے کسی ٹرانزیکشن (لکھنے) یا فیس کی ضرورت نہیں ہوتی۔ کیونکہ صرف بلاک چین کی حالت کو تبدیل کرنے کے لیے ٹرانزیکشن کرنے کی ضرورت ہوتی ہے:

A log of transactions

انکریمنٹ (increment) بٹن دبانے کے بعد جو ہمارے increment() فنکشن کو کال کرنے کے لیے ایک ٹرانزیکشن تیار کرے گا، اگر ہم واپس count یا getCount بٹنز پر کلک کریں گے تو ہم اپنے سمارٹ کنٹریکٹ کی نئی اپ ڈیٹ شدہ حالت کو پڑھیں گے جس میں count ویری ایبل 0 سے بڑا ہوگا۔

Newly updated state of the smart contract

اگلے ٹیوٹوریل میں، ہم اس بات کا احاطہ کریں گے کہ آپ اپنے سمارٹ کنٹریکٹس میں ایونٹس کیسے شامل کر سکتے ہیں۔ ایونٹس کو لاگ کرنا آپ کے سمارٹ کنٹریکٹ کو ڈیبگ کرنے اور یہ سمجھنے کا ایک آسان طریقہ ہے کہ فنکشن کو کال کرتے وقت کیا ہو رہا ہے۔