ETH Price: $2,686.67 (-0.93%)

Contract

0x6BbeBd769769a2469f802A0fD09344809a32745c
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Emergency Withdr...183072112023-10-08 17:21:35499 days ago1696785695IN
0x6BbeBd76...09a32745c
0 ETH0.000380026.6876371
Harvest183053992023-10-08 11:15:11499 days ago1696763711IN
0x6BbeBd76...09a32745c
0 ETH0.000350365.16152027
Stake183041272023-10-08 6:58:35499 days ago1696748315IN
0x6BbeBd76...09a32745c
0 ETH0.000991337.1754399
Stake183039812023-10-08 6:29:23499 days ago1696746563IN
0x6BbeBd76...09a32745c
0 ETH0.000723415.23620358
Stake183031232023-10-08 3:36:23500 days ago1696736183IN
0x6BbeBd76...09a32745c
0 ETH0.000716095.18321368
Stake183009792023-10-07 20:24:59500 days ago1696710299IN
0x6BbeBd76...09a32745c
0 ETH0.000574226.15656319
Harvest183009772023-10-07 20:24:35500 days ago1696710275IN
0x6BbeBd76...09a32745c
0 ETH0.000419766.18383098
Harvest183003902023-10-07 18:26:23500 days ago1696703183IN
0x6BbeBd76...09a32745c
0 ETH0.000390325.75018276
Harvest183000072023-10-07 17:09:47500 days ago1696698587IN
0x6BbeBd76...09a32745c
0 ETH0.000462546.81410963
Stake182999892023-10-07 17:06:11500 days ago1696698371IN
0x6BbeBd76...09a32745c
0 ETH0.00093946.79960324
Stake182999622023-10-07 17:00:47500 days ago1696698047IN
0x6BbeBd76...09a32745c
0 ETH0.000521096.43067474
Harvest182999602023-10-07 17:00:23500 days ago1696698023IN
0x6BbeBd76...09a32745c
0 ETH0.00046196.80455921
Stake182999352023-10-07 16:55:11500 days ago1696697711IN
0x6BbeBd76...09a32745c
0 ETH0.000754365.46022672
Stake182999142023-10-07 16:50:59500 days ago1696697459IN
0x6BbeBd76...09a32745c
0 ETH0.000760315.50379551
Stake182998772023-10-07 16:43:35500 days ago1696697015IN
0x6BbeBd76...09a32745c
0 ETH0.000454926.44968823
Stake182998762023-10-07 16:43:23500 days ago1696697003IN
0x6BbeBd76...09a32745c
0 ETH0.00085486.18722689
Stake182998582023-10-07 16:39:47500 days ago1696696787IN
0x6BbeBd76...09a32745c
0 ETH0.000709545.13581562
Stake182998122023-10-07 16:30:35500 days ago1696696235IN
0x6BbeBd76...09a32745c
0 ETH0.000859096.21831485
Harvest182991232023-10-07 14:12:11500 days ago1696687931IN
0x6BbeBd76...09a32745c
0 ETH0.000473796.9797811
Stake182990862023-10-07 14:04:47500 days ago1696687487IN
0x6BbeBd76...09a32745c
0 ETH0.001130616.56024917

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ElonGateStaking

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
File 1 of 1 : ElonGateStaking.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

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

interface IERC20 {
    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(
        address recipient,
        uint256 amount
    ) external returns (bool);

