ظهور تکنولوژی بلاکچین نحوه تفکر ما درباره داده ها، تراکنش ها و اعتماد را تغییر داده است. از میان نوآوری های مختلف در این فضا، برنامه های غیرمتمرکز (DApp) به عنوان یکی از مهم ترین پیشرفت ها شناخته می شوند. DApp ها بر روی شبکه های غیرمتمرکز کار می کنند و از این رو شفافیت، امنیت و مقاومت در برابر کنترل یا سانسور را نسبت به برنامه های متمرکز سنتی ارائه می دهند.

اتریوم که در سال ۲۰۱۵ راه اندازی شد، به عنوان یک پلتفرم پیشرو برای توسعه DApp ها شناخته می شود. قابلیت های قراردادهای هوشمند آن به توسعه دهندگان این امکان را می دهد تا راه حل های پیچیده و غیرمتمرکز ایجاد کنند که به صنایع مختلفی از جمله امور مالی، بازی ها و دیگر زمینه ها پاسخ می دهند.

این راهنما یک گام به گام دقیق برای ساخت یک DApp ساده بر روی اتریوم ارائه می دهد. ما تمام ابزارهای لازم از جمله Truffle و MetaMask را پوشش خواهیم داد و به نوشتن و استقرار یک قرارداد هوشمند ساده خواهیم پرداخت. در پایان این راهنما، شما یک DApp کاملاً کاربردی را در یک شبکه تست (testnet) استقرار داده اید و دانش پایه ای لازم برای ساخت راه حل های پیچیده تر بلاکچین را خواهید داشت.

DApp چیست؟

DApp چیست؟

یک برنامه غیرمتمرکز (DApp) نوعی نرم افزار است که از تکنولوژی بلاکچین یا یک شبکه همتا به همتا (P2P) برای عملیات پشتیبان استفاده می کند. برخلاف برنامه های سنتی که به سرورهای متمرکز برای ذخیره سازی داده ها و مدیریت آنها وابسته هستند، DApp ها از شبکه های توزیع شده استفاده می کنند که آنها را امن تر و مقاوم تر در برابر خرابی یا دستکاری می کند.

ویژگی های DApp ها

  1. غیرمتمرکز بودن: DApp ها بر روی بلاکچین غیرمتمرکز کار می کنند به جای سرور متمرکز. این باعث می شود که هیچ نقطه ای برای خرابی واحد وجود نداشته باشد.
  2. شفافیت: منطق برنامه در قراردادهای هوشمند کدگذاری می شود که به صورت عمومی قابل دسترسی و حسابرسی هستند.
  3. عدم تغییر: پس از استقرار، قراردادهای هوشمند قابل تغییر نیستند که این موضوع یکپارچگی برنامه را تضمین می کند.
  4. متن باز بودن: بسیاری از DApp ها متن باز هستند که باعث تشویق همکاری و نوآوری در جامعه توسعه دهندگان می شود.

انواع DApp ها

DApp ها بر اساس نوع کاربرد خود می توانند دسته بندی شوند:

  • DApp های مالی: پلتفرم هایی مانند صرافی های غیرمتمرکز (DEX) یا پروتکل های قرض دهی.
  • بازی ها: بازی های مبتنی بر بلاکچین با اقتصاد درون بازی.
  • هویت: DApp هایی که هویت دیجیتال و احراز هویت را مدیریت می کنند.
  • شبکه های اجتماعی: پلتفرم های غیرمتمرکز برای ارتباطات و اشتراک گذاری.

چرا اتریوم؟

اتریوم به عنوان پلتفرم اصلی برای توسعه  DApp ها به دلیل اکوسیستم گسترده توسعه دهندگان، زیرساخت های مستحکم و قابلیت های قرارداد هوشمند پیشرفته خود محبوب است. این پلتفرم ابزارهایی مانند Truffle و Remix را ارائه می دهد که فرآیند ساخت و آزمایش  DApp ها را ساده تر می کند.

پیش نیازهای ساخت Dapp

قبل از شروع به توسعه  DApp، لازم است محیط توسعه خود را آماده کرده و با مفاهیم و ابزارهای خاصی آشنا شوید:

  1. دانش پایه ای از برنامه نویسی:
    • آگاهی از جاوااسکریپت بسیار مهم است چرا که کتابخانه Web3 اتریوم و توسعه فرانت اند به شدت به آن وابسته است.
    • آشنایی با Solidity، زبان برنامه نویسی اصلی برای نوشتن قراردادهای هوشمند اتریوم، نیز مفید خواهد بود.
  2. ابزارهای توسعه:
    • Node.js : محیط اجرای جاوااسکریپت که به شما این امکان را می دهد تا کد جاوااسکریپت را در سمت سرور اجرا کنید.
    • Npm : مدیر بسته های Node که برای نصب و مدیریت وابستگی ها استفاده می شود.
  3. راه اندازی کیف پول:
    • MetaMask: افزونه مرورگر که به عنوان یک کیف پول اتریوم عمل کرده و امکان تعامل با DApp ها را فراهم می کند.
  4. ابزارهای آزمایشی:
    • Ganache : بلاکچین محلی برای توسعه و آزمایش که به شما این امکان را می دهد بدون هزینه تراکنش ها، عملیات را شبیه سازی کنید.
  5. شبکه آزمایشی اتریوم:
    • شبکه های آزمایشی مانند Ropsten،Goerli  یا Sepolia محیطی امن برای استقرار و آزمایش DApp ها فراهم می کنند.

