ETH Price: $2,525.71 (+0.02%)

Contract

0xac0d710e41F667753fCC887C6f31d1c3a1fBc1d0
 

Overview

ETH Balance

0.252093261730768572 ETH

Eth Value

$636.71 (@ $2,525.71/ETH)

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Withdraw182656132023-10-02 21:43:35333 days ago1696283015IN
0xac0d710e...3a1fBc1d0
0 ETH0.0020847822.17100599
Withdraw182450202023-09-30 0:43:35336 days ago1696034615IN
0xac0d710e...3a1fBc1d0
0 ETH0.000641086.34364008
Withdraw182434362023-09-29 19:24:11336 days ago1696015451IN
0xac0d710e...3a1fBc1d0
0 ETH0.0009551410.1576275
Claim181043822023-09-10 7:07:59356 days ago1694329679IN
0xac0d710e...3a1fBc1d0
0 ETH0.000765239.55810783
Claim180668312023-09-05 0:54:47361 days ago1693875287IN
0xac0d710e...3a1fBc1d0
0 ETH0.0006521310.35774154
Claim180662222023-09-04 22:52:23361 days ago1693867943IN
0xac0d710e...3a1fBc1d0
0 ETH0.0011652818.50804693
Claim180639582023-09-04 15:17:47361 days ago1693840667IN
0xac0d710e...3a1fBc1d0
0 ETH0.0017361927.57565639
Claim180631502023-09-04 12:35:23362 days ago1693830923IN
0xac0d710e...3a1fBc1d0
0 ETH0.000557710.49626258
Claim180631492023-09-04 12:35:11362 days ago1693830911IN
0xac0d710e...3a1fBc1d0
0 ETH0.000639810.16186529
Claim180601682023-09-04 2:35:23362 days ago1693794923IN
0xac0d710e...3a1fBc1d0
0 ETH0.0013511510.80245141
Claim180597552023-09-04 1:11:47362 days ago1693789907IN
0xac0d710e...3a1fBc1d0
0 ETH0.0006391510.15159758
Claim180586362023-09-03 21:26:35362 days ago1693776395IN
0xac0d710e...3a1fBc1d0
0 ETH0.0007079511.24439516
Claim180585302023-09-03 21:04:47362 days ago1693775087IN
0xac0d710e...3a1fBc1d0
0 ETH0.0007317411.62216003
Claim180546132023-09-03 7:54:47363 days ago1693727687IN
0xac0d710e...3a1fBc1d0
0 ETH0.0006782410.77244674
Claim180544692023-09-03 7:25:35363 days ago1693725935IN
0xac0d710e...3a1fBc1d0
0 ETH0.0006751410.72325373
Claim180541072023-09-03 6:13:11363 days ago1693721591IN
0xac0d710e...3a1fBc1d0
0 ETH0.000666910.59229427
Claim180538562023-09-03 5:22:59363 days ago1693718579IN
0xac0d710e...3a1fBc1d0
0 ETH0.000611749.71627569
Transfer180522452023-09-02 23:58:23363 days ago1693699103IN
0xac0d710e...3a1fBc1d0
0.015 ETH0.0038160710.29789907
Transfer180519402023-09-02 22:56:47363 days ago1693695407IN
0xac0d710e...3a1fBc1d0
0.06 ETH0.0035886711.19430559
Claim180519272023-09-02 22:54:11363 days ago1693695251IN
0xac0d710e...3a1fBc1d0
0 ETH0.0015009412
Claim180513962023-09-02 21:07:11363 days ago1693688831IN
0xac0d710e...3a1fBc1d0
0 ETH0.001355310.8355704
Claim180507972023-09-02 19:05:47363 days ago1693681547IN
0xac0d710e...3a1fBc1d0
0 ETH0.0007218211.46464415
Claim180505362023-09-02 18:12:59363 days ago1693678379IN
0xac0d710e...3a1fBc1d0
0 ETH0.0009706912.46602096
Transfer180502782023-09-02 17:20:35363 days ago1693675235IN
0xac0d710e...3a1fBc1d0
0.1 ETH0.0067574818.23380043
Claim180497082023-09-02 15:25:11363 days ago1693668311IN
0xac0d710e...3a1fBc1d0
0 ETH0.0012219217.95892316
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
182450202023-09-30 0:43:35336 days ago1696034615
0xac0d710e...3a1fBc1d0
0.00099887 ETH
181043822023-09-10 7:07:59356 days ago1694329679
0xac0d710e...3a1fBc1d0
1.01427688 ETH
180668312023-09-05 0:54:47361 days ago1693875287
0xac0d710e...3a1fBc1d0
0.03446078 ETH
180662222023-09-04 22:52:23361 days ago1693867943
0xac0d710e...3a1fBc1d0
0.01252867 ETH
180639582023-09-04 15:17:47361 days ago1693840667
0xac0d710e...3a1fBc1d0
0.1195018 ETH
180631492023-09-04 12:35:11362 days ago1693830911
0xac0d710e...3a1fBc1d0
0.03858365 ETH
180603732023-09-04 3:16:47362 days ago1693797407
0xac0d710e...3a1fBc1d0
1 wei
180601682023-09-04 2:35:23362 days ago1693794923
0xac0d710e...3a1fBc1d0
0.08319119 ETH
180601682023-09-04 2:35:23362 days ago1693794923
0xac0d710e...3a1fBc1d0
0.02251988 ETH
180597552023-09-04 1:11:47362 days ago1693789907
0xac0d710e...3a1fBc1d0
0.06357346 ETH
180586362023-09-03 21:26:35362 days ago1693776395
0xac0d710e...3a1fBc1d0
0.01458163 ETH
180585302023-09-03 21:04:47362 days ago1693775087
0xac0d710e...3a1fBc1d0
0.55744156 ETH
180580752023-09-03 19:33:11362 days ago1693769591
0xac0d710e...3a1fBc1d0
1 wei
180580342023-09-03 19:24:59362 days ago1693769099
0xac0d710e...3a1fBc1d0
0.04082088 ETH
180546132023-09-03 7:54:47363 days ago1693727687
0xac0d710e...3a1fBc1d0
0.01343936 ETH
180544692023-09-03 7:25:35363 days ago1693725935
0xac0d710e...3a1fBc1d0
0.1765492 ETH
180541072023-09-03 6:13:11363 days ago1693721591
0xac0d710e...3a1fBc1d0
0.02167984 ETH
180538562023-09-03 5:22:59363 days ago1693718579
0xac0d710e...3a1fBc1d0
0.01053698 ETH
180527942023-09-03 1:48:47363 days ago1693705727
0xac0d710e...3a1fBc1d0
0.03951981 ETH
180522452023-09-02 23:58:23363 days ago1693699103
0xac0d710e...3a1fBc1d0
0.00055538 ETH
180522452023-09-02 23:58:23363 days ago1693699103
0xac0d710e...3a1fBc1d0
0.00305553 ETH
180522452023-09-02 23:58:23363 days ago1693699103
0xac0d710e...3a1fBc1d0
0.00037465 ETH
180522452023-09-02 23:58:23363 days ago1693699103
0xac0d710e...3a1fBc1d0
0.015 ETH
180519402023-09-02 22:56:47363 days ago1693695407
0xac0d710e...3a1fBc1d0
0.00150073 ETH
180519402023-09-02 22:56:47363 days ago1693695407
0xac0d710e...3a1fBc1d0
1 wei
View All Internal Transactions
Loading...
Loading

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

