Smart Contracts (পরিচিতি)
- ●Smart contract হলো blockchain-এ রাখা self-executing কোড — শর্ত পূরণ হলে নিজে থেকেই চলে, কোনো মধ্যস্থতাকারী লাগে না।
- ●Ethereum-এর EVM-এ এই কোড চলে, আর প্রতিটি ধাপের জন্য gas আকারে fee দিতে হয়।
- ●Deploy হওয়া কোড সাধারণত পরিবর্তন করা যায় না — তাই একটি bug স্থায়ী এবং ব্যয়বহুল হতে পারে।
সমস্যাটা কী?
কল্পনা করো, দুই বন্ধু একটা খেলা নিয়ে বাজি ধরল — জিতলে একজন অন্যজনকে টাকা দেবে। সমস্যা: জেতার পর হেরে যাওয়া পক্ষ যদি টাকা দিতে অস্বীকার করে? সাধারণত একজন বিশ্বস্ত তৃতীয় ব্যক্তি (মধ্যস্থতাকারী) টাকা রেখে দেয় এবং ফল অনুযায়ী বিলি করে। কিন্তু সেই মধ্যস্থতাকারীকে বিশ্বাস করতে হয়, ফি দিতে হয়, আর সে পক্ষপাত করতে পারে।
এখন ভাবো — যদি এমন একটা চুক্তি লেখা যায় যা কোড আকারে নিজে নিজেই চলে, কারও হস্তক্ষেপ ছাড়াই শর্ত পূরণ হলে স্বয়ংক্রিয়ভাবে টাকা বিলি করে, এবং কেউ তা বদলাতে বা থামাতে পারে না? এটাই smart contract-এর প্রতিশ্রুতি: "code is law" — চুক্তির শর্ত মানুষের সদিচ্ছার বদলে কোডের নিশ্চয়তায় চলে।
মূল ধারণা
Smart contract হলো blockchain-এ deploy করা একটি self-executing প্রোগ্রাম, যার মধ্যে চুক্তির শর্ত সরাসরি কোডে লেখা থাকে। পূর্বনির্ধারিত শর্ত পূরণ হলে এটি কোনো মধ্যস্থতাকারী ছাড়াই স্বয়ংক্রিয়ভাবে নির্বাহ হয়, এবং এর ফলাফল network-এর সব node একইভাবে যাচাই করতে পারে।
দুটো মূল গুণ এখানে গুরুত্বপূর্ণ — deterministic (একই input-এ সব node-এ একই ফল আসতেই হবে, নইলে consensus ভাঙবে) এবং immutable (একবার deploy হলে কোড সাধারণত আর বদলানো যায় না)।
কীভাবে কাজ করে
EVM ও execution
Ethereum-এ smart contract চলে EVM (Ethereum Virtual Machine)-এ — এটি একটি বিশ্বব্যাপী, প্রতিলিপিকৃত virtual computer। তুমি Solidity-র মতো ভাষায় কোড লেখো, সেটি EVM bytecode-এ compile হয়ে chain-এ deploy হয়। এরপর যে কেউ একটি transaction পাঠিয়ে contract-এর কোনো function কল করতে পারে; প্রতিটি validator/node সেই কোড নিজে চালিয়ে একই ফলে পৌঁছায় এবং নতুন state ledger-এ লেখা হয়।
Gas
কোড চালানো বিনামূল্যে নয়। প্রতিটি অপারেশনের (যোগ, storage লেখা, ইত্যাদি) একটি নির্দিষ্ট gas খরচ আছে। ব্যবহারকারী transaction পাঠানোর সময় gas-এর জন্য fee দেয়। এর তিনটি উদ্দেশ্য:
- validator-দের computation-এর ক্ষতিপূরণ দেওয়া।
- spam ও অপব্যবহার ব্যয়বহুল করে নিরুৎসাহিত করা।
- infinite loop ঠেকানো — gas ফুরিয়ে গেলে execution থেমে যায় (revert হয়)।
Oracle ও বাহ্যিক data
Smart contract কেবল chain-এর ভেতরের data দেখতে পারে — সে নিজে থেকে ডলারের দাম, খেলার স্কোর বা আবহাওয়া জানতে পারে না (কারণ তা হলে execution আর deterministic থাকবে না)। বাহ্যিক তথ্য আনতে লাগে oracle — একটি বিশ্বস্ত সেতু যা off-chain data chain-এ সরবরাহ করে। তবে oracle নিজেই একটি দুর্বল বিন্দু: ভুল বা manipulated data দিলে contract ভুল সিদ্ধান্ত নেবে।
তুলনা: ঐতিহ্যবাহী চুক্তি বনাম smart contract
| দিক | ঐতিহ্যবাহী চুক্তি | Smart Contract |
|---|---|---|
| নির্বাহ | মানুষ/আদালত | কোড স্বয়ংক্রিয়ভাবে |
| মধ্যস্থতাকারী | লাগে | লাগে না |
| পরিবর্তন | আলোচনা করে বদলানো যায় | সাধারণত immutable |
| স্বচ্ছতা | গোপন থাকতে পারে | কোড সবার দৃশ্যমান |
| ভুলের সংশোধন | সংশোধনযোগ্য | কঠিন/অসম্ভব |
ভাবো রাস্তার পাশের একটা vending machine বা চা-কফির স্বয়ংক্রিয় মেশিন। তুমি ঠিক পরিমাণ টাকা ঢুকিয়ে বোতাম চাপলে মেশিন নিজে থেকেই কফি দেয় — কোনো দোকানদার লাগে না, দরদাম নেই, পক্ষপাত নেই। শর্ত (সঠিক টাকা) পূরণ হলে ফল (কফি) নিশ্চিত। smart contract ঠিক এমন — শর্ত পূরণ হলে স্বয়ংক্রিয়ভাবে নির্বাহ। কিন্তু সমস্যা: মেশিনের প্রোগ্রামে যদি ভুল থাকে — যেমন টাকা নিয়ে কফি না দেওয়া — তাহলে সেটা ঠিক করতে মেশিন খুলতে হবে; আর blockchain-এ deploy হওয়া contract তো খোলাই যায় না!
প্রকারভেদ
Smart contract দিয়ে নানা ধরনের অ্যাপ্লিকেশন বানানো হয়:
- Token — ERC-20 (fungible) ও ERC-721/1155 (NFT) standard অনুযায়ী টোকেন।
- DeFi (Decentralized Finance) — lending, borrowing, exchange (যেমন AMM) মধ্যস্থতাকারী ছাড়াই।
- DAO — কোড-চালিত সংগঠন যেখানে ভোটে সিদ্ধান্ত হয়।
- Escrow ও supply chain — শর্তসাপেক্ষ অর্থ ছাড় বা পণ্য ট্র্যাকিং।
কখন ব্যবহার করবে / করবে না
ব্যবহার উপযুক্ত যখন:
- একাধিক অবিশ্বাসী পক্ষের মধ্যে স্বয়ংক্রিয়, যাচাইযোগ্য নির্বাহ দরকার।
- মধ্যস্থতাকারী সরিয়ে স্বচ্ছতা ও প্রোগ্রামেবিলিটি চাও।
এড়িয়ে চলো যখন:
- লজিক ঘন ঘন বদলাতে হবে (immutability বাধা)।
- বিপুল বাহ্যিক data বা ভারী computation দরকার (gas ব্যয়বহুল)।
- গোপনীয়তা মুখ্য — public chain-এ কোড ও data সবার দৃশ্যমান।
Smart contract-এ bug মানে কেবল crash নয় — তা স্থায়ী এবং প্রায়ই অর্থ চুরির দরজা। একবার deploy হলে কোড সাধারণত বদলানো যায় না, আর transaction উল্টানোও যায় না। অতীতে reentrancy-র মতো একটি ত্রুটির কারণে কোটি কোটি ডলার চুরি হয়েছে। তাই deploy-এর আগে কঠোর audit ও testing অপরিহার্য — "move fast and break things" এখানে বিপজ্জনক।
বাস্তব উদাহরণ
Ethereum হলো smart contract-এর সবচেয়ে প্রসিদ্ধ প্ল্যাটফর্ম; এর ওপর Uniswap (DeFi exchange), Aave (lending), নানা NFT প্রকল্প চলে। Bitcoin-এ scripting সীমিত (ইচ্ছাকৃতভাবে সরল ও নিরাপদ রাখতে), তাই এটি সাধারণ অর্থে "smart contract platform" নয়, যদিও মৌলিক condition যাচাই করতে পারে।
বিখ্যাত শিক্ষণীয় ঘটনা হলো The DAO hack (2016) — একটি smart contract-এর ত্রুটির কারণে বিপুল ETH সরিয়ে নেওয়া হয়, যা শেষে Ethereum-এর একটি বিতর্কিত hard fork-এ গড়ায়। এটি দেখায়, "code is law" আদর্শ আর বাস্তব মানবিক সিদ্ধান্তের সংঘাত কত গভীর হতে পারে।
ইন্টারভিউতে smart contract নিয়ে কথা বললে শুধু সম্ভাবনা নয়, সীমাবদ্ধতাও বলো: immutability ভালো (কেউ চুপিচুপি নিয়ম বদলাতে পারে না) আবার বিপজ্জনক (bug ঠিক করা যায় না); oracle ছাড়া বাইরের জগৎ দেখা যায় না, আর oracle নিজেই একটি trust-bottleneck। এই ট্রেড-অফ বুঝলে তুমি কেবল "hype" নয়, প্রকৌশল দিক থেকে ভাবছ — এটাই পার্থক্য গড়ে দেয়।
মূল শব্দ (Key Terms)
মিনি কুইজ
1. Smart contract মূলত কী?
2. Gas কেন দরকার?
3. Oracle কেন প্রয়োজন হয়?