ETH Price: $3,409.69 (-1.02%)
Gas: 2 Gwei

Contract

0x525EDdf28e0E275802D1E3CBFE2AD2775F3D9456
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Value
Start Raffle184951772023-11-04 0:42:47242 days ago1699058567IN
0x525EDdf2...75F3D9456
0 ETH0.0013235812.793103
Start Raffle184949972023-11-04 0:06:47242 days ago1699056407IN
0x525EDdf2...75F3D9456
0 ETH0.001687816.31345013
Update Payout Am...184949872023-11-04 0:04:47242 days ago1699056287IN
0x525EDdf2...75F3D9456
0 ETH0.0008155417.80041798
Restart Raffle184949852023-11-04 0:04:23242 days ago1699056263IN
0x525EDdf2...75F3D9456
0 ETH0.0004108617.14518635
Start Raffle184947462023-11-03 23:16:11242 days ago1699053371IN
0x525EDdf2...75F3D9456
0 ETH0.001698616.41787381
Restart Raffle184820182023-11-02 4:26:47243 days ago1698899207IN
0x525EDdf2...75F3D9456
0 ETH0.0004579719.11085843
Restart Raffle184820142023-11-02 4:25:59243 days ago1698899159IN
0x525EDdf2...75F3D9456
0 ETH0.0004537318.93412874
Start Raffle184817012023-11-02 3:22:35243 days ago1698895355IN
0x525EDdf2...75F3D9456
0 ETH0.0024874524.04244882
Start Raffle184814902023-11-02 2:40:23243 days ago1698892823IN
0x525EDdf2...75F3D9456
0 ETH0.0031794430.73089442
Start Raffle184788862023-11-01 17:56:23244 days ago1698861383IN
0x525EDdf2...75F3D9456
0 ETH0.0033402532.30455248
0x6102e060184788772023-11-01 17:54:35244 days ago1698861275IN
 Create: NounsRaffle
0 ETH0.0496133833.88334438

Latest 21 internal transactions

Advanced mode:
Parent Transaction Hash Block From To Value
184954202023-11-04 1:31:47242 days ago1699061507
0x525EDdf2...75F3D9456
1 ETH
184954202023-11-04 1:31:47242 days ago1699061507
0x525EDdf2...75F3D9456
1 ETH
184954202023-11-04 1:31:47242 days ago1699061507
0x525EDdf2...75F3D9456
1 ETH
184954202023-11-04 1:31:47242 days ago1699061507
0x525EDdf2...75F3D9456
1 ETH
184954202023-11-04 1:31:47242 days ago1699061507
0x525EDdf2...75F3D9456
1 ETH
184954202023-11-04 1:31:47242 days ago1699061507
0x525EDdf2...75F3D9456
1 ETH
184954202023-11-04 1:31:47242 days ago1699061507
0x525EDdf2...75F3D9456
1 ETH
184954202023-11-04 1:31:47242 days ago1699061507
0x525EDdf2...75F3D9456
1 ETH
184954202023-11-04 1:31:47242 days ago1699061507
0x525EDdf2...75F3D9456
1 ETH
184954202023-11-04 1:31:47242 days ago1699061507
0x525EDdf2...75F3D9456
1 ETH
184951052023-11-04 0:28:23242 days ago1699057703
0x525EDdf2...75F3D9456
1 ETH
184951052023-11-04 0:28:23242 days ago1699057703
0x525EDdf2...75F3D9456
1 ETH
184951052023-11-04 0:28:23242 days ago1699057703
0x525EDdf2...75F3D9456
1 ETH
184951052023-11-04 0:28:23242 days ago1699057703
0x525EDdf2...75F3D9456
1 ETH
184951052023-11-04 0:28:23242 days ago1699057703
0x525EDdf2...75F3D9456
1 ETH
184951052023-11-04 0:28:23242 days ago1699057703
0x525EDdf2...75F3D9456
1 ETH
184951052023-11-04 0:28:23242 days ago1699057703
0x525EDdf2...75F3D9456
1 ETH
184951052023-11-04 0:28:23242 days ago1699057703
0x525EDdf2...75F3D9456
1 ETH
184951052023-11-04 0:28:23242 days ago1699057703
0x525EDdf2...75F3D9456
1 ETH
184951052023-11-04 0:28:23242 days ago1699057703
0x525EDdf2...75F3D9456
1 ETH
184941932023-11-03 21:24:23242 days ago1699046663
0x525EDdf2...75F3D9456
20 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
NounsRaffle

Compiler Version
v0.8.16+commit.07a7930e

Optimization Enabled:
Yes with 200 runs

Other Settings:
london EvmVersion
File 1 of 1 : NounsRaffle.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.16;

interface ILightClient {
    function head() external view returns (uint256);

    function headers(uint256 slot) external view returns (bytes32);
}

interface ISuccinctGateway {
    function requestCallback(
        bytes32 _functionId,
        bytes memory _input,
        bytes memory _context,
        bytes4 _callbackSelector,
        uint32 _callbackGasLimit
    ) external payable returns (bytes32);

