ETH Price: $3,486.27 (+3.93%)

Contract

0x8f631816043c8e8Cad0C4c602bFe7Bff1B22b182
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Send Rewards212217842024-11-19 12:29:3531 days ago1732019375IN
0x8f631816...f1B22b182
0 ETH0.0006321511
Send Rewards212173582024-11-18 21:41:3532 days ago1731966095IN
0x8f631816...f1B22b182
0 ETH0.0010344418
Send Rewards212129372024-11-18 6:53:3532 days ago1731912815IN
0x8f631816...f1B22b182
0 ETH0.0006321511
Send Rewards212085092024-11-17 16:05:3533 days ago1731859535IN
0x8f631816...f1B22b182
0 ETH0.0007470913
Send Rewards212040892024-11-17 1:17:3534 days ago1731806255IN
0x8f631816...f1B22b182
0 ETH0.0006321511
Send Rewards211996662024-11-16 10:29:3534 days ago1731752975IN
0x8f631816...f1B22b182
0 ETH0.0007470913
Send Rewards211952462024-11-15 19:41:3535 days ago1731699695IN
0x8f631816...f1B22b182
0 ETH0.0010344418
Send Rewards211908352024-11-15 4:53:3536 days ago1731646415IN
0x8f631816...f1B22b182
0 ETH0.0013792524
Send Rewards211864172024-11-14 14:05:3536 days ago1731593135IN
0x8f631816...f1B22b182
0 ETH0.0019539434
Send Rewards211820012024-11-13 23:17:3537 days ago1731539855IN
0x8f631816...f1B22b182
0 ETH0.0020114135
Send Rewards211775822024-11-13 8:29:3537 days ago1731486575IN
0x8f631816...f1B22b182
0 ETH0.0009769717
Send Rewards211731612024-11-12 17:41:3538 days ago1731433295IN
0x8f631816...f1B22b182
0 ETH0.0024711643
Send Rewards211687472024-11-12 2:53:3539 days ago1731380015IN
0x8f631816...f1B22b182
0 ETH0.001666629
Send Rewards211643302024-11-11 12:05:3539 days ago1731326735IN
0x8f631816...f1B22b182
0 ETH0.0010344418
Send Rewards211599052024-11-10 21:17:3540 days ago1731273455IN
0x8f631816...f1B22b182
0 ETH0.0027010447
Send Rewards211554802024-11-10 6:29:3540 days ago1731220175IN
0x8f631816...f1B22b182
0 ETH0.000919516
Send Rewards211510582024-11-09 15:41:3541 days ago1731166895IN
0x8f631816...f1B22b182
0 ETH0.0006321511
Send Rewards211466352024-11-09 0:53:3542 days ago1731113615IN
0x8f631816...f1B22b182
0 ETH0.0007470913
Send Rewards211422112024-11-08 10:05:3542 days ago1731060335IN
0x8f631816...f1B22b182
0 ETH0.0006321511
Send Rewards211378052024-11-07 19:17:3543 days ago1731007055IN
0x8f631816...f1B22b182
0 ETH0.0012643122
Send Rewards211333922024-11-07 4:29:3544 days ago1730953775IN
0x8f631816...f1B22b182
0 ETH0.0006321511
Send Rewards211289712024-11-06 13:41:3544 days ago1730900495IN
0x8f631816...f1B22b182
0 ETH0.0010344418
Send Rewards211245562024-11-05 22:53:3545 days ago1730847215IN
0x8f631816...f1B22b182
0 ETH0.000402287
Send Rewards211201402024-11-05 8:05:3545 days ago1730793935IN
0x8f631816...f1B22b182
0 ETH0.000287345
Send Rewards211157242024-11-04 17:17:3546 days ago1730740655IN
0x8f631816...f1B22b182
0 ETH0.0006896212
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
RewardsForwarder

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
Yes with 10000 runs

Other Settings:
default evmVersion
File 1 of 4 : RewardsForwarder.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.10;

