ETH Price: $2,764.40 (+2.16%)

Contract

0xA7c1D948A0d8726B43f0E5184020f0F7BF773cd4
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer204083582024-07-28 23:31:59203 days ago1722209519IN
0xA7c1D948...7BF773cd4
0 ETH0.00003761.19487808
Transfer204083582024-07-28 23:31:59203 days ago1722209519IN
0xA7c1D948...7BF773cd4
0 ETH0.000043811.19487808
Approve193861482024-03-07 22:02:35346 days ago1709848955IN
0xA7c1D948...7BF773cd4
0 ETH0.0016858769.70757753
Transfer190623332024-01-22 12:39:59392 days ago1705927199IN
0xA7c1D948...7BF773cd4
0 ETH0.0006061317.89747671
Approve183740702023-10-18 1:49:11488 days ago1697593751IN
0xA7c1D948...7BF773cd4
0 ETH0.000352717.58059956
Transfer Ownersh...182515642023-09-30 22:39:59505 days ago1696113599IN
0xA7c1D948...7BF773cd4
0 ETH0.0006096912.13203538
Approve177730002023-07-25 22:11:47572 days ago1690323107IN
0xA7c1D948...7BF773cd4
0 ETH0.0013759629.6103073
Approve175756642023-06-28 5:13:35600 days ago1687929215IN
0xA7c1D948...7BF773cd4
0 ETH0.000575512.3879111
Transfer175354642023-06-22 13:30:23605 days ago1687440623IN
0xA7c1D948...7BF773cd4
0 ETH0.000741521.90226539
Transfer175316492023-06-22 0:37:59606 days ago1687394279IN
0xA7c1D948...7BF773cd4
0 ETH0.0009860518.34343363
Transfer174704272023-06-13 10:17:35615 days ago1686651455IN
0xA7c1D948...7BF773cd4
0 ETH0.0006026216.43517132
Approve174689782023-06-13 5:24:23615 days ago1686633863IN
0xA7c1D948...7BF773cd4
0 ETH0.000384114.66871148
Approve174689642023-06-13 5:21:35615 days ago1686633695IN
0xA7c1D948...7BF773cd4
0 ETH0.0003754415.52394752
Transfer172483882023-05-13 3:26:11646 days ago1683948371IN
0xA7c1D948...7BF773cd4
0 ETH0.0027298550.78334558
Transfer172462192023-05-12 20:05:35646 days ago1683921935IN
0xA7c1D948...7BF773cd4
0 ETH0.00401548109.51226896
Approve172253552023-05-09 20:48:11649 days ago1683665291IN
0xA7c1D948...7BF773cd4
0 ETH0.00603002129.76438235
Transfer172017532023-05-06 13:09:23652 days ago1683378563IN
0xA7c1D948...7BF773cd4
0 ETH0.00473493139.85936349
Approve171782772023-05-03 5:58:11656 days ago1683093491IN
0xA7c1D948...7BF773cd4
0 ETH0.0027259558.58606464
Approve171705292023-05-02 3:48:59657 days ago1682999339IN
0xA7c1D948...7BF773cd4
0 ETH0.0032372269.66424452
Transfer171620142023-04-30 23:04:35658 days ago1682895875IN
0xA7c1D948...7BF773cd4
0 ETH0.0018818435
Transfer171618822023-04-30 22:38:11658 days ago1682894291IN
0xA7c1D948...7BF773cd4
0 ETH0.0013968738.0961915
Transfer171605342023-04-30 18:05:47658 days ago1682877947IN
0xA7c1D948...7BF773cd4
0 ETH0.0040141468.75889219
Approve171465712023-04-28 19:01:11660 days ago1682708471IN
0xA7c1D948...7BF773cd4
0 ETH0.0019484242.13638503
Approve171463422023-04-28 18:14:59660 days ago1682705699IN
0xA7c1D948...7BF773cd4
0 ETH0.0019903742.83240991
Transfer171463042023-04-28 18:07:11660 days ago1682705231IN
0xA7c1D948...7BF773cd4
0 ETH0.002041737.96476149
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
170783222023-04-19 4:34:35670 days ago1681878875
0xA7c1D948...7BF773cd4
0.66229016 ETH
169014002023-03-25 2:05:47695 days ago1679709947
0xA7c1D948...7BF773cd4
0.01646172 ETH
169014002023-03-25 2:05:47695 days ago1679709947
0xA7c1D948...7BF773cd4
0.01646172 ETH
168774852023-03-21 17:26:47698 days ago1679419607
0xA7c1D948...7BF773cd4
0.02028561 ETH
168774852023-03-21 17:26:47698 days ago1679419607
0xA7c1D948...7BF773cd4
0.02028561 ETH
168725812023-03-21 0:54:23699 days ago1679360063
0xA7c1D948...7BF773cd4
0.02764941 ETH
168725812023-03-21 0:54:23699 days ago1679360063
0xA7c1D948...7BF773cd4
0.02764941 ETH
168723282023-03-21 0:03:11699 days ago1679356991
0xA7c1D948...7BF773cd4
0.03646139 ETH
168723282023-03-21 0:03:11699 days ago1679356991
0xA7c1D948...7BF773cd4
0.04167016 ETH
168720752023-03-20 23:12:11699 days ago1679353931
0xA7c1D948...7BF773cd4
0.46019213 ETH
168720752023-03-20 23:12:11699 days ago1679353931
0xA7c1D948...7BF773cd4
0.52593386 ETH
168714172023-03-20 20:59:23699 days ago1679345963
0xA7c1D948...7BF773cd4
0.54364839 ETH
168714172023-03-20 20:59:23699 days ago1679345963
0xA7c1D948...7BF773cd4
0.62131245 ETH
168711122023-03-20 19:57:59699 days ago1679342279
0xA7c1D948...7BF773cd4
0.57626619 ETH
168711122023-03-20 19:57:59699 days ago1679342279
0xA7c1D948...7BF773cd4
0.65858993 ETH
168708462023-03-20 19:04:23699 days ago1679339063
0xA7c1D948...7BF773cd4
0.58689373 ETH
168708462023-03-20 19:04:23699 days ago1679339063
0xA7c1D948...7BF773cd4
0.67073569 ETH
168704772023-03-20 17:49:47699 days ago1679334587
0xA7c1D948...7BF773cd4
0.0000223 ETH
168704772023-03-20 17:49:47699 days ago1679334587
0xA7c1D948...7BF773cd4
0.04109143 ETH
168704772023-03-20 17:49:47699 days ago1679334587
0xA7c1D948...7BF773cd4
0.16436572 ETH
168704772023-03-20 17:49:47699 days ago1679334587
0xA7c1D948...7BF773cd4
0.32873145 ETH
168704772023-03-20 17:49:47699 days ago1679334587
0xA7c1D948...7BF773cd4
0.61637148 ETH
168704752023-03-20 17:49:23699 days ago1679334563
0xA7c1D948...7BF773cd4
0.0000223 ETH
168704752023-03-20 17:49:23699 days ago1679334563
0xA7c1D948...7BF773cd4
0.04109143 ETH
168704752023-03-20 17:49:23699 days ago1679334563
0xA7c1D948...7BF773cd4
0.16436572 ETH
View All Internal Transactions
Loading...
Loading

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0x7F7056a6...ee127B3C8
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
LUNATICS