    function requestCall(
        bytes32 _functionId,
        bytes memory _input,
        address _address,
        bytes memory _data,
        uint32 _gasLimit
    ) external payable;

    function verifiedCall(
        bytes32 _functionId,
        bytes memory _input
    ) external view returns (bytes memory);

    function isCallback() external view returns (bool);
}

contract NounsRaffle {
    /// @notice Number of blocks iterated over per proof.
    uint64 public constant NB_BLOCKS_PER_PROOF = 262144;

    /// @notice Callback gas limit.
    uint32 public constant CALLBACK_GAS_LIMIT = 2000000;

    /// @notice The address of the gateway.
    address public gateway;

    /// @notice The function id of the oracle.
    bytes32 public functionId;

    /// @notice Payout amount for prize.
    uint256 public payoutAmount;

    /// @notice The light client.
    ILightClient public lightClient;

    /// @notice The owner of the contract.
    address payable public owner;

    /// @notice The prover.
    address public prover;

    /// @notice Whether the n'th raffle is completed.
    mapping(uint64 => bool) public raffleCompleted;

    /// @notice The reentrancy status of the contract.
    bool internal locked;

    /// @notice The raffle bounds.
    uint64[19] public raffleBounds = [
        6123599,
        6339599,
        6562799,
        6778799,
        7001999,
        7225199,
        7441199,
        7664399,
        7880399,
        8103599,
        8326799,
        8535599,
        8758799,
        8974799,
        9197999,
        9413999,
        9637199,
        9860399,
        10076399
    ];

    event RaffleRequest(uint64 indexed raffleIdx);
    event RaffleWinnerSkipped(
        uint64 indexed raffleIdx,
        uint256 indexed i,
        bytes32 indexed withdrawalAddress
    );
    event RaffleWinner(
        uint64 indexed raffleIdx,
        uint256 indexed i,
        bytes32 indexed withdrawalAddress
    );
    event RaffleFulfilled(uint64 indexed raffleIdx);

    constructor(
        address _gateway,
        bytes32 _functionId,
        address _lightClient,
        address _owner,
        address _prover,
        uint256 _payoutAmount
    ) {
        gateway = _gateway;
        functionId = _functionId;
        lightClient = ILightClient(_lightClient);
        owner = payable(_owner);
        prover = _prover;
        payoutAmount = _payoutAmount;
    }

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

    modifier onlyProver() {
        require(msg.sender == prover, "Not the contract prover");
        _;
    }

    modifier noReentrant() {
        require(!locked, "No re-entrancy");
        locked = true;
        _;
        locked = false;
    }

    function readBytes32Array(
        bytes memory input
    ) public pure returns (bytes32[10] memory) {
        require(input.length == 320, "Input must be 320 bytes in length");
        bytes32[10] memory output;
        assembly {
            mstore(add(output, 0), mload(add(input, 32)))
            mstore(add(output, 32), mload(add(input, 64)))
            mstore(add(output, 64), mload(add(input, 96)))
            mstore(add(output, 96), mload(add(input, 128)))
            mstore(add(output, 128), mload(add(input, 160)))
            mstore(add(output, 160), mload(add(input, 192)))
            mstore(add(output, 192), mload(add(input, 224)))
            mstore(add(output, 224), mload(add(input, 256)))
            mstore(add(output, 256), mload(add(input, 288)))
            mstore(add(output, 288), mload(add(input, 320)))
        }
        return output;
    }

    function startRaffle(
        uint64 raffleIdx,
        uint64 targetSlot
    ) external onlyProver {
        // Check that the raffle is not completed.
        require(
            !raffleCompleted[raffleIdx],
            "NounsRaffle: raffle already completed"
        );

        // Grab the start and end slots for the raffle.
        uint64 startSlot = raffleBounds[raffleIdx];
        uint64 endSlot = raffleBounds[raffleIdx + 1];
        require(
            targetSlot - startSlot < NB_BLOCKS_PER_PROOF,
            "NounsRaffle: target slot out of range"
        );

        // In the future, we will grab the latest head from the light client using the code below.
        uint256 head = lightClient.head();
        bytes32 blockRoot = lightClient.headers(head);
        require(blockRoot != bytes32(0), "NounsRaffle: block root is zero");
        require(head >= endSlot, "NounsRaffle: head is before end slot");

        // Compute pseudorandomness. We use the block hash of the previous block as the seed. This
        // is sufficient for our purposes, since we can assume the requester is not adversarial.
        //
        // Gamma is a random element of the cubic extension defined over the Goldilocks field.
        bytes32 seed = keccak256(abi.encode(blockhash(block.number - 1)));
        uint64 gammaA = uint64(uint256(seed)) % 18446744069414584321;
        seed = keccak256(abi.encode(seed));
        uint64 gammaB = uint64(uint256(seed)) % 18446744069414584321;
        seed = keccak256(abi.encode(seed));
        uint64 gammaC = uint64(uint256(seed)) % 18446744069414584321;
        seed = keccak256(abi.encode(seed));
        uint32 shuffleSeed = uint32(uint256(seed));

        // Request for the proof and callback.
        ISuccinctGateway(gateway).requestCallback(
            functionId,
            abi.encodePacked(
                startSlot,
                endSlot,
                targetSlot,
                blockRoot,
                gammaA,
                gammaB,
                gammaC,
                shuffleSeed
            ),
            abi.encode(raffleIdx),
            this.endRaffle.selector,
            CALLBACK_GAS_LIMIT
        );

        emit RaffleRequest(raffleIdx);
    }

    function endRaffle(
        bytes memory output,
        bytes memory context
    ) public noReentrant {
        // Check that the callback is coming from the gateway.
        require(
            tx.origin == prover,
            "NounsRaffle: proof not from approved prover"
        );
        require(
            msg.sender == gateway && ISuccinctGateway(gateway).isCallback()
        );

        // Decode the context and check that the raffle is not yet completed.
        uint64 raffleIdx = abi.decode(context, (uint64));
        require(!raffleCompleted[raffleIdx]);
        raffleCompleted[raffleIdx] = true;

        // The withdrawal address of the winners.
        bytes32[10] memory winners = readBytes32Array(output);

        // Distribute funds.
        require(
            winners.length * payoutAmount <= address(this).balance,
            "NounsRaffle: not enough funds"
        );
        for (uint256 i = 0; i < winners.length; i++) {
            bytes20 withdrawalAddressBytes = bytes20(winners[i] << 96);
            address withdrawalAddress = address(
                uint160(withdrawalAddressBytes)
            );
            if (winners[i] != bytes32(0)) {
                (bool success, ) = withdrawalAddress.call{value: payoutAmount}(
                    ""
                );
                if (!success) {
                    emit RaffleWinnerSkipped(raffleIdx, i, winners[i]);
                } else {
                    emit RaffleWinner(raffleIdx, i, winners[i]);
                }
            }
        }

        emit RaffleFulfilled(raffleIdx);
    }

    /// @notice Restore funds to the owner in case of issue.
    function emergency() external onlyOwner {
        address safe = 0x3200A7c6467F66734B1DE7aC2dAA4365cFDBcCf8;
        (bool success, ) = safe.call{value: address(this).balance}("");
        require(success, "NounsRaffle: emergency failed");
    }

    function upgradeGateway(address _gateway) external onlyOwner {
        gateway = _gateway;
    }

    function upgradeFunctionId(bytes32 _functionId) external onlyOwner {
        functionId = _functionId;
    }

    function upgradeLightClient(address _lightClient) external onlyOwner {
        lightClient = ILightClient(_lightClient);
    }

    function restartRaffle(uint64 raffleIdx) external onlyOwner {
        raffleCompleted[raffleIdx] = false;
    }

    function updatePayoutAmount(uint256 _payoutAmount) external onlyOwner {
        payoutAmount = _payoutAmount;
    }

    fallback() external payable {}

    receive() external payable {}
}

