پیاده سازی بازی ETH 14 در قرارداد هوشمند Solidity
بازی ETH 14 در قرارداد هوشمند به این صورت است که در آن چهاردهمین شخصی که ETH را به قرارداد ارسال می کند، تمام اتریوم را در قرارداد برنده می شود. این نشان می دهد که چگونه می توان از ارسال اجباری ETH جلوگیری کرد و چرا ترتیب عملیات در یک تابع مهم است.
این یک مثال ساده از خطرات قراردادهای هوشمند و چرایی اهمیت تست و Audit است. همه توسعهدهندگان باگهایی در کد خود دارند و یافتن آنها مسئله زمانبری است.
قرارداد زیر را آزمایش کنید و اصول یک قرارداد ساده را بیاموزید. قرارداد زیر را با استفاده از Remix در شبکه آزمایشی اتریوم دپلوی کنید. سعی کنید یک تابع دیگر اضافه کنید.
pragma solidity ^0.6.10;
//A game where the 14th person that deposit ether wins all the ether in the contract
//the winner can claim the 14 ether
contract EtherGame {
uint public targetAmount = 14 ether;
address public winner;
//need to create a balance state variable to prevent forcefully sending ether
uint public balance;
//to play you need to call the deposit function and send 1 ether
function deposit() public payable {
require(msg.value == 1 ether, "You can only send 1 Ether");
//if the current balance is greater then the targetAmount then the game is over
//to prevent forcefully sending eth the balance needs to be updated manually instead of just checking the balance amount
//to prevent forcefully sending ether update the balance state variable manually
balance+= msg.value;
require(balance <= targetAmount, "Game is over");
//if the balance is == to the targetAmount when the 14th person sends ether then we set the winner to the message sender
if (balance == targetAmount) {
winner = msg.sender;
}
}
//the winner can use the claim function to claim their reward
function claimReward() public {
require(msg.sender == winner, "Not Winner");
//this will send all the ether in this contract to the winner
(bool sent, ) = msg.sender.call{value: address(this).balance}("");
require(sent, "Failed to send Ether");
}
function getBalance() public view returns (uint) {
return address(this).balance;
}
}
در صورتی که تجربه خاصی در خصوص برنامهنویسی ندارید میتوانید از دورههای رایگان سایت ما “فرازمان“، استفاده کنید. همچنین اگر به دورههای پیشرفتهتری در این خصوص نیاز داشته باشید، ما با آموزش های حرفه ای که در سایتمان قرار دادیم می توانید به سطح دلخواهتان با تلاش و پشتکار برسید.
نقشه راه
راهنما آکادمی فرازمان
برای یادگیری برنامه نویسی بلاکچین…
در این باره بیشتر بخوانید
دیدگاهتان را بنویسید