    function allowance(
        address owner,
        address spender
    ) external view returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

contract Ownable is Context {
    address private _owner;
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
}

contract ElonGateStaking is Ownable {
    IERC20 public elonGate = IERC20(0xcC6c4F450f1d4aeC71C46f240a6bD50c4E556B8A);
    uint256 public totalStaked;

    struct UserStake {
        uint256 totalAmount;
        uint256 lastClaimTime;
        uint256 stakingTime;
    }

    mapping(address => UserStake) public userStakes;

    uint256 public constant APY = 5000;
    uint256 public constant lockupPeriod = 3 days;

    constructor() {
    }

    function stake(uint256 _amount) external {
        require(_amount > 0, "Amount must be greater than 0");

        UserStake storage user = userStakes[msg.sender];

        if (user.stakingTime == 0) {
            user.stakingTime = block.timestamp;
        } else {
            uint256 rewards = calculateRewards(user);
            if (rewards > 0) {
                elonGate.transfer(msg.sender, rewards);
            }
        }
        
        elonGate.transferFrom(msg.sender, address(this), _amount);
        user.totalAmount += _amount;
        user.lastClaimTime = block.timestamp;
        totalStaked += _amount;
    }

    function harvest() external {
        UserStake storage user = userStakes[msg.sender];
        require(user.stakingTime > 0, "You have not staked yet");

        uint256 rewards = calculateRewards(user);

        user.lastClaimTime = block.timestamp;
        
        elonGate.transfer(msg.sender, rewards);
    }

    function withdraw() external {
        UserStake storage user = userStakes[msg.sender];
        require(user.stakingTime > 0, "You have not staked yet");
        require(
            block.timestamp >= user.stakingTime + lockupPeriod,
            "Lockup period has not ended yet"
        );

        uint256 amountToWithdraw = user.totalAmount + calculateRewards(user);
        elonGate.transfer(msg.sender, amountToWithdraw);
        
        delete userStakes[msg.sender];
    }

    function getReward(address _user) external view returns (uint256) {
        UserStake storage user = userStakes[_user];

        if (user.stakingTime == 0) {
            return 0;
        }

        uint256 rewards = calculateRewards(user);

        return rewards;
    }

    function calculateRewards(
        UserStake storage user
    ) internal view returns (uint256) {
        uint256 currentTime = block.timestamp;
        uint256 lastClaimTime = user.lastClaimTime;

        if (currentTime <= lastClaimTime) {
            return 0;
        }

        uint256 timeDiff = currentTime - lastClaimTime;
        uint256 rewards = (user.totalAmount * APY * timeDiff) / (100 * 365 days);

        return rewards;
    }

    function emergencyWithdraw() external onlyOwner {
        elonGate.transfer(msg.sender, elonGate.balanceOf(address(this)));
    }
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"APY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"elonGate","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"emergencyWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"getReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"harvest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockupPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalStaked","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"userStakes","outputs":[{"internalType":"uint256","name":"totalAmount","type":"uint256"},{"internalType":"uint256","name":"lastClaimTime","type":"uint256"},{"internalType":"uint256","name":"stakingTime","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]

6080604052600180546001600160a01b03191673cc6c4f450f1d4aec71c46f240a6bd50c4e556b8a17905534801561003657600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350610980806100876000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c8063a694fc3a11610071578063a694fc3a1461015e578063c00007b014610171578063ca9acc7514610184578063db2e21bc14610197578063ee947a7c1461019f578063ef8bd305146101a957600080fd5b80633ccfd60b146100b95780634641257d146100c3578063715018a6146100cb578063817b1cd2146100d35780638da5cb5b146100ef5780638da7ad2314610114575b600080fd5b6100c16101b2565b005b6100c1610322565b6100c161040a565b6100dc60025481565b6040519081526020015b60405180910390f35b6000546001600160a01b03165b6040516001600160a01b0390911681526020016100e6565b61014361012236600461084b565b60036020526000908152604090208054600182015460029092015490919083565b604080519384526020840192909252908201526060016100e6565b6100c161016c36600461087b565b6104ae565b6100dc61017f36600461084b565b610669565b6001546100fc906001600160a01b031681565b6100c16106a8565b6100dc6203f48081565b6100dc61138881565b33600090815260036020526040902060028101546102115760405162461bcd60e51b8152602060048201526017602482015276165bdd481a185d99481b9bdd081cdd185ad959081e595d604a1b60448201526064015b60405180910390fd5b6203f480816002015461022491906108aa565b4210156102735760405162461bcd60e51b815260206004820152601f60248201527f4c6f636b757020706572696f6420686173206e6f7420656e64656420796574006044820152606401610208565b600061027e826107ea565b825461028a91906108aa565b60015460405163a9059cbb60e01b8152336004820152602481018390529192506001600160a01b03169063a9059cbb906044016020604051808303816000875af11580156102dc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030091906108c3565b5050336000908152600360205260408120818155600181018290556002015550565b336000908152600360205260409020600281015461037c5760405162461bcd60e51b8152602060048201526017602482015276165bdd481a185d99481b9bdd081cdd185ad959081e595d604a1b6044820152606401610208565b6000610387826107ea565b426001848101919091555460405163a9059cbb60e01b8152336004820152602481018390529192506001600160a01b03169063a9059cbb906044016020604051808303816000875af11580156103e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061040591906108c3565b505050565b6000546001600160a01b031633146104645760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610208565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b600081116104fe5760405162461bcd60e51b815260206004820152601d60248201527f416d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606401610208565b3360009081526003602052604081206002810154909103610524574260028201556105b0565b600061052f826107ea565b905080156105ae5760015460405163a9059cbb60e01b8152336004820152602481018390526001600160a01b039091169063a9059cbb906044016020604051808303816000875af1158015610588573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ac91906108c3565b505b505b6001546040516323b872dd60e01b8152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303816000875af1158015610607573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062b91906108c3565b508181600001600082825461064091906108aa565b9091555050426001820155600280548391906000906106609084906108aa565b90915550505050565b6001600160a01b0381166000908152600360205260408120600281015482036106955750600092915050565b60006106a0826107ea565b949350505050565b6000546001600160a01b031633146107025760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610208565b6001546040516370a0823160e01b81523060048201526001600160a01b039091169063a9059cbb90339083906370a0823190602401602060405180830381865afa158015610754573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061077891906108e5565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af11580156107c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e791906108c3565b50565b60018101546000904290808211610805575060009392505050565b600061081182846108fe565b9050600063bbf81e0082611388886000015461082d9190610911565b6108379190610911565b6108419190610928565b9695505050505050565b60006020828403121561085d57600080fd5b81356001600160a01b038116811461087457600080fd5b9392505050565b60006020828403121561088d57600080fd5b5035919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156108bd576108bd610894565b92915050565b6000602082840312156108d557600080fd5b8151801515811461087457600080fd5b6000602082840312156108f757600080fd5b5051919050565b818103818111156108bd576108bd610894565b80820281158282048414176108bd576108bd610894565b60008261094557634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220fee026d082eb29caa9a29693eb2239093765fe1e04908ff249cacd9b0b98d1a464736f6c63430008120033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100b45760003560e01c8063a694fc3a11610071578063a694fc3a1461015e578063c00007b014610171578063ca9acc7514610184578063db2e21bc14610197578063ee947a7c1461019f578063ef8bd305146101a957600080fd5b80633ccfd60b146100b95780634641257d146100c3578063715018a6146100cb578063817b1cd2146100d35780638da5cb5b146100ef5780638da7ad2314610114575b600080fd5b6100c16101b2565b005b6100c1610322565b6100c161040a565b6100dc60025481565b6040519081526020015b60405180910390f35b6000546001600160a01b03165b6040516001600160a01b0390911681526020016100e6565b61014361012236600461084b565b60036020526000908152604090208054600182015460029092015490919083565b604080519384526020840192909252908201526060016100e6565b6100c161016c36600461087b565b6104ae565b6100dc61017f36600461084b565b610669565b6001546100fc906001600160a01b031681565b6100c16106a8565b6100dc6203f48081565b6100dc61138881565b33600090815260036020526040902060028101546102115760405162461bcd60e51b8152602060048201526017602482015276165bdd481a185d99481b9bdd081cdd185ad959081e595d604a1b60448201526064015b60405180910390fd5b6203f480816002015461022491906108aa565b4210156102735760405162461bcd60e51b815260206004820152601f60248201527f4c6f636b757020706572696f6420686173206e6f7420656e64656420796574006044820152606401610208565b600061027e826107ea565b825461028a91906108aa565b60015460405163a9059cbb60e01b8152336004820152602481018390529192506001600160a01b03169063a9059cbb906044016020604051808303816000875af11580156102dc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030091906108c3565b5050336000908152600360205260408120818155600181018290556002015550565b336000908152600360205260409020600281015461037c5760405162461bcd60e51b8152602060048201526017602482015276165bdd481a185d99481b9bdd081cdd185ad959081e595d604a1b6044820152606401610208565b6000610387826107ea565b426001848101919091555460405163a9059cbb60e01b8152336004820152602481018390529192506001600160a01b03169063a9059cbb906044016020604051808303816000875af11580156103e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061040591906108c3565b505050565b6000546001600160a01b031633146104645760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610208565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b600081116104fe5760405162461bcd60e51b815260206004820152601d60248201527f416d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606401610208565b3360009081526003602052604081206002810154909103610524574260028201556105b0565b600061052f826107ea565b905080156105ae5760015460405163a9059cbb60e01b8152336004820152602481018390526001600160a01b039091169063a9059cbb906044016020604051808303816000875af1158015610588573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ac91906108c3565b505b505b6001546040516323b872dd60e01b8152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303816000875af1158015610607573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062b91906108c3565b508181600001600082825461064091906108aa565b9091555050426001820155600280548391906000906106609084906108aa565b90915550505050565b6001600160a01b0381166000908152600360205260408120600281015482036106955750600092915050565b60006106a0826107ea565b949350505050565b6000546001600160a01b031633146107025760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610208565b6001546040516370a0823160e01b81523060048201526001600160a01b039091169063a9059cbb90339083906370a0823190602401602060405180830381865afa158015610754573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061077891906108e5565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af11580156107c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e791906108c3565b50565b60018101546000904290808211610805575060009392505050565b600061081182846108fe565b9050600063bbf81e0082611388886000015461082d9190610911565b6108379190610911565b6108419190610928565b9695505050505050565b60006020828403121561085d57600080fd5b81356001600160a01b038116811461087457600080fd5b9392505050565b60006020828403121561088d57600080fd5b5035919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156108bd576108bd610894565b92915050565b6000602082840312156108d557600080fd5b8151801515811461087457600080fd5b6000602082840312156108f757600080fd5b5051919050565b818103818111156108bd576108bd610894565b80820281158282048414176108bd576108bd610894565b60008261094557634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220fee026d082eb29caa9a29693eb2239093765fe1e04908ff249cacd9b0b98d1a464736f6c63430008120033

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.