আপনার প্রথম স্মার্ট কন্ট্রাক্ট ডিপ্লয় করা
আমি ধারণা করছি যে আপনিও আমাদের মতো ইথেরিয়াম ব্লকচেইনে আপনার প্রথম স্মার্ট কন্ট্রাক্ট ডিপ্লয় করতে এবং এর সাথে ইন্টারঅ্যাক্ট করতে আগ্রহী।
চিন্তা করবেন না, যেহেতু এটি আমাদের প্রথম স্মার্ট কন্ট্রাক্ট, তাই আমরা এটিকে একটি লোকাল টেস্ট নেটওয়ার্কে ডিপ্লয় করব যাতে এটি ডিপ্লয় করতে আপনার কোনো খরচ না হয় এবং আপনি যত খুশি এটি নিয়ে কাজ করতে পারেন।
আমাদের কন্ট্রাক্ট লেখা
প্রথম ধাপ হলো Remix-এ ভিজিট করা (opens in a new tab) এবং একটি নতুন ফাইল তৈরি করা। Remix ইন্টারফেসের উপরের বাম দিকে একটি নতুন ফাইল যোগ করুন এবং আপনার পছন্দমতো ফাইলের নাম দিন।
নতুন ফাইলে, আমরা নিচের কোডটি পেস্ট করব।
// SPDX-License-Identifier: MIT
pragma solidity >=0.5.17;
contract Counter {
// কাউন্টের সংখ্যা রাখার জন্য unsigned int টাইপের পাবলিক ভেরিয়েবল
uint256 public count = 0;
// যে ফাংশনটি আমাদের কাউন্টার বৃদ্ধি করে
function increment() public {
count += 1;
}
// কাউন্টের মান পাওয়ার জন্য অপ্রয়োজনীয় গেটার
function getCount() public view returns (uint256) {
return count;
}
}
আপনি যদি প্রোগ্রামিংয়ে অভ্যস্ত হন তবে আপনি সহজেই অনুমান করতে পারবেন এই প্রোগ্রামটি কী করে। নিচে লাইন ধরে ধরে এর ব্যাখ্যা দেওয়া হলো:
- লাইন 4: আমরা
Counterনামে একটি কন্ট্রাক্ট সংজ্ঞায়িত করি। - লাইন 7: আমাদের কন্ট্রাক্ট
countনামের একটি আনসাইনড ইন্টিজার (unsigned integer) সংরক্ষণ করে যা 0 থেকে শুরু হয়। - লাইন 10: প্রথম ফাংশনটি কন্ট্রাক্টের স্টেট পরিবর্তন করবে এবং আমাদের
countভেরিয়েবলটিকেincrement()করবে। - লাইন 15: দ্বিতীয় ফাংশনটি হলো একটি গেটার (getter) যা স্মার্ট কন্ট্রাক্টের বাইরে থেকে
countভেরিয়েবলের মান পড়তে সাহায্য করে। মনে রাখবেন, যেহেতু আমরা আমাদেরcountভেরিয়েবলটিকে পাবলিক (public) হিসেবে সংজ্ঞায়িত করেছি, তাই এটি প্রয়োজনীয় নয় তবে একটি উদাহরণ হিসেবে দেখানো হয়েছে।
আমাদের প্রথম সাধারণ স্মার্ট কন্ট্রাক্টের জন্য এইটুকুই। আপনি হয়তো জানেন, এটি Java বা C++ এর মতো OOP (অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং) ভাষার একটি ক্লাসের মতো দেখতে। এখন আমাদের কন্ট্রাক্ট নিয়ে কাজ করার সময়।
আমাদের কন্ট্রাক্ট ডিপ্লয় করা
যেহেতু আমরা আমাদের একদম প্রথম স্মার্ট কন্ট্রাক্টটি লিখেছি, তাই এখন আমরা এটিকে ব্লকচেইনে ডিপ্লয় করব যাতে এটি নিয়ে কাজ করা যায়।
ব্লকচেইনে স্মার্ট কন্ট্রাক্ট ডিপ্লয় করা বলতে মূলত কোনো প্রাপক নির্দিষ্ট না করেই কম্পাইল করা স্মার্ট কন্ট্রাক্টের কোড সম্বলিত একটি ট্রানজ্যাকশন পাঠানোকে বোঝায়।
আমরা প্রথমে বাম দিকের কম্পাইল আইকনে ক্লিক করে কন্ট্রাক্টটি কম্পাইল করব:
এরপর কম্পাইল বোতামে ক্লিক করুন:
আপনি চাইলে "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() ফাংশন কল করার জন্য একটি ট্রানজ্যাকশন তৈরি করবে, আমরা যদি আবার count বা getCount বোতামে ক্লিক করি তবে আমরা আমাদের স্মার্ট কন্ট্রাক্টের নতুন আপডেট হওয়া স্টেট পড়তে পারব যেখানে count ভেরিয়েবলটি 0 এর চেয়ে বড় হবে।
পরবর্তী টিউটোরিয়ালে, আমরা আলোচনা করব কীভাবে আপনি আপনার স্মার্ট কন্ট্রাক্টে ইভেন্ট যোগ করতে পারেন। ইভেন্ট লগ করা হলো আপনার স্মার্ট কন্ট্রাক্ট ডিবাগ করার এবং কোনো ফাংশন কল করার সময় কী ঘটছে তা বোঝার একটি সুবিধাজনক উপায়।