import { SafeTransferLib } from "../lib/SafeTransferLib.sol";
import { ReentrancyGuard } from "../lib/ReentrancyGuard.sol";
import { Owners } from "./Owners.sol";

contract RewardsForwarder is Owners, ReentrancyGuard {
    using SafeTransferLib for address;

    event LastBlockSet(uint256 lastBlock);
    event RewardPerBlockSet(uint256 rewardPerBlock);
    event AddressesSet(address token, address target, address operator);

    uint256 public lastBlock;
    uint256 public rewardPerBlock;
    address public token;
    address public target;
    address public operator;

    constructor(uint256 _rewardPerBlock, address _token, address _target, address _operator, address _initialOwner) {
        _setOwner(_initialOwner, true);
        lastBlock = block.number;
        rewardPerBlock = _rewardPerBlock;
        token = _token;
        target = _target;
        operator = _operator;
    }

    modifier isOperator() {
        require(operator == msg.sender, "Not operator");
        _;
    }

    function sendRewards() external isOperator nonReentrant {
        uint256 amount = (block.number - lastBlock) * rewardPerBlock;
        lastBlock = block.number;
        token.safeTransfer(target, amount);
    }

    function setLastBlock(uint256 _lastBlock) external isOwner {
        lastBlock = _lastBlock;
        emit LastBlockSet(_lastBlock);
    }

    function setRewardPerBlock(uint256 _rewardPerBlock) external isOwner {
        rewardPerBlock = _rewardPerBlock;
        emit RewardPerBlockSet(_rewardPerBlock);
    }

    function setAddresses(address _token, address _target, address _operator) external isOwner {
        token = _token;
        target = _target;
        operator = _operator;
        emit AddressesSet(_token, _target, _operator);
    }

    function withdrawTokens(uint256 amount) external isOwner nonReentrant {
        token.safeTransfer(msg.sender, amount);
    }
}

File 2 of 4 : SafeTransferLib.sol
// SPDX-License-Identifier: AGPL-3.0-only
pragma solidity >=0.8.0;

