Cryo Explorer Ethereum Mainnet

Address Contract Verified

Address 0x0Be473087971105Fa02FEae54E590E95c697939f
Balance 0 ETH
Nonce 1
Code Size 5400 bytes
Indexed Transactions 0
External Etherscan · Sourcify

Contract Bytecode

5400 bytes
0x608060405234801561000f575f5ffd5b50600436106100a7575f3560e01c8063842e29811161006f578063842e2981146101535780638da5cb5b14610183578063ac4afa38146101a1578063b5d5b5fa146101d2578063beceed3914610204578063fc0c546a14610220576100a7565b80630e15561a146100ab5780630f0a4fef146100c95780632e1a7d4d146100fd5780634bd9351b146101195780637b0472f014610137575b5f5ffd5b6100b361023e565b6040516100c09190610c48565b60405180910390f35b6100e360048036038101906100de9190610ce9565b610244565b6040516100f4959493929190610d27565b60405180910390f35b61011760048036038101906101129190610d78565b61035b565b005b61012161070d565b60405161012e9190610c48565b60405180910390f35b610151600480360381019061014c9190610da3565b610714565b005b61016d60048036038101906101689190610de1565b61094b565b60405161017a9190610f03565b60405180910390f35b61018b610a01565b6040516101989190610f32565b60405180910390f35b6101bb60048036038101906101b69190610d78565b610a25565b6040516101c9929190610f4b565b60405180910390f35b6101ec60048036038101906101e79190610ce9565b610a45565b6040516101fb93929190610f72565b60405180910390f35b61021e60048036038101906102199190610d78565b610a85565b005b610228610c0b565b6040516102359190611002565b60405180910390f35b60025481565b5f5f5f5f5f5f60045f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2087815481106102995761029861101b565b5b905f5260205f2090600302016040518060600160405290815f82015481526020016001820154815260200160028201548152505090505f60035f835f015181526020019081526020015f206040518060400160405290815f82015481526020016001820154815250509050815f015182602001518360400151835f015185604001516103259190611075565b60648560200151876020015161033b91906110a8565b6103459190611116565b9650965096509650965050509295509295909350565b5f60045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f209050808054905082106103e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103d8906111a0565b60405180910390fd5b5f8183815481106103f5576103f461101b565b5b905f5260205f2090600302016040518060600160405290815f82015481526020016001820154815260200160028201548152505090505f60035f835f015181526020019081526020015f206040518060400160405290815f820154815260200160018201548152505090505f815f015183604001516104749190611075565b90505f8142101590505f811561051c575f60648560200151876020015161049b91906110a8565b6104a59190611116565b90506002548111156104ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104e390611208565b60405180910390fd5b8086602001516104fc9190611075565b91508060025f82825461050f9190611226565b9250508190555050610568565b5f6064600a876020015161053091906110a8565b61053a9190611116565b905080866020015161054c9190611226565b91508060025f82825461055f9190611075565b92505081905550505b600186805490506105799190611226565b87146105ed5785600187805490506105919190611226565b815481106105a2576105a161101b565b5b905f5260205f2090600302018688815481106105c1576105c061101b565b5b905f5260205f2090600302015f820154815f015560018201548160010155600282015481600201559050505b858054806105fe576105fd611259565b5b600190038181905f5260205f2090600302015f5f82015f9055600182015f9055600282015f90555050905560015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610685929190611286565b6020604051808303815f875af11580156106a1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106c591906112e2565b610704576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fb90611357565b60405180910390fd5b50505050505050565b6201518081565b5f60035f8481526020019081526020015f206040518060400160405290815f820154815260200160018201548152505090505f815f01511161078b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610782906113bf565b60405180910390fd5b5f82116107cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c490611427565b60405180910390fd5b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330856040518463ffffffff1660e01b815260040161082b93929190611445565b6020604051808303815f875af1158015610847573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061086b91906112e2565b6108aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a190611357565b60405180910390fd5b60045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20604051806060016040528085815260200184815260200142815250908060018154018082558091505060019003905f5260205f2090600302015f909190919091505f820151815f015560208201518160010155604082015181600201555050505050565b606060045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20805480602002602001604051908101604052809291908181526020015f905b828210156109f6578382905f5260205f2090600302016040518060600160405290815f820154815260200160018201548152602001600282015481525050815260200190600101906109a9565b505050509050919050565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6003602052805f5260405f205f91509050805f0154908060010154905082565b6004602052815f5260405f208181548110610a5e575f80fd5b905f5260205f2090600302015f9150915050805f0154908060010154908060020154905083565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0a906114c4565b60405180910390fd5b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b8152600401610b7193929190611445565b6020604051808303815f875af1158015610b8d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bb191906112e2565b610bf0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be790611357565b60405180910390fd5b8060025f828254610c019190611075565b9250508190555050565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f819050919050565b610c4281610c30565b82525050565b5f602082019050610c5b5f830184610c39565b92915050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610c8e82610c65565b9050919050565b610c9e81610c84565b8114610ca8575f5ffd5b50565b5f81359050610cb981610c95565b92915050565b610cc881610c30565b8114610cd2575f5ffd5b50565b5f81359050610ce381610cbf565b92915050565b5f5f60408385031215610cff57610cfe610c61565b5b5f610d0c85828601610cab565b9250506020610d1d85828601610cd5565b9150509250929050565b5f60a082019050610d3a5f830188610c39565b610d476020830187610c39565b610d546040830186610c39565b610d616060830185610c39565b610d6e6080830184610c39565b9695505050505050565b5f60208284031215610d8d57610d8c610c61565b5b5f610d9a84828501610cd5565b91505092915050565b5f5f60408385031215610db957610db8610c61565b5b5f610dc685828601610cd5565b9250506020610dd785828601610cd5565b9150509250929050565b5f60208284031215610df657610df5610c61565b5b5f610e0384828501610cab565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b610e3e81610c30565b82525050565b606082015f820151610e585f850182610e35565b506020820151610e6b6020850182610e35565b506040820151610e7e6040850182610e35565b50505050565b5f610e8f8383610e44565b60608301905092915050565b5f602082019050919050565b5f610eb182610e0c565b610ebb8185610e16565b9350610ec683610e26565b805f5b83811015610ef6578151610edd8882610e84565b9750610ee883610e9b565b925050600181019050610ec9565b5085935050505092915050565b5f6020820190508181035f830152610f1b8184610ea7565b905092915050565b610f2c81610c84565b82525050565b5f602082019050610f455f830184610f23565b92915050565b5f604082019050610f5e5f830185610c39565b610f6b6020830184610c39565b9392505050565b5f606082019050610f855f830186610c39565b610f926020830185610c39565b610f9f6040830184610c39565b949350505050565b5f819050919050565b5f610fca610fc5610fc084610c65565b610fa7565b610c65565b9050919050565b5f610fdb82610fb0565b9050919050565b5f610fec82610fd1565b9050919050565b610ffc81610fe2565b82525050565b5f6020820190506110155f830184610ff3565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61107f82610c30565b915061108a83610c30565b92508282019050808211156110a2576110a1611048565b5b92915050565b5f6110b282610c30565b91506110bd83610c30565b92508282026110cb81610c30565b915082820484148315176110e2576110e1611048565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61112082610c30565b915061112b83610c30565b92508261113b5761113a6110e9565b5b828204905092915050565b5f82825260208201905092915050565b7f496e76616c696420696e646578000000000000000000000000000000000000005f82015250565b5f61118a600d83611146565b915061119582611156565b602082019050919050565b5f6020820190508181035f8301526111b78161117e565b9050919050565b7f496e73756666696369656e7420726577617264730000000000000000000000005f82015250565b5f6111f2601483611146565b91506111fd826111be565b602082019050919050565b5f6020820190508181035f83015261121f816111e6565b9050919050565b5f61123082610c30565b915061123b83610c30565b925082820390508181111561125357611252611048565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b5f6040820190506112995f830185610f23565b6112a66020830184610c39565b9392505050565b5f8115159050919050565b6112c1816112ad565b81146112cb575f5ffd5b50565b5f815190506112dc816112b8565b92915050565b5f602082840312156112f7576112f6610c61565b5b5f611304848285016112ce565b91505092915050565b7f5472616e73666572206661696c656400000000000000000000000000000000005f82015250565b5f611341600f83611146565b915061134c8261130d565b602082019050919050565b5f6020820190508181035f83015261136e81611335565b9050919050565b7f496e76616c696420706f6f6c00000000000000000000000000000000000000005f82015250565b5f6113a9600c83611146565b91506113b482611375565b602082019050919050565b5f6020820190508181035f8301526113d68161139d565b9050919050565b7f416d6f756e74206d757374206265203e203000000000000000000000000000005f82015250565b5f611411601283611146565b915061141c826113dd565b602082019050919050565b5f6020820190508181035f83015261143e81611405565b9050919050565b5f6060820190506114585f830186610f23565b6114656020830185610f23565b6114726040830184610c39565b949350505050565b7f4e6f74206f776e657200000000000000000000000000000000000000000000005f82015250565b5f6114ae600983611146565b91506114b98261147a565b602082019050919050565b5f6020820190508181035f8301526114db816114a2565b905091905056fea264697066735822122084a4f16397f3314bbc3ef2be1ef4c5fc86d40b14991dd005cb2d6d7d693e837764736f6c634300081e0033