Compiler Version
v0.8.15+commit.e14f2714

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
File 1 of 1 : LUNATICS.sol
//SPDX-License-Identifier: MIT
pragma solidity 0.8.15;

// SAFEMATH LIBRARY
// This version of SafeMath should only be used with Solidity 0.8 or later

library SafeMath {
    function tryAdd(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    function trySub(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    function tryMul(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
            // benefit is lost if 'b' is also tested.
            // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function tryDiv(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function tryMod(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

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

    function decimals() external view returns (uint8);

    function symbol() external view returns (string memory);

    function name() external view returns (string memory);

    function getOwner() external view returns (address);

    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
    );
}

abstract contract Auth {
    address internal owner;
    mapping(address => bool) internal authorizations;

    constructor(address _owner) {
        owner = _owner;
        authorizations[_owner] = true;
    }

    /**
     * Function modifier to require caller to be contract owner
     */
    modifier onlyOwner() {
        require(isOwner(msg.sender), "Not owner");
        _;
    }

    /**
     * Function modifier to require caller to be authorized
     */
    modifier authorized() {
        require(isAuthorized(msg.sender), "Not authorized");
        _;
    }

    /**
     * Authorize address. Owner only
     */
    function authorize(address adr) public onlyOwner {
        authorizations[adr] = true;
    }

    /**
     * Remove address' authorization. Owner only
     */
    function unauthorize(address adr) public onlyOwner {
        authorizations[adr] = false;
    }

    /**
     * Check if address is owner
     */
    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }

    /**
     * Return address' authorization status
     */
    function isAuthorized(address adr) public view returns (bool) {
        return authorizations[adr];
    }

    /**
     * Transfer ownership to new address. Caller must be owner. Leaves old owner authorized
     */
    function transferOwnership(address payable adr) public onlyOwner {
        owner = adr;
        authorizations[adr] = true;
        emit OwnershipTransferred(adr);
    }

    event OwnershipTransferred(address owner);
}

interface IDEXFactory {
    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);
}

interface IDEXRouter {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint256 amountADesired,
        uint256 amountBDesired,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    )
        external
        returns (
            uint256 amountA,
            uint256 amountB,
            uint256 liquidity
        );

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable;

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
}