Contract Name:
Staking

Compiler Version
v0.8.1+commit.df193b15

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
File 1 of 5 : Staking.sol
// SPDX-License-Identifier: MIT

pragma solidity 0.8.1;

import "@openzeppelin/contracts/utils/Address.sol";
import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import "./IStaker.sol";
import "./IZap.sol";

contract Staking {
	struct Share {
		uint depositTime;
		uint initialDeposit;
		uint sumETH;
	}

	mapping(address => Share) public shares;
	address private immutable taxWallet;
	uint public sumETH;
	uint private constant PRECISION = 1e18;
	uint public totalETH;
	uint public totalLP;
	uint public immutable delay;
	IStaker public immutable staker;
	IZap public immutable zap;
	uint private isZapping = 2;

	constructor(IStaker staker_, IZap zap_, uint delay_) {
		taxWallet = msg.sender;
		staker = staker_;
		zap = zap_;
		delay = delay_;
	}

	receive() external payable {
		if (msg.sender == address(staker)) _distribute();
		else if (isZapping == 2) _deposit();
	}

	function _distribute() internal {
		if (msg.value == 0) return;

		uint totalLPCached = totalLP;
		if (totalLPCached == 0) return Address.sendValue(payable(taxWallet), msg.value);

		uint gpus = msg.value * PRECISION / totalLPCached;
		sumETH += gpus;
		totalETH += msg.value;
	}

	function _deposit() internal {
		require(msg.value > 0, "Amount must be greater than zero");
		Share memory share = shares[msg.sender];

		isZapping = 1;
		(uint amountLP, uint amountETH) = zap.zapInETH{value: msg.value}(address(staker));
		isZapping = 2;

		if (share.initialDeposit == 0) staker.increaseDepositNb();
		uint gains = _computeGainsUpdateShare(msg.sender, share, share.initialDeposit + amountLP, true, false);
		_sendETH(msg.sender, gains + amountETH);
	}

	function withdraw() external {
		Share memory share = shares[msg.sender];
		require(share.initialDeposit > 0, "No initial deposit");
		require(share.depositTime + delay < block.timestamp, "withdraw too soon");

		staker.withdraw(msg.sender, share.initialDeposit);
		staker.decreaseDepositNb();
		uint gains = _computeGainsUpdateShare(msg.sender, share, 0, true, true);
		_sendETH(msg.sender, gains);
	}

	function claim() external {
		Share memory share = shares[msg.sender];
		require(share.initialDeposit > 0, "No initial deposit");
		uint gains = _computeGainsUpdateShare(msg.sender, share, share.initialDeposit, false, false);
		_sendETH(msg.sender, gains);
	}

	function _sendETH(address to, uint amount) private {
		if (amount > 0) Address.sendValue(payable(to), amount);
	}

	function _computeGainsUpdateShare(address who, Share memory share, uint newAmount, bool resetTimer, bool withdrawn) 
		private 
		returns (uint gains)
	{
		staker.distribute();

		if (share.initialDeposit != 0) gains = share.initialDeposit * (sumETH - share.sumETH) / PRECISION;

		if (newAmount == 0) delete shares[who];
		else if (resetTimer) shares[who] = Share(block.timestamp, newAmount, sumETH);
		else shares[who] = Share(share.depositTime, newAmount, sumETH);

		if (withdrawn) totalLP -= share.initialDeposit;
		else if (newAmount != share.initialDeposit) totalLP += (newAmount - share.initialDeposit);
	}

	function pending(address who) external view returns (uint) {
		Share memory share = shares[who];
		uint sumETHUpdated = sumETH + staker.pending(address(this)) * PRECISION / totalLP;
		return share.initialDeposit * (sumETHUpdated - share.sumETH) / PRECISION;
	}
}

