একটি Decentralized Application (dApp) তৈরি করতে হলে স্মার্ট কন্ট্রাক্ট ডেভেলপমেন্ট, ফ্রন্ট-এন্ড ডেভেলপমেন্ট, এবং ব্লকচেইনের সাথে ইন্টারঅ্যাকশন করতে সক্ষম একটি পূর্ণাঙ্গ অ্যাপ্লিকেশন তৈরি করতে হয়। dApp ডেভেলপমেন্টে আপনি স্মার্ট কন্ট্রাক্ট এবং ফ্রন্ট-এন্ড ইন্টিগ্রেশন শেখার সুযোগ পাবেন। নিচে একটি Basic dApp তৈরির ধাপগুলো এবং ব্যবহৃত টুলস নিয়ে আলোচনা করা হলো।
আমরা একটি Simple Storage dApp তৈরি করবো, যেখানে ব্যবহারকারীরা একটি সংখ্যা স্টোর করতে এবং তা রিট্রিভ করতে পারবে। এটি একটি বেসিক প্রোজেক্ট, তবে এটি Solidity, স্মার্ট কন্ট্রাক্ট ডেভেলপমেন্ট, এবং ব্লকচেইনের সাথে ফ্রন্ট-এন্ড ইন্টিগ্রেশন শেখার জন্য আদর্শ।
১. স্মার্ট কন্ট্রাক্ট ডেভেলপমেন্ট
২. ফ্রন্ট-এন্ড ডেভেলপমেন্ট
৩. Ethereum নেটওয়ার্কে কন্ট্রাক্ট ডেপ্লয় করা
৪. ফ্রন্ট-এন্ড এবং স্মার্ট কন্ট্রাক্ট ইন্টিগ্রেশন
Solidity ব্যবহার করে একটি Simple Storage স্মার্ট কন্ট্রাক্ট লিখুন। এই কন্ট্রাক্ট একটি সংখ্যা স্টোর এবং রিট্রিভ করার সুযোগ দেবে।
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract SimpleStorage {
uint256 private storedNumber;
// Store a number
function set(uint256 _number) public {
storedNumber = _number;
}
// Retrieve the stored number
function get() public view returns (uint256) {
return storedNumber;
}
}
১. Remix IDE ওপেন করুন। ২. SimpleStorage.sol
নামে একটি নতুন ফাইল তৈরি করুন এবং উপরের কোডটি পেস্ট করুন। 3. Solidity Compiler ট্যাবে যান এবং কন্ট্রাক্টটি কম্পাইল করুন। 4. Deploy & Run Transactions ট্যাবে যান এবং JavaScript VM নির্বাচন করুন। 5. "Deploy" বাটনে ক্লিক করে কন্ট্রাক্টটি ডেপ্লয় করুন।
এখন আমরা আমাদের স্মার্ট কন্ট্রাক্টের সাথে ইন্টারঅ্যাক্ট করতে একটি ফ্রন্ট-এন্ড তৈরি করবো। আমরা React.js এবং Ethers.js লাইব্রেরি ব্যবহার করবো।
npx create-react-app simple-storage-dapp
cd simple-storage-dapp
npm install ethers
import React, { useState } from "react";
import { ethers } from "ethers";
import SimpleStorage from "./artifacts/contracts/SimpleStorage.sol/SimpleStorage.json";
const simpleStorageAddress = "আপনার_ডেপ্লয়কৃত_কন্ট্রাক্টের_অ্যাড্রেস";
function App() {
const [storedValue, setStoredValue] = useState("");
const [inputValue, setInputValue] = useState("");
// স্মার্ট কন্ট্রাক্টের সাথে কানেক্ট করতে
async function requestAccount() {
await window.ethereum.request({ method: "eth_requestAccounts" });
}
// get ফাংশন কল করে মান রিট্রিভ করতে
async function fetchValue() {
if (typeof window.ethereum !== "undefined") {
const provider = new ethers.providers.Web3Provider(window.ethereum);
const contract = new ethers.Contract(
simpleStorageAddress,
SimpleStorage.abi,
provider
);
try {
const data = await contract.get();
setStoredValue(data.toString());
} catch (err) {
console.error("Error: ", err);
}
}
}
// set ফাংশন কল করে মান সংরক্ষণ করতে
async function setValue() {
if (!inputValue) return;
if (typeof window.ethereum !== "undefined") {
await requestAccount();
const provider = new ethers.providers.Web3Provider(window.ethereum);
const signer = provider.getSigner();
const contract = new ethers.Contract(
simpleStorageAddress,
SimpleStorage.abi,
signer
);
const transaction = await contract.set(inputValue);
await transaction.wait();
fetchValue();
}
}
return (
Simple Storage dApp
Stored Value: {storedValue}
setInputValue(e.target.value)}
/>
);
}
export default App;
ডেভেলপমেন্ট নেটওয়ার্কে স্মার্ট কন্ট্রাক্ট ডেপ্লয় করার জন্য Truffle বা Hardhat ব্যবহার করতে পারেন। উদাহরণস্বরূপ, আমরা Hardhat ব্যবহার করবো।
npm install --save-dev hardhat
npx hardhat
Hardhat কনফিগারেশনে ডেভেলপমেন্ট নেটওয়ার্ক যোগ করুন এবং কন্ট্রাক্ট ডেপ্লয় করার জন্য একটি স্ক্রিপ্ট লিখুন।
// scripts/deploy.js
async function main() {
const SimpleStorage = await ethers.getContractFactory("SimpleStorage");
const simpleStorage = await SimpleStorage.deploy();
await simpleStorage.deployed();
console.log("SimpleStorage deployed to:", simpleStorage.address);
}
main()
.then(() => process.exit(0))
.catch((error) => {
console.error(error);
process.exit(1);
});
npx hardhat run scripts/deploy.js --network localhost
React অ্যাপে Hardhat থেকে প্রাপ্ত কন্ট্রাক্ট অ্যাড্রেস এবং ABI (ডেপ্লয় করার পর পাওয়া) আপডেট করুন। এটি করার পর আপনি dApp-এর ফ্রন্ট-এন্ডের মাধ্যমে স্মার্ট কন্ট্রাক্টের সাথে ইন্টারঅ্যাক্ট করতে পারবেন।
এই প্রোজেক্টের মাধ্যমে আপনি একটি Basic dApp তৈরি করতে এবং স্মার্ট কন্ট্রাক্ট, ফ্রন্ট-এন্ড ইন্টিগ্রেশন, এবং Ethereum নেটওয়ার্কে কন্ট্রাক্ট ডেপ্লয় করার প্রক্রিয়া শিখতে পারবেন। এটি একটি বেসিক প্রোজেক্ট হলেও, আপনি এই ভিত্তির ওপর ভিত্তি করে আরও জটিল dApp তৈরি করতে পারেন, যেমন DeFi, NFT মার্কেটপ্লেস, বা Decentralized Voting System।
আরও দেখুন...