interface IDividendDistributor {
    function setDistributionCriteria(
        uint256 _minPeriod,
        uint256 _minDistribution
    ) external;

    function setShare(address shareholder, uint256 amount) external;

    function deposit() external payable;

    function process(uint256 gas) external;
}

contract DividendDistributor is IDividendDistributor {
    using SafeMath for uint256;

    address _token;

    struct Share {
        uint256 amount;
        uint256 totalExcluded;
        uint256 totalRealised;
    }

     IERC20 LUNC_WORMHOLE = IERC20(0xbd31EA8212119f94A611FA969881CBa3EA06Fa3d); //mainnet
     address WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2; //mainnet

    
    IDEXRouter router;

    address[] shareholders;
    mapping(address => uint256) shareholderIndexes;
    mapping(address => uint256) shareholderClaims;

    mapping(address => Share) public shares;

    uint256 public totalShares;
    uint256 public totalDividends;
    uint256 public totalDistributed;
    uint256 public dividendsPerShare;
    uint256 public dividendsPerShareAccuracyFactor = 10**36;

    uint256 public minPeriod = 1 hours;
    uint256 public minDistribution = 1 * (10**18);

    uint256 currentIndex;

    bool initialized;
    modifier initialization() {
        require(!initialized);
        _;
        initialized = true;
    }

    modifier onlyToken() {
        require(msg.sender == _token);
        _;
    }

    constructor(address _router) {
        router = _router != address(0)
            ? IDEXRouter(_router)
            : IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _token = msg.sender;
    }

    function setDistributionCriteria(
        uint256 _minPeriod,
        uint256 _minDistribution
    ) external override onlyToken {
        minPeriod = _minPeriod;
        minDistribution = _minDistribution;
    }

    function setShare(address shareholder, uint256 amount)
        external
        override
        onlyToken
    {
        if (shares[shareholder].amount > 0) {
            distributeDividend(shareholder);
        }

        if (amount > 0 && shares[shareholder].amount == 0) {
            addShareholder(shareholder);
        } else if (amount == 0 && shares[shareholder].amount > 0) {
            removeShareholder(shareholder);
        }

        totalShares = totalShares.sub(shares[shareholder].amount).add(amount);
        shares[shareholder].amount = amount;
        shares[shareholder].totalExcluded = getCumulativeDividends(
            shares[shareholder].amount
        );
    }

    function deposit() external payable override onlyToken {
        uint256 balanceBefore = LUNC_WORMHOLE.balanceOf(address(this));

        address[] memory path = new address[](2);
        path[0] = WETH;
        path[1] = address(LUNC_WORMHOLE);

        router.swapExactETHForTokensSupportingFeeOnTransferTokens{
            value: msg.value
        }(0, path, address(this), block.timestamp);

        uint256 amount = LUNC_WORMHOLE.balanceOf(address(this)).sub(
            balanceBefore
        );

        totalDividends = totalDividends.add(amount);
        dividendsPerShare = dividendsPerShare.add(
            dividendsPerShareAccuracyFactor.mul(amount).div(totalShares)
        );
    }

    function process(uint256 gas) external override onlyToken {
        uint256 shareholderCount = shareholders.length;

        if (shareholderCount == 0) {
            return;
        }

        uint256 gasUsed = 0;
        uint256 gasLeft = gasleft();

        uint256 iterations = 0;

        while (gasUsed < gas && iterations < shareholderCount) {
            if (currentIndex >= shareholderCount) {
                currentIndex = 0;
            }

            if (shouldDistribute(shareholders[currentIndex])) {
                distributeDividend(shareholders[currentIndex]);
            }

            gasUsed = gasUsed.add(gasLeft.sub(gasleft()));
            gasLeft = gasleft();
            currentIndex++;
            iterations++;
        }
    }

    function shouldDistribute(address shareholder)
        internal
        view
        returns (bool)
    {
        return
            shareholderClaims[shareholder] + minPeriod < block.timestamp &&
            getUnpaidEarnings(shareholder) > minDistribution;
    }

    function distributeDividend(address shareholder) internal {
        if (shares[shareholder].amount == 0) {
            return;
        }

        uint256 amount = getUnpaidEarnings(shareholder);
        if (amount > 0) {
            totalDistributed = totalDistributed.add(amount);
            LUNC_WORMHOLE.transfer(shareholder, amount);
            shareholderClaims[shareholder] = block.timestamp;
            shares[shareholder].totalRealised = shares[shareholder]
                .totalRealised
                .add(amount);
            shares[shareholder].totalExcluded = getCumulativeDividends(
                shares[shareholder].amount
            );
        }
    }

    function claimDividend() external {
        distributeDividend(msg.sender);
    }

    function getUnpaidEarnings(address shareholder)
        public
        view
        returns (uint256)
    {
        if (shares[shareholder].amount == 0) {
            return 0;
        }

        uint256 shareholderTotalDividends = getCumulativeDividends(
            shares[shareholder].amount
        );
        uint256 shareholderTotalExcluded = shares[shareholder].totalExcluded;

        if (shareholderTotalDividends <= shareholderTotalExcluded) {
            return 0;
        }

        return shareholderTotalDividends.sub(shareholderTotalExcluded);
    }

    function getCumulativeDividends(uint256 share)
        internal
        view
        returns (uint256)
    {
        return
            share.mul(dividendsPerShare).div(dividendsPerShareAccuracyFactor);
    }

    function addShareholder(address shareholder) internal {
        shareholderIndexes[shareholder] = shareholders.length;
        shareholders.push(shareholder);
    }

    function removeShareholder(address shareholder) internal {
        shareholders[shareholderIndexes[shareholder]] = shareholders[
            shareholders.length - 1
        ];
        shareholderIndexes[
            shareholders[shareholders.length - 1]
        ] = shareholderIndexes[shareholder];
        shareholders.pop();
    }
}

