ETH Price: $3,504.82 (-0.13%)
Gas: 2 Gwei

Contract

0xBE9a129909EbCb954bC065536D2bfAfBd170d27A
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer ERC20203526022024-07-21 4:44:3546 mins ago1721537075IN
0xBE9a1299...Bd170d27A
0 ETH0.00020492.01892814
Transfer ERC20203525282024-07-21 4:29:471 hr ago1721536187IN
0xBE9a1299...Bd170d27A
0 ETH0.000210412.07322135
Transfer ERC20203524732024-07-21 4:18:351 hr ago1721535515IN
0xBE9a1299...Bd170d27A
0 ETH0.000212482.09387994
Transfer ERC20203524282024-07-21 4:09:351 hr ago1721534975IN
0xBE9a1299...Bd170d27A
0 ETH0.000216072.12898343
Transfer ERC20203523422024-07-21 3:51:471 hr ago1721533907IN
0xBE9a1299...Bd170d27A
0 ETH0.000202591.99637997
Transfer ERC20203523092024-07-21 3:45:111 hr ago1721533511IN
0xBE9a1299...Bd170d27A
0 ETH0.000217842.14664163
Transfer ERC20203520372024-07-21 2:50:472 hrs ago1721530247IN
0xBE9a1299...Bd170d27A
0 ETH0.000215012.11857745
Transfer ERC20203517792024-07-21 1:59:113 hrs ago1721527151IN
0xBE9a1299...Bd170d27A
0 ETH0.000180862.14348479
Transfer ERC20203510292024-07-20 23:28:476 hrs ago1721518127IN
0xBE9a1299...Bd170d27A
0 ETH0.000213682.10546783
Transfer ERC20203510282024-07-20 23:28:356 hrs ago1721518115IN
0xBE9a1299...Bd170d27A
0 ETH0.000215222.12060841
Transfer ERC20203510262024-07-20 23:28:116 hrs ago1721518091IN
0xBE9a1299...Bd170d27A
0 ETH0.000208282.0521837
Transfer ERC20203508662024-07-20 22:56:116 hrs ago1721516171IN
0xBE9a1299...Bd170d27A
0 ETH0.000185072.19268113
Transfer ERC20203508382024-07-20 22:50:356 hrs ago1721515835IN
0xBE9a1299...Bd170d27A
0 ETH0.000261022.57189935
Transfer ERC20203507922024-07-20 22:41:236 hrs ago1721515283IN
0xBE9a1299...Bd170d27A
0 ETH0.000259772.55953554
Transfer ERC20203507302024-07-20 22:28:597 hrs ago1721514539IN
0xBE9a1299...Bd170d27A
0 ETH0.000240552.37047639
Transfer ERC20203505952024-07-20 22:01:597 hrs ago1721512919IN
0xBE9a1299...Bd170d27A
0 ETH0.000241232.37658736
Transfer ERC20203503282024-07-20 21:07:598 hrs ago1721509679IN
0xBE9a1299...Bd170d27A
0 ETH0.000244452.40830739
Transfer ERC20203502242024-07-20 20:46:478 hrs ago1721508407IN
0xBE9a1299...Bd170d27A
0 ETH0.00024132.3775666
Transfer ERC20203502012024-07-20 20:42:118 hrs ago1721508131IN
0xBE9a1299...Bd170d27A
0 ETH0.000201822.39187143
Transfer ERC20203502012024-07-20 20:42:118 hrs ago1721508131IN
0xBE9a1299...Bd170d27A
0 ETH0.000242722.39187143
Transfer ERC20203497932024-07-20 19:20:2310 hrs ago1721503223IN
0xBE9a1299...Bd170d27A
0 ETH0.000230392.27038702
Transfer ERC20203496322024-07-20 18:48:1110 hrs ago1721501291IN
0xBE9a1299...Bd170d27A
0 ETH0.000269682.65721789
Transfer ERC20203494042024-07-20 18:02:2311 hrs ago1721498543IN
0xBE9a1299...Bd170d27A
0 ETH0.000335373.30440239
Transfer ERC20203494042024-07-20 18:02:2311 hrs ago1721498543IN
0xBE9a1299...Bd170d27A
0 ETH0.000335383.30451239
Transfer ERC20203494042024-07-20 18:02:2311 hrs ago1721498543IN
0xBE9a1299...Bd170d27A
0 ETH0.000335383.30451239
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
203369502024-07-19 0:20:112 days ago1721348411
0xBE9a1299...Bd170d27A
0 ETH
203369502024-07-19 0:20:112 days ago1721348411
0xBE9a1299...Bd170d27A
0 ETH
203369502024-07-19 0:20:112 days ago1721348411
0xBE9a1299...Bd170d27A
0 ETH
203368162024-07-18 23:53:112 days ago1721346791
0xBE9a1299...Bd170d27A
0 ETH
203368162024-07-18 23:53:112 days ago1721346791
0xBE9a1299...Bd170d27A
0 ETH
203368162024-07-18 23:53:112 days ago1721346791
0xBE9a1299...Bd170d27A
0 ETH
203363272024-07-18 22:15:112 days ago1721340911
0xBE9a1299...Bd170d27A
0 ETH
203362492024-07-18 21:59:232 days ago1721339963
0xBE9a1299...Bd170d27A
0 ETH
203362492024-07-18 21:59:232 days ago1721339963
0xBE9a1299...Bd170d27A
0 ETH
203362492024-07-18 21:59:232 days ago1721339963
0xBE9a1299...Bd170d27A
0 ETH
203361452024-07-18 21:38:352 days ago1721338715
0xBE9a1299...Bd170d27A
0 ETH
203361452024-07-18 21:38:352 days ago1721338715
0xBE9a1299...Bd170d27A
0 ETH
203361452024-07-18 21:38:352 days ago1721338715
0xBE9a1299...Bd170d27A
0 ETH
203360712024-07-18 21:23:472 days ago1721337827
0xBE9a1299...Bd170d27A
0 ETH
203359812024-07-18 21:05:472 days ago1721336747
0xBE9a1299...Bd170d27A
0 ETH
203358852024-07-18 20:46:112 days ago1721335571
0xBE9a1299...Bd170d27A
0 ETH
203358852024-07-18 20:46:112 days ago1721335571
0xBE9a1299...Bd170d27A
0 ETH
203358852024-07-18 20:46:112 days ago1721335571
0xBE9a1299...Bd170d27A
0 ETH
203354242024-07-18 19:13:472 days ago1721330027
0xBE9a1299...Bd170d27A
0 ETH
203354242024-07-18 19:13:472 days ago1721330027
0xBE9a1299...Bd170d27A
0 ETH
203354242024-07-18 19:13:472 days ago1721330027
0xBE9a1299...Bd170d27A
0 ETH
203353042024-07-18 18:49:352 days ago1721328575
0xBE9a1299...Bd170d27A
0 ETH
203353042024-07-18 18:49:352 days ago1721328575
0xBE9a1299...Bd170d27A
0 ETH
203353042024-07-18 18:49:352 days ago1721328575
0xBE9a1299...Bd170d27A
0 ETH
203353042024-07-18 18:49:352 days ago1721328575
0xBE9a1299...Bd170d27A
0 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
TransferRegistry

