ইথেরিয়াম (Ethereum)

একটি Decentralized Application (dApp) তৈরি

Latest Technologies - ইথেরিয়াম (Ethereum) - প্র্যাকটিস প্রোজেক্টস | NCTB BOOK

একটি Decentralized Application (dApp) তৈরি করতে হলে স্মার্ট কন্ট্রাক্ট ডেভেলপমেন্ট, ফ্রন্ট-এন্ড ডেভেলপমেন্ট, এবং ব্লকচেইনের সাথে ইন্টারঅ্যাকশন করতে সক্ষম একটি পূর্ণাঙ্গ অ্যাপ্লিকেশন তৈরি করতে হয়। dApp ডেভেলপমেন্টে আপনি স্মার্ট কন্ট্রাক্ট এবং ফ্রন্ট-এন্ড ইন্টিগ্রেশন শেখার সুযোগ পাবেন। নিচে একটি Basic dApp তৈরির ধাপগুলো এবং ব্যবহৃত টুলস নিয়ে আলোচনা করা হলো।

dApp-এর বিবরণ: Simple Storage Application

আমরা একটি Simple Storage dApp তৈরি করবো, যেখানে ব্যবহারকারীরা একটি সংখ্যা স্টোর করতে এবং তা রিট্রিভ করতে পারবে। এটি একটি বেসিক প্রোজেক্ট, তবে এটি Solidity, স্মার্ট কন্ট্রাক্ট ডেভেলপমেন্ট, এবং ব্লকচেইনের সাথে ফ্রন্ট-এন্ড ইন্টিগ্রেশন শেখার জন্য আদর্শ।

dApp তৈরির ধাপগুলো

১. স্মার্ট কন্ট্রাক্ট ডেভেলপমেন্ট
২. ফ্রন্ট-এন্ড ডেভেলপমেন্ট
৩. 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 ব্যবহার করে কন্ট্রাক্ট ডেপ্লয় করা:

১. 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

২. App.js ফাইলের কোড:

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;

ধাপ ৩: Ethereum নেটওয়ার্কে কন্ট্রাক্ট ডেপ্লয় করা

ডেভেলপমেন্ট নেটওয়ার্কে স্মার্ট কন্ট্রাক্ট ডেপ্লয় করার জন্য Truffle বা Hardhat ব্যবহার করতে পারেন। উদাহরণস্বরূপ, আমরা Hardhat ব্যবহার করবো।

১. Hardhat প্রোজেক্ট সেটআপ

npm install --save-dev hardhat
npx hardhat

২. 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।

Content added By
Promotion