مرحله 1: تنظیم محیط توسعه

این مرحله شامل آماده سازی کامپیوتر شما برای توسعه DApp است با نصب ابزارها و وابستگی های لازم.

  1. نصب Node.js و npm

Node.js  یک محیط اجرایی برای اجرای کد جاوااسکریپت خارج از مرورگر است.  npm به همراه Node.js  نصب می شود و به عنوان مدیر بسته عمل می کند.

  • Node.js  را دانلود کنید. نسخه LTS (پشتیبانی بلندمدت) برای ثبات بهتر انتخاب خوبی است.
  • پس از نصب، اطمینان حاصل کنید که Node.js و npm به درستی نصب شده اند:
  1. نصب  Truffle Suite

Truffle یک فریمورک توسعه قدرتمند برای اتریوم است که کارهایی مانند نوشتن، تست و استقرار قراردادهای هوشمند را ساده می کند.

Truffle  قالب های از پیش پیکربندی شده ای برای راه اندازی سریع پروژه فراهم می آورد و فرآیند توسعه را ساده می کند.

  1. نصب  Ganache

Ganache  یک بلاکچین محلی برای تست است که به شما این امکان را می دهد تا بدون پرداخت هزینه گس (Gas)، بلاکچین را شبیه سازی کنید.

  • Ganache  را از وب سایت Truffle Suite دانلود کنید.
  • پس از نصب، Ganache  را راه اندازی کرده و جزئیات سرور RPC را یادداشت کنید.
  1. نصب MetaMask

MetaMask  یک افزونه مرورگر است که به عنوان یک کیف پول اتریوم عمل کرده و امکان تعامل با DApp ها را فراهم می کند.

  • MetaMask را از وب سایت MetaMask.io دانلود کرده و به عنوان افزونه مرورگر نصب کنید.
  • یک کیف پول جدید بسازید و عبارت seed خود را به صورت امن ذخیره کنید.
  • MetaMask  را به شبکه آزمایشی اتریوم مانند Ropsten یا  Goerliتنظیم کنید.

مرحله 2: نوشتن قرارداد هوشمند

قراردادهای هوشمند پشت صحنه  DApp ها را تشکیل می دهند. این برنامه ها به زبان Solidity نوشته شده اند که روی ماشین مجازی اتریوم (EVM) اجرا می شوند.

  1. راه اندازی یک پروژه  Truffle
  • یک پوشه جدید برای پروژه DApp خود بسازید:
  • یک پروژه Truffle جدید راه اندازی کنید:

فرآیند راه اندازی یک ساختار استاندارد پروژه شامل پوشه هایی برای قراردادها، مهاجرت ها و تست ها ایجاد می کند.

  1. ایجاد قرارداد هوشمند

در پوشه contracts  یک فایل جدید به نام HelloWorld.sol  بسازید و کد زیر را وارد کنید:

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

contract HelloWorld {

    string public message;

    constructor(string memory _message) {

        message = _message;

    }

    function updateMessage(string memory _newMessage) public {

        message = _newMessage;

    }

}

این قرارداد شامل موارد زیر است:

  • متغیر عمومی message.
  • یک سازنده که پیام را مقداردهی اولیه می کند.
  • یک تابع برای به روزرسانی پیام.
  1.  کامپایل قرارداد هوشمند

برای اطمینان از صحت کد قرارداد هوشمند، آن را کامپایل می کنیم.

  • در ترمینال، دستور زیر را در پوشه پروژه اجرا کنید:

truffle compile

این دستور قراردادهای نوشته شده در پوشه contracts  را به بایت کد تبدیل می کند که توسط ماشین مجازی اتریوم (EVM) قابل اجرا است.

در صورت موفقیت آمیز بودن کامپایل، یک پوشه جدید به نام build  ایجاد می شود که حاوی فایل های JSON  با اطلاعات مربوط به قراردادهای کامپایل شده است.

مرحله 3: استقرار قرارداد هوشمند

پس از کامپایل، گام بعدی استقرار قرارداد هوشمند بر روی بلاکچین است. ابتدا، یک فایل مهاجرت (migration) ایجاد کرده و سپس از Ganache یا شبکه آزمایشی برای این کار استفاده می کنیم.

1. ایجاد فایل مهاجرت