Compiler Version
v0.6.11+commit.5ef660b1

Optimization Enabled:
Yes with 100 runs

Other Settings:
default evmVersion, Apache-2.0 license

Contract Source Code (Solidity Multiple files format)

File 1 of 7: TransferRegistry.sol
/*
  Copyright 2019,2020 StarkWare Industries Ltd.

  Licensed under the Apache License, Version 2.0 (the "License").
  You may not use this file except in compliance with the License.
  You may obtain a copy of the License at

  https://www.starkware.co/open-source-license/

  Unless required by applicable law or agreed to in writing,
  software distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions
  and limitations under the License.
*/
// SPDX-License-Identifier: Apache-2.0.
pragma solidity ^0.6.11;

import "FactRegistry.sol";
import "Identity.sol";
import "Common.sol";
import "IERC20.sol";

contract TransferRegistry is FactRegistry, Identity {

    event LogRegisteredTransfer(
        address recipient,
        address token,
        uint256 amount,
        uint256 salt
    );

    using Addresses for address;

    function identify()
        external pure virtual override
        returns(string memory)
    {
        return "StarkWare_TransferRegistry_2020_1";
    }

    /*
      The actual transfer is extracted to a function, so that we can easily mock the contract.
    */
    function performEthTransfer(address recipient, uint256 value)
        internal
        virtual {
        recipient.performEthTransfer(value);
    }

    /*
      The actual transfer is extracted to a function, so that we can easily mock the contract.
    */
    function performErc20Transfer(address recipient, address erc20, uint256 amount)
        internal
        virtual {
        erc20.safeTokenContractCall(
            abi.encodeWithSelector(IERC20(0).transferFrom.selector, msg.sender, recipient, amount)
        );
    }

    /*
      Passes on the transaction ETH value onto the recipient address,
      and register the associated fact.
      Reverts if the fact has already been registered.
    */
    function transfer(address recipient, uint256 salt) // NOLINT: erc20-interface.
        external
        payable {
        bytes32 transferFact = keccak256(
            abi.encodePacked(recipient, msg.value, address(0x0), salt));
        require(!_factCheck(transferFact), "TRANSFER_ALREADY_REGISTERED");
        registerFact(transferFact);
        emit LogRegisteredTransfer(recipient, address(0x0), msg.value, salt);
        performEthTransfer(recipient, msg.value);
    }

    /*
      Transfer the specified amount of erc20 tokens from msg.sender balance to the recipient's
      balance.
      Pre-conditions to successful transfer are that the msg.sender has sufficient balance,
      and the the approval (for the transfer) was granted to this contract.
      A fact with the transfer details is registered upon success.
      Reverts if the fact has already been registered.
    */
    function transferERC20(address recipient, address erc20, uint256 amount, uint256 salt)
        external {
        bytes32 transferFact = keccak256(
            abi.encodePacked(recipient, amount, erc20, salt));
        require(!_factCheck(transferFact), "TRANSFER_ALREADY_REGISTERED");
        registerFact(transferFact);
        emit LogRegisteredTransfer(recipient, erc20, amount, salt);
        performErc20Transfer(recipient, erc20, amount);
    }

}

