در این مقاله، به آموزش ساخت یک استیکینگ پول (Staking Pool) با سالیدیتی خواهیم پرداخت. استیکینگ یکی از روش‌های محبوب برای کسب پاداش از طریق قفل کردن توکن‌ها در یک قرارداد هوشمند است. با استفاده از این راهنما، شما توانایی ساخت یک استیکینگ پول ساده را خواهید داشت.

تعریف استیکینگ پول

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

مراحل ساخت استیکینگ پول با سالیدیتی

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

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

۲. نوشتن کد قرارداد

بیایید کد یک استیکینگ پول ساده را بنویسیم. نمونه زیر یک قرارداد برای استیکینگ پول است:

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

contract StakingPool {
    mapping(address => uint256) public stakers;
    uint256 public totalStaked;

    event Staked(address indexed user, uint256 amount);
    event Unstaked(address indexed user, uint256 amount);

    function stake() external payable {
        require(msg.value > , "Amount must be greater than ");

        stakers[msg.sender] += msg.value;
        totalStaked += msg.value;

        emit Staked(msg.sender, msg.value);
    }

    function unstake(uint256 amount) external {
        require(stakers[msg.sender] >= amount, "Insufficient staked amount");

        stakers[msg.sender] -= amount;
        totalStaked -= amount;

        payable(msg.sender).transfer(amount);
        emit Unstaked(msg.sender, amount);
    }

    function getStakedAmount(address user) external view returns (uint256) {
        return stakers[user];
    }
}

۳. توضیح کد

  • مکانیزم استیکینگ: در این قرارداد، کاربر با استفاده از تابع stake می‌تواند توکن‌های خود را قفل کرده و در عوض آن‌ها به جمع کل استیک‌های پروژه اضافه می‌شود.
  • مکانیزم برداشت: کاربر می‌تواند از طریق تابع unstake مقداری از توکن‌های خود را آزاد کند. این تابع مقدار مورد نظر کاربر را بررسی می‌کند و در صورت کفاف، مقدار مربوطه به کاربر بازگردانده می‌شود.
  • رویدادها: برای تسهیل پیگیری فعالیت‌ها، دو رویداد Staked و Unstaked به قرارداد اضافه شده است.

۴. آزمایش قرارداد

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

نتیجه‌ گیری

ساخت یک staking pool با سالیدیتی نسبتاً ساده است و با استفاده از کدهایی که ارائه شده، می‌توانید قرارداد هوشمند خود را به راحتی بهینه‌سازی و گسترش دهید. می‌توانید ویژگی‌های بیشتری مانند پاداش‌گذاری بر اساس زمان استیکینگ یا درصدی از کارمزدهای شبکه را اضافه کنید.