/// @notice Safe ETH and ERC20 transfer library that gracefully handles missing return values.
/// @author Solmate (https://github.com/Rari-Capital/solmate/blob/main/src/utils/SafeTransferLib.sol)
/// @author Modified from Gnosis (https://github.com/gnosis/gp-v2-contracts/blob/main/src/contracts/libraries/GPv2SafeERC20.sol)
/// @dev Use with caution! Some functions in this library knowingly create dirty bits at the destination of the free memory pointer.
library SafeTransferLib {
    /*///////////////////////////////////////////////////////////////
                            ETH OPERATIONS
    //////////////////////////////////////////////////////////////*/

    function safeTransferETH(address to, uint256 amount) internal {
        bool callStatus;

        assembly {
            // Transfer the ETH and store if it succeeded or not.
            callStatus := call(gas(), to, amount, 0, 0, 0, 0)
        }

        require(callStatus, "ETH_TRANSFER_FAILED");
    }

    /*///////////////////////////////////////////////////////////////
                           ERC20 OPERATIONS
    //////////////////////////////////////////////////////////////*/

    function safeTransferFrom(
        address token,
        address from,
        address to,
        uint256 amount
    ) internal {
        bool callStatus;

        assembly {
            // Get a pointer to some free memory.
            let freeMemoryPointer := mload(0x40)

            // Write the abi-encoded calldata to memory piece by piece:
            mstore(freeMemoryPointer, 0x23b872dd00000000000000000000000000000000000000000000000000000000) // Begin with the function selector.
            mstore(add(freeMemoryPointer, 4), and(from, 0xffffffffffffffffffffffffffffffffffffffff)) // Mask and append the "from" argument.
            mstore(add(freeMemoryPointer, 36), and(to, 0xffffffffffffffffffffffffffffffffffffffff)) // Mask and append the "to" argument.
            mstore(add(freeMemoryPointer, 68), amount) // Finally append the "amount" argument. No mask as it's a full 32 byte value.

            // Call the token and store if it succeeded or not.
            // We use 100 because the calldata length is 4 + 32 * 3.
            callStatus := call(gas(), token, 0, freeMemoryPointer, 100, 0, 0)
        }

        require(didLastOptionalReturnCallSucceed(callStatus), "TRANSFER_FROM_FAILED");
    }

    function safeTransfer(
        address token,
        address to,
        uint256 amount
    ) internal {
        bool callStatus;

        assembly {
            // Get a pointer to some free memory.
            let freeMemoryPointer := mload(0x40)

            // Write the abi-encoded calldata to memory piece by piece:
            mstore(freeMemoryPointer, 0xa9059cbb00000000000000000000000000000000000000000000000000000000) // Begin with the function selector.
            mstore(add(freeMemoryPointer, 4), and(to, 0xffffffffffffffffffffffffffffffffffffffff)) // Mask and append the "to" argument.
            mstore(add(freeMemoryPointer, 36), amount) // Finally append the "amount" argument. No mask as it's a full 32 byte value.

            // Call the token and store if it succeeded or not.
            // We use 68 because the calldata length is 4 + 32 * 2.
            callStatus := call(gas(), token, 0, freeMemoryPointer, 68, 0, 0)
        }

        require(didLastOptionalReturnCallSucceed(callStatus), "TRANSFER_FAILED");
    }

    function safeApprove(
        address token,
        address to,
        uint256 amount
    ) internal {
        bool callStatus;

        assembly {
            // Get a pointer to some free memory.
            let freeMemoryPointer := mload(0x40)

            // Write the abi-encoded calldata to memory piece by piece:
            mstore(freeMemoryPointer, 0x095ea7b300000000000000000000000000000000000000000000000000000000) // Begin with the function selector.
            mstore(add(freeMemoryPointer, 4), and(to, 0xffffffffffffffffffffffffffffffffffffffff)) // Mask and append the "to" argument.
            mstore(add(freeMemoryPointer, 36), amount) // Finally append the "amount" argument. No mask as it's a full 32 byte value.

            // Call the token and store if it succeeded or not.
            // We use 68 because the calldata length is 4 + 32 * 2.
            callStatus := call(gas(), token, 0, freeMemoryPointer, 68, 0, 0)
        }

        require(didLastOptionalReturnCallSucceed(callStatus), "APPROVE_FAILED");
    }

    /*///////////////////////////////////////////////////////////////
                         INTERNAL HELPER LOGIC
    //////////////////////////////////////////////////////////////*/

    function didLastOptionalReturnCallSucceed(bool callStatus) private pure returns (bool success) {
        assembly {
            // Get how many bytes the call returned.
            let returnDataSize := returndatasize()

            // If the call reverted:
            if iszero(callStatus) {
                // Copy the revert message into memory.
                returndatacopy(0, 0, returnDataSize)

                // Revert with the same message.
                revert(0, returnDataSize)
            }

            switch returnDataSize
            case 32 {
                // Copy the return data into memory.
                returndatacopy(0, 0, returnDataSize)

                // Set success to whether it returned true.
                success := iszero(iszero(mload(0)))
            }
            case 0 {
                // There was no return data.
                success := 1
            }
            default {
                // It returned some malformed input.
                success := 0
            }
        }
    }
}

File 3 of 4 : ReentrancyGuard.sol
// SPDX-License-Identifier: AGPL-3.0-only
pragma solidity >=0.8.0;

/// @notice Gas optimized reentrancy protection for smart contracts.
/// @author Solmate (https://github.com/Rari-Capital/solmate/blob/main/src/utils/ReentrancyGuard.sol)
/// @author Modified from OpenZeppelin (https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/security/ReentrancyGuard.sol)
abstract contract ReentrancyGuard {
    uint256 private locked = 1;

    modifier nonReentrant() {
        require(locked == 1, "REENTRANCY");

        locked = 2;

        _;

        locked = 1;
    }
}

File 4 of 4 : Owners.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.10;

