账户
0x71...7e86
0x71...7e86

0x71...7e86

$500
此合同的源代码已经过验证!
合同元数据
编译器
0.8.18+commit.87f61d96
语言
Solidity
合同源代码
文件 1 的 1:raffle.sol
pragma solidity ^0.8.18;

contract raffle {
    address payable public Owner;
    uint256 public Tax;
    bool public IsGameOn = false;
    uint256 public MinimumAmount;

    event NewParticipants(address Sender, uint256 Amount);
    event WinnerDeclared(address indexed Winner, uint256 Amount);
    event GameOn();
    event GameOff();

    constructor(uint _Tax, uint _MinimumAmount) {
        Owner = payable(msg.sender);
        Tax = _Tax;
        MinimumAmount = _MinimumAmount;
    }

    modifier IsOpen() {
        require(IsGameOn, "Deposits are currently closed");
        _;
    }

    modifier IsOwner() {
        require(msg.sender == Owner, "Only the owner can call this function");
        _;
    }

    receive() external payable IsOpen {
        require(msg.value >= MinimumAmount, "Minimum deposit amount not met");
        emit NewParticipants(msg.sender, msg.value);
    }

    function StartGame() external IsOwner {
        require(!IsGameOn, "Game is already in progress");
        IsGameOn = true;
        emit GameOn();
    }

    function EndGame() external IsOwner {
        require(IsGameOn, "Game has not started yet");
        IsGameOn = false;
        emit GameOff();
    }

    function ChangeMinimumAmount(uint256 Amount) external IsOwner {
        MinimumAmount = Amount;
    }

    function ChangeTaxPercentage(uint256 _Tax) external IsOwner {
        require(_Tax <= 100, "Invalid Tax amount");
        Tax = _Tax;
    }

    function DistributePrize(address payable winner) external IsOwner {
        uint256 ContractBalance = address(this).balance;
        require(address(this).balance > 0, "No Balance Left");

        uint256 TaxAmount = (ContractBalance * Tax) / 100;
        uint256 amount = ContractBalance - TaxAmount;

        (bool sent, ) = winner.call{value: amount}("");
        require(sent, "Failed to send Ether");

        (bool sent2, ) = Owner.call{value: TaxAmount}("");
        require(sent2, "Failed to send Ether");


        emit WinnerDeclared(winner, amount);
    }
}
设置
{
  "compilationTarget": {
    "raffle.sol": "raffle"
  },
  "evmVersion": "paris",
  "libraries": {},
  "metadata": {
    "bytecodeHash": "ipfs"
  },
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "remappings": []
}
ABI
[{"inputs":[{"internalType":"uint256","name":"_Tax","type":"uint256"},{"internalType":"uint256","name":"_MinimumAmount","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[],"name":"GameOff","type":"event"},{"anonymous":false,"inputs":[],"name":"GameOn","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"Sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"Amount","type":"uint256"}],"name":"NewParticipants","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"Winner","type":"address"},{"indexed":false,"internalType":"uint256","name":"Amount","type":"uint256"}],"name":"WinnerDeclared","type":"event"},{"inputs":[{"internalType":"uint256","name":"Amount","type":"uint256"}],"name":"ChangeMinimumAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_Tax","type":"uint256"}],"name":"ChangeTaxPercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"winner","type":"address"}],"name":"DistributePrize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"EndGame","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"IsGameOn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MinimumAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Owner","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"StartGame","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"Tax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]