contract LUNATICS is IERC20, Auth {
    using SafeMath for uint256;

    uint256 public constant MASK = type(uint128).max;
    address LUNC_WORMHOLE = 0xbd31EA8212119f94A611FA969881CBa3EA06Fa3d; //mainnet
    address public WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2; //mainnet

   
    address constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address constant ZERO = 0x0000000000000000000000000000000000000000;

    string constant _name = "Lunatics";
    string constant _symbol = "LunaT";
    uint8 constant _decimals = 9;

    uint256 _totalSupply = 1_00_000_000_000 * (10**_decimals);

    mapping(address => uint256) _balances;
    mapping(address => mapping(address => uint256)) _allowances;

    mapping(address => bool) public isFeeExempt;

    mapping(address => bool) public isDividendExempt;

    uint256 liquidityFee = 100;
    uint256 reflectionFee = 300;
    uint256 marketingFee = 300;
    uint256 burnFee = 100;
    uint256 totalFee = 800;
    uint256 feeDenominator = 10000;

    address public marketingFeeReceiver;

    IDEXRouter public router;
    address public pair;

    bool public tradingEnabled = false;

    DividendDistributor distributor;
    address public distributorAddress;

    uint256 distributorGas = 500000;

    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply / 2000; // 0.005%
    bool inSwap;
    modifier swapping() {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() Auth(msg.sender) {
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));
        _allowances[address(this)][address(router)] = _totalSupply;
        WETH = router.WETH();
        distributor = new DividendDistributor(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );
        distributorAddress = address(distributor);

        isFeeExempt[msg.sender] = true;
        isFeeExempt[address(this)] = true;
        isFeeExempt[DEAD] = true;
        isFeeExempt[ZERO] = true;

        isDividendExempt[pair] = true;
        isDividendExempt[address(this)] = true;
        isDividendExempt[DEAD] = true;
        isFeeExempt[ZERO] = true;

        marketingFeeReceiver = 0x5bc9cF0933adFeFC9F5ea55E294c4Cd580b97Dfd;

        approve(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, _totalSupply);
        approve(address(pair), _totalSupply);
        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable {}

    function totalSupply() external view override returns (uint256) {
        return _totalSupply;
    }

    function decimals() external pure override returns (uint8) {
        return _decimals;
    }

    function symbol() external pure override returns (string memory) {
        return _symbol;
    }

    function name() external pure override returns (string memory) {
        return _name;
    }

    function getOwner() external view override returns (address) {
        return owner;
    }

    function balanceOf(address account) public view override returns (uint256) {
        return _balances[account];
    }

    function allowance(address holder, address spender)
        external
        view
        override
        returns (uint256)
    {
        return _allowances[holder][spender];
    }

    function approve(address spender, uint256 amount)
        public
        override
        returns (bool)
    {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, _totalSupply);
    }

    function transfer(address recipient, uint256 amount)
        external
        override
        returns (bool)
    {
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external override returns (bool) {
        if (_allowances[sender][msg.sender] != _totalSupply) {
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender]
                .sub(amount, "Insufficient Allowance");
        }

        return _transferFrom(sender, recipient, amount);
    }

    function _transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (bool) {

        if (!isOwner(sender)) {
            require(tradingEnabled, "Trading is disabled");
        }
        if (inSwap) {
            return _basicTransfer(sender, recipient, amount);
        }
        if(sender != pair && recipient != pair)
        {
            return _basicTransfer(sender, recipient, amount);
        }
      

        if (shouldSwapBack()) {
            swapBack();
        }

        _balances[sender] = _balances[sender].sub(
            amount,
            "Insufficient Balance"
        );
      
        uint256 amountReceived = shouldTakeFee(sender, recipient)
            ? takeFee(sender, amount)
            : amount;

        _balances[recipient] = _balances[recipient].add(amountReceived);

        if (!isDividendExempt[sender]) {
            try distributor.setShare(sender, _balances[sender]) {} catch {}
        }
        if (!isDividendExempt[recipient]) {
            try
                distributor.setShare(recipient, _balances[recipient])
            {} catch {}
        }

        try distributor.process(distributorGas) {} catch {}

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }

    function _basicTransfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(
            amount,
            "Insufficient Balance"
        );
        _balances[recipient] = _balances[recipient].add(amount);
         emit Transfer(sender, recipient, amount);
        return true;
    }

    function shouldTakeFee(address sender, address recipient) internal view returns (bool) {
        if(isFeeExempt[sender] || isFeeExempt[recipient]){return false;}
        else{return true;}
        
    }

    function takeFee(address sender, uint256 amount)
        internal
        returns (uint256)
    {
        uint256 feeAmount = amount.mul(totalFee - burnFee).div(feeDenominator);
        uint256 burnFeeAmount = amount.mul(burnFee).div(feeDenominator);

        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);
        _balances[DEAD] = _balances[DEAD].add(burnFeeAmount);
        emit Transfer(sender, DEAD, burnFeeAmount);

        return amount.sub(feeAmount + burnFeeAmount);
    }

    function setIsFeeExempt(address wallet, bool value) external authorized {
        isFeeExempt[wallet] = value;
    }

    function shouldSwapBack() internal view returns (bool) {
        return
            msg.sender != pair &&
            !inSwap &&
            swapEnabled &&
            _balances[address(this)] >= swapThreshold;
    }

    function swapBack() internal swapping {
        uint256 amountToLiquify = swapThreshold
            .mul(liquidityFee)
            .div(totalFee)
            .div(2);
        uint256 amountToSwap = swapThreshold.sub(amountToLiquify);

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WETH;
        uint256 balanceBefore = address(this).balance;

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amountETH = address(this).balance.sub(balanceBefore);

        uint256 totalETHFee = totalFee.sub(liquidityFee.div(2));

        uint256 amountETHLiquidity = amountETH
            .mul(liquidityFee)
            .div(totalETHFee)
            .div(2);
        uint256 amountETHReflection = amountETH.mul(reflectionFee).div(
            totalETHFee
        );
        uint256 amountETHMarketing = amountETH.mul(marketingFee).div(
            totalETHFee
        );

        try distributor.deposit{value: amountETHReflection}() {} catch {}
        payable(marketingFeeReceiver).transfer(amountETHMarketing);

        if (amountToLiquify > 0) {
            router.addLiquidityETH{value: amountETHLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                owner,
                block.timestamp
            );
            emit AutoLiquify(amountETHLiquidity, amountToLiquify);
        }
    }

    // Trading once enabled, can't be disabled
    function enableTrading() external onlyOwner {
        tradingEnabled = true;
    }

    function setIsDividendExempt(address holder, bool exempt)
        external
        authorized
    {
        require(holder != address(this) && holder != pair);
        isDividendExempt[holder] = exempt;
        if (exempt) {
            distributor.setShare(holder, 0);
        } else {
            distributor.setShare(holder, _balances[holder]);
        }
    }

    function setFees(
        uint256 _liquidityFee,
        uint256 _reflectionFee,
        uint256 _marketingFee,
        uint256 _burnFee
    ) external authorized {
        liquidityFee = _liquidityFee;
        reflectionFee = _reflectionFee;
        marketingFee = _marketingFee;
        burnFee = _burnFee;
        totalFee = _liquidityFee.add(_reflectionFee).add(_marketingFee).add(
            burnFee
        );
        require(totalFee <= 2500, "Fees must be less than 25%");
    }

    function setFeeReceivers(address _marketingFeeReceiver)
        external
        authorized
    {
        marketingFeeReceiver = _marketingFeeReceiver;
    }

    function setSwapBackSettings(bool _enabled, uint256 _amount)
        external
        authorized
    {
        swapEnabled = _enabled;
        swapThreshold = _amount;
    }

    function setDistributionCriteria(
        uint256 _minPeriod,
        uint256 _minDistribution
    ) external authorized {
        distributor.setDistributionCriteria(_minPeriod, _minDistribution);
    }

    function setDistributorSettings(uint256 gas) external authorized {
        require(gas < 750000, "Inappropriate gas amount");
        distributorGas = gas;
    }

    function clearStuckBalance() external authorized {
        uint256 amountETH = address(this).balance;
        payable(msg.sender).transfer(amountETH);
    }

    function clearStuckTokens(address _tokenContract) public authorized {
        require(
            _tokenContract != address(this),
            "Cannot withdraw native token"
        );
        IERC20 tokenContract = IERC20(_tokenContract);
        tokenContract.transfer(
            msg.sender,
            tokenContract.balanceOf(address(this))
        );
    }

    event AutoLiquify(uint256 amountETH, uint256 amount);
}

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

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"MASK","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WETH","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"authorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenContract","type":"address"}],"name":"clearStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"distributorAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isDividendExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minPeriod","type":"uint256"},{"internalType":"uint256","name":"_minDistribution","type":"uint256"}],"name":"setDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"setDistributorSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_reflectionFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsDividendExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