File 2 of 7: Common.sol
/*
  Copyright 2019,2020 StarkWare Industries Ltd.

  Licensed under the Apache License, Version 2.0 (the "License").
  You may not use this file except in compliance with the License.
  You may obtain a copy of the License at

  https://www.starkware.co/open-source-license/

  Unless required by applicable law or agreed to in writing,
  software distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions
  and limitations under the License.
*/
// SPDX-License-Identifier: Apache-2.0.
pragma solidity ^0.6.11;

/*
  Common Utility librarries.
  I. Addresses (extending address).
*/
library Addresses {
    function isContract(address account) internal view returns (bool) {
        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

    function performEthTransfer(address recipient, uint256 amount) internal {
        (bool success, ) = recipient.call{value: amount}(""); // NOLINT: low-level-calls.
        require(success, "ETH_TRANSFER_FAILED");
    }

    /*
      Safe wrapper around ERC20/ERC721 calls.
      This is required because many deployed ERC20 contracts don't return a value.
      See https://github.com/ethereum/solidity/issues/4116.
    */
    function safeTokenContractCall(address tokenAddress, bytes memory callData) internal {
        require(isContract(tokenAddress), "BAD_TOKEN_ADDRESS");
        // NOLINTNEXTLINE: low-level-calls.
        (bool success, bytes memory returndata) = tokenAddress.call(callData);
        require(success, string(returndata));

        if (returndata.length > 0) {
            require(abi.decode(returndata, (bool)), "TOKEN_OPERATION_FAILED");
        }
    }

    /*
      Similar to safeTokenContractCall, but always ignores the return value.

      Assumes some other method is used to detect the failures
      (e.g. balance is checked before and after the call).
    */
    function uncheckedTokenContractCall(address tokenAddress, bytes memory callData) internal {
        // NOLINTNEXTLINE: low-level-calls.
        (bool success, bytes memory returndata) = tokenAddress.call(callData);
        require(success, string(returndata));
    }

}

library UintArray {
    function hashSubArray(uint256[] memory array, uint256 subArrayStart, uint256 subArraySize)
        internal pure
        returns(bytes32 subArrayHash)
    {
        require(array.length >= subArrayStart + subArraySize, "ILLEGAL_SUBARRAY_DIMENSIONS");
        uint256 startOffsetBytes = 0x20 * (1 + subArrayStart);
        uint256 dataSizeBytes = 0x20 * subArraySize;
        assembly {
            subArrayHash := keccak256(add(array, startOffsetBytes), dataSizeBytes)
        }
    }

    /*
      Returns the address of a cell in offset within a uint256[] array.
      This allows assigning new variable of dynamic unit256[] pointing to a sub_array
      with a layout of serialied uint256[] (i.e. length+content).
    */
    function extractSerializedUintArray(uint256[] memory programOutput, uint256 offset)
        internal pure
        returns (uint256[] memory addr)
    {
        uint256 memOffset = 0x20 * (offset + 1);
        assembly {
            addr := add(programOutput, memOffset)
        }
    }

}

/*
  II. StarkExTypes - Common data types.
*/
library StarkExTypes {

    // Structure representing a list of verifiers (validity/availability).
    // A statement is valid only if all the verifiers in the list agree on it.
    // Adding a verifier to the list is immediate - this is used for fast resolution of
    // any soundness issues.
    // Removing from the list is time-locked, to ensure that any user of the system
    // not content with the announced removal has ample time to leave the system before it is
    // removed.
    struct ApprovalChainData {
        address[] list;
        // Represents the time after which the verifier with the given address can be removed.
        // Removal of the verifier with address A is allowed only in the case the value
        // of unlockedForRemovalTime[A] != 0 and unlockedForRemovalTime[A] < (current time).
        mapping (address => uint256) unlockedForRemovalTime;
    }
}

File 3 of 7: FactRegistry.sol
/*
  Copyright 2019,2020 StarkWare Industries Ltd.

  Licensed under the Apache License, Version 2.0 (the "License").
  You may not use this file except in compliance with the License.
  You may obtain a copy of the License at

  https://www.starkware.co/open-source-license/

  Unless required by applicable law or agreed to in writing,
  software distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions
  and limitations under the License.
*/
// SPDX-License-Identifier: Apache-2.0.
pragma solidity ^0.6.11;

import "IQueryableFactRegistry.sol";

contract FactRegistry is IQueryableFactRegistry {
    // Mapping: fact hash -> true.
    mapping (bytes32 => bool) private verifiedFact;

    // Indicates whether the Fact Registry has at least one fact registered.
    bool anyFactRegistered;

    /*
      Checks if a fact has been verified.
    */
    function isValid(bytes32 fact)
        external view override
        returns(bool)
    {
        return _factCheck(fact);
    }


    /*
      This is an internal method to check if the fact is already registered.
      In current implementation of FactRegistry it's identical to isValid().
      But the check is against the local fact registry,
      So for a derived referral fact registry, it's not the same.
    */
    function _factCheck(bytes32 fact)
        internal view
        returns(bool)
    {
        return verifiedFact[fact];
    }

    function registerFact(
        bytes32 factHash
        )
        internal
    {
        // This function stores the fact hash in the mapping.
        verifiedFact[factHash] = true;

        // Mark first time off.
        if (!anyFactRegistered) {
            anyFactRegistered = true;
        }
    }

    /*
      Indicates whether at least one fact was registered.
    */
    function hasRegisteredFact()
        external view override
        returns(bool)
    {
        return anyFactRegistered;
    }

}

File 4 of 7: Identity.sol
/*
  Copyright 2019,2020 StarkWare Industries Ltd.

  Licensed under the Apache License, Version 2.0 (the "License").
  You may not use this file except in compliance with the License.
  You may obtain a copy of the License at

  https://www.starkware.co/open-source-license/

  Unless required by applicable law or agreed to in writing,
  software distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions
  and limitations under the License.
*/
// SPDX-License-Identifier: Apache-2.0.
pragma solidity ^0.6.11;

interface Identity {

    /*
      Allows a caller, typically another contract,
      to ensure that the provided address is of the expected type and version.
    */
    function identify()
        external pure
        returns(string memory);
}

File 5 of 7: IERC20.sol
/*
  Copyright 2019,2020 StarkWare Industries Ltd.

  Licensed under the Apache License, Version 2.0 (the "License").
  You may not use this file except in compliance with the License.
  You may obtain a copy of the License at

  https://www.starkware.co/open-source-license/

  Unless required by applicable law or agreed to in writing,
  software distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions
  and limitations under the License.
*/
// SPDX-License-Identifier: Apache-2.0.
pragma solidity ^0.6.11;

/*
  Interface of the ERC20 standard as defined in the EIP. Does not include
  the optional functions; to access them see {ERC20Detailed}.
*/
interface IERC20 {

    function totalSupply() external view returns (uint256);

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

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

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

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

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

    event Transfer(address indexed from, address indexed to, uint256 value);

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

File 6 of 7: IFactRegistry.sol
/*
  Copyright 2019,2020 StarkWare Industries Ltd.

  Licensed under the Apache License, Version 2.0 (the "License").
  You may not use this file except in compliance with the License.
  You may obtain a copy of the License at

  https://www.starkware.co/open-source-license/

  Unless required by applicable law or agreed to in writing,
  software distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions
  and limitations under the License.
*/
// SPDX-License-Identifier: Apache-2.0.
pragma solidity ^0.6.11;

/*
  The Fact Registry design pattern is a way to separate cryptographic verification from the
  business logic of the contract flow.

  A fact registry holds a hash table of verified "facts" which are represented by a hash of claims
  that the registry hash check and found valid. This table may be queried by accessing the
  isValid() function of the registry with a given hash.

  In addition, each fact registry exposes a registry specific function for submitting new claims
  together with their proofs. The information submitted varies from one registry to the other
  depending of the type of fact requiring verification.

  For further reading on the Fact Registry design pattern see this
  `StarkWare blog post <https://medium.com/starkware/the-fact-registry-a64aafb598b6>`_.
*/
interface IFactRegistry {
    /*
      Returns true if the given fact was previously registered in the contract.
    */
    function isValid(bytes32 fact)
        external view
        returns(bool);
}

File 7 of 7: IQueryableFactRegistry.sol
/*
  Copyright 2019,2020 StarkWare Industries Ltd.

  Licensed under the Apache License, Version 2.0 (the "License").
  You may not use this file except in compliance with the License.
  You may obtain a copy of the License at

  https://www.starkware.co/open-source-license/

  Unless required by applicable law or agreed to in writing,
  software distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions
  and limitations under the License.
*/
// SPDX-License-Identifier: Apache-2.0.
pragma solidity ^0.6.11;

import "IFactRegistry.sol";

/*
  Extends the IFactRegistry interface with a query method that indicates
  whether the fact registry has successfully registered any fact or is still empty of such facts.
*/
interface IQueryableFactRegistry is IFactRegistry {

    /*
      Returns true if at least one fact has been registered.
    */
    function hasRegisteredFact()
        external view
        returns(bool);

}

Contract Security Audit

Contract ABI

[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"salt","type":"uint256"}],"name":"LogRegisteredTransfer","type":"event"},{"inputs":[],"name":"hasRegisteredFact","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"identify","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes32","name":"fact","type":"bytes32"}],"name":"isValid","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"salt","type":"uint256"}],"name":"transfer","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"address","name":"erc20","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"salt","type":"uint256"}],"name":"transferERC20","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405234801561001057600080fd5b506107a9806100206000396000f3fe60806040526004361061004a5760003560e01c806355a2ba681461004f5780636a9385671461009a578063a9059cbb146100d8578063d6354e1514610104578063eeb7286614610119575b600080fd5b34801561005b57600080fd5b506100986004803603608081101561007257600080fd5b506001600160a01b038135811691602081013590911690604081013590606001356101a3565b005b3480156100a657600080fd5b506100c4600480360360208110156100bd57600080fd5b50356102b6565b604080519115158252519081900360200190f35b610098600480360360408110156100ee57600080fd5b506001600160a01b0381351690602001356102c7565b34801561011057600080fd5b506100c46103cf565b34801561012557600080fd5b5061012e6103d8565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610168578181015183820152602001610150565b50505050905090810190601f1680156101955780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60408051606086811b6001600160601b0319908116602080850191909152603484018790529187901b166054830152606880830185905283518084039091018152608890920190925280519101206101fa816103f8565b1561024a576040805162461bcd60e51b815260206004820152601b60248201527a1514905394d1915497d053149150511657d49151d254d511549151602a1b604482015290519081900360640190fd5b6102538161040d565b604080516001600160a01b038088168252861660208201528082018590526060810184905290517f36c96ccc320eab9b6da1de6cc1e8ebc52a51cb114710b9c7db204cdad3067ce19181900360800190a16102af858585610441565b5050505050565b60006102c1826103f8565b92915050565b604080516001600160601b0319606085901b166020808301919091523460348301526000605483015260688083018590528351808403909101815260889092019092528051910120610318816103f8565b15610368576040805162461bcd60e51b815260206004820152601b60248201527a1514905394d1915497d053149150511657d49151d254d511549151602a1b604482015290519081900360640190fd5b6103718161040d565b604080516001600160a01b03851681526000602082015234818301526060810184905290517f36c96ccc320eab9b6da1de6cc1e8ebc52a51cb114710b9c7db204cdad3067ce19181900360800190a16103ca83346104a1565b505050565b60015460ff1690565b606060405180606001604052806021815260200161075360219139905090565b60009081526020819052604090205460ff1690565b6000818152602081905260409020805460ff191660019081179091555460ff1661043e576001805460ff1916811790555b50565b604080513360248201526001600160a01b03808616604483015260648083018590528351808403909101815260849092019092526020810180516001600160e01b03166323b872dd60e01b1790526103ca9184169063ffffffff6104be16565b6104ba6001600160a01b0383168263ffffffff6106b016565b5050565b6104c78261074c565b61050c576040805162461bcd60e51b81526020600482015260116024820152704241445f544f4b454e5f4144445245535360781b604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b6020831061054a5780518252601f19909201916020918201910161052b565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146105ac576040519150601f19603f3d011682016040523d82523d6000602084013e6105b1565b606091505b50915091508181906106415760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156106065781810151838201526020016105ee565b50505050905090810190601f1680156106335780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b508051156106aa5780806020019051602081101561065e57600080fd5b50516106aa576040805162461bcd60e51b81526020600482015260166024820152751513d2d15397d3d4115490551253d397d1905253115160521b604482015290519081900360640190fd5b50505050565b6040516000906001600160a01b0384169083908381818185875af1925050503d80600081146106fb576040519150601f19603f3d011682016040523d82523d6000602084013e610700565b606091505b50509050806103ca576040805162461bcd60e51b815260206004820152601360248201527211551217d514905394d1915497d19052531151606a1b604482015290519081900360640190fd5b3b15159056fe537461726b576172655f5472616e7366657252656769737472795f323032305f31a2646970667358221220f9282f536fe52808700561e430abbe3e9aac313c10706077cde13b35400fe79764736f6c634300060b0033