Verified Source Code Full Match

Compiler: v0.8.30+commit.73712a01 EVM: prague Optimization: No
WoxStake.sol 124 lines
// SPDX-License-Identifier: MIT

/*
 __          ________   __ _____ _______       _  ________ 
 \ \        / / __ \ \ / // ____|__   __|/\   | |/ /  ____|
  \ \  /\  / / |  | \ V /| (___    | |  /  \  | ' /| |__   
   \ \/  \/ /| |  | |> <  \___ \   | | / /\ \ |  < |  __|  
    \  /\  / | |__| / . \ ____) |  | |/ ____ \| . \| |____ 
     \/  \/   \____/_/ \_\_____/   |_/_/    \_\_|\_\______|                                                          
*/

pragma solidity ^0.8.0;

interface IERC20 {
    function transfer(address to, uint256 amount) external returns (bool);
    function transferFrom(address from, address to, uint256 amount) external returns (bool);
}

contract WoxStake {
    address public owner;
    IERC20 public token;
    uint256 public totalRewards;

    struct Pool {
        uint256 period;
        uint256 percent;
    }

    struct Stake {
        uint256 poolId;
        uint256 amount;
        uint256 startTime;
    }

    mapping(uint256 => Pool) public pools;
    mapping(address => Stake[]) public userStakes;

    uint256 public constant oneDay = 86400;

    modifier onlyOwner() {
        require(msg.sender == owner, "Not owner");
        _;
    }

    constructor(address _token) {
        owner = msg.sender;
        token = IERC20(_token);

        pools[2] = Pool(30 * oneDay, 2);
        pools[5] = Pool(60 * oneDay, 5);
        pools[12] = Pool(90 * oneDay, 12);
        pools[30] = Pool(180 * oneDay, 30);
        pools[65] = Pool(270 * oneDay, 65);
        pools[100] = Pool(365 * oneDay, 100);
    }

    function stake(uint256 poolId, uint256 amount) external {
        Pool memory pool = pools[poolId];
        require(pool.period > 0, "Invalid pool");
        require(amount > 0, "Amount must be > 0");

        require(token.transferFrom(msg.sender, address(this), amount), "Transfer failed");
        userStakes[msg.sender].push(Stake(poolId, amount, block.timestamp));
    }

    function withdraw(uint256 index) external {
        Stake[] storage stakes = userStakes[msg.sender];
        require(index < stakes.length, "Invalid index");

        Stake memory userStake = stakes[index];
        Pool memory pool = pools[userStake.poolId];

        uint256 endTime = userStake.startTime + pool.period;
        bool isExpired = block.timestamp >= endTime;

        uint256 payout;

        if (isExpired) {
            uint256 reward = (userStake.amount * pool.percent) / 100;
            require(reward <= totalRewards, "Insufficient rewards");
            payout = userStake.amount + reward;
            totalRewards -= reward;
        } else {
            uint256 penalty = (userStake.amount * 10) / 100;
            payout = userStake.amount - penalty;
            totalRewards += penalty;
        }

        if (index != stakes.length - 1) {
            stakes[index] = stakes[stakes.length - 1];
        }
        stakes.pop();

        require(token.transfer(msg.sender, payout), "Transfer failed");
    }

    function addRewards(uint256 amount) external onlyOwner {
        require(token.transferFrom(msg.sender, address(this), amount), "Transfer failed");
        totalRewards += amount;
    }

    function getUserStakes(address user) external view returns (Stake[] memory) {
        return userStakes[user];
    }

    function getStakeDetails(address user, uint256 index) external view returns (
        uint256 poolId,
        uint256 amount,
        uint256 startTime,
        uint256 endTime,
        uint256 potentialReward
    ) {
        Stake memory stakeInfo = userStakes[user][index];
        Pool memory pool = pools[stakeInfo.poolId];

        return (
            stakeInfo.poolId,
            stakeInfo.amount,
            stakeInfo.startTime,
            stakeInfo.startTime + pool.period,
            (stakeInfo.amount * pool.percent) / 100
        );
    }
}

Read Contract

getStakeDetails 0x0f0a4fef → uint256, uint256, uint256, uint256, uint256
getUserStakes 0x842e2981 → tuple[]
oneDay 0x4bd9351b → uint256
owner 0x8da5cb5b → address
pools 0xac4afa38 → uint256, uint256
token 0xfc0c546a → address
totalRewards 0x0e15561a → uint256
userStakes 0xb5d5b5fa → uint256, uint256, uint256

Write Contract 3 functions

These functions modify contract state and require a wallet transaction to execute.

addRewards 0xbeceed39
uint256 amount
stake 0x7b0472f0
uint256 poolId
uint256 amount
withdraw 0x2e1a7d4d
uint256 index

Recent Transactions

No transactions found for this address