File 2 of 5 : IERC20.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);

    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `to`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address to, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `from` to `to` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) external returns (bool);
}

File 3 of 5 : Address.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.8.0) (utils/Address.sol)

pragma solidity ^0.8.1;

/**
 * @dev Collection of functions related to the address type
 */
library Address {
    /**
     * @dev Returns true if `account` is a contract.
     *
     * [IMPORTANT]
     * ====
     * It is unsafe to assume that an address for which this function returns
     * false is an externally-owned account (EOA) and not a contract.
     *
     * Among others, `isContract` will return false for the following
     * types of addresses:
     *
     *  - an externally-owned account
     *  - a contract in construction
     *  - an address where a contract will be created
     *  - an address where a contract lived, but was destroyed
     * ====
     *
     * [IMPORTANT]
     * ====
     * You shouldn't rely on `isContract` to protect against flash loan attacks!
     *
     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets
     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract
     * constructor.
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // This method relies on extcodesize/address.code.length, which returns 0
        // for contracts in construction, since the code is only stored at the end
        // of the constructor execution.

        return account.code.length > 0;
    }

    /**
     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to
     * `recipient`, forwarding all available gas and reverting on errors.
     *
     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
     * of certain opcodes, possibly making contracts go over the 2300 gas limit
     * imposed by `transfer`, making them unable to receive funds via
     * `transfer`. {sendValue} removes this limitation.
     *
     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
     *
     * IMPORTANT: because control is transferred to `recipient`, care must be
     * taken to not create reentrancy vulnerabilities. Consider using
     * {ReentrancyGuard} or the
     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
     */
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    /**
     * @dev Performs a Solidity function call using a low level `call`. A
     * plain `call` is an unsafe replacement for a function call: use this
     * function instead.
     *
     * If `target` reverts with a revert reason, it is bubbled up by this
     * function (like regular Solidity function calls).
     *
     * Returns the raw returned data. To convert to the expected return value,
     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
     *
     * Requirements:
     *
     * - `target` must be a contract.
     * - calling `target` with `data` must not revert.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, "Address: low-level call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
     * `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but also transferring `value` wei to `target`.
     *
     * Requirements:
     *
     * - the calling contract must have an ETH balance of at least `value`.
     * - the called Solidity function must be `payable`.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    /**
     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
     * with `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        (bool success, bytes memory returndata) = target.call{value: value}(data);
        return verifyCallResultFromTarget(target, success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        (bool success, bytes memory returndata) = target.staticcall(data);
        return verifyCallResultFromTarget(target, success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        (bool success, bytes memory returndata) = target.delegatecall(data);
        return verifyCallResultFromTarget(target, success, returndata, errorMessage);
    }

    /**
     * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling
     * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.
     *
     * _Available since v4.8._
     */
    function verifyCallResultFromTarget(
        address target,
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        if (success) {
            if (returndata.length == 0) {
                // only check isContract if the call was successful and the return data is empty
                // otherwise we already know that it was a contract
                require(isContract(target), "Address: call to non-contract");
            }
            return returndata;
        } else {
            _revert(returndata, errorMessage);
        }
    }

    /**
     * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the
     * revert reason or using the provided one.
     *
     * _Available since v4.3._
     */
    function verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            _revert(returndata, errorMessage);
        }
    }

    function _revert(bytes memory returndata, string memory errorMessage) private pure {
        // Look for revert reason and bubble it up if present
        if (returndata.length > 0) {
            // The easiest way to bubble the revert reason is using memory via assembly
            /// @solidity memory-safe-assembly
            assembly {
                let returndata_size := mload(returndata)
                revert(add(32, returndata), returndata_size)
            }
        } else {
            revert(errorMessage);
        }
    }
}