Deployed Bytecode

0x60806040526004361061004a5760003560e01c806355a2ba681461004f5780636a9385671461009a578063a9059cbb146100d8578063d6354e1514610104578063eeb7286614610119575b600080fd5b34801561005b57600080fd5b506100986004803603608081101561007257600080fd5b506001600160a01b038135811691602081013590911690604081013590606001356101a3565b005b3480156100a657600080fd5b506100c4600480360360208110156100bd57600080fd5b50356102b6565b604080519115158252519081900360200190f35b610098600480360360408110156100ee57600080fd5b506001600160a01b0381351690602001356102c7565b34801561011057600080fd5b506100c46103cf565b34801561012557600080fd5b5061012e6103d8565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610168578181015183820152602001610150565b50505050905090810190601f1680156101955780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60408051606086811b6001600160601b0319908116602080850191909152603484018790529187901b166054830152606880830185905283518084039091018152608890920190925280519101206101fa816103f8565b1561024a576040805162461bcd60e51b815260206004820152601b60248201527a1514905394d1915497d053149150511657d49151d254d511549151602a1b604482015290519081900360640190fd5b6102538161040d565b604080516001600160a01b038088168252861660208201528082018590526060810184905290517f36c96ccc320eab9b6da1de6cc1e8ebc52a51cb114710b9c7db204cdad3067ce19181900360800190a16102af858585610441565b5050505050565b60006102c1826103f8565b92915050565b604080516001600160601b0319606085901b166020808301919091523460348301526000605483015260688083018590528351808403909101815260889092019092528051910120610318816103f8565b15610368576040805162461bcd60e51b815260206004820152601b60248201527a1514905394d1915497d053149150511657d49151d254d511549151602a1b604482015290519081900360640190fd5b6103718161040d565b604080516001600160a01b03851681526000602082015234818301526060810184905290517f36c96ccc320eab9b6da1de6cc1e8ebc52a51cb114710b9c7db204cdad3067ce19181900360800190a16103ca83346104a1565b505050565b60015460ff1690565b606060405180606001604052806021815260200161075360219139905090565b60009081526020819052604090205460ff1690565b6000818152602081905260409020805460ff191660019081179091555460ff1661043e576001805460ff1916811790555b50565b604080513360248201526001600160a01b03808616604483015260648083018590528351808403909101815260849092019092526020810180516001600160e01b03166323b872dd60e01b1790526103ca9184169063ffffffff6104be16565b6104ba6001600160a01b0383168263ffffffff6106b016565b5050565b6104c78261074c565b61050c576040805162461bcd60e51b81526020600482015260116024820152704241445f544f4b454e5f4144445245535360781b604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b6020831061054a5780518252601f19909201916020918201910161052b565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146105ac576040519150601f19603f3d011682016040523d82523d6000602084013e6105b1565b606091505b50915091508181906106415760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156106065781810151838201526020016105ee565b50505050905090810190601f1680156106335780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b508051156106aa5780806020019051602081101561065e57600080fd5b50516106aa576040805162461bcd60e51b81526020600482015260166024820152751513d2d15397d3d4115490551253d397d1905253115160521b604482015290519081900360640190fd5b50505050565b6040516000906001600160a01b0384169083908381818185875af1925050503d80600081146106fb576040519150601f19603f3d011682016040523d82523d6000602084013e610700565b606091505b50509050806103ca576040805162461bcd60e51b815260206004820152601360248201527211551217d514905394d1915497d19052531151606a1b604482015290519081900360640190fd5b3b15159056fe537461726b576172655f5472616e7366657252656769737472795f323032305f31a2646970667358221220f9282f536fe52808700561e430abbe3e9aac313c10706077cde13b35400fe79764736f6c634300060b0033

