آنچه در این مقاله میخوانید [پنهانسازی]
اپلیکیشنهای staking یکی از روشهای محبوب برای کسب درآمد از ارزهای دیجیتال هستند. این اپلیکیشنها به کاربران این امکان را میدهند که ارزهای دیجیتال خود را به یک قرارداد هوشمند سپردهگذاری کرده و در ازای آن پاداش دریافت کنند. در این مقاله، مراحل ساخت یک اپلیکیشن staking با زبان برنامه نویسی سالیدیتی را بررسی خواهیم کرد.
سرفصل های مقاله
۱. تنظیم محیط توسعه
ابتدا برای شروع کار با سالیدیتی، نیاز دارید که محیط توسعه خود را تنظیم کنید. برای این کار میتوانید از ابزارهایی مانند Remix IDE یا Hardhat استفاده کنید. در اینجا از Remix IDE استفاده خواهیم کرد:
- به وبسایت Remix IDE (remix.ethereum.org) بروید.
- یک فایل جدید با پسوند .sol ایجاد کنید.
۲. نوشتن قرارداد هوشمند
حال که محیط توسعه آماده است، میتوانیم شروع به نوشتن قرارداد هوشمند خود کنیم. قرارداد زیر یک نمونه ساده از قرارداد staking را نشان میدهد:
// SPDX-License-Identifier: MIT
pragma solidity ^.8.;
contract Staking {
mapping(address => uint256) public stakes;
mapping(address => uint256) public rewards;
uint256 public totalStaked;
uint256 public rewardRate = 100; // پاداش به ازای هر واحد استیک شده
address public owner;
constructor() {
owner = msg.sender;
}
function stake(uint256 amount) public {
require(amount > , "Amount must be greater than ");
stakes[msg.sender] += amount;
totalStaked += amount;
// ذخیره مبلغ استیک شده به عنوان پاداش
rewards[msg.sender] = calculateReward(msg.sender);
}
function calculateReward(address user) internal view returns (uint256) {
return (stakes[user] * rewardRate) / 100;
}
function withdraw() public {
uint256 reward = rewards[msg.sender];
require(reward > , "No rewards to withdraw");
// انتقال پاداش به کاربر
payable(msg.sender).transfer(reward);
// صفر کردن پاداش
rewards[msg.sender] = ;
}
// تابع برای واریز ETH به قرارداد
receive() external payable {}
}
آموزش سالیدیتی + 5 پروژه عملی
۳. توضیحات کد
- متغیرها: در این قرارداد، یک mapping برای ذخیره مقدار استیک شده و پاداش هر کاربر ایجاد شده است.
- تابع stake: این تابع برای استیک کردن مقدار مشخصی از ارز دیجیتال طراحی شده است. کاربران باید مقدار استیک شده را تعیین کنند که باید بزرگتر از صفر باشد.
- تابع calculateReward: این تابع برای محاسبه پاداش کاربر بر اساس مقدار استیک شده طراحی شده است.
- تابع withdraw: این تابع به کاربران این امکان را میدهد تا پاداشهای خود را برداشت کنند.
- تابع receive: این تابع برای واریز ETH به قرارداد به کار میرود.
۴. راه اندازی و تست قرارداد
پس از نوشتن قرارداد، میتوانید آن را در شبکه آزمایشی مانند Rinkeby یا Ropsten تست کنید. برای این کار:
- به تب “Deploy & Run Transactions” در Remix بروید.
- شبکه مورد نظر خود را انتخاب کنید.
- بر روی “Deploy” کلیک کنید.
۵. نتیجه گیری
ساخت اپلیکیشن staking با سالیدیتی میتواند باعث افزایش دانش شما در زمینه قراردادهای هوشمند و توسعه بلاکچین شود. با استفاده از کد ارائه شده، شما میتوانید به راحتی یک قرارداد staking ایجاد کنید و آن را توسعه دهید. همچنین میتوانید با افزودن ویژگیهای بیشتر مانند ایجاد تابع برای حل مشکلات امنیتی یا بهینهسازی پاداشها، این قرارداد را بهبود ببخشید.