মূল কন্টেন্টে যান

আপনার প্রথম স্মার্ট কন্ট্রাক্ট ডিপ্লয় করা

স্মার্ট কন্ট্রাক্ট
Remix
Solidity
ডিপ্লয়িং
শিক্ষানবিস
jdourlens
3 এপ্রিল, 2020
4 মিনিট পড়া

আমি ধারণা করছি যে আপনিও আমাদের মতো ইথিরিয়াম ব্লকচেইন-এ আপনার প্রথম স্মার্ট কন্ট্রাক্ট ডিপ্লয় করতে এবং এর সাথে ইন্টারঅ্যাক্ট করতে অনেক বেশি আগ্রহী।

চিন্তা করবেন না, যেহেতু এটি আমাদের প্রথম স্মার্ট কন্ট্রাক্ট, তাই আমরা এটি একটি লোকাল টেস্টনেট-এ ডিপ্লয় করব যাতে এটি ডিপ্লয় করতে আপনার কোনো খরচ না হয় এবং আপনি যত খুশি এটি নিয়ে কাজ করতে পারেন।

আমাদের কন্ট্রাক্ট লেখা

প্রথম ধাপ হলো Remix-এ যাওয়া (opens in a new tab) এবং একটি নতুন ফাইল তৈরি করা। Remix ইন্টারফেসের উপরের বাম দিকে একটি নতুন ফাইল যোগ করুন এবং আপনার পছন্দমতো ফাইলের নাম দিন।

Remix ইন্টারফেসে একটি নতুন ফাইল যোগ করা

নতুন ফাইলে, আমরা নিচের কোডটি পেস্ট করব।

1// SPDX-License-Identifier: MIT
2pragma 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 (অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং) ভাষার ক্লাসের মতো দেখতে। এখন আমাদের কন্ট্রাক্ট নিয়ে কাজ করার সময়।

আমাদের কন্ট্রাক্ট ডিপ্লয় করা

যেহেতু আমরা আমাদের প্রথম স্মার্ট কন্ট্রাক্ট লিখে ফেলেছি, তাই এখন আমরা এটি ব্লকচেইন-এ ডিপ্লয় করব যাতে আমরা এটি নিয়ে কাজ করতে পারি।

ব্লকচেইন-এ স্মার্ট কন্ট্রাক্ট ডিপ্লয় করা বলতে মূলত কোনো প্রাপক নির্দিষ্ট না করেই কম্পাইল করা স্মার্ট কন্ট্রাক্ট-এর কোড সম্বলিত একটি লেনদেন পাঠানোকে বোঝায়।

আমরা প্রথমে বাম দিকের কম্পাইল আইকনে ক্লিক করে কন্ট্রাক্টটি কম্পাইল করব:

Remix টুলবারে কম্পাইল আইকন

এরপর কম্পাইল বাটনে ক্লিক করুন:

Remix সলিডিটি কম্পাইলারে কম্পাইল বাটন

আপনি চাইলে "Auto compile" অপশনটি নির্বাচন করতে পারেন, যাতে টেক্সট এডিটরে কন্টেন্ট সেভ করার সাথে সাথেই কন্ট্রাক্টটি স্বয়ংক্রিয়ভাবে কম্পাইল হয়ে যায়।

এরপর "deploy and run transactions" স্ক্রিনে যান:

Remix টুলবারে ডিপ্লয় আইকন

"deploy and run transactions" স্ক্রিনে যাওয়ার পর, আপনার কন্ট্রাক্টের নাম দেখাচ্ছে কিনা তা ভালোভাবে চেক করুন এবং Deploy-এ ক্লিক করুন। পৃষ্ঠার উপরের দিকে দেখতে পাবেন, বর্তমান এনভায়রনমেন্ট হলো "JavaScript VM", যার মানে হলো আমরা একটি লোকাল টেস্ট ব্লকচেইন-এ আমাদের স্মার্ট কন্ট্রাক্ট ডিপ্লয় করব এবং এর সাথে ইন্টারঅ্যাক্ট করব, যাতে কোনো ফি ছাড়াই দ্রুত টেস্ট করা যায়।

Remix সলিডিটি কম্পাইলারে ডিপ্লয় বাটন

"Deploy" বাটনে ক্লিক করার পর, আপনি নিচে আপনার কন্ট্রাক্টটি দেখতে পাবেন। বাম দিকের অ্যারোতে ক্লিক করে এটি এক্সপ্যান্ড করুন যাতে আমরা আমাদের কন্ট্রাক্টের কন্টেন্ট দেখতে পারি। এখানে আমাদের counter ভেরিয়েবল, increment() ফাংশন এবং getCounter() গেটার রয়েছে।

আপনি যদি count বা getCount বাটনে ক্লিক করেন, তবে এটি কন্ট্রাক্টের count ভেরিয়েবলের কন্টেন্ট নিয়ে আসবে এবং তা প্রদর্শন করবে। যেহেতু আমরা এখনও increment ফাংশনটি কল করিনি, তাই এটি 0 দেখাবে।

Remix সলিডিটি কম্পাইলারে ফাংশন বাটন

চলুন এখন বাটনে ক্লিক করে increment ফাংশনটি কল করি। আপনি উইন্ডোর নিচের দিকে সম্পন্ন হওয়া লেনদেনগুলোর লগ দেখতে পাবেন। আপনি লক্ষ্য করবেন যে, increment বাটনের পরিবর্তে ডেটা রিট্রিভ করার বাটনে ক্লিক করলে লগগুলো ভিন্ন হয়। এর কারণ হলো ব্লকচেইন-এ ডেটা পড়ার জন্য কোনো লেনদেন (রাইটিং) বা ফি-এর প্রয়োজন হয় না। কারণ শুধুমাত্র ব্লকচেইন-এর স্টেট পরিবর্তন করার জন্যই লেনদেন করার প্রয়োজন হয়:

লেনদেনের একটি লগ

ইনক্রিমেন্ট বাটনে চাপ দেওয়ার পর, যা আমাদের increment() ফাংশন কল করার জন্য একটি লেনদেন তৈরি করবে, আমরা যদি আবার count বা getCount বাটনে ক্লিক করি, তবে আমরা আমাদের স্মার্ট কন্ট্রাক্ট-এর নতুন আপডেট হওয়া স্টেট দেখতে পাব, যেখানে count ভেরিয়েবলের মান 0 এর চেয়ে বড় হবে।

স্মার্ট কন্ট্রাক্ট-এর নতুন আপডেট হওয়া স্টেট

পরবর্তী টিউটোরিয়ালে, আমরা আলোচনা করব কীভাবে আপনি আপনার স্মার্ট কন্ট্রাক্ট-এ ইভেন্ট যোগ করতে পারেন। ইভেন্ট লগ করা হলো আপনার স্মার্ট কন্ট্রাক্ট ডিবাগ করার এবং কোনো ফাংশন কল করার সময় কী ঘটছে তা বোঝার একটি সুবিধাজনক উপায়।

পেজ সর্বশেষ আপডেট: 3 মার্চ, 2026

এই টিউটোরিয়ালটি কি সহায়ক ছিল?