Deployed Bytecode Sourcemap

755:2558:6:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2859:451;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2859:451:6;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1004:128:1;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1004:128:1;;:::i;:::-;;;;;;;;;;;;;;;;;;1966:473:6;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1966:473:6;;;;;;;;:::i;1939:127:1:-;;;;;;;;;;;;;:::i;984:153:6:-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2859:451;3019:48;;;;;;;-1:-1:-1;;;;;;3019:48:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2996:72;;;;;3087:24;2996:72;3087:10;:24::i;:::-;3086:25;3078:65;;;;;-1:-1:-1;;;3078:65:6;;;;;;;;;;;;-1:-1:-1;;;3078:65:6;;;;;;;;;;;;;;;3153:26;3166:12;3153;:26::i;:::-;3194:53;;;-1:-1:-1;;;;;3194:53:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3257:46;3278:9;3289:5;3296:6;3257:20;:46::i;:::-;2859:451;;;;;:::o;1004:128:1:-;1082:4;1109:16;1120:4;1109:10;:16::i;:::-;1102:23;1004:128;-1:-1:-1;;1004:128:1:o;1966:473:6:-;2134:58;;;-1:-1:-1;;;;;;2134:58:6;;;;;;;;;;;;;2162:9;2134:58;;;;2088:20;2134:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;2111:82;;;;;2212:24;2111:82;2212:10;:24::i;:::-;2211:25;2203:65;;;;;-1:-1:-1;;;2203:65:6;;;;;;;;;;;;-1:-1:-1;;;2203:65:6;;;;;;;;;;;;;;;2278:26;2291:12;2278;:26::i;:::-;2319:63;;;-1:-1:-1;;;;;2319:63:6;;;;2360:3;2319:63;;;;2366:9;2319:63;;;;;;;;;;;;;;;;;;;;;2392:40;2411:9;2422;2392:18;:40::i;:::-;1966:473;;;:::o;1939:127:1:-;2042:17;;;;1939:127;:::o;984:153:6:-;1059:13;1088:42;;;;;;;;;;;;;;;;;;;984:153;:::o;1429:124:1:-;1501:4;1528:18;;;;;;;;;;;;;;1429:124::o;1559:302::-;1710:12;:22;;;;;;;;;;:29;;-1:-1:-1;;1710:29:1;1735:4;1710:29;;;;;;1787:17;1710:29;1787:17;1782:73;;1840:4;1820:24;;-1:-1:-1;;1820:24:1;;;;;1782:73;1559:302;:::o;1514:267:6:-;1678:86;;;1734:10;1678:86;;;;-1:-1:-1;;;;;1678:86:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1678:86:6;-1:-1:-1;;;1678:86:6;;;1637:137;;:27;;;:137;:27;:137;:::i;1252:147::-;1357:35;-1:-1:-1;;;;;1357:28:6;;1386:5;1357:35;:28;:35;:::i;:::-;1252:147;;:::o;1380:452:0:-;1483:24;1494:12;1483:10;:24::i;:::-;1475:54;;;;;-1:-1:-1;;;1475:54:0;;;;;;;;;;;;-1:-1:-1;;;1475:54:0;;;;;;;;;;;;;;;1584:12;1598:23;1625:12;-1:-1:-1;;;;;1625:17:0;1643:8;1625:27;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1625:27:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1583:69;;;;1670:7;1686:10;1662:36;;;;;-1:-1:-1;;;1662:36:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1713:17:0;;:21;1709:117;;1769:10;1758:30;;;;;;;;;;;;;;;-1:-1:-1;1758:30:0;1750:65;;;;;-1:-1:-1;;;1750:65:0;;;;;;;;;;;;-1:-1:-1;;;1750:65:0;;;;;;;;;;;;;;;1380:452;;;;:::o;953:218::-;1054:33;;1036:12;;-1:-1:-1;;;;;1054:14:0;;;1076:6;;1036:12;1054:33;1036:12;1054:33;1076:6;1054:14;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1035:52;;;1133:7;1125:39;;;;;-1:-1:-1;;;1125:39:0;;;;;;;;;;;;-1:-1:-1;;;1125:39:0;;;;;;;;;;;;;;757:190;886:20;932:8;;;757:190::o

Swarm Source

ipfs://f9282f536fe52808700561e430abbe3e9aac313c10706077cde13b35400fe797

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.