File 4 of 5 : IStaker.sol
// SPDX-License-Identifier: MIT

pragma solidity 0.8.1;

interface IStaker {
	function increaseDepositNb() external;
	function decreaseDepositNb() external;
	function pending(address) external view returns (uint);
	function distribute() external;
	function withdraw(address, uint) external;
}

File 5 of 5 : IZap.sol
// SPDX-License-Identifier: MIT

pragma solidity 0.8.1;

interface IZap {
	function zapInETH(address) external payable returns (uint, uint);
}

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

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"contract IStaker","name":"staker_","type":"address"},{"internalType":"contract IZap","name":"zap_","type":"address"},{"internalType":"uint256","name":"delay_","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"delay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"}],"name":"pending","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"shares","outputs":[{"internalType":"uint256","name":"depositTime","type":"uint256"},{"internalType":"uint256","name":"initialDeposit","type":"uint256"},{"internalType":"uint256","name":"sumETH","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"staker","outputs":[{"internalType":"contract IStaker","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sumETH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalETH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalLP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"zap","outputs":[{"internalType":"contract IZap","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

Deployed Bytecode

0x6080604052600436106100955760003560e01c80635ebaf1db116100595780635ebaf1db1461017e5780635eebea20146101935780636a42b8f8146101b35780637cb549be146101c8578063ce7c2ac2146101dd576100ed565b8063132c4feb146100f2578063262d61521461011d57806336bdee741461013f5780633ccfd60b146101545780634e71d92d14610169576100ed565b366100ed57336001600160a01b037f000000000000000000000000bb8bd9ca0d736870aeac8df9689cc315fdb6394a1614156100d8576100d361020c565b6100eb565b600454600214156100eb576100eb6102a4565b005b600080fd5b3480156100fe57600080fd5b50610107610488565b6040516101149190610ccd565b60405180910390f35b34801561012957600080fd5b5061013261048e565b6040516101149190610b80565b34801561014b57600080fd5b506101076104b2565b34801561016057600080fd5b506100eb6104b8565b34801561017557600080fd5b506100eb61066c565b34801561018a57600080fd5b506101326106d1565b34801561019f57600080fd5b506101076101ae366004610b14565b6106f5565b3480156101bf57600080fd5b50610107610834565b3480156101d457600080fd5b50610107610858565b3480156101e957600080fd5b506101fd6101f8366004610b14565b61085e565b60405161011493929190610cd6565b34610216576102a2565b6003548061024e576102487f000000000000000000000000a04ed189da52d42ea440567074cd5e21256143f43461087f565b506102a2565b600081610263670de0b6b3a764000034610d24565b61026d9190610d04565b905080600160008282546102819190610cec565b92505081905550346002600082825461029a9190610cec565b909155505050505b565b600034116102cd5760405162461bcd60e51b81526004016102c490610bad565b60405180910390fd5b3360009081526020818152604080832081516060810183528154815260018083015494820194909452600290910154818301526004928355905163f34c72cd60e01b815290929182917f0000000000000000000000001a7bc4f0ddfb8a5dc510b97950a4ec5c488056446001600160a01b03169163f34c72cd913491610375917f000000000000000000000000bb8bd9ca0d736870aeac8df9689cc315fdb6394a9101610b80565b60408051808303818588803b15801561038d57600080fd5b505af11580156103a1573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906103c69190610b5a565b60026004556020850151919350915061044d577f000000000000000000000000bb8bd9ca0d736870aeac8df9689cc315fdb6394a6001600160a01b0316638bc323a66040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561043457600080fd5b505af1158015610448573d6000803e3d6000fd5b505050505b600061046d33858587602001516104649190610cec565b60016000610920565b90506104823361047d8484610cec565b610b04565b50505050565b60035481565b7f0000000000000000000000001a7bc4f0ddfb8a5dc510b97950a4ec5c4880564481565b60025481565b33600090815260208181526040918290208251606081018452815481526001820154928101839052600290910154928101929092526105095760405162461bcd60e51b81526004016102c490610c76565b80514290610538907f000000000000000000000000000000000000000000000000000000000024ea0090610cec565b106105555760405162461bcd60e51b81526004016102c490610ca2565b602081015160405163f3fef3a360e01b81526001600160a01b037f000000000000000000000000bb8bd9ca0d736870aeac8df9689cc315fdb6394a169163f3fef3a3916105a6913391600401610b94565b600060405180830381600087803b1580156105c057600080fd5b505af11580156105d4573d6000803e3d6000fd5b505050507f000000000000000000000000bb8bd9ca0d736870aeac8df9689cc315fdb6394a6001600160a01b03166372dc885c6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561063357600080fd5b505af1158015610647573d6000803e3d6000fd5b50505050600061065c33836000600180610920565b90506106683382610b04565b5050565b33600090815260208181526040918290208251606081018452815481526001820154928101839052600290910154928101929092526106bd5760405162461bcd60e51b81526004016102c490610c76565b600061065c33838460200151600080610920565b7f000000000000000000000000bb8bd9ca0d736870aeac8df9689cc315fdb6394a81565b6001600160a01b03808216600090815260208181526040808320815160608101835281548152600182015493810193909352600201548282015260035490516302f75f5160e51b8152929391928492670de0b6b3a7640000917f000000000000000000000000bb8bd9ca0d736870aeac8df9689cc315fdb6394a90911690635eebea2090610787903090600401610b80565b60206040518083038186803b15801561079f57600080fd5b505afa1580156107b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d79190610b42565b6107e19190610d24565b6107eb9190610d04565b6001546107f89190610cec565b9050670de0b6b3a76400008260400151826108139190610d43565b83602001516108229190610d24565b61082c9190610d04565b949350505050565b7f000000000000000000000000000000000000000000000000000000000024ea0081565b60015481565b60006020819052908152604090208054600182015460029092015490919083565b8047101561089f5760405162461bcd60e51b81526004016102c490610c3f565b6000826001600160a01b0316826040516108b890610b7d565b60006040518083038185875af1925050503d80600081146108f5576040519150601f19603f3d011682016040523d82523d6000602084013e6108fa565b606091505b505090508061091b5760405162461bcd60e51b81526004016102c490610be2565b505050565b60007f000000000000000000000000bb8bd9ca0d736870aeac8df9689cc315fdb6394a6001600160a01b031663e4fc6b6d6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561097d57600080fd5b505af1158015610991573d6000803e3d6000fd5b5050505084602001516000146109d857670de0b6b3a764000085604001516001546109bc9190610d43565b86602001516109cb9190610d24565b6109d59190610d04565b90505b83610a08576001600160a01b03861660009081526020819052604081208181556001810182905560020155610aa3565b8215610a5a57604080516060810182524281526020808201878152600180548486019081526001600160a01b038c16600090815293849052949092209251835551908201559051600290910155610aa3565b60408051606081018252865181526020808201878152600180548486019081526001600160a01b038c166000908152938490529490922092518355519082015590516002909101555b8115610aca57846020015160036000828254610abf9190610d43565b90915550610afb9050565b84602001518414610afb576020850151610ae49085610d43565b60036000828254610af59190610cec565b90915550505b95945050505050565b801561066857610668828261087f565b600060208284031215610b25578081fd5b81356001600160a01b0381168114610b3b578182fd5b9392505050565b600060208284031215610b53578081fd5b5051919050565b60008060408385031215610b6c578081fd5b505080516020909101519092909150565b90565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6020808252818101527f416d6f756e74206d7573742062652067726561746572207468616e207a65726f604082015260600190565b6020808252603a908201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260408201527f6563697069656e74206d61792068617665207265766572746564000000000000606082015260800190565b6020808252601d908201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604082015260600190565b602080825260129082015271139bc81a5b9a5d1a585b0819195c1bdcda5d60721b604082015260600190565b6020808252601190820152703bb4ba34323930bb903a37b79039b7b7b760791b604082015260600190565b90815260200190565b9283526020830191909152604082015260600190565b60008219821115610cff57610cff610d5a565b500190565b600082610d1f57634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615610d3e57610d3e610d5a565b500290565b600082821015610d5557610d55610d5a565b500390565b634e487b7160e01b600052601160045260246000fdfea26469706673582212207e116586c6757c4d05a24013b39690c7a85dbe1a251cf5aa743935c8126dfc9a64736f6c63430008010033

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.