Truffle  از اسکریپت های مهاجرت برای مدیریت استقرار قراردادها استفاده می کند. در پوشه migrations، یک فایل جدید به نام 2_deploy_contracts.js  ایجاد کنید و محتوای زیر را اضافه کنید:

const HelloWorld = artifacts.require(“HelloWorld”);

module.exports = function (deployer) {

  deployer.deploy(HelloWorld, “Hello, Blockchain!”);

};

این فایل به Truffle می گوید که قرارداد HelloWorld  را با پیام اولیه “Hello, Blockchain!” مستقر کند.

2. تنظیم شبکه در فایل پیکربندی

فایل truffle-config.js  را باز کرده و شبکه Ganache را به صورت زیر تنظیم کنید:

module.exports = {

  networks: {

    development: {

      host: “127.0.0.1”, // آدرس محلی Ganache

      port: 7545,        // پورت پیش فرض Ganache

      network_id: “*”,   // هر شناسه شبکه ای

    },

  },

  compilers: {

    solc: {

      version: “0.8.0”, // نسخه کامپایلر Solidity

    },

  },

};

3. استقرار قرارداد در Ganache

  • اطمینان حاصل کنید که Ganache در حال اجرا است.
  • در ترمینال، دستور زیر را اجرا کنید: 
  • truffle migrate –network development

این دستور قرارداد HelloWorld  را در شبکه محلی Ganache مستقر می کند. پس از استقرار موفق، آدرس قرارداد در خروجی نمایش داده می شود.

مرحله 4: ساخت رابط کاربری Dapp

یک رابط کاربری (Frontend) برای تعامل با قرارداد هوشمند ایجاد می کنیم. از HTML، CSS  و جاوااسکریپت استفاده خواهیم کرد.

  1.  نصب Web3.js

Web3.js  یک کتابخانه جاوااسکریپت برای تعامل با بلاکچین اتریوم است.

  • نصب Web3.js: 
  • npm install web3
  1.  ایجاد فایل های فرانت اند

یک پوشه جدید به نام client ایجاد کنید و داخل آن فایل های زیر را بسازید: 

  • index.html:  ساختار اصلی صفحه.
  • style.css:  استایل ها.
  • app.js:  منطق جاوااسکریپت.

محتوای style.css:

body {

  font-family: Arial, sans-serif;

  text-align: center;

  margin-top: 50px;

}

.container {

  max-width: 600px;

  margin: 0 auto;

  padding: 20px;

  border: 1px solid #ccc;

  border-radius: 8px;

  background-color: #f9f9f9;

}

محتوای app.js:

const contractAddress = “YOUR_CONTRACT_ADDRESS”;

const contractABI = [

  // اینجا ABI تولیدشده در فایل JSON را جای گذاری کنید

];

let web3;

let contract;

window.onload = async () => {

  if (window.ethereum) {

    web3 = new Web3(window.ethereum);

    await ethereum.request({ method: “eth_requestAccounts” });

    contract = new web3.eth.Contract(contractABI, contractAddress);

    // نمایش پیام فعلی

    const message = await contract.methods.message().call();

    document.getElementById(“message”).innerText = message;

    // به روزرسانی پیام

    document.getElementById(“updateMessage”).onclick = async () => {

      const newMessage = document.getElementById(“newMessage”).value;

      const accounts = await web3.eth.getAccounts();

      await contract.methods.updateMessage(newMessage).send({ from: accounts[0] });

      document.getElementById(“message”).innerText = newMessage;

    };

  } else {

    alert(“MetaMask is not installed!”);

  }

};

مرحله 5: اجرای Dapp

  1. فایل های index.html، style.css و app.js  را در یک سرور محلی اجرا کنید. برای این کار می توانید از افزونه های مرورگر یا ابزارهایی مانند http-server استفاده کنید:
  2. npm install -g http-server
  3. http-server ./client
  4. به آدرس http://localhost:8080  بروید و با DApp خود تعامل کنید.

کلام آخر

ساخت یک DApp ساده بر روی اتریوم فرصتی برای یادگیری اصول بلاکچین و توسعه برنامه های غیرمتمرکز است. در این راهنما، شما با نصب ابزارهای ضروری، نوشتن یک قرارداد هوشمند ساده، و ایجاد یک رابط کاربری اولیه آشنا شدید. این پروژه پایه ای است که می توانید آن را گسترش داده و DApp های پیچیده تر و کاربردی تر بسازید.

برای ادامه یادگیری، مفاهیمی مانند امنیت قرارداد هوشمند، مقیاس پذیری، و تعامل با داده های خارج از زنجیره را بررسی کنید. اتریوم همچنان یکی از پرکاربردترین پلتفرم ها برای نوآوری در فضای بلاکچین است و ابزارهای زیادی برای حمایت از توسعه دهندگان ارائه می دهد.

تاریخ آخرین تغییرات این مقاله: مارس 17, 2025