مقدمه

قراردادهای هوشمند (Smart Contracts) به عنوان یک قسمت کلیدی از بلاکچین‌ها، به کاربران این امکان را می‌دهند که شرایط توافق‌نامه‌ها را به صورت خودکار و بدون نیاز به واسطه‌ها اجرا کنند. یکی از کاربردهای مفید این قراردادها، کار با API در قراردادهای هوشمند است. در این مقاله، فرایند نوشتن قراردادهای هوشمند را که می‌توانند به طور مستقیم با APIهای خارجی ارتباط برقرار کنند، بررسی خواهیم کرد.

۱. آشنایی با قراردادهای هوشمند

قراردادهای هوشمند در بسترهای بلاکچینی مانند اتریوم نوشته می‌شوند و به شما این امکان را می‌دهند که قواعد را به صورت کد بنویسید و اجرایشان کنید. با این حال، قراردادهای هوشمند به طور مستقیم نمی‌توانند به APIهای خارجی دسترسی داشته باشند. برای حل این مشکل، باید از تکنولوژی‌هایی مانند اوراکل‌ها (Oracles) استفاده کنید.

۲. مفهوم اوراکل‌ها

اوراکل‌ها یک پل میان بلاکچین و داده‌های بیرونی هستند. آن‌ها اطلاعات را از دنیای واقعی به قراردادهای هوشمند می‌آورند و برعکس، اطلاعات قراردادها را به دنیای واقعی منتقل می‌کنند. با استفاده از اوراکل‌ها، می‌توانید قراردادهای هوشمند خود را به APIهای خارجی متصل کنید.

۳. مراحل نوشتن قراردادهای هوشمند

۳.۱. نصب و راه‌اندازی محیط توسعه

پیش از نوشتن قراردادهای هوشمند، باید محیط توسعه مناسب را راه‌اندازی کنید:

  1. نصب Node.js: برای اجرای کدهای جاوا اسکریپت.
  2. نصب Truffle: برای ساخت و تست قراردادهای هوشمند.
    npm install -g truffle
    
  3. نصب Ganache: برای راه‌اندازی یک بلاکچین محلی.

۳.۲. ایجاد یک پروژه جدید

با استفاده از Truffle، یک پروژه جدید ایجاد کنید:

truffle init

۳.۳. نوشتن قرارداد هوشمند

در این مرحله، دو فایل اصلی خواهیم داشت: یک قرارداد هوشمند و یک اوراکل برای اتصال به API. در اینجا یک مثال ساده از قرارداد هوشمند را بررسی می‌کنیم:

// SPDX-License-Identifier: MIT
pragma solidity ^.8.;

contract ExternalAPI {
    string public dataFromAPI;

    function updateData(string memory _data) public {
        dataFromAPI = _data;
    }
}

۳.۴. ایجاد اوراکل

حالا باید اوراکلی ایجاد کنیم که اطلاعات را از API بگیرد و به قرارداد هوشمند منتقل کند. می‌توانید از یک اوراکل عمومی مانند Chainlink استفاده کنید. با این حال، برای سادگی، مثال زیر را مشاهده کنید:

const axios = require('axios');
const Web3 = require('web3');
const contractJSON = require('./build/ExternalAPI.json'); // فایل ABI

const web3 = new Web3('http://localhost:8545');
const contractAddress = 'آدرس_قرارداد_شما';
const contract = new web3.eth.Contract(contractJSON.abi, contractAddress);

async function fetchDataFromAPI() {
    try {
        const response = await axios.get('URL_API_MA');
        const data = response.data;
        
        // به روزرسانی داده‌ها در قرارداد هوشمند
        const accounts = await web3.eth.getAccounts();
        await contract.methods.updateData(data).send({ from: accounts[] });

        console.log('Data updated in contract:', data);
    } catch (error) {
        console.error('Error fetching data:', error);
    }
}

// اجرای تابع
fetchDataFromAPI();

آموزش سالیدیتی

۴. تست قرارداد هوشمند

برای تست قرارداد هوشمند خود، می‌توانید از Truffle و Ganache استفاده کنید. با اجرای تست‌های خود می‌توانید اطمینان حاصل کنید که قرارداد به درستی با API ارتباط برقرار می‌کند.

truffle test

نتیجه‌ گیری

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