Settings
{
  "remappings": [
    "ds-test/=lib/forge-std/lib/ds-test/src/",
    "forge-std/=lib/forge-std/src/"
  ],
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "metadata": {
    "useLiteralContent": false,
    "bytecodeHash": "ipfs"
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "evmVersion": "london",
  "libraries": {}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_gateway","type":"address"},{"internalType":"bytes32","name":"_functionId","type":"bytes32"},{"internalType":"address","name":"_lightClient","type":"address"},{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_prover","type":"address"},{"internalType":"uint256","name":"_payoutAmount","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint64","name":"raffleIdx","type":"uint64"}],"name":"RaffleFulfilled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint64","name":"raffleIdx","type":"uint64"}],"name":"RaffleRequest","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint64","name":"raffleIdx","type":"uint64"},{"indexed":true,"internalType":"uint256","name":"i","type":"uint256"},{"indexed":true,"internalType":"bytes32","name":"withdrawalAddress","type":"bytes32"}],"name":"RaffleWinner","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint64","name":"raffleIdx","type":"uint64"},{"indexed":true,"internalType":"uint256","name":"i","type":"uint256"},{"indexed":true,"internalType":"bytes32","name":"withdrawalAddress","type":"bytes32"}],"name":"RaffleWinnerSkipped","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"CALLBACK_GAS_LIMIT","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"NB_BLOCKS_PER_PROOF","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"emergency","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"output","type":"bytes"},{"internalType":"bytes","name":"context","type":"bytes"}],"name":"endRaffle","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"functionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"gateway","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lightClient","outputs":[{"internalType":"contract ILightClient","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"payoutAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"prover","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"raffleBounds","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"","type":"uint64"}],"name":"raffleCompleted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"input","type":"bytes"}],"name":"readBytes32Array","outputs":[{"internalType":"bytes32[10]","name":"","type":"bytes32[10]"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint64","name":"raffleIdx","type":"uint64"}],"name":"restartRaffle","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"raffleIdx","type":"uint64"},{"internalType":"uint64","name":"targetSlot","type":"uint64"}],"name":"startRaffle","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_payoutAmount","type":"uint256"}],"name":"updatePayoutAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_functionId","type":"bytes32"}],"name":"upgradeFunctionId","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_gateway","type":"address"}],"name":"upgradeGateway","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_lightClient","type":"address"}],"name":"upgradeLightClient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6102e0604052625d704f60809081526260bc0f60a052626423ef60c05262676faf60e052626ad78f61010052626e3f6f6101205262718b2f610140526274f30f6101605262783ecf61018052627ba6af6101a052627f0e8f6101c05262823e2f6101e0526285a60f610200526288f1cf61022052628c59af61024052628fa56f6102605262930d4f610280526296752f6102a0526299c0ef6102c052620000ab90600890601362000139565b50348015620000b957600080fd5b50604051620017b3380380620017b3833981016040819052620000dc9162000215565b600080546001600160a01b03199081166001600160a01b0398891617909155600195909555600380548616948716949094179093556004805485169286169290921790915560058054909316931692909217905560025562000284565b600583019183908215620001cf5791602002820160005b838211156200019857835183826101000a8154816001600160401b03021916908362ffffff160217905550926020019260080160208160070104928301926001030262000150565b8015620001cd5782816101000a8154906001600160401b03021916905560080160208160070104928301926001030262000198565b505b50620001dd929150620001e1565b5090565b5b80821115620001dd5760008155600101620001e2565b80516001600160a01b03811681146200021057600080fd5b919050565b60008060008060008060c087890312156200022f57600080fd5b6200023a87620001f8565b9550602087015194506200025160408801620001f8565b93506200026160608801620001f8565b92506200027160808801620001f8565b915060a087015190509295509295509295565b61151f80620002946000396000f3fe60806040526004361061010c5760003560e01c80638aad41cf1161009a578063cc306e0c11610061578063cc306e0c14610333578063e53e34e014610353578063eaa4f44014610373578063f08ce46114610393578063f84e198f146103b357005b80638aad41cf1461029e5780638c42ca2d146102be5780638da5cb5b146102de578063b5700e68146102fe578063caa6fea41461031e57005b80632e7c9561116100de5780632e7c9561146101ee57806332a8f30f1461020e57806333d608f11461022e5780636b46c8c31461025a578063830b36e61461027e57005b8063116191b614610115578063145277fc146101525780631f85aebf146101815780632425f130146101c157005b3661011357005b005b34801561012157600080fd5b50600054610135906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561015e57600080fd5b506101696204000081565b6040516001600160401b039091168152602001610149565b34801561018d57600080fd5b506101b161019c3660046110bc565b60066020526000908152604090205460ff1681565b6040519015158152602001610149565b3480156101cd57600080fd5b506101e16101dc366004611182565b6103c9565b60405161014991906111be565b3480156101fa57600080fd5b506101696102093660046111f0565b6104ac565b34801561021a57600080fd5b50600554610135906001600160a01b031681565b34801561023a57600080fd5b50610245621e848081565b60405163ffffffff9091168152602001610149565b34801561026657600080fd5b5061027060025481565b604051908152602001610149565b34801561028a57600080fd5b50610113610299366004611209565b6104df565b3480156102aa57600080fd5b506101136102b93660046111f0565b61052b565b3480156102ca57600080fd5b506101136102d9366004611232565b61055a565b3480156102ea57600080fd5b50600454610135906001600160a01b031681565b34801561030a57600080fd5b50600354610135906001600160a01b031681565b34801561032a57600080fd5b5061011361091d565b34801561033f57600080fd5b5061011361034e3660046110bc565b6109f9565b34801561035f57600080fd5b5061011361036e366004611209565b610a44565b34801561037f57600080fd5b5061011361038e366004611295565b610a90565b34801561039f57600080fd5b506101136103ae3660046111f0565b611056565b3480156103bf57600080fd5b5061027060015481565b6103d1611085565b8151610140146104325760405162461bcd60e51b815260206004820152602160248201527f496e707574206d7573742062652033323020627974657320696e206c656e67746044820152600d60fb1b60648201526084015b60405180910390fd5b61043a611085565b6020830151600082015260408301516020820152606083015160408201526080830151606082015260a0830151608082015260c083015160a082015260e083015160c082015261010083015160e082015261012083015161010082015261014083015161012082015280915050919050565b600881601381106104bc57600080fd5b60049182820401919006600802915054906101000a90046001600160401b031681565b6004546001600160a01b031633146105095760405162461bcd60e51b8152600401610429906112ce565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6004546001600160a01b031633146105555760405162461bcd60e51b8152600401610429906112ce565b600155565b60075460ff161561059e5760405162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b6044820152606401610429565b6007805460ff19166001179055600554326001600160a01b039091161461061b5760405162461bcd60e51b815260206004820152602b60248201527f4e6f756e73526166666c653a2070726f6f66206e6f742066726f6d206170707260448201526a37bb32b210383937bb32b960a91b6064820152608401610429565b6000546001600160a01b0316331480156106a5575060008054906101000a90046001600160a01b03166001600160a01b03166305d7c1cf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610681573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a591906112fe565b6106ae57600080fd5b6000818060200190518101906106c49190611320565b6001600160401b03811660009081526006602052604090205490915060ff16156106ed57600080fd5b6001600160401b0381166000908152600660205260408120805460ff19166001179055610719846103c9565b905047600254600a61072b9190611353565b11156107795760405162461bcd60e51b815260206004820152601d60248201527f4e6f756e73526166666c653a206e6f7420656e6f7567682066756e64730000006044820152606401610429565b60005b600a8110156108d857600060608383600a811061079b5761079b611372565b6020020151901b9050606081901c60008484600a81106107bd576107bd611372565b6020020151146108c3576002546040516000916001600160a01b038416918381818185875af1925050503d8060008114610813576040519150601f19603f3d011682016040523d82523d6000602084013e610818565b606091505b5050905080610873578484600a811061083357610833611372565b602002015160405185906001600160401b038916907f3a3364733f1283309edd1beef04b0d82fb34233120e98448fbb9fc7878dec06a90600090a46108c1565b8484600a811061088557610885611372565b602002015160405185906001600160401b038916907f1a28e6f5b8d2466c011b6a09dc3a83aac8a0952fc0745fbfc77c1a14d05ac9bc90600090a45b505b505080806108d090611388565b91505061077c565b506040516001600160401b038316907fcdcf7954fbfcffe13e61feac07f6d43bdbf6e05fb0420d2c7e24fbda5b564f2c90600090a250506007805460ff191690555050565b6004546001600160a01b031633146109475760405162461bcd60e51b8152600401610429906112ce565b604051733200a7c6467f66734b1de7ac2daa4365cfdbccf890600090829047908381818185875af1925050503d806000811461099f576040519150601f19603f3d011682016040523d82523d6000602084013e6109a4565b606091505b50509050806109f55760405162461bcd60e51b815260206004820152601d60248201527f4e6f756e73526166666c653a20656d657267656e6379206661696c65640000006044820152606401610429565b5050565b6004546001600160a01b03163314610a235760405162461bcd60e51b8152600401610429906112ce565b6001600160401b03166000908152600660205260409020805460ff19169055565b6004546001600160a01b03163314610a6e5760405162461bcd60e51b8152600401610429906112ce565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610aea5760405162461bcd60e51b815260206004820152601760248201527f4e6f742074686520636f6e74726163742070726f7665720000000000000000006044820152606401610429565b6001600160401b03821660009081526006602052604090205460ff1615610b615760405162461bcd60e51b815260206004820152602560248201527f4e6f756e73526166666c653a20726166666c6520616c726561647920636f6d706044820152641b195d195960da1b6064820152608401610429565b60006008836001600160401b031660138110610b7f57610b7f611372565b60048104909101546001600160401b036008600390931683026101000a909104169150600090610bb08560016113a1565b6001600160401b031660138110610bc957610bc9611372565b60048104919091015460039091166008026101000a90046001600160401b0316905062040000610bf983856113c8565b6001600160401b031610610c5d5760405162461bcd60e51b815260206004820152602560248201527f4e6f756e73526166666c653a2074617267657420736c6f74206f7574206f662060448201526472616e676560d81b6064820152608401610429565b60035460408051638f7dcfa360e01b815290516000926001600160a01b031691638f7dcfa39160048083019260209291908290030181865afa158015610ca7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ccb91906113e8565b6003546040516356f90d7960e01b8152600481018390529192506000916001600160a01b03909116906356f90d7990602401602060405180830381865afa158015610d1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d3e91906113e8565b905080610d8d5760405162461bcd60e51b815260206004820152601f60248201527f4e6f756e73526166666c653a20626c6f636b20726f6f74206973207a65726f006044820152606401610429565b826001600160401b0316821015610df25760405162461bcd60e51b8152602060048201526024808201527f4e6f756e73526166666c653a2068656164206973206265666f726520656e64206044820152631cdb1bdd60e21b6064820152608401610429565b6000610dff600143611401565b60408051914060208301520160408051601f19818403018152919052805160209091012090506000610e3967ffffffff000000018361141a565b905081604051602001610e4e91815260200190565b60408051601f19818403018152919052805160209091012091506000610e7c67ffffffff000000018461141a565b905082604051602001610e9191815260200190565b60408051601f19818403018152919052805160209091012092506000610ebf67ffffffff000000018561141a565b905083604051602001610ed491815260200190565b60408051808303601f19018152828252805160209182012060005460015460c08e811b6001600160c01b0319908116958801959095528d811b851660288801528f811b85166030880152603887018c905289811b8516605888015288811b8516606088015287901b909316606886015260e082901b6001600160e01b031916607086015283516054818703018152607486019094526001600160401b038f16609486015290975087936001600160a01b039091169263b3f04fdf929160b40160408051601f19818403018152908290526001600160e01b031960e086901b168252610fd1939291638c42ca2d60e01b90621e848090600401611494565b6020604051808303816000875af1158015610ff0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101491906113e8565b506040516001600160401b038c16907f97feb252390fb9a5d59ba221ed4a2679e98770b8c172b5bebcb699d88fdd3b5a90600090a25050505050505050505050565b6004546001600160a01b031633146110805760405162461bcd60e51b8152600401610429906112ce565b600255565b604051806101400160405280600a906020820280368337509192915050565b6001600160401b03811681146110b957600080fd5b50565b6000602082840312156110ce57600080fd5b81356110d9816110a4565b9392505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261110757600080fd5b81356001600160401b0380821115611121576111216110e0565b604051601f8301601f19908116603f01168101908282118183101715611149576111496110e0565b8160405283815286602085880101111561116257600080fd5b836020870160208301376000602085830101528094505050505092915050565b60006020828403121561119457600080fd5b81356001600160401b038111156111aa57600080fd5b6111b6848285016110f6565b949350505050565b6101408101818360005b600a8110156111e75781518352602092830192909101906001016111c8565b50505092915050565b60006020828403121561120257600080fd5b5035919050565b60006020828403121561121b57600080fd5b81356001600160a01b03811681146110d957600080fd5b6000806040838503121561124557600080fd5b82356001600160401b038082111561125c57600080fd5b611268868387016110f6565b9350602085013591508082111561127e57600080fd5b5061128b858286016110f6565b9150509250929050565b600080604083850312156112a857600080fd5b82356112b3816110a4565b915060208301356112c3816110a4565b809150509250929050565b6020808252601690820152752737ba103a34329031b7b73a3930b1ba1037bbb732b960511b604082015260600190565b60006020828403121561131057600080fd5b815180151581146110d957600080fd5b60006020828403121561133257600080fd5b81516110d9816110a4565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561136d5761136d61133d565b500290565b634e487b7160e01b600052603260045260246000fd5b60006001820161139a5761139a61133d565b5060010190565b6001600160401b038181168382160190808211156113c1576113c161133d565b5092915050565b6001600160401b038281168282160390808211156113c1576113c161133d565b6000602082840312156113fa57600080fd5b5051919050565b818103818111156114145761141461133d565b92915050565b60006001600160401b038084168061144257634e487b7160e01b600052601260045260246000fd5b92169190910692915050565b6000815180845260005b8181101561147457602081850181015186830182015201611458565b506000602082860101526020601f19601f83011685010191505092915050565b85815260a0602082015260006114ad60a083018761144e565b82810360408401526114bf818761144e565b6001600160e01b0319959095166060840152505063ffffffff91909116608090910152939250505056fea26469706673582212203ec9e057fd342306d4dd107bbe786d14198ee3dcbf3028ddffdd321d37000ebd64736f6c634300081000330000000000000000000000006e4f1e9ea315ebfd69d18c2db974eef6105fb80364699cf367ef7ad72dad20aea6bb68a7624e8aef7e8e3c96e675020a398275f000000000000000000000000053fd3133bef76dda3ca18fb24769ebe59e28bb24000000000000000000000000c5d0ff59ff452668080b1f0385bd90b86195efdd000000000000000000000000ded0000e32f8f40414d3ab3a830f735a3553e18e0000000000000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x60806040526004361061010c5760003560e01c80638aad41cf1161009a578063cc306e0c11610061578063cc306e0c14610333578063e53e34e014610353578063eaa4f44014610373578063f08ce46114610393578063f84e198f146103b357005b80638aad41cf1461029e5780638c42ca2d146102be5780638da5cb5b146102de578063b5700e68146102fe578063caa6fea41461031e57005b80632e7c9561116100de5780632e7c9561146101ee57806332a8f30f1461020e57806333d608f11461022e5780636b46c8c31461025a578063830b36e61461027e57005b8063116191b614610115578063145277fc146101525780631f85aebf146101815780632425f130146101c157005b3661011357005b005b34801561012157600080fd5b50600054610135906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561015e57600080fd5b506101696204000081565b6040516001600160401b039091168152602001610149565b34801561018d57600080fd5b506101b161019c3660046110bc565b60066020526000908152604090205460ff1681565b6040519015158152602001610149565b3480156101cd57600080fd5b506101e16101dc366004611182565b6103c9565b60405161014991906111be565b3480156101fa57600080fd5b506101696102093660046111f0565b6104ac565b34801561021a57600080fd5b50600554610135906001600160a01b031681565b34801561023a57600080fd5b50610245621e848081565b60405163ffffffff9091168152602001610149565b34801561026657600080fd5b5061027060025481565b604051908152602001610149565b34801561028a57600080fd5b50610113610299366004611209565b6104df565b3480156102aa57600080fd5b506101136102b93660046111f0565b61052b565b3480156102ca57600080fd5b506101136102d9366004611232565b61055a565b3480156102ea57600080fd5b50600454610135906001600160a01b031681565b34801561030a57600080fd5b50600354610135906001600160a01b031681565b34801561032a57600080fd5b5061011361091d565b34801561033f57600080fd5b5061011361034e3660046110bc565b6109f9565b34801561035f57600080fd5b5061011361036e366004611209565b610a44565b34801561037f57600080fd5b5061011361038e366004611295565b610a90565b34801561039f57600080fd5b506101136103ae3660046111f0565b611056565b3480156103bf57600080fd5b5061027060015481565b6103d1611085565b8151610140146104325760405162461bcd60e51b815260206004820152602160248201527f496e707574206d7573742062652033323020627974657320696e206c656e67746044820152600d60fb1b60648201526084015b60405180910390fd5b61043a611085565b6020830151600082015260408301516020820152606083015160408201526080830151606082015260a0830151608082015260c083015160a082015260e083015160c082015261010083015160e082015261012083015161010082015261014083015161012082015280915050919050565b600881601381106104bc57600080fd5b60049182820401919006600802915054906101000a90046001600160401b031681565b6004546001600160a01b031633146105095760405162461bcd60e51b8152600401610429906112ce565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6004546001600160a01b031633146105555760405162461bcd60e51b8152600401610429906112ce565b600155565b60075460ff161561059e5760405162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b6044820152606401610429565b6007805460ff19166001179055600554326001600160a01b039091161461061b5760405162461bcd60e51b815260206004820152602b60248201527f4e6f756e73526166666c653a2070726f6f66206e6f742066726f6d206170707260448201526a37bb32b210383937bb32b960a91b6064820152608401610429565b6000546001600160a01b0316331480156106a5575060008054906101000a90046001600160a01b03166001600160a01b03166305d7c1cf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610681573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a591906112fe565b6106ae57600080fd5b6000818060200190518101906106c49190611320565b6001600160401b03811660009081526006602052604090205490915060ff16156106ed57600080fd5b6001600160401b0381166000908152600660205260408120805460ff19166001179055610719846103c9565b905047600254600a61072b9190611353565b11156107795760405162461bcd60e51b815260206004820152601d60248201527f4e6f756e73526166666c653a206e6f7420656e6f7567682066756e64730000006044820152606401610429565b60005b600a8110156108d857600060608383600a811061079b5761079b611372565b6020020151901b9050606081901c60008484600a81106107bd576107bd611372565b6020020151146108c3576002546040516000916001600160a01b038416918381818185875af1925050503d8060008114610813576040519150601f19603f3d011682016040523d82523d6000602084013e610818565b606091505b5050905080610873578484600a811061083357610833611372565b602002015160405185906001600160401b038916907f3a3364733f1283309edd1beef04b0d82fb34233120e98448fbb9fc7878dec06a90600090a46108c1565b8484600a811061088557610885611372565b602002015160405185906001600160401b038916907f1a28e6f5b8d2466c011b6a09dc3a83aac8a0952fc0745fbfc77c1a14d05ac9bc90600090a45b505b505080806108d090611388565b91505061077c565b506040516001600160401b038316907fcdcf7954fbfcffe13e61feac07f6d43bdbf6e05fb0420d2c7e24fbda5b564f2c90600090a250506007805460ff191690555050565b6004546001600160a01b031633146109475760405162461bcd60e51b8152600401610429906112ce565b604051733200a7c6467f66734b1de7ac2daa4365cfdbccf890600090829047908381818185875af1925050503d806000811461099f576040519150601f19603f3d011682016040523d82523d6000602084013e6109a4565b606091505b50509050806109f55760405162461bcd60e51b815260206004820152601d60248201527f4e6f756e73526166666c653a20656d657267656e6379206661696c65640000006044820152606401610429565b5050565b6004546001600160a01b03163314610a235760405162461bcd60e51b8152600401610429906112ce565b6001600160401b03166000908152600660205260409020805460ff19169055565b6004546001600160a01b03163314610a6e5760405162461bcd60e51b8152600401610429906112ce565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610aea5760405162461bcd60e51b815260206004820152601760248201527f4e6f742074686520636f6e74726163742070726f7665720000000000000000006044820152606401610429565b6001600160401b03821660009081526006602052604090205460ff1615610b615760405162461bcd60e51b815260206004820152602560248201527f4e6f756e73526166666c653a20726166666c6520616c726561647920636f6d706044820152641b195d195960da1b6064820152608401610429565b60006008836001600160401b031660138110610b7f57610b7f611372565b60048104909101546001600160401b036008600390931683026101000a909104169150600090610bb08560016113a1565b6001600160401b031660138110610bc957610bc9611372565b60048104919091015460039091166008026101000a90046001600160401b0316905062040000610bf983856113c8565b6001600160401b031610610c5d5760405162461bcd60e51b815260206004820152602560248201527f4e6f756e73526166666c653a2074617267657420736c6f74206f7574206f662060448201526472616e676560d81b6064820152608401610429565b60035460408051638f7dcfa360e01b815290516000926001600160a01b031691638f7dcfa39160048083019260209291908290030181865afa158015610ca7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ccb91906113e8565b6003546040516356f90d7960e01b8152600481018390529192506000916001600160a01b03909116906356f90d7990602401602060405180830381865afa158015610d1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d3e91906113e8565b905080610d8d5760405162461bcd60e51b815260206004820152601f60248201527f4e6f756e73526166666c653a20626c6f636b20726f6f74206973207a65726f006044820152606401610429565b826001600160401b0316821015610df25760405162461bcd60e51b8152602060048201526024808201527f4e6f756e73526166666c653a2068656164206973206265666f726520656e64206044820152631cdb1bdd60e21b6064820152608401610429565b6000610dff600143611401565b60408051914060208301520160408051601f19818403018152919052805160209091012090506000610e3967ffffffff000000018361141a565b905081604051602001610e4e91815260200190565b60408051601f19818403018152919052805160209091012091506000610e7c67ffffffff000000018461141a565b905082604051602001610e9191815260200190565b60408051601f19818403018152919052805160209091012092506000610ebf67ffffffff000000018561141a565b905083604051602001610ed491815260200190565b60408051808303601f19018152828252805160209182012060005460015460c08e811b6001600160c01b0319908116958801959095528d811b851660288801528f811b85166030880152603887018c905289811b8516605888015288811b8516606088015287901b909316606886015260e082901b6001600160e01b031916607086015283516054818703018152607486019094526001600160401b038f16609486015290975087936001600160a01b039091169263b3f04fdf929160b40160408051601f19818403018152908290526001600160e01b031960e086901b168252610fd1939291638c42ca2d60e01b90621e848090600401611494565b6020604051808303816000875af1158015610ff0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101491906113e8565b506040516001600160401b038c16907f97feb252390fb9a5d59ba221ed4a2679e98770b8c172b5bebcb699d88fdd3b5a90600090a25050505050505050505050565b6004546001600160a01b031633146110805760405162461bcd60e51b8152600401610429906112ce565b600255565b604051806101400160405280600a906020820280368337509192915050565b6001600160401b03811681146110b957600080fd5b50565b6000602082840312156110ce57600080fd5b81356110d9816110a4565b9392505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261110757600080fd5b81356001600160401b0380821115611121576111216110e0565b604051601f8301601f19908116603f01168101908282118183101715611149576111496110e0565b8160405283815286602085880101111561116257600080fd5b836020870160208301376000602085830101528094505050505092915050565b60006020828403121561119457600080fd5b81356001600160401b038111156111aa57600080fd5b6111b6848285016110f6565b949350505050565b6101408101818360005b600a8110156111e75781518352602092830192909101906001016111c8565b50505092915050565b60006020828403121561120257600080fd5b5035919050565b60006020828403121561121b57600080fd5b81356001600160a01b03811681146110d957600080fd5b6000806040838503121561124557600080fd5b82356001600160401b038082111561125c57600080fd5b611268868387016110f6565b9350602085013591508082111561127e57600080fd5b5061128b858286016110f6565b9150509250929050565b600080604083850312156112a857600080fd5b82356112b3816110a4565b915060208301356112c3816110a4565b809150509250929050565b6020808252601690820152752737ba103a34329031b7b73a3930b1ba1037bbb732b960511b604082015260600190565b60006020828403121561131057600080fd5b815180151581146110d957600080fd5b60006020828403121561133257600080fd5b81516110d9816110a4565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561136d5761136d61133d565b500290565b634e487b7160e01b600052603260045260246000fd5b60006001820161139a5761139a61133d565b5060010190565b6001600160401b038181168382160190808211156113c1576113c161133d565b5092915050565b6001600160401b038281168282160390808211156113c1576113c161133d565b6000602082840312156113fa57600080fd5b5051919050565b818103818111156114145761141461133d565b92915050565b60006001600160401b038084168061144257634e487b7160e01b600052601260045260246000fd5b92169190910692915050565b6000815180845260005b8181101561147457602081850181015186830182015201611458565b506000602082860101526020601f19601f83011685010191505092915050565b85815260a0602082015260006114ad60a083018761144e565b82810360408401526114bf818761144e565b6001600160e01b0319959095166060840152505063ffffffff91909116608090910152939250505056fea26469706673582212203ec9e057fd342306d4dd107bbe786d14198ee3dcbf3028ddffdd321d37000ebd64736f6c63430008100033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000006e4f1e9ea315ebfd69d18c2db974eef6105fb80364699cf367ef7ad72dad20aea6bb68a7624e8aef7e8e3c96e675020a398275f000000000000000000000000053fd3133bef76dda3ca18fb24769ebe59e28bb24000000000000000000000000c5d0ff59ff452668080b1f0385bd90b86195efdd000000000000000000000000ded0000e32f8f40414d3ab3a830f735a3553e18e0000000000000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _gateway (address): 0x6e4f1e9eA315EBFd69d18C2DB974EEf6105FB803
Arg [1] : _functionId (bytes32): 0x64699cf367ef7ad72dad20aea6bb68a7624e8aef7e8e3c96e675020a398275f0
Arg [2] : _lightClient (address): 0x53Fd3133bEf76DdA3ca18FB24769ebe59E28BB24
Arg [3] : _owner (address): 0xC5D0fF59Ff452668080b1F0385Bd90b86195EfDd
Arg [4] : _prover (address): 0xDEd0000E32f8F40414d3ab3a830f735a3553E18e
Arg [5] : _payoutAmount (uint256): 0

-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 0000000000000000000000006e4f1e9ea315ebfd69d18c2db974eef6105fb803
Arg [1] : 64699cf367ef7ad72dad20aea6bb68a7624e8aef7e8e3c96e675020a398275f0
Arg [2] : 00000000000000000000000053fd3133bef76dda3ca18fb24769ebe59e28bb24
Arg [3] : 000000000000000000000000c5d0ff59ff452668080b1f0385bd90b86195efdd
Arg [4] : 000000000000000000000000ded0000e32f8f40414d3ab3a830f735a3553e18e
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000000


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.