Deployed Bytecode

0x60806040526004361061021e5760003560e01c8063893d20e811610123578063dd62ed3e116100ab578063f0b37c041161006f578063f0b37c04146106c4578063f2fde38b146106e4578063f708a64f14610704578063f887ea4014610724578063fe9fbb801461074457600080fd5b8063dd62ed3e146105fa578063df20fd4914610640578063e01bb68814610660578063e91f214e14610680578063e96fada2146106a457600080fd5b8063a51af4c5116100f2578063a51af4c51461055a578063a8aa1b311461057a578063a9059cbb1461059a578063ad5c4648146105ba578063b6a5d7de146105da57600080fd5b8063893d20e8146104c55780638a8c523c146104f757806395d89b411461050c5780639d1944f51461053a57600080fd5b8063364333f4116101a6578063571ac8b011610175578063571ac8b014610415578063658d4b7f146104355780636ddd1713146104555780636fcba3771461046f57806370a082311461048f57600080fd5b8063364333f41461037f5780633f4218e0146103945780634355855a146103c45780634ada218b146103f457600080fd5b806323b872dd116101ed57806323b872dd146102d25780632d48e896146102f25780632f54bf6e14610314578063313ce56714610343578063346cc7be1461035f57600080fd5b80630445b6671461022a57806306fdde0314610253578063095ea7b31461028d57806318160ddd146102bd57600080fd5b3661022557005b600080fd5b34801561023657600080fd5b5061024060165481565b6040519081526020015b60405180910390f35b34801561025f57600080fd5b506040805180820190915260088152674c756e617469637360c01b60208201525b60405161024a9190611984565b34801561029957600080fd5b506102ad6102a83660046119f1565b610764565b604051901515815260200161024a565b3480156102c957600080fd5b50600454610240565b3480156102de57600080fd5b506102ad6102ed366004611a1d565b6107d1565b3480156102fe57600080fd5b5061031261030d366004611a5e565b610895565b005b34801561032057600080fd5b506102ad61032f366004611a80565b6000546001600160a01b0391821691161490565b34801561034f57600080fd5b506040516009815260200161024a565b34801561036b57600080fd5b5061031261037a366004611a80565b61092d565b34801561038b57600080fd5b50610312610a92565b3480156103a057600080fd5b506102ad6103af366004611a80565b60076020526000908152604090205460ff1681565b3480156103d057600080fd5b506102ad6103df366004611a80565b60086020526000908152604090205460ff1681565b34801561040057600080fd5b506011546102ad90600160a01b900460ff1681565b34801561042157600080fd5b506102ad610430366004611a80565b610aea565b34801561044157600080fd5b50610312610450366004611aab565b610af8565b34801561046157600080fd5b506015546102ad9060ff1681565b34801561047b57600080fd5b5061031261048a366004611ae4565b610b48565b34801561049b57600080fd5b506102406104aa366004611a80565b6001600160a01b031660009081526005602052604090205490565b3480156104d157600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161024a565b34801561050357600080fd5b50610312610bf3565b34801561051857600080fd5b50604080518082019091526005815264131d5b985560da1b6020820152610280565b34801561054657600080fd5b50610312610555366004611b16565b610c32565b34801561056657600080fd5b506013546104df906001600160a01b031681565b34801561058657600080fd5b506011546104df906001600160a01b031681565b3480156105a657600080fd5b506102ad6105b53660046119f1565b610cae565b3480156105c657600080fd5b506003546104df906001600160a01b031681565b3480156105e657600080fd5b506103126105f5366004611a80565b610cbb565b34801561060657600080fd5b50610240610615366004611b2f565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b34801561064c57600080fd5b5061031261065b366004611b5d565b610d0c565b34801561066c57600080fd5b5061031261067b366004611a80565b610d48565b34801561068c57600080fd5b506102406fffffffffffffffffffffffffffffffff81565b3480156106b057600080fd5b50600f546104df906001600160a01b031681565b3480156106d057600080fd5b506103126106df366004611a80565b610d8f565b3480156106f057600080fd5b506103126106ff366004611a80565b610dda565b34801561071057600080fd5b5061031261071f366004611aab565b610e70565b34801561073057600080fd5b506010546104df906001600160a01b031681565b34801561075057600080fd5b506102ad61075f366004611a80565b610f74565b3360008181526006602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906107bf9086815260200190565b60405180910390a35060015b92915050565b6004546001600160a01b0384166000908152600660209081526040808320338452909152812054909114610880576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b038716600090815260068252838120338252909152919091205461085b918490610f92565b6001600160a01b03851660009081526006602090815260408083203384529091529020555b61088b848484610fbe565b90505b9392505050565b61089e33610f74565b6108c35760405162461bcd60e51b81526004016108ba90611b7b565b60405180910390fd5b6012546040516316a4744b60e11b815260048101849052602481018390526001600160a01b0390911690632d48e896906044015b600060405180830381600087803b15801561091157600080fd5b505af1158015610925573d6000803e3d6000fd5b505050505050565b61093633610f74565b6109525760405162461bcd60e51b81526004016108ba90611b7b565b306001600160a01b038216036109aa5760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f74207769746864726177206e617469766520746f6b656e0000000060448201526064016108ba565b6040516370a0823160e01b815230600482015281906001600160a01b0382169063a9059cbb90339083906370a0823190602401602060405180830381865afa1580156109fa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1e9190611ba3565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015610a69573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a8d9190611bbc565b505050565b610a9b33610f74565b610ab75760405162461bcd60e51b81526004016108ba90611b7b565b6040514790339082156108fc029083906000818181858888f19350505050158015610ae6573d6000803e3d6000fd5b5050565b60006107cb82600454610764565b610b0133610f74565b610b1d5760405162461bcd60e51b81526004016108ba90611b7b565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b610b5133610f74565b610b6d5760405162461bcd60e51b81526004016108ba90611b7b565b6009849055600a839055600b829055600c819055610b9781610b9184818888611322565b90611322565b600d8190556109c41015610bed5760405162461bcd60e51b815260206004820152601a60248201527f46656573206d757374206265206c657373207468616e2032352500000000000060448201526064016108ba565b50505050565b6000546001600160a01b03163314610c1d5760405162461bcd60e51b81526004016108ba90611bd9565b6011805460ff60a01b1916600160a01b179055565b610c3b33610f74565b610c575760405162461bcd60e51b81526004016108ba90611b7b565b620b71b08110610ca95760405162461bcd60e51b815260206004820152601860248201527f496e617070726f7072696174652067617320616d6f756e74000000000000000060448201526064016108ba565b601455565b600061088e338484610fbe565b6000546001600160a01b03163314610ce55760405162461bcd60e51b81526004016108ba90611bd9565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b610d1533610f74565b610d315760405162461bcd60e51b81526004016108ba90611b7b565b6015805460ff191692151592909217909155601655565b610d5133610f74565b610d6d5760405162461bcd60e51b81526004016108ba90611b7b565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610db95760405162461bcd60e51b81526004016108ba90611bd9565b6001600160a01b03166000908152600160205260409020805460ff19169055565b6000546001600160a01b03163314610e045760405162461bcd60e51b81526004016108ba90611bd9565b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff191690921790915591519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163910160405180910390a150565b610e7933610f74565b610e955760405162461bcd60e51b81526004016108ba90611b7b565b6001600160a01b0382163014801590610ebc57506011546001600160a01b03838116911614155b610ec557600080fd5b6001600160a01b0382166000908152600860205260409020805460ff19168215801591909117909155610f2b57601254604051630a5b654b60e11b81526001600160a01b03848116600483015260006024830152909116906314b6ca96906044016108f7565b6012546001600160a01b0383811660008181526005602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca96906044016108f7565b6001600160a01b031660009081526001602052604090205460ff1690565b60008184841115610fb65760405162461bcd60e51b81526004016108ba9190611984565b505050900390565b600080546001600160a01b0385811691161461102357601154600160a01b900460ff166110235760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81a5cc8191a5cd8589b1959606a1b60448201526064016108ba565b60175460ff16156110405761103984848461132e565b905061088e565b6011546001600160a01b0385811691161480159061106c57506011546001600160a01b03848116911614155b1561107c5761103984848461132e565b611084611402565b1561109157611091611453565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387166000908152600590915291909120546110e3918490610f92565b6001600160a01b03851660009081526005602052604081209190915561110985856117ad565b611113578261111d565b61111d8584611801565b6001600160a01b0385166000908152600560205260409020549091506111439082611322565b6001600160a01b0380861660009081526005602090815260408083209490945591881681526008909152205460ff166111e7576012546001600160a01b0386811660008181526005602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b1580156111d457600080fd5b505af19250505080156111e5575060015b505b6001600160a01b03841660009081526008602052604090205460ff16611278576012546001600160a01b0385811660008181526005602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b15801561126557600080fd5b505af1925050508015611276575060015b505b6012546014546040516001624d3b8760e01b031981526001600160a01b039092169163ffb2c479916112b09160040190815260200190565b600060405180830381600087803b1580156112ca57600080fd5b505af19250505080156112db575060015b50836001600160a01b0316856001600160a01b0316600080516020611d388339815191528360405161130f91815260200190565b60405180910390a3506001949350505050565b600061088e8284611c12565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038616600090815260059091529182205461137f918490610f92565b6001600160a01b0380861660009081526005602052604080822093909355908516815220546113ae9083611322565b6001600160a01b038085166000818152600560205260409081902093909355915190861690600080516020611d38833981519152906113f09086815260200190565b60405180910390a35060019392505050565b6011546000906001600160a01b03163314801590611423575060175460ff16155b8015611431575060155460ff165b801561144e57506016543060009081526005602052604090205410155b905090565b6017805460ff19166001179055600d54600954601654600092611486926002926114809291839190611960565b9061196c565b9050600061149f8260165461197890919063ffffffff16565b604080516002808252606082018352929350600092909160208301908036833701905050905030816000815181106114d9576114d9611c2a565b6001600160a01b03928316602091820292909201015260035482519116908290600190811061150a5761150a611c2a565b6001600160a01b03928316602091820292909201015260105460405163791ac94760e01b81524792919091169063791ac94790611554908690600090879030904290600401611c40565b600060405180830381600087803b15801561156e57600080fd5b505af1158015611582573d6000803e3d6000fd5b50505050600061159b824761197890919063ffffffff16565b905060006115c16115b8600260095461196c90919063ffffffff16565b600d5490611978565b905060006115e36002611480846114806009548861196090919063ffffffff16565b9050600061160083611480600a548761196090919063ffffffff16565b9050600061161d84611480600b548861196090919063ffffffff16565b9050601260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b15801561166f57600080fd5b505af193505050508015611681575060015b50600f546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156116bc573d6000803e3d6000fd5b508815611798576010546000805460405163f305d71960e01b8152306004820152602481018d90526044810183905260648101929092526001600160a01b0390811660848301524260a48301529091169063f305d71990859060c40160606040518083038185885af1158015611736573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061175b9190611cb1565b505060408051858152602081018c90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506017805460ff1916905550505050505050565b6001600160a01b03821660009081526007602052604081205460ff16806117ec57506001600160a01b03821660009081526007602052604090205460ff165b156117f9575060006107cb565b5060016107cb565b600080611824600e54611480600c54600d5461181d9190611cdf565b8690611960565b90506000611843600e54611480600c548761196090919063ffffffff16565b306000908152600560205260409020549091506118609083611322565b30600081815260056020526040908190209290925590516001600160a01b03871690600080516020611d388339815191529061189f9086815260200190565b60405180910390a361dead60005260056020527f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba546118de9082611322565b61dead600081905260056020527f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba919091556040516001600160a01b03871690600080516020611d388339815191529061193b9085815260200190565b60405180910390a36119576119508284611c12565b8590611978565b95945050505050565b600061088e8284611cf6565b600061088e8284611d15565b600061088e8284611cdf565b600060208083528351808285015260005b818110156119b157858101830151858201604001528201611995565b818111156119c3576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b03811681146119ee57600080fd5b50565b60008060408385031215611a0457600080fd5b8235611a0f816119d9565b946020939093013593505050565b600080600060608486031215611a3257600080fd5b8335611a3d816119d9565b92506020840135611a4d816119d9565b929592945050506040919091013590565b60008060408385031215611a7157600080fd5b50508035926020909101359150565b600060208284031215611a9257600080fd5b813561088e816119d9565b80151581146119ee57600080fd5b60008060408385031215611abe57600080fd5b8235611ac9816119d9565b91506020830135611ad981611a9d565b809150509250929050565b60008060008060808587031215611afa57600080fd5b5050823594602084013594506040840135936060013592509050565b600060208284031215611b2857600080fd5b5035919050565b60008060408385031215611b4257600080fd5b8235611b4d816119d9565b91506020830135611ad9816119d9565b60008060408385031215611b7057600080fd5b8235611a0f81611a9d565b6020808252600e908201526d139bdd08185d5d1a1bdc9a5e995960921b604082015260600190565b600060208284031215611bb557600080fd5b5051919050565b600060208284031215611bce57600080fd5b815161088e81611a9d565b6020808252600990820152682737ba1037bbb732b960b91b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60008219821115611c2557611c25611bfc565b500190565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611c905784516001600160a01b031683529383019391830191600101611c6b565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215611cc657600080fd5b8351925060208401519150604084015190509250925092565b600082821015611cf157611cf1611bfc565b500390565b6000816000190483118215151615611d1057611d10611bfc565b500290565b600082611d3257634e487b7160e01b600052601260045260246000fd5b50049056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220b60a622e1c3b4f9cbd8a51c22c68719c398d1a6d2a3b0b5524550492262afaeb64736f6c634300080f0033

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  ]
[ 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.