Cryo Explorer Ethereum Mainnet

Address Contract Partially Verified

Address 0x4667468BDe9fc417D4C6f266BFDff16A6038C01e
Balance 0 ETH
Nonce 1
Code Size 8855 bytes
Indexed Transactions 1 (24,422,70924,422,709)
Gas Used (indexed) 192,317
External Etherscan · Sourcify

Contract Bytecode

8855 bytes
0x608060405234801561000f575f5ffd5b506004361061012a575f3560e01c80636fc9e257116100ab578063d4e643481161006f578063d4e6434814610313578063dac9cdf614610331578063eb2e277f1461034f578063f2fde38b1461036d578063f739ed9e146103895761012a565b80636fc9e25714610281578063715018a61461029d5780638da5cb5b146102a7578063aebaadeb146102c5578063b4cfeaab146102f55761012a565b806333f3d628116100f257806333f3d628146101c55780633d4053a1146101e15780633d5ec47e146101ff578063557546f51461023357806363809953146102635761012a565b80630f0491ac1461012e57806312eb4c931461014c57806320800a001461016a5780632f669b0c1461017457806331388b4d146101a7575b5f5ffd5b6101366103a5565b60405161014391906118c0565b60405180910390f35b6101546103ca565b60405161016191906118f1565b60405180910390f35b6101726103d0565b005b61018e60048036038101906101899190611938565b61042a565b60405161019e9493929190611976565b60405180910390f35b6101af610809565b6040516101bc91906118f1565b60405180910390f35b6101df60048036038101906101da91906119e3565b61080f565b005b6101e961082d565b6040516101f691906118c0565b60405180910390f35b61021960048036038101906102149190611a21565b610852565b60405161022a959493929190611a4c565b60405180910390f35b61024d60048036038101906102489190611938565b6108d1565b60405161025a91906118f1565b60405180910390f35b61026b6108f1565b60405161027891906118f1565b60405180910390f35b61029b60048036038101906102969190611a9d565b6108f8565b005b6102a5610d65565b005b6102af610d78565b6040516102bc91906118c0565b60405180910390f35b6102df60048036038101906102da9190611938565b610d9f565b6040516102ec91906118f1565b60405180910390f35b6102fd610dbf565b60405161030a91906118f1565b60405180910390f35b61031b610dc5565b60405161032891906118f1565b60405180910390f35b610339610dcb565b60405161034691906118f1565b60405180910390f35b610357610dd1565b60405161036491906118f1565b60405180910390f35b61038760048036038101906103829190611a9d565b610dd7565b005b6103a3600480360381019061039e91906119e3565b610e59565b005b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60075481565b6103d86114d8565b5f4790506103e4610d78565b73ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015610426573d5f5f3e3d5ffd5b5050565b5f5f5f5f8473ffffffffffffffffffffffffffffffffffffffff1660025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361059c576004549350600654421061059357600c5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054600b5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461058c9190611af5565b9050610597565b5f90505b610707565b8473ffffffffffffffffffffffffffffffffffffffff1660035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610706576005549350600754421061070157600c5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054600b5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546106fa9190611af5565b9050610705565b5f90505b5b5b83600b5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054600c5f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205493509350935092959194509250565b60095481565b6108176114d8565b61082982610823610d78565b83611556565b5050565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a8181548110610861575f80fd5b905f5260205f2090600502015f91509050805f015490806001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806002015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060030154908060040154905085565b600b602052815f5260405f20602052805f5260405f205f91509150505481565b6201518081565b60026001540361093d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093490611b82565b60405180910390fd5b60026001819055508073ffffffffffffffffffffffffffffffffffffffff1660025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614806109ec57508073ffffffffffffffffffffffffffffffffffffffff1660035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b610a2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2290611bea565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610ac957600654421015610ac4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610abb90611c52565b60405180910390fd5b610b64565b8073ffffffffffffffffffffffffffffffffffffffff1660035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610b6357600754421015610b62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5990611c52565b60405180910390fd5b5b5b5f600c5f610b70611686565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054600b5f610bf0611686565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610c6f9190611af5565b90505f8111610cb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610caa90611cba565b60405180910390fd5b80600c5f610cbf611686565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610d419190611cd8565b92505081905550610d5a82610d54611686565b83611556565b506001808190555050565b610d6d6114d8565b610d765f61168d565b565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600c602052815f5260405f20602052805f5260405f205f91509150505481565b60065481565b60045481565b60055481565b60085481565b610ddf6114d8565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610e4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4490611d7b565b60405180910390fd5b610e568161168d565b50565b600260015403610e9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9590611b82565b60405180910390fd5b60026001819055503273ffffffffffffffffffffffffffffffffffffffff16610ec5611686565b73ffffffffffffffffffffffffffffffffffffffff1614610f1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1290611de3565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1660025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480610fc257508173ffffffffffffffffffffffffffffffffffffffff1660035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b611001576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff890611bea565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1660025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611113576006544210611099576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109090611e4b565b60405180910390fd5b6004548110156110de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d590611ed9565b60405180910390fd5b63ee6b28006006540361110e57620151806008546110fc9190611ef7565b426111079190611cd8565b6006819055505b611222565b8173ffffffffffffffffffffffffffffffffffffffff1660035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036112215760075442106111ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a290611e4b565b60405180910390fd5b6005548110156111f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e790611ed9565b60405180910390fd5b63ee6b280060075403611220576201518060095461120e9190611ef7565b426112199190611cd8565b6007819055505b5b5b808273ffffffffffffffffffffffffffffffffffffffff166370a08231611247611686565b6040518263ffffffff1660e01b815260040161126391906118c0565b602060405180830381865afa15801561127e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112a29190611f4c565b10156112e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112da90611fc1565b60405180910390fd5b6112f6826112ef611686565b308461174e565b5f6040518060a001604052806001600a805490506113149190611cd8565b8152602001611321611686565b73ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff168152602001428152602001838152509050600a81908060018154018082558091505060019003905f5260205f2090600502015f909190919091505f820151815f01556020820151816001015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040820151816002015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506060820151816003015560808201518160040155505081600b5f611443611686565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546114c59190611cd8565b9250508190555050600180819055505050565b6114e0611686565b73ffffffffffffffffffffffffffffffffffffffff166114fe610d78565b73ffffffffffffffffffffffffffffffffffffffff1614611554576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154b90612029565b60405180910390fd5b565b5f5f8473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8585604051602401611587929190612047565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516115d591906120c0565b5f604051808303815f865af19150503d805f811461160e576040519150601f19603f3d011682016040523d82523d5f602084013e611613565b606091505b509150915081801561164057505f8151148061163f57508080602001905181019061163e919061210b565b5b5b61167f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167690612180565b60405180910390fd5b5050505050565b5f33905090565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f5f8573ffffffffffffffffffffffffffffffffffffffff166323b872dd8686866040516024016117819392919061219e565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516117cf91906120c0565b5f604051808303815f865af19150503d805f8114611808576040519150601f19603f3d011682016040523d82523d5f602084013e61180d565b606091505b509150915081801561183a57505f81511480611839575080806020019051810190611838919061210b565b5b5b611879576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187090612243565b60405180910390fd5b505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6118aa82611881565b9050919050565b6118ba816118a0565b82525050565b5f6020820190506118d35f8301846118b1565b92915050565b5f819050919050565b6118eb816118d9565b82525050565b5f6020820190506119045f8301846118e2565b92915050565b5f5ffd5b611917816118a0565b8114611921575f5ffd5b50565b5f813590506119328161190e565b92915050565b5f5f6040838503121561194e5761194d61190a565b5b5f61195b85828601611924565b925050602061196c85828601611924565b9150509250929050565b5f6080820190506119895f8301876118e2565b61199660208301866118e2565b6119a360408301856118e2565b6119b060608301846118e2565b95945050505050565b6119c2816118d9565b81146119cc575f5ffd5b50565b5f813590506119dd816119b9565b92915050565b5f5f604083850312156119f9576119f861190a565b5b5f611a0685828601611924565b9250506020611a17858286016119cf565b9150509250929050565b5f60208284031215611a3657611a3561190a565b5b5f611a43848285016119cf565b91505092915050565b5f60a082019050611a5f5f8301886118e2565b611a6c60208301876118b1565b611a7960408301866118b1565b611a8660608301856118e2565b611a9360808301846118e2565b9695505050505050565b5f60208284031215611ab257611ab161190a565b5b5f611abf84828501611924565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611aff826118d9565b9150611b0a836118d9565b9250828203905081811115611b2257611b21611ac8565b5b92915050565b5f82825260208201905092915050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c005f82015250565b5f611b6c601f83611b28565b9150611b7782611b38565b602082019050919050565b5f6020820190508181035f830152611b9981611b60565b9050919050565b7f546f6b656e204e6f7420537570706f72742e00000000000000000000000000005f82015250565b5f611bd4601283611b28565b9150611bdf82611ba0565b602082019050919050565b5f6020820190508181035f830152611c0181611bc8565b9050919050565b7f556e5374616b65204e6f742053746172742e00000000000000000000000000005f82015250565b5f611c3c601283611b28565b9150611c4782611c08565b602082019050919050565b5f6020820190508181035f830152611c6981611c30565b9050919050565b7f4e6f20546f6b656e20546f20436c61696d2e00000000000000000000000000005f82015250565b5f611ca4601283611b28565b9150611caf82611c70565b602082019050919050565b5f6020820190508181035f830152611cd181611c98565b9050919050565b5f611ce2826118d9565b9150611ced836118d9565b9250828201905080821115611d0557611d04611ac8565b5b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f611d65602683611b28565b9150611d7082611d0b565b604082019050919050565b5f6020820190508181035f830152611d9281611d59565b9050919050565b7f43616e206e6f742066726f6d20636f6e74726163742e000000000000000000005f82015250565b5f611dcd601683611b28565b9150611dd882611d99565b602082019050919050565b5f6020820190508181035f830152611dfa81611dc1565b9050919050565b7f5374616b652053746f707065642e0000000000000000000000000000000000005f82015250565b5f611e35600e83611b28565b9150611e4082611e01565b602082019050919050565b5f6020820190508181035f830152611e6281611e29565b9050919050565b7f42656c6f7720746865206d696e696d756d20696e766573746d656e7420616d6f5f8201527f756e742e00000000000000000000000000000000000000000000000000000000602082015250565b5f611ec3602483611b28565b9150611ece82611e69565b604082019050919050565b5f6020820190508181035f830152611ef081611eb7565b9050919050565b5f611f01826118d9565b9150611f0c836118d9565b9250828202611f1a816118d9565b91508282048414831517611f3157611f30611ac8565b5b5092915050565b5f81519050611f46816119b9565b92915050565b5f60208284031215611f6157611f6061190a565b5b5f611f6e84828501611f38565b91505092915050565b7f42616c616e6365204e6f7420456e6f7567682e000000000000000000000000005f82015250565b5f611fab601383611b28565b9150611fb682611f77565b602082019050919050565b5f6020820190508181035f830152611fd881611f9f565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612013602083611b28565b915061201e82611fdf565b602082019050919050565b5f6020820190508181035f83015261204081612007565b9050919050565b5f60408201905061205a5f8301856118b1565b61206760208301846118e2565b9392505050565b5f81519050919050565b5f81905092915050565b8281835e5f83830152505050565b5f61209a8261206e565b6120a48185612078565b93506120b4818560208601612082565b80840191505092915050565b5f6120cb8284612090565b915081905092915050565b5f8115159050919050565b6120ea816120d6565b81146120f4575f5ffd5b50565b5f81519050612105816120e1565b92915050565b5f602082840312156121205761211f61190a565b5b5f61212d848285016120f7565b91505092915050565b7f5472616e7366657248656c7065723a205452414e534645525f4641494c4544005f82015250565b5f61216a601f83611b28565b915061217582612136565b602082019050919050565b5f6020820190508181035f8301526121978161215e565b9050919050565b5f6060820190506121b15f8301866118b1565b6121be60208301856118b1565b6121cb60408301846118e2565b949350505050565b7f5472616e7366657248656c7065723a205452414e534645525f46524f4d5f46415f8201527f494c454400000000000000000000000000000000000000000000000000000000602082015250565b5f61222d602483611b28565b9150612238826121d3565b604082019050919050565b5f6020820190508181035f83015261225a81612221565b905091905056fea2646970667358221220ceab5c0288f6decdd9c243514d99f2e9fd345854b1b64b3272fa4381a0522caa64736f6c634300081e0033