abstract contract Owners {
    event OwnerSet(address indexed owner, bool active);

    mapping(address => bool) public owners;

    modifier isOwner() {
        require(owners[msg.sender], "Unauthorized");
        _;
    }

    function _setOwner(address owner, bool active) internal virtual {
      owners[owner] = active;
      emit OwnerSet(owner, active);
    }

    function setOwner(address owner, bool active) external virtual isOwner {
      _setOwner(owner, active);
    }
}

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

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"uint256","name":"_rewardPerBlock","type":"uint256"},{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_target","type":"address"},{"internalType":"address","name":"_operator","type":"address"},{"internalType":"address","name":"_initialOwner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"address","name":"operator","type":"address"}],"name":"AddressesSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"lastBlock","type":"uint256"}],"name":"LastBlockSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"bool","name":"active","type":"bool"}],"name":"OwnerSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"rewardPerBlock","type":"uint256"}],"name":"RewardPerBlockSet","type":"event"},{"inputs":[],"name":"lastBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"operator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"owners","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardPerBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sendRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_target","type":"address"},{"internalType":"address","name":"_operator","type":"address"}],"name":"setAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_lastBlock","type":"uint256"}],"name":"setLastBlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"bool","name":"active","type":"bool"}],"name":"setOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rewardPerBlock","type":"uint256"}],"name":"setRewardPerBlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"target","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawTokens","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040526001805534801561001457600080fd5b50604051610c31380380610c3183398101604081905261003391610104565b61003e81600161008b565b5043600255600393909355600480546001600160a01b03199081166001600160a01b0394851617909155600580548216928416929092179091556006805490911691909216179055610162565b6001600160a01b03821660008181526020818152604091829020805460ff191685151590811790915591519182527ff74826f11048fa8ecf33e91132bf280f6582ed97548a84e426b56e98526b9316910160405180910390a25050565b80516001600160a01b03811681146100ff57600080fd5b919050565b600080600080600060a0868803121561011c57600080fd5b8551945061012c602087016100e8565b935061013a604087016100e8565b9250610148606087016100e8565b9150610156608087016100e8565b90509295509295909350565b610ac0806101716000396000f3fe608060405234801561001057600080fd5b50600436106100d45760003560e01c8063806b984f11610081578063bb872b4a1161005b578063bb872b4a146101cc578063d4b83992146101df578063fc0c546a146101ff57600080fd5b8063806b984f146101a45780638ae39cac146101bb57806395cb1b1e146101c457600080fd5b8063516c731c116100b2578063516c731c14610139578063570ca7351461014c5780635d974a661461019157600080fd5b8063022914a7146100d9578063315a095d14610111578063363bf96414610126575b600080fd5b6100fc6100e736600461094d565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61012461011f36600461096f565b61021f565b005b610124610134366004610988565b610339565b6101246101473660046109cb565b61045b565b60065461016c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610108565b61012461019f36600461096f565b6104e2565b6101ad60025481565b604051908152602001610108565b6101ad60035481565b610124610597565b6101246101da36600461096f565b6106da565b60055461016c9073ffffffffffffffffffffffffffffffffffffffff1681565b60045461016c9073ffffffffffffffffffffffffffffffffffffffff1681565b3360009081526020819052604090205460ff1661029d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f556e617574686f72697a6564000000000000000000000000000000000000000060448201526064015b60405180910390fd5b600154600114610309576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f5245454e5452414e4359000000000000000000000000000000000000000000006044820152606401610294565b60026001556004546103329073ffffffffffffffffffffffffffffffffffffffff163383610788565b5060018055565b3360009081526020819052604090205460ff166103b2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f556e617574686f72697a656400000000000000000000000000000000000000006044820152606401610294565b6004805473ffffffffffffffffffffffffffffffffffffffff8581167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316811790935560058054868316908416811790915560068054928616929093168217909255604080519384526020840192909252908201527ffa46f045092280873921fe7e8bd94f64c996911a0bae60b09d487935b9117e7a9060600160405180910390a1505050565b3360009081526020819052604090205460ff166104d4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f556e617574686f72697a656400000000000000000000000000000000000000006044820152606401610294565b6104de8282610855565b5050565b3360009081526020819052604090205460ff1661055b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f556e617574686f72697a656400000000000000000000000000000000000000006044820152606401610294565b60028190556040518181527fd3ab7acf24237c1ece32247e1b00396c66a7c05d8e6328d5844b5c6f71825ce7906020015b60405180910390a150565b60065473ffffffffffffffffffffffffffffffffffffffff163314610618576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4e6f74206f70657261746f7200000000000000000000000000000000000000006044820152606401610294565b600154600114610684576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f5245454e5452414e4359000000000000000000000000000000000000000000006044820152606401610294565b600260018190555060006003546002544361069f9190610a36565b6106a99190610a4d565b436002556005546004549192506103329173ffffffffffffffffffffffffffffffffffffffff908116911683610788565b3360009081526020819052604090205460ff16610753576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f556e617574686f72697a656400000000000000000000000000000000000000006044820152606401610294565b60038190556040518181527f5d7c78d0ee3ce6196f90e74ed58c0ada9ac7ccc47d3aca0547ac893776f038269060200161058c565b60006040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201528260248201526000806044836000895af19150506107e9816108dd565b61084f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f5452414e534645525f4641494c454400000000000000000000000000000000006044820152606401610294565b50505050565b73ffffffffffffffffffffffffffffffffffffffff82166000818152602081815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001685151590811790915591519182527ff74826f11048fa8ecf33e91132bf280f6582ed97548a84e426b56e98526b9316910160405180910390a25050565b60003d826108ef57806000803e806000fd5b8060208114610907578015610918576000925061091d565b816000803e6000511515925061091d565b600192505b5050919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461094857600080fd5b919050565b60006020828403121561095f57600080fd5b61096882610924565b9392505050565b60006020828403121561098157600080fd5b5035919050565b60008060006060848603121561099d57600080fd5b6109a684610924565b92506109b460208501610924565b91506109c260408501610924565b90509250925092565b600080604083850312156109de57600080fd5b6109e783610924565b9150602083013580151581146109fc57600080fd5b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015610a4857610a48610a07565b500390565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615610a8557610a85610a07565b50029056fea2646970667358221220f4694276d3d985451da5951f0f65986c14a95489b432b40f63f089c08a8d74e964736f6c634300080a00330000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a5f2211b9b8170f694421f2046281775e8468044000000000000000000000000815c23eca83261b6ec689b60cc4a58b54bc24d8d0000000000000000000000005c48a72787987536065cd776dc92a756e271f5120000000000000000000000008f692d7abc6cdf567571276f76112ec9a01de309

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100d45760003560e01c8063806b984f11610081578063bb872b4a1161005b578063bb872b4a146101cc578063d4b83992146101df578063fc0c546a146101ff57600080fd5b8063806b984f146101a45780638ae39cac146101bb57806395cb1b1e146101c457600080fd5b8063516c731c116100b2578063516c731c14610139578063570ca7351461014c5780635d974a661461019157600080fd5b8063022914a7146100d9578063315a095d14610111578063363bf96414610126575b600080fd5b6100fc6100e736600461094d565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61012461011f36600461096f565b61021f565b005b610124610134366004610988565b610339565b6101246101473660046109cb565b61045b565b60065461016c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610108565b61012461019f36600461096f565b6104e2565b6101ad60025481565b604051908152602001610108565b6101ad60035481565b610124610597565b6101246101da36600461096f565b6106da565b60055461016c9073ffffffffffffffffffffffffffffffffffffffff1681565b60045461016c9073ffffffffffffffffffffffffffffffffffffffff1681565b3360009081526020819052604090205460ff1661029d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f556e617574686f72697a6564000000000000000000000000000000000000000060448201526064015b60405180910390fd5b600154600114610309576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f5245454e5452414e4359000000000000000000000000000000000000000000006044820152606401610294565b60026001556004546103329073ffffffffffffffffffffffffffffffffffffffff163383610788565b5060018055565b3360009081526020819052604090205460ff166103b2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f556e617574686f72697a656400000000000000000000000000000000000000006044820152606401610294565b6004805473ffffffffffffffffffffffffffffffffffffffff8581167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316811790935560058054868316908416811790915560068054928616929093168217909255604080519384526020840192909252908201527ffa46f045092280873921fe7e8bd94f64c996911a0bae60b09d487935b9117e7a9060600160405180910390a1505050565b3360009081526020819052604090205460ff166104d4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f556e617574686f72697a656400000000000000000000000000000000000000006044820152606401610294565b6104de8282610855565b5050565b3360009081526020819052604090205460ff1661055b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f556e617574686f72697a656400000000000000000000000000000000000000006044820152606401610294565b60028190556040518181527fd3ab7acf24237c1ece32247e1b00396c66a7c05d8e6328d5844b5c6f71825ce7906020015b60405180910390a150565b60065473ffffffffffffffffffffffffffffffffffffffff163314610618576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4e6f74206f70657261746f7200000000000000000000000000000000000000006044820152606401610294565b600154600114610684576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f5245454e5452414e4359000000000000000000000000000000000000000000006044820152606401610294565b600260018190555060006003546002544361069f9190610a36565b6106a99190610a4d565b436002556005546004549192506103329173ffffffffffffffffffffffffffffffffffffffff908116911683610788565b3360009081526020819052604090205460ff16610753576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f556e617574686f72697a656400000000000000000000000000000000000000006044820152606401610294565b60038190556040518181527f5d7c78d0ee3ce6196f90e74ed58c0ada9ac7ccc47d3aca0547ac893776f038269060200161058c565b60006040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201528260248201526000806044836000895af19150506107e9816108dd565b61084f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f5452414e534645525f4641494c454400000000000000000000000000000000006044820152606401610294565b50505050565b73ffffffffffffffffffffffffffffffffffffffff82166000818152602081815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001685151590811790915591519182527ff74826f11048fa8ecf33e91132bf280f6582ed97548a84e426b56e98526b9316910160405180910390a25050565b60003d826108ef57806000803e806000fd5b8060208114610907578015610918576000925061091d565b816000803e6000511515925061091d565b600192505b5050919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461094857600080fd5b919050565b60006020828403121561095f57600080fd5b61096882610924565b9392505050565b60006020828403121561098157600080fd5b5035919050565b60008060006060848603121561099d57600080fd5b6109a684610924565b92506109b460208501610924565b91506109c260408501610924565b90509250925092565b600080604083850312156109de57600080fd5b6109e783610924565b9150602083013580151581146109fc57600080fd5b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015610a4857610a48610a07565b500390565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615610a8557610a85610a07565b50029056fea2646970667358221220f4694276d3d985451da5951f0f65986c14a95489b432b40f63f089c08a8d74e964736f6c634300080a0033

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

0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a5f2211b9b8170f694421f2046281775e8468044000000000000000000000000815c23eca83261b6ec689b60cc4a58b54bc24d8d0000000000000000000000005c48a72787987536065cd776dc92a756e271f5120000000000000000000000008f692d7abc6cdf567571276f76112ec9a01de309

-----Decoded View---------------
Arg [0] : _rewardPerBlock (uint256): 0
Arg [1] : _token (address): 0xa5f2211B9b8170F694421f2046281775E8468044
Arg [2] : _target (address): 0x815C23eCA83261b6Ec689b60Cc4a58b54BC24D8D
Arg [3] : _operator (address): 0x5c48A72787987536065CD776Dc92A756E271F512
Arg [4] : _initialOwner (address): 0x8F692D7abC6cDf567571276f76112Ec9A01DE309

-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [1] : 000000000000000000000000a5f2211b9b8170f694421f2046281775e8468044
Arg [2] : 000000000000000000000000815c23eca83261b6ec689b60cc4a58b54bc24d8d
Arg [3] : 0000000000000000000000005c48a72787987536065cd776dc92a756e271f512
Arg [4] : 0000000000000000000000008f692d7abc6cdf567571276f76112ec9a01de309


Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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

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