Verified Source Code Partial Match

Compiler: v0.8.30+commit.73712a01 EVM: prague Optimization: No
BMBTokenStake.sol 216 lines
/**
 *Submitted for verification at testnet.bscscan.com on 2025-09-08
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.18;

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor() {
        _transferOwnership(_msgSender());
    }

    modifier onlyOwner() {
        _checkOwner();
        _;
    }

    function owner() public view virtual returns (address) {
        return _owner;
    }

    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

library TransferHelper {
    function safeTransfer(address token, address to, uint value) internal {
        // bytes4(keccak256(bytes('transfer(address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value));
        require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FAILED');
    }

    function safeTransferFrom(address token, address from, address to, uint value) internal {
        // bytes4(keccak256(bytes('transferFrom(address,address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, from, to, value));
        require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FROM_FAILED');
    }
}


interface IERC20 {
    function balanceOf(address account) external view returns (uint256);
}

abstract contract ReentrancyGuard {
    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;

    uint256 private _status;

    constructor() {
        _status = _NOT_ENTERED;
    }
    modifier nonReentrant() {
        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");

        _status = _ENTERED;

        _;

        _status = _NOT_ENTERED;
    }
}

contract BMBTokenStake is Ownable, ReentrancyGuard {
    address public addressBMB =  0x9447dd95f576fdF6ED8219ffF45BD1362430B787; 
    address public addressBMC =  0x0cA7244F798765De51A2b911f16EbCb7367362d1; 
    uint256 public stakeMinBMB = 100000;
    uint256 public stakeMinBMC = 100000;
    uint256 public unStakeTimeBMB = 4000000000;  //      ʼʱ  
    uint256 public unStakeTimeBMC = 4000000000;  //      ʼʱ  
    uint256 public releaseDaysBMB = 180;
    uint256 public releaseDaysBMC = 180;

    uint256 constant public secondsPerDay = 86400;  //     ʱ    100    ʾ100     һ 죬       86400  

    struct StakeInfo {
        uint256 id;
        address user;        //   Ѻ   û 
        address token;       //   Ѻ Ĵ   
        uint256 time;        //   Ѻʱ  
        uint256 stakeAmt;    //   Ѻ    
    }
    StakeInfo[] public stakeInfos;   //   Ѻ  Ϣ-ÿ    Ѻ

    mapping (address => mapping (address => uint256)) public userTokenStakeAmt;  //  û   Ѻij ҵ         û =>    =>    
    mapping (address => mapping (address => uint256)) public userTokenUnStakeAmt;  //  û    ij ҵ         û =>    =>    

    constructor() {
        stakeInfos.push(StakeInfo({id:1,user:address(0),token:address(0),time:0,stakeAmt:0}));
    }

    //   Ѻ  token    Լ  ַ  stakeAmt_         û             100000          Ȩ      Լ
    function stakeToken(address token_, uint256 stakeAmt_) external nonReentrant {
        require(_msgSender() == tx.origin, "Can not from contract.");
        require(addressBMB == token_ || addressBMC == token_, "Token Not Support.");
        if (addressBMB == token_) {
            require(block.timestamp < unStakeTimeBMB, "Stake Stopped.");
        
            require(stakeAmt_ >= stakeMinBMB, "Below the minimum investment amount.");

            if (unStakeTimeBMB == 4000000000) {
                unStakeTimeBMB = block.timestamp + releaseDaysBMB * secondsPerDay;
            }
        } else if (addressBMC == token_) {
            require(block.timestamp < unStakeTimeBMC, "Stake Stopped.");
        
            require(stakeAmt_ >= stakeMinBMC, "Below the minimum investment amount.");

            if (unStakeTimeBMC == 4000000000) {
                unStakeTimeBMC = block.timestamp + releaseDaysBMC * secondsPerDay;
            }
        }
        require(IERC20(token_).balanceOf(_msgSender()) >= stakeAmt_, "Balance Not Enough.");
        TransferHelper.safeTransferFrom(token_, _msgSender(), address(this), stakeAmt_);   


        StakeInfo memory di = StakeInfo({
            id: stakeInfos.length + 1,
            user: _msgSender(), 
            token: token_,
            time: block.timestamp, 
            stakeAmt: stakeAmt_
        });
        stakeInfos.push(di);

        userTokenStakeAmt[_msgSender()][token_] += stakeAmt_;
    }

    function redemption(address token_) external nonReentrant {
        require(addressBMB == token_ || addressBMC == token_, "Token Not Support.");
        if (addressBMB == token_) {
            require(block.timestamp >= unStakeTimeBMB, "UnStake Not Start.");
        } else if (addressBMC == token_) {
            require(block.timestamp >= unStakeTimeBMC, "UnStake Not Start.");
        }

        uint256 _returnAmt = userTokenStakeAmt[_msgSender()][token_] - userTokenUnStakeAmt[_msgSender()][token_];

        require(_returnAmt > 0, "No Token To Claim.");

        userTokenUnStakeAmt[_msgSender()][token_] += _returnAmt;
        TransferHelper.safeTransfer(token_, _msgSender(), _returnAmt);
    }

    //   ȡ û   Ѻ  Ϣ  _user   뵱ǰ û  ĵ ַ,token_     Һ Լ
    //    أ 
    // _minAmt    ǰ   ҵ   С  Ѻ    
    // _stakeAmt   ǰ û   ǰ     ܹ     Ѻ              صģ 
    // _unStakeAmt   ǰ û   ǰ     ܹ     ص     
    // _canUnStakeAmt   ǰ û   ǰ   ҿ     ص     

    //   ذ ť  _canUnStakeAmt > 0ʱ   Ե       ʱ      redemption    
    function getStakeInfos(address _user, address token_) public view returns(
        uint256 _minAmt, uint256 _stakeAmt, uint256 _unStakeAmt, uint256 _canUnStakeAmt) {
        
        if (addressBMB == token_) {
            _minAmt = stakeMinBMB;
            if (block.timestamp >= unStakeTimeBMB) {
                _canUnStakeAmt = userTokenStakeAmt[_user][token_] - userTokenUnStakeAmt[_user][token_];
            } else {
                _canUnStakeAmt = 0;
            }
            
        } else if (addressBMC == token_) {
            _minAmt = stakeMinBMC;

            if (block.timestamp >= unStakeTimeBMC) {
                _canUnStakeAmt = userTokenStakeAmt[_user][token_] - userTokenUnStakeAmt[_user][token_];
            } else {
                _canUnStakeAmt = 0;
            }
        }

        return (_minAmt, userTokenStakeAmt[_user][token_], userTokenUnStakeAmt[_user][token_], _canUnStakeAmt);  
    }

    function rescueToken(address tokenAddr_, uint256 amt_) external onlyOwner {
        TransferHelper.safeTransfer(tokenAddr_, owner(), amt_);
    }

    function rescueETH() external onlyOwner {
        uint256 balance = address(this).balance;
        payable(owner()).transfer(balance);
    }
}

Read Contract

addressBMB 0x0f0491ac → address
addressBMC 0x3d4053a1 → address
getStakeInfos 0x2f669b0c → uint256, uint256, uint256, uint256
owner 0x8da5cb5b → address
releaseDaysBMB 0xeb2e277f → uint256
releaseDaysBMC 0x31388b4d → uint256
secondsPerDay 0x63809953 → uint256
stakeInfos 0x3d5ec47e → uint256, address, address, uint256, uint256
stakeMinBMB 0xd4e64348 → uint256
stakeMinBMC 0xdac9cdf6 → uint256
unStakeTimeBMB 0xb4cfeaab → uint256
unStakeTimeBMC 0x12eb4c93 → uint256
userTokenStakeAmt 0x557546f5 → uint256
userTokenUnStakeAmt 0xaebaadeb → uint256

Write Contract 6 functions

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

redemption 0x6fc9e257
address token_
renounceOwnership 0x715018a6
No parameters
rescueETH 0x20800a00
No parameters
rescueToken 0x33f3d628
address tokenAddr_
uint256 amt_
stakeToken 0xf739ed9e
address token_
uint256 stakeAmt_
transferOwnership 0xf2fde38b
address newOwner

Top Interactions

AddressTxnsSentReceived
0x36B0D936...9dba 1 1

Recent Transactions

CSV
|
Hash Method Block Age From/To Value Txn Fee Type
0x5510e882...1e5333 0xf739ed9e 24,422,709 IN 0x36B0D936...9dba 0 ETH EIP-1559