ETH Price: $1,980.51 (-4.96%)

Contract

0x3e9a668D590B92256bb8D926b147f310791b2B1E
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Create Time Caps...241270692025-12-30 17:54:3566 days ago1767117275IN
0x3e9a668D...0791b2B1E
0 ETH0.000490372.57884967
Create Time Caps...241018312025-12-27 5:18:5969 days ago1766812739IN
0x3e9a668D...0791b2B1E
0 ETH0.000480612.52752783
Create Time Caps...238518022025-11-22 3:25:11104 days ago1763781911IN
0x3e9a668D...0791b2B1E
0 ETH0.00037821.9889609
Create Time Caps...236729552025-10-28 2:30:11129 days ago1761618611IN
0x3e9a668D...0791b2B1E
0 ETH0.000016780.08824613
Create Time Caps...235541392025-10-11 11:18:47146 days ago1760181527IN
0x3e9a668D...0791b2B1E
0 ETH0.000585173.07742563
Create Time Caps...232794302025-09-03 1:54:59185 days ago1756864499IN
0x3e9a668D...0791b2B1E
0 ETH0.000512092.69307966
Create Time Caps...231713172025-08-18 23:45:23200 days ago1755560723IN
0x3e9a668D...0791b2B1E
0 ETH0.00052512.76149258
Create Time Caps...230407972025-07-31 18:13:47218 days ago1753985627IN
0x3e9a668D...0791b2B1E
0 ETH0.000386222.03112857
Create Time Caps...226919222025-06-13 0:00:23267 days ago1749772823IN
0x3e9a668D...0791b2B1E
0 ETH0.000654243.44063948
Create Time Caps...225927382025-05-30 3:01:47280 days ago1748574107IN
0x3e9a668D...0791b2B1E
0 ETH0.000269821.41899779
Create Time Caps...225028722025-05-17 12:51:59293 days ago1747486319IN
0x3e9a668D...0791b2B1E
0 ETH0.000138690.72937673
Create Time Caps...224291672025-05-07 3:38:11303 days ago1746589091IN
0x3e9a668D...0791b2B1E
0 ETH0.000535812.81785883
Create Time Caps...223823952025-04-30 14:15:47310 days ago1746022547IN
0x3e9a668D...0791b2B1E
0 ETH0.001166646.13533684
Create Time Caps...223373112025-04-24 7:13:59316 days ago1745478839IN
0x3e9a668D...0791b2B1E
0 ETH0.00020441.07496745
Create Time Caps...223323092025-04-23 14:30:11317 days ago1745418611IN
0x3e9a668D...0791b2B1E
0 ETH0.001426137.5
Create Time Caps...223322732025-04-23 14:22:59317 days ago1745418179IN
0x3e9a668D...0791b2B1E
0 ETH0.001219356.41257365
Create Time Caps...223201642025-04-21 21:48:35319 days ago1745272115IN
0x3e9a668D...0791b2B1E
0 ETH0.000171130.9
Create Time Caps...223169162025-04-21 10:55:47319 days ago1745232947IN
0x3e9a668D...0791b2B1E
0 ETH0.000152120.8
Create Time Caps...223142542025-04-21 2:01:35320 days ago1745200895IN
0x3e9a668D...0791b2B1E
0 ETH0.000533952.80808369
Create Time Caps...222673702025-04-14 12:56:59326 days ago1744635419IN
0x3e9a668D...0791b2B1E
0 ETH0.00076064
Create Time Caps...222558312025-04-12 22:21:11328 days ago1744496471IN
0x3e9a668D...0791b2B1E
0 ETH0.000544132.86157169
Create Time Caps...222526022025-04-12 11:32:23328 days ago1744457543IN
0x3e9a668D...0791b2B1E
0 ETH0.000190621.00250767
Create Time Caps...222460942025-04-11 13:47:23329 days ago1744379243IN
0x3e9a668D...0791b2B1E
0 ETH0.000456362.4
Create Time Caps...222401542025-04-10 17:54:47330 days ago1744307687IN
0x3e9a668D...0791b2B1E
0 ETH0.000665523.5
Create Time Caps...222356862025-04-10 2:58:47330 days ago1744253927IN
0x3e9a668D...0791b2B1E
0 ETH0.000152120.8
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Method Block
From
To
0x3d602d80241270692025-12-30 17:54:3566 days ago1767117275
0x3e9a668D...0791b2B1E
 Contract Creation0 ETH
0x3d602d80241018312025-12-27 5:18:5969 days ago1766812739
0x3e9a668D...0791b2B1E
 Contract Creation0 ETH
0x3d602d80238518022025-11-22 3:25:11104 days ago1763781911
0x3e9a668D...0791b2B1E
 Contract Creation0 ETH
0x3d602d80236729552025-10-28 2:30:11129 days ago1761618611
0x3e9a668D...0791b2B1E
 Contract Creation0 ETH
0x3d602d80235541392025-10-11 11:18:47146 days ago1760181527
0x3e9a668D...0791b2B1E
 Contract Creation0 ETH
0x3d602d80232794302025-09-03 1:54:59185 days ago1756864499
0x3e9a668D...0791b2B1E
 Contract Creation0 ETH
0x3d602d80231713172025-08-18 23:45:23200 days ago1755560723
0x3e9a668D...0791b2B1E
 Contract Creation0 ETH
0x3d602d80230407972025-07-31 18:13:47218 days ago1753985627
0x3e9a668D...0791b2B1E
 Contract Creation0 ETH
0x3d602d80226919222025-06-13 0:00:23267 days ago1749772823
0x3e9a668D...0791b2B1E
 Contract Creation0 ETH
0x3d602d80225927382025-05-30 3:01:47280 days ago1748574107
0x3e9a668D...0791b2B1E
 Contract Creation0 ETH
0x3d602d80225028722025-05-17 12:51:59293 days ago1747486319
0x3e9a668D...0791b2B1E
 Contract Creation0 ETH
0x3d602d80224291672025-05-07 3:38:11303 days ago1746589091
0x3e9a668D...0791b2B1E
 Contract Creation0 ETH
0x3d602d80223823952025-04-30 14:15:47310 days ago1746022547
0x3e9a668D...0791b2B1E
 Contract Creation0 ETH
0x3d602d80223373112025-04-24 7:13:59316 days ago1745478839
0x3e9a668D...0791b2B1E
 Contract Creation0 ETH
0x3d602d80223323092025-04-23 14:30:11317 days ago1745418611
0x3e9a668D...0791b2B1E
 Contract Creation0 ETH
0x3d602d80223322732025-04-23 14:22:59317 days ago1745418179
0x3e9a668D...0791b2B1E
 Contract Creation0 ETH
0x3d602d80223201642025-04-21 21:48:35319 days ago1745272115
0x3e9a668D...0791b2B1E
 Contract Creation0 ETH
0x3d602d80223169162025-04-21 10:55:47319 days ago1745232947
0x3e9a668D...0791b2B1E
 Contract Creation0 ETH
0x3d602d80223142542025-04-21 2:01:35320 days ago1745200895
0x3e9a668D...0791b2B1E
 Contract Creation0 ETH
0x3d602d80222673702025-04-14 12:56:59326 days ago1744635419
0x3e9a668D...0791b2B1E
 Contract Creation0 ETH
0x3d602d80222558312025-04-12 22:21:11328 days ago1744496471
0x3e9a668D...0791b2B1E
 Contract Creation0 ETH
0x3d602d80222526022025-04-12 11:32:23328 days ago1744457543
0x3e9a668D...0791b2B1E
 Contract Creation0 ETH
0x3d602d80222460942025-04-11 13:47:23329 days ago1744379243
0x3e9a668D...0791b2B1E
 Contract Creation0 ETH
0x3d602d80222401542025-04-10 17:54:47330 days ago1744307687
0x3e9a668D...0791b2B1E
 Contract Creation0 ETH
0x3d602d80222356862025-04-10 2:58:47330 days ago1744253927
0x3e9a668D...0791b2B1E
 Contract Creation0 ETH
View All Internal Transactions
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

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

Contract Name:
TimeCapsuleFactory

Compiler Version
v0.8.16+commit.07a7930e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-07-03
*/

// SPDX-License-Identifier: UNLICENSED

pragma solidity 0.8.16;


// OpenZeppelin Contracts (last updated v4.9.0) (proxy/Clones.sol)
/**
 * @dev https://eips.ethereum.org/EIPS/eip-1167[EIP 1167] is a standard for
 * deploying minimal proxy contracts, also known as "clones".
 *
 * > To simply and cheaply clone contract functionality in an immutable way, this standard specifies
 * > a minimal bytecode implementation that delegates all calls to a known, fixed address.
 *
 * The library includes functions to deploy a proxy using either `create` (traditional deployment) or `create2`
 * (salted deterministic deployment). It also includes functions to predict the addresses of clones deployed using the
 * deterministic method.
 *
 * _Available since v3.4._
 */
library Clones {
    /**
     * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.
     *
     * This function uses the create opcode, which should never revert.
     */
    function clone(address implementation) internal returns (address instance) {
        /// @solidity memory-safe-assembly
        assembly {
            // Cleans the upper 96 bits of the `implementation` word, then packs the first 3 bytes
            // of the `implementation` address with the bytecode before the address.
            mstore(0x00, or(shr(0xe8, shl(0x60, implementation)), 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000))
            // Packs the remaining 17 bytes of `implementation` with the bytecode after the address.
            mstore(0x20, or(shl(0x78, implementation), 0x5af43d82803e903d91602b57fd5bf3))
            instance := create(0, 0x09, 0x37)
        }
        require(instance != address(0), "ERC1167: create failed");
    }

    /**
     * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.
     *
     * This function uses the create2 opcode and a `salt` to deterministically deploy
     * the clone. Using the same `implementation` and `salt` multiple time will revert, since
     * the clones cannot be deployed twice at the same address.
     */
    function cloneDeterministic(address implementation, bytes32 salt) internal returns (address instance) {
        /// @solidity memory-safe-assembly
        assembly {
            // Cleans the upper 96 bits of the `implementation` word, then packs the first 3 bytes
            // of the `implementation` address with the bytecode before the address.
            mstore(0x00, or(shr(0xe8, shl(0x60, implementation)), 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000))
            // Packs the remaining 17 bytes of `implementation` with the bytecode after the address.
            mstore(0x20, or(shl(0x78, implementation), 0x5af43d82803e903d91602b57fd5bf3))
            instance := create2(0, 0x09, 0x37, salt)
        }
        require(instance != address(0), "ERC1167: create2 failed");
    }

    /**
     * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.
     */
    function predictDeterministicAddress(
        address implementation,
        bytes32 salt,
        address deployer
    ) internal pure returns (address predicted) {
        /// @solidity memory-safe-assembly
        assembly {
            let ptr := mload(0x40)
            mstore(add(ptr, 0x38), deployer)
            mstore(add(ptr, 0x24), 0x5af43d82803e903d91602b57fd5bf3ff)
            mstore(add(ptr, 0x14), implementation)
            mstore(ptr, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73)
            mstore(add(ptr, 0x58), salt)
            mstore(add(ptr, 0x78), keccak256(add(ptr, 0x0c), 0x37))
            predicted := keccak256(add(ptr, 0x43), 0x55)
        }
    }

    /**
     * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.
     */
    function predictDeterministicAddress(
        address implementation,
        bytes32 salt
    ) internal view returns (address predicted) {
        return predictDeterministicAddress(implementation, salt, address(this));
    }
}
library Strings {
    
    function toString(uint256 value) internal pure returns (string memory) {
        // from @openzeppelin String.sol
        unchecked {
            ////
            // uint256 length = Math.log10(value) + 1; =>
            // from @openzeppelin Math.sol
            uint256 length = 0;
            if (value >= 10**64) { value /= 10**64; length += 64; }
            if (value >= 10**32) { value /= 10**32; length += 32; }
            if (value >= 10**16) { value /= 10**16; length += 16; }
            if (value >= 10**8) { value /= 10**8; length += 8; }
            if (value >= 10**4) { value /= 10**4; length += 4; }
            if (value >= 10**2) { value /= 10**2; length += 2; }
            if (value >= 10**1) { length += 1; }
            length++;
            ////

            string memory buffer = new string(length);
            uint256 ptr;
            assembly {
                ptr := add(buffer, add(32, length))
            }
            while (true) {
                ptr--;
                /// @solidity memory-safe-assembly
                assembly {
                    mstore8(ptr, byte(mod(value, 10), "0123456789abcdef"))
                }
                value /= 10;
                if (value == 0) break;
            }
            return buffer;
        }
    }
}
/// @dev SYNONYMS: vault, capsule, timecapsule

interface IFeeSplitter {
    function splitERC20(address tokenAddress) external returns (bool);
}

interface ITimeCapsule {
        function initialize(
        address _newOwner,
        address _factoryAddress,
        IFeeSplitter _feeSplitterContract
    ) external;
}

/**
 * @title TimeCapsuleFactory
 * @notice Responsible for TimeCapsule contract deployment plus storage and use of recovery address hashes.
 */
contract TimeCapsuleFactory {

    struct OwnerCapsuleRecord {
        address capsuleAddress;
        bytes32 recoveryAddressHash;
    }
    mapping(address => OwnerCapsuleRecord) private capsules; // index address => capsule owner address
    mapping(bytes32 => address) private ownerHashes; // index bytes32 => keccack256 of vault owner address

    // validation: a recoveryAddressHash is "validated" when a matching entry exists in hashCapsuleAddresses
    mapping(bytes32 => address) private hashCapsuleAddresses; // index => recovery address hash (for reverse owner lookups)

    address private founder; // NOT AN ADMIN KEY -- Only used to allow contract creator to airdrop free capsules (promotional)
    address private timeCapsuleImplementationAddress;
    IFeeSplitter private NO_EXPECTATIONS; // splits 0.1% fees evenly between three project founders

    constructor(
        address _timeCapsuleImplementationAddress,
        IFeeSplitter _feeSplitterContract
    ) {
        founder = msg.sender;
        timeCapsuleImplementationAddress = _timeCapsuleImplementationAddress;
        NO_EXPECTATIONS = _feeSplitterContract;
    }

    /**
     * Consciously excluding receive/fallback functions
     * receive() external payable { }
     * fallback() external payable { }
     */

    modifier _onlyOwnersCapsule(address _owner) {
        require(
            msg.sender == capsuleAddressOf(_owner),
            "Invalid caller"
        );
        _;
    }

    event TimeCapsuleCreated(
        address owner,
        address capsuleAddress
    );

    event OwnerChanged(
        address capsuleAddress,
        address oldOwner,
        address newOwner
    );

    function predictedCapsuleAddress(address ownerAddress) public view returns (address predictedAddress) {
        predictedAddress = Clones.predictDeterministicAddress(timeCapsuleImplementationAddress, bytes32(abi.encode(ownerAddress)));
    }

    /**
     * Instantiates a new vault.
     * @param _newOwner address of the new Time Caposule's owner
     */
    function _instantiateTimeCapsule(address _newOwner) internal {
        require(
            capsules[_newOwner].capsuleAddress == address(0),
            "Capsule already assigned"
        );

        // _newOwner must not *be* an existing _and_ *validated* recovery address
        require(
           hashCapsuleAddresses[keccak256(abi.encodePacked(_newOwner))] == address(0),
           "Creator address is a validated recovery address"
        );
        /// @dev _recoveryAddressHash may be zero (unset)

        // instantiate new TimeCapsule (vault) contract
        /// @dev we use msg.sender as the salt for a deterministic vault deployment address
        address payable _capsuleAddress = payable(Clones.cloneDeterministic(
            timeCapsuleImplementationAddress, bytes32(abi.encode(msg.sender))
        ));

        try ITimeCapsule(_capsuleAddress).initialize(
            _newOwner,      //  address _newOwner
            address(this),  //  address _factoryAddress
            NO_EXPECTATIONS //  FeeSplitter NO_EXPECTATIONS
        ) {
            OwnerCapsuleRecord memory newCapsule = OwnerCapsuleRecord({
                capsuleAddress: _capsuleAddress,
                recoveryAddressHash: bytes32(0)
            });
            capsules[_newOwner] = newCapsule;
            bytes32 ownerHash = keccak256(abi.encodePacked(_newOwner));
            ownerHashes[ownerHash] = _newOwner;

            emit TimeCapsuleCreated(_newOwner, _capsuleAddress);
        } catch {
            revert("Capsule initialization failed");
        }
    }

    /**
     * Creates a vault with no recovery address.
     */
    function createTimeCapsule() public {
        _instantiateTimeCapsule(msg.sender);
    }

    /**
     * Creates a vault with a recovery address.
     * @param _recoveryAddressHash keccak256 (sha3) hash of recovery address
     */
    function createTimeCapsule(bytes32 _recoveryAddressHash) public {
        _instantiateTimeCapsule(msg.sender);
        capsules[msg.sender].recoveryAddressHash = _recoveryAddressHash;
    }

    /**
     * Returns the contract address of the owner's vault. (Each owner address can only have one vault.)
     * @param _owner address of vault owner
     */
    function capsuleAddressOf(address _owner) public view returns (address capsuleAddress) {
        capsuleAddress = capsules[_owner].capsuleAddress;
    }

    /**
     * Splits a 65 byte (130 nibble) 'raw' signature into R, S, V components.
     * @param _signature 65 byte (130 nibble) 'raw' signature
     * @return r signature R component
     * @return s signature S component
     * @return v signature V component
     */
    function _splitSignature(bytes memory _signature) private pure returns (bytes32 r, bytes32 s, uint8 v) {
        assembly {
            r := mload(add(_signature, 32))
            s := mload(add(_signature, 64))
            v := byte(0, mload(add(_signature, 96)))
        }
    }

    /**
     * Recovers the address of the signer of a arbitrary length message.
     * @param _message the signed message
     * @param _signature signature
     */
    function _recoverSignerAddress(
        string memory _message,
        bytes memory _signature
    )
        private
        pure
        returns (address signerAddress)
    {
        if (_signature.length != 65) return address(0);

        bytes32 _messageHash = keccak256(
            abi.encodePacked(
                "\x19Ethereum Signed Message:\n",
                Strings.toString(bytes(_message).length),
                bytes(_message)
            )
        );

        (bytes32 r, bytes32 s, uint8 v) = _splitSignature(_signature);
        signerAddress = ecrecover(_messageHash, v, r, s);
    }

    /**
     * Sets the vault's recovery address. Reverts if recovery address has been validated.
     * @notice internal function
     * @param _recoveryAddressHash keccak256 hash of recovery address
     */
    function _setRecoveryAddressHash(
        address _owner,
        bytes32 _recoveryAddressHash
    )
        internal
    {
        require(
            isRecoveryHashValidated(_owner) == false,
            "Duplicate validated recovery address"
        );
        capsules[_owner].recoveryAddressHash = _recoveryAddressHash;
    }

    /**
     * @notice internal function
     * @param _owner vault owner addres
     * @param _recoveryAddressHash keccak256 (sha3) hash of the recovery address being signed
     * @param _signature signature
     */
    function _validateRecoveryAddressHash(
        address _owner,
        bytes32 _recoveryAddressHash,
        bytes memory _signature
    )
        internal
    {
        require(
            ownerHashes[_recoveryAddressHash] == address(0),
            "Cannot own a vault"
        );
        require(
            hashCapsuleAddresses[_recoveryAddressHash] == address(0),
            "Already validated"
        );
        address signerAddress = _recoverSignerAddress(
            "CONFIRMING RECOVERY ADDRESS",
            _signature
        );
        require(
            keccak256(abi.encodePacked(signerAddress)) == _recoveryAddressHash,
            "Invalid signature"
        );
        bytes32 _existingRecoveryAddressHash = capsules[_owner].recoveryAddressHash;
        if (hashCapsuleAddresses[_existingRecoveryAddressHash] == _owner) {
            delete hashCapsuleAddresses[_existingRecoveryAddressHash];
        }

        // recoveryHash is "validated" when a matching record exists in hashCapsuleAddresses[]
        hashCapsuleAddresses[_recoveryAddressHash] = _owner;
    }

    /**
     * Sets (or re-sets) and validates the vault's recovery address by having it signed off-chain by
     * the recovery address private keys. NOTE: An unvalidated recovery address may only be set at vault
     * creation. Future setting of the address *requires* that it be validated immediately, using
     * this function.
     * @notice the requirement to separately validate a recovery address is both reduces onboarding
     * friction — and prevents certain style of DOS attack regarding use of another's address.
     * @param _owner vault owner addres
     * @param _recoveryAddressHash keccak256 (sha3) hash of the recovery address being signed
     * @param _signature signature
     */
    function validateRecoveryAddressHash(
        address _owner,
        bytes32 _recoveryAddressHash,
        bytes memory _signature
    )
        public
        _onlyOwnersCapsule(_owner)
    {
        _setRecoveryAddressHash(_owner, _recoveryAddressHash);
        _validateRecoveryAddressHash(
            _owner,
            _recoveryAddressHash,
            _signature
        );
    }

    /**
     * Verifies that the recovery address for the vault is indeed the one the being checked.
     * @param _owner address of vault owner
     * @param _addressHash keccak256 (sha3) hash of the recovery address
     */
    function checkRecoveryAddress(
        address _owner,
        bytes32 _addressHash
    )
        public
        view
        returns (bool confirmed)
    {
        confirmed = _addressHash == capsules[_owner].recoveryAddressHash;
    }

    /**
     * Returns true/false according to recovery address validation status.
     * @param _owner address of the vault owner
     */
    function isRecoveryHashValidated(address _owner)
        public view
        _onlyOwnersCapsule(_owner)
        returns (bool)
    {
        bytes32 _recoveryAddressHash = capsules[_owner].recoveryAddressHash;
        // hashCapsuleAddresses[_recoveryAddressHash] entry should only exist if hash is validated
        return hashCapsuleAddresses[_recoveryAddressHash] == _owner;
    }

    /**
     * Recovers ownership of a vault to the recovery address.
     * @notice Can only be executed by private key associated with recorded recovery address hash
     * @param _oldOwner address of the current (panic state) owner
     * @param _newOwner address of the new owner
     */
    function recoverOwnership(
        address _oldOwner,
        address _newOwner
    )
        public
        _onlyOwnersCapsule(_oldOwner)
    {
        require(
            capsules[_oldOwner].recoveryAddressHash == keccak256(abi.encodePacked(_newOwner)),
            "Invalid caller" // purposely vague revert message
        );

        capsules[_newOwner] = OwnerCapsuleRecord({
            capsuleAddress: msg.sender,
            recoveryAddressHash: bytes32(0)
        });
        delete capsules[_oldOwner];
        delete hashCapsuleAddresses[keccak256(abi.encodePacked(msg.sender))];

        delete ownerHashes[keccak256(abi.encodePacked(_oldOwner))];
        ownerHashes[keccak256(abi.encodePacked(msg.sender))] = msg.sender;

        emit OwnerChanged(
            msg.sender,
            _oldOwner,
            _newOwner
        );
    }
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"_timeCapsuleImplementationAddress","type":"address"},{"internalType":"contract IFeeSplitter","name":"_feeSplitterContract","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"capsuleAddress","type":"address"},{"indexed":false,"internalType":"address","name":"oldOwner","type":"address"},{"indexed":false,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnerChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"address","name":"capsuleAddress","type":"address"}],"name":"TimeCapsuleCreated","type":"event"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"capsuleAddressOf","outputs":[{"internalType":"address","name":"capsuleAddress","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"bytes32","name":"_addressHash","type":"bytes32"}],"name":"checkRecoveryAddress","outputs":[{"internalType":"bool","name":"confirmed","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_recoveryAddressHash","type":"bytes32"}],"name":"createTimeCapsule","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"createTimeCapsule","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"isRecoveryHashValidated","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"ownerAddress","type":"address"}],"name":"predictedCapsuleAddress","outputs":[{"internalType":"address","name":"predictedAddress","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_oldOwner","type":"address"},{"internalType":"address","name":"_newOwner","type":"address"}],"name":"recoverOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"bytes32","name":"_recoveryAddressHash","type":"bytes32"},{"internalType":"bytes","name":"_signature","type":"bytes"}],"name":"validateRecoveryAddressHash","outputs":[],"stateMutability":"nonpayable","type":"function"}]

0x608060405234801561001057600080fd5b506040516110fb3803806110fb83398101604081905261002f91610083565b600380546001600160a01b03199081163317909155600480546001600160a01b03948516908316179055600580549290931691161790556100bd565b6001600160a01b038116811461008057600080fd5b50565b6000806040838503121561009657600080fd5b82516100a18161006b565b60208401519092506100b28161006b565b809150509250929050565b61102f806100cc6000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063d7e889961161005b578063d7e8899614610106578063e5a054b814610145578063e7274c2b14610158578063fd9643a51461016b57600080fd5b8063048abced1461008d57806329af8a1f146100a2578063586cb099146100eb578063b3431a5e146100fe575b600080fd5b6100a061009b366004610d83565b61017e565b005b6100ce6100b0366004610db8565b6001600160a01b039081166000908152602081905260409020541690565b6040516001600160a01b0390911681526020015b60405180910390f35b6100ce6100f9366004610db8565b61019c565b6100a06101e1565b610135610114366004610dd3565b6001600160a01b039091166000908152602081905260409020600101541490565b60405190151581526020016100e2565b6100a0610153366004610e13565b6101ec565b6100a0610166366004610ede565b61024b565b610135610179366004610db8565b61047a565b61018733610504565b33600090815260208190526040902060010155565b600454604080516001600160a01b0384811660208301526000936101db93911691016040516020818303038152906040526101d690610f11565b6107ed565b92915050565b6101ea33610504565b565b6001600160a01b0383811660009081526020819052604090205484911633146102305760405162461bcd60e51b815260040161022790610f35565b60405180910390fd5b61023a8484610850565b6102458484846108d1565b50505050565b6001600160a01b0382811660009081526020819052604090205483911633146102865760405162461bcd60e51b815260040161022790610f35565b816040516020016102979190610f5d565b60408051601f1981840301815291815281516020928301206001600160a01b038616600090815292839052912060010154146102e55760405162461bcd60e51b815260040161022790610f35565b60408051808201825233808252600060208084018281526001600160a01b038881168452838352868420955186549082166001600160a01b031991821617875591516001968701558916835285832080549091168155909301819055925160029392610352929101610f5d565b60405160208183030381529060405280519060200120815260200190815260200160002060006101000a8154906001600160a01b03021916905560016000846040516020016103a19190610f5d565b60405160208183030381529060405280519060200120815260200190815260200160002060006101000a8154906001600160a01b0302191690553360016000336040516020016103f19190610f5d565b60408051808303601f19018152918152815160209283012083528282019390935290820160002080546001600160a01b0319166001600160a01b03948516179055815133815286841691810191909152918416908201527f381c0d11398486654573703c51ee8210ce9461764d133f9f0e53b6a5397053319060600160405180910390a1505050565b60008161049f816001600160a01b039081166000908152602081905260409020541690565b6001600160a01b0316336001600160a01b0316146104cf5760405162461bcd60e51b815260040161022790610f35565b6001600160a01b0380841660008181526020818152604080832060010154835260029091529020549091161491505b50919050565b6001600160a01b03818116600090815260208190526040902054161561056c5760405162461bcd60e51b815260206004820152601860248201527f43617073756c6520616c72656164792061737369676e656400000000000000006044820152606401610227565b60006001600160a01b0316600260008360405160200161058c9190610f5d565b60408051601f19818403018152918152815160209283012083529082019290925201600020546001600160a01b0316146106205760405162461bcd60e51b815260206004820152602f60248201527f43726561746f72206164647265737320697320612076616c696461746564207260448201526e65636f76657279206164647265737360881b6064820152608401610227565b6004546040805133602082015260009261065e926001600160a01b03909116910160405160208183030381529060405261065990610f11565b610ab0565b60055460405163c0c53b8b60e01b81526001600160a01b038581166004830152306024830152918216604482015291925082169063c0c53b8b90606401600060405180830381600087803b1580156106b557600080fd5b505af19250505080156106c6575060015b6107125760405162461bcd60e51b815260206004820152601d60248201527f43617073756c6520696e697469616c697a6174696f6e206661696c65640000006044820152606401610227565b6040805180820182526001600160a01b038381168252600060208084018281528784168352828252858320855181546001600160a01b031916951694909417845551600190930192909255925191929161076e91869101610f5d565b60408051808303601f19018152828252805160209182012060008181526001835283902080546001600160a01b0319166001600160a01b038a8116918217909255855287169184019190915292507f30bf3f418b8397f2cc23bfe61c58a92e1b61277f5d22404443504fae23cc3160910160405180910390a150505050565b6040513060388201526f5af43d82803e903d91602b57fd5bf3ff602482015260148101839052733d602d80600a3d3981f3363d3d373d3d3d363d738152605881018290526037600c820120607882015260556043909101206000905b9392505050565b6108598261047a565b156108b25760405162461bcd60e51b8152602060048201526024808201527f4475706c69636174652076616c696461746564207265636f76657279206164646044820152637265737360e01b6064820152608401610227565b6001600160a01b03909116600090815260208190526040902060010155565b6000828152600160205260409020546001600160a01b03161561092b5760405162461bcd60e51b815260206004820152601260248201527110d85b9b9bdd081bdddb8818481d985d5b1d60721b6044820152606401610227565b6000828152600260205260409020546001600160a01b0316156109845760405162461bcd60e51b8152602060048201526011602482015270105b1c9958591e481d985b1a59185d1959607a1b6044820152606401610227565b60006109c56040518060400160405280601b81526020017f434f4e4649524d494e47205245434f564552592041444452455353000000000081525083610b4d565b905082816040516020016109d99190610f5d565b6040516020818303038152906040528051906020012014610a305760405162461bcd60e51b8152602060048201526011602482015270496e76616c6964207369676e617475726560781b6044820152606401610227565b6001600160a01b038085166000818152602081815260408083206001015480845260029092529091205490921603610a7f57600081815260026020526040902080546001600160a01b03191690555b505050600090815260026020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008360601b60e81c176000526e5af43d82803e903d91602b57fd5bf38360781b1760205281603760096000f590506001600160a01b0381166101db5760405162461bcd60e51b815260206004820152601760248201527f455243313136373a2063726561746532206661696c65640000000000000000006044820152606401610227565b60008151604114610b60575060006101db565b6000610b6c8451610c2b565b84604051602001610b7e929190610f9e565b6040516020818303038152906040528051906020012090506000806000610bba8660208101516040820151606090920151909260009190911a90565b60408051600081526020810180835289905260ff8316918101919091526060810184905260808101839052929550909350915060019060a0016020604051602081039080840390855afa158015610c15573d6000803e3d6000fd5b5050604051601f19015198975050505050505050565b6060600072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310610c6b5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310610c97576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310610cb557662386f26fc10000830492506010015b6305f5e1008310610ccd576305f5e100830492506008015b6127108310610ce157612710830492506004015b60648310610cf3576064830492506002015b600a8310610cff576001015b60010160008167ffffffffffffffff811115610d1d57610d1d610dfd565b6040519080825280601f01601f191660200182016040528015610d47576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084610d5157509392505050565b600060208284031215610d9557600080fd5b5035919050565b80356001600160a01b0381168114610db357600080fd5b919050565b600060208284031215610dca57600080fd5b61084982610d9c565b60008060408385031215610de657600080fd5b610def83610d9c565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b600080600060608486031215610e2857600080fd5b610e3184610d9c565b925060208401359150604084013567ffffffffffffffff80821115610e5557600080fd5b818601915086601f830112610e6957600080fd5b813581811115610e7b57610e7b610dfd565b604051601f8201601f19908116603f01168101908382118183101715610ea357610ea3610dfd565b81604052828152896020848701011115610ebc57600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b60008060408385031215610ef157600080fd5b610efa83610d9c565b9150610f0860208401610d9c565b90509250929050565b805160208083015191908110156104fe5760001960209190910360031b1b16919050565b6020808252600e908201526d24b73b30b634b21031b0b63632b960911b604082015260600190565b60609190911b6bffffffffffffffffffffffff1916815260140190565b60005b83811015610f95578181015183820152602001610f7d565b50506000910152565b7f19457468657265756d205369676e6564204d6573736167653a0a000000000000815260008351610fd681601a850160208801610f7a565b835190830190610fed81601a840160208801610f7a565b01601a0194935050505056fea264697066735822122050fc5cba022461e9f93f2ba1f1990f745eddded6f4c1bf801581f80c06e2aa2164736f6c634300081000330000000000000000000000005fe3543f96c7aa1a85d82206ccedc80dc2722d00000000000000000000000000ac723c0b8cdf9995141f4dabfcf0b30b0cdfccb0

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100885760003560e01c8063d7e889961161005b578063d7e8899614610106578063e5a054b814610145578063e7274c2b14610158578063fd9643a51461016b57600080fd5b8063048abced1461008d57806329af8a1f146100a2578063586cb099146100eb578063b3431a5e146100fe575b600080fd5b6100a061009b366004610d83565b61017e565b005b6100ce6100b0366004610db8565b6001600160a01b039081166000908152602081905260409020541690565b6040516001600160a01b0390911681526020015b60405180910390f35b6100ce6100f9366004610db8565b61019c565b6100a06101e1565b610135610114366004610dd3565b6001600160a01b039091166000908152602081905260409020600101541490565b60405190151581526020016100e2565b6100a0610153366004610e13565b6101ec565b6100a0610166366004610ede565b61024b565b610135610179366004610db8565b61047a565b61018733610504565b33600090815260208190526040902060010155565b600454604080516001600160a01b0384811660208301526000936101db93911691016040516020818303038152906040526101d690610f11565b6107ed565b92915050565b6101ea33610504565b565b6001600160a01b0383811660009081526020819052604090205484911633146102305760405162461bcd60e51b815260040161022790610f35565b60405180910390fd5b61023a8484610850565b6102458484846108d1565b50505050565b6001600160a01b0382811660009081526020819052604090205483911633146102865760405162461bcd60e51b815260040161022790610f35565b816040516020016102979190610f5d565b60408051601f1981840301815291815281516020928301206001600160a01b038616600090815292839052912060010154146102e55760405162461bcd60e51b815260040161022790610f35565b60408051808201825233808252600060208084018281526001600160a01b038881168452838352868420955186549082166001600160a01b031991821617875591516001968701558916835285832080549091168155909301819055925160029392610352929101610f5d565b60405160208183030381529060405280519060200120815260200190815260200160002060006101000a8154906001600160a01b03021916905560016000846040516020016103a19190610f5d565b60405160208183030381529060405280519060200120815260200190815260200160002060006101000a8154906001600160a01b0302191690553360016000336040516020016103f19190610f5d565b60408051808303601f19018152918152815160209283012083528282019390935290820160002080546001600160a01b0319166001600160a01b03948516179055815133815286841691810191909152918416908201527f381c0d11398486654573703c51ee8210ce9461764d133f9f0e53b6a5397053319060600160405180910390a1505050565b60008161049f816001600160a01b039081166000908152602081905260409020541690565b6001600160a01b0316336001600160a01b0316146104cf5760405162461bcd60e51b815260040161022790610f35565b6001600160a01b0380841660008181526020818152604080832060010154835260029091529020549091161491505b50919050565b6001600160a01b03818116600090815260208190526040902054161561056c5760405162461bcd60e51b815260206004820152601860248201527f43617073756c6520616c72656164792061737369676e656400000000000000006044820152606401610227565b60006001600160a01b0316600260008360405160200161058c9190610f5d565b60408051601f19818403018152918152815160209283012083529082019290925201600020546001600160a01b0316146106205760405162461bcd60e51b815260206004820152602f60248201527f43726561746f72206164647265737320697320612076616c696461746564207260448201526e65636f76657279206164647265737360881b6064820152608401610227565b6004546040805133602082015260009261065e926001600160a01b03909116910160405160208183030381529060405261065990610f11565b610ab0565b60055460405163c0c53b8b60e01b81526001600160a01b038581166004830152306024830152918216604482015291925082169063c0c53b8b90606401600060405180830381600087803b1580156106b557600080fd5b505af19250505080156106c6575060015b6107125760405162461bcd60e51b815260206004820152601d60248201527f43617073756c6520696e697469616c697a6174696f6e206661696c65640000006044820152606401610227565b6040805180820182526001600160a01b038381168252600060208084018281528784168352828252858320855181546001600160a01b031916951694909417845551600190930192909255925191929161076e91869101610f5d565b60408051808303601f19018152828252805160209182012060008181526001835283902080546001600160a01b0319166001600160a01b038a8116918217909255855287169184019190915292507f30bf3f418b8397f2cc23bfe61c58a92e1b61277f5d22404443504fae23cc3160910160405180910390a150505050565b6040513060388201526f5af43d82803e903d91602b57fd5bf3ff602482015260148101839052733d602d80600a3d3981f3363d3d373d3d3d363d738152605881018290526037600c820120607882015260556043909101206000905b9392505050565b6108598261047a565b156108b25760405162461bcd60e51b8152602060048201526024808201527f4475706c69636174652076616c696461746564207265636f76657279206164646044820152637265737360e01b6064820152608401610227565b6001600160a01b03909116600090815260208190526040902060010155565b6000828152600160205260409020546001600160a01b03161561092b5760405162461bcd60e51b815260206004820152601260248201527110d85b9b9bdd081bdddb8818481d985d5b1d60721b6044820152606401610227565b6000828152600260205260409020546001600160a01b0316156109845760405162461bcd60e51b8152602060048201526011602482015270105b1c9958591e481d985b1a59185d1959607a1b6044820152606401610227565b60006109c56040518060400160405280601b81526020017f434f4e4649524d494e47205245434f564552592041444452455353000000000081525083610b4d565b905082816040516020016109d99190610f5d565b6040516020818303038152906040528051906020012014610a305760405162461bcd60e51b8152602060048201526011602482015270496e76616c6964207369676e617475726560781b6044820152606401610227565b6001600160a01b038085166000818152602081815260408083206001015480845260029092529091205490921603610a7f57600081815260026020526040902080546001600160a01b03191690555b505050600090815260026020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008360601b60e81c176000526e5af43d82803e903d91602b57fd5bf38360781b1760205281603760096000f590506001600160a01b0381166101db5760405162461bcd60e51b815260206004820152601760248201527f455243313136373a2063726561746532206661696c65640000000000000000006044820152606401610227565b60008151604114610b60575060006101db565b6000610b6c8451610c2b565b84604051602001610b7e929190610f9e565b6040516020818303038152906040528051906020012090506000806000610bba8660208101516040820151606090920151909260009190911a90565b60408051600081526020810180835289905260ff8316918101919091526060810184905260808101839052929550909350915060019060a0016020604051602081039080840390855afa158015610c15573d6000803e3d6000fd5b5050604051601f19015198975050505050505050565b6060600072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310610c6b5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310610c97576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310610cb557662386f26fc10000830492506010015b6305f5e1008310610ccd576305f5e100830492506008015b6127108310610ce157612710830492506004015b60648310610cf3576064830492506002015b600a8310610cff576001015b60010160008167ffffffffffffffff811115610d1d57610d1d610dfd565b6040519080825280601f01601f191660200182016040528015610d47576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084610d5157509392505050565b600060208284031215610d9557600080fd5b5035919050565b80356001600160a01b0381168114610db357600080fd5b919050565b600060208284031215610dca57600080fd5b61084982610d9c565b60008060408385031215610de657600080fd5b610def83610d9c565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b600080600060608486031215610e2857600080fd5b610e3184610d9c565b925060208401359150604084013567ffffffffffffffff80821115610e5557600080fd5b818601915086601f830112610e6957600080fd5b813581811115610e7b57610e7b610dfd565b604051601f8201601f19908116603f01168101908382118183101715610ea357610ea3610dfd565b81604052828152896020848701011115610ebc57600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b60008060408385031215610ef157600080fd5b610efa83610d9c565b9150610f0860208401610d9c565b90509250929050565b805160208083015191908110156104fe5760001960209190910360031b1b16919050565b6020808252600e908201526d24b73b30b634b21031b0b63632b960911b604082015260600190565b60609190911b6bffffffffffffffffffffffff1916815260140190565b60005b83811015610f95578181015183820152602001610f7d565b50506000910152565b7f19457468657265756d205369676e6564204d6573736167653a0a000000000000815260008351610fd681601a850160208801610f7a565b835190830190610fed81601a840160208801610f7a565b01601a0194935050505056fea264697066735822122050fc5cba022461e9f93f2ba1f1990f745eddded6f4c1bf801581f80c06e2aa2164736f6c63430008100033

Deployed Bytecode Sourcemap

5966:11177:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9985:192;;;;;;:::i;:::-;;:::i;:::-;;10353:154;;;;;;:::i;:::-;-1:-1:-1;;;;;10468:16:0;;;10416:22;10468:16;;;;;;;;;;:31;;;10353:154;;;;-1:-1:-1;;;;;732:32:1;;;714:51;;702:2;687:18;10353:154:0;;;;;;;;7700:243;;;;;;:::i;:::-;;:::i;9742:90::-;;;:::i;15170:245::-;;;;;;:::i;:::-;-1:-1:-1;;;;;15371:16:0;;;15311:14;15371:16;;;;;;;;;;:36;;;15355:52;;15170:245;;;;1200:14:1;;1193:22;1175:41;;1163:2;1148:18;15170:245:0;1035:187:1;14529:402:0;;;;;;:::i;:::-;;:::i;16263:877::-;;;;;;:::i;:::-;;:::i;15566:391::-;;;;;;:::i;:::-;;:::i;9985:192::-;10060:35;10084:10;10060:23;:35::i;:::-;10115:10;10106:8;:20;;;;;;;;;;:40;;:63;9985:192::o;7700:243::-;7867:32;;7909:24;;;-1:-1:-1;;;;;732:32:1;;;7909:24:0;;;714:51:1;7776:24:0;;7832:103;;7867:32;;;687:18:1;7909:24:0;;;;;;;;;;;;7901:33;;;:::i;:::-;7832:34;:103::i;:::-;7813:122;7700:243;-1:-1:-1;;7700:243:0:o;9742:90::-;9789:35;9813:10;9789:23;:35::i;:::-;9742:90::o;14529:402::-;-1:-1:-1;;;;;10468:16:0;;;10416:22;10468:16;;;;;;;;;;:31;:16;;:31;7374:10;:38;7352:102;;;;-1:-1:-1;;;7352:102:0;;;;;;;:::i;:::-;;;;;;;;;14739:53:::1;14763:6;14771:20;14739:23;:53::i;:::-;14803:120;14846:6;14867:20;14902:10;14803:28;:120::i;:::-;14529:402:::0;;;;:::o;16263:877::-;-1:-1:-1;;;;;10468:16:0;;;10416:22;10468:16;;;;;;;;;;:31;:16;;:31;7374:10;:38;7352:102;;;;-1:-1:-1;;;7352:102:0;;;;;;;:::i;:::-;16515:9:::1;16498:27;;;;;;;;:::i;:::-;;::::0;;-1:-1:-1;;16498:27:0;;::::1;::::0;;;;;;16488:38;;16498:27:::1;16488:38:::0;;::::1;::::0;-1:-1:-1;;;;;16445:19:0;::::1;:8;:19:::0;;;;;;;;;:39:::1;;::::0;:81:::1;16423:179;;;;-1:-1:-1::0;;;16423:179:0::1;;;;;;;:::i;:::-;16637:118;::::0;;;;::::1;::::0;;16687:10:::1;16637:118:::0;;;-1:-1:-1;16637:118:0::1;::::0;;::::1;::::0;;;-1:-1:-1;;;;;16615:19:0;;::::1;::::0;;;;;;;;:140;;;;;;::::1;-1:-1:-1::0;;;;;;16615:140:0;;::::1;;::::0;;;;;;;::::1;::::0;16773:19;::::1;::::0;;;;;16766:26;;;;::::1;::::0;;;;::::1;::::0;;;16841:28;;16810:20:::1;::::0;-1:-1:-1;16841:28:0::1;::::0;16687:10;16841:28:::1;;:::i;:::-;;;;;;;;;;;;;16831:39;;;;;;16810:61;;;;;;;;;;;;16803:68;;;;;-1:-1:-1::0;;;;;16803:68:0::1;;;;;16891:11;:51;16930:9;16913:27;;;;;;;;:::i;:::-;;;;;;;;;;;;;16903:38;;;;;;16891:51;;;;;;;;;;;;16884:58;;;;;-1:-1:-1::0;;;;;16884:58:0::1;;;;;17008:10;16953:11;:52;16992:10;16975:28;;;;;;;;:::i;:::-;;::::0;;;;::::1;-1:-1:-1::0;;16975:28:0;;;;;;16965:39;;16975:28:::1;16965:39:::0;;::::1;::::0;16953:52;;;;::::1;::::0;;;;;;;-1:-1:-1;16953:52:0;:65;;-1:-1:-1;;;;;;16953:65:0::1;-1:-1:-1::0;;;;;16953:65:0;;::::1;;::::0;;17036:96;;17063:10:::1;3811:34:1::0;;3881:15;;;3861:18;;;3854:43;;;;3933:15;;;3913:18;;;3906:43;17036:96:0::1;::::0;3761:2:1;3746:18;17036:96:0::1;;;;;;;16263:877:::0;;;:::o;15566:391::-;15690:4;15664:6;7388:24;7405:6;-1:-1:-1;;;;;10468:16:0;;;10416:22;10468:16;;;;;;;;;;:31;;;10353:154;7388:24;-1:-1:-1;;;;;7374:38:0;:10;-1:-1:-1;;;;;7374:38:0;;7352:102;;;;-1:-1:-1;;;7352:102:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15743:16:0;;::::1;15712:28;15743:16:::0;;;::::1;::::0;;;;;;;:36:::1;;::::0;15897:42;;:20:::1;:42:::0;;;;;;;;::::1;:52;::::0;-1:-1:-1;7465:1:0::1;15566:391:::0;;;;:::o;8069:1597::-;-1:-1:-1;;;;;8163:19:0;;;8209:1;8163:19;;;;;;;;;;:34;;:48;8141:122;;;;-1:-1:-1;;;8141:122:0;;4162:2:1;8141:122:0;;;4144:21:1;4201:2;4181:18;;;4174:30;4240:26;4220:18;;;4213:54;4284:18;;8141:122:0;3960:348:1;8141:122:0;8452:1;-1:-1:-1;;;;;8380:74:0;:20;:60;8428:9;8411:27;;;;;;;;:::i;:::-;;;;-1:-1:-1;;8411:27:0;;;;;;;;;8401:38;;8411:27;8401:38;;;;8380:60;;;;;;;;;;-1:-1:-1;8380:60:0;;-1:-1:-1;;;;;8380:60:0;:74;8359:169;;;;-1:-1:-1;;;8359:169:0;;4515:2:1;8359:169:0;;;4497:21:1;4554:2;4534:18;;;4527:30;4593:34;4573:18;;;4566:62;-1:-1:-1;;;4644:18:1;;;4637:45;4699:19;;8359:169:0;4313:411:1;8359:169:0;8832:32;;8874:22;;;8885:10;8874:22;;;714:51:1;8750:31:0;;8792:116;;-1:-1:-1;;;;;8832:32:0;;;;687:18:1;8874:22:0;;;;;;;;;;;;8866:31;;;:::i;:::-;8792:25;:116::i;:::-;9089:15;;8926:221;;-1:-1:-1;;;8926:221:0;;-1:-1:-1;;;;;3829:15:1;;;8926:221:0;;;3811:34:1;9040:4:0;3861:18:1;;;3854:43;9089:15:0;;;3913:18:1;;;3906:43;8750:159:0;;-1:-1:-1;8926:40:0;;;;;3746:18:1;;8926:221:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8922:737;;9608:39;;-1:-1:-1;;;9608:39:0;;5340:2:1;9608:39:0;;;5322:21:1;5379:2;5359:18;;;5352:30;5418:31;5398:18;;;5391:59;5467:18;;9608:39:0;5138:353:1;8922:737:0;9202:135;;;;;;;;-1:-1:-1;;;;;9202:135:0;;;;;-1:-1:-1;9202:135:0;;;;;;;9352:19;;;;;;;;;;;:32;;;;-1:-1:-1;;;;;;9352:32:0;;;;;;;;;;-1:-1:-1;9352:32:0;;;;;;;9429:27;;9202:135;;-1:-1:-1;9429:27:0;;9352:19;;9429:27;;:::i;:::-;;;;;;;-1:-1:-1;;9429:27:0;;;;;;9419:38;;9429:27;9419:38;;;;9472:22;;;;:11;:22;;;;;:34;;-1:-1:-1;;;;;;9472:34:0;-1:-1:-1;;;;;9472:34:0;;;;;;;;;5716::1;;5786:15;;5766:18;;;5759:43;;;;9419:38:0;-1:-1:-1;9528:46:0;;5651:18:1;9528:46:0;;;;;;;9148:438;;8130:1536;8069:1597;:::o;3891:232::-;3345:4;3339:11;4109:4;3380;3371:14;;3364:32;3433:34;3426:4;3417:14;;3410:58;-1:-1:-1;3489:14:0;;3482:38;;;3546:42;3534:55;;3619:4;3610:14;;3603:28;;;3694:4;3687;3678:14;;3668:31;3661:4;3652:14;;3645:55;3753:4;3746;3737:14;;;3727:31;4014:17;;4051:64;4044:71;3891:232;-1:-1:-1;;;3891:232:0:o;12108:342::-;12268:31;12292:6;12268:23;:31::i;:::-;:40;12246:126;;;;-1:-1:-1;;;12246:126:0;;6015:2:1;12246:126:0;;;5997:21:1;6054:2;6034:18;;;6027:30;6093:34;6073:18;;;6066:62;-1:-1:-1;;;6144:18:1;;;6137:34;6188:19;;12246:126:0;5813:400:1;12246:126:0;-1:-1:-1;;;;;12383:16:0;;;:8;:16;;;;;;;;;;:36;;:59;12108:342::o;12682:1120::-;12926:1;12881:33;;;:11;:33;;;;;;-1:-1:-1;;;;;12881:33:0;:47;12859:115;;;;-1:-1:-1;;;12859:115:0;;6420:2:1;12859:115:0;;;6402:21:1;6459:2;6439:18;;;6432:30;-1:-1:-1;;;6478:18:1;;;6471:48;6536:18;;12859:115:0;6218:342:1;12859:115:0;13061:1;13007:42;;;:20;:42;;;;;;-1:-1:-1;;;;;13007:42:0;:56;12985:123;;;;-1:-1:-1;;;12985:123:0;;6767:2:1;12985:123:0;;;6749:21:1;6806:2;6786:18;;;6779:30;-1:-1:-1;;;6825:18:1;;;6818:47;6882:18;;12985:123:0;6565:341:1;12985:123:0;13119:21;13143:101;;;;;;;;;;;;;;;;;;13223:10;13143:21;:101::i;:::-;13119:125;;13323:20;13304:13;13287:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;13277:42;;;;;;:66;13255:133;;;;-1:-1:-1;;;13255:133:0;;7113:2:1;13255:133:0;;;7095:21:1;7152:2;7132:18;;;7125:30;-1:-1:-1;;;7171:18:1;;;7164:47;7228:18;;13255:133:0;6911:341:1;13255:133:0;-1:-1:-1;;;;;13438:16:0;;;13399:36;13438:16;;;;;;;;;;;:36;;;13489:50;;;:20;:50;;;;;;;13438:36;;13489:50;:60;13485:150;;13573:50;;;;:20;:50;;;;;13566:57;;-1:-1:-1;;;;;;13566:57:0;;;13485:150;-1:-1:-1;;;13743:42:0;;;;:20;:42;;;;;:51;;-1:-1:-1;;;;;;13743:51:0;-1:-1:-1;;;;;13743:51:0;;;;;;;;;;12682:1120::o;2160:805::-;2244:16;2581:48;2563:14;2557:4;2553:25;2547:4;2543:36;2540:90;2534:4;2527:104;2790:32;2773:14;2767:4;2763:25;2760:63;2754:4;2747:77;2873:4;2867;2861;2858:1;2850:28;2838:40;-1:-1:-1;;;;;;2907:22:0;;2899:58;;;;-1:-1:-1;;;2899:58:0;;7459:2:1;2899:58:0;;;7441:21:1;7498:2;7478:18;;;7471:30;7537:25;7517:18;;;7510:53;7580:18;;2899:58:0;7257:347:1;11260:626:0;11414:21;11457:10;:17;11478:2;11457:23;11453:46;;-1:-1:-1;11497:1:0;11482:17;;11453:46;11512:20;11645:40;11668:8;11662:22;11645:16;:40::i;:::-;11710:8;11559:175;;;;;;;;;:::i;:::-;;;;;;;;;;;;;11535:210;;;;;;11512:233;;11759:9;11770;11781:7;11792:27;11808:10;10960:2;10944:19;;10938:26;11005:2;10989:19;;10983:26;11058:2;11042:19;;;11036:26;10938;;10867:9;11028:35;;;;;10795:286;11792:27;11846:32;;;;;;;;;;;;8797:25:1;;;8870:4;8858:17;;8838:18;;;8831:45;;;;8892:18;;;8885:34;;;8935:18;;;8928:34;;;11758:61:0;;-1:-1:-1;11758:61:0;;-1:-1:-1;11758:61:0;-1:-1:-1;11846:32:0;;8769:19:1;;11846:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11846:32:0;;-1:-1:-1;;11846:32:0;;;11260:626;-1:-1:-1;;;;;;;;11260:626:0:o;4157:1319::-;4213:13;4427:14;-1:-1:-1;;;4464:5:0;:15;4460:55;;-1:-1:-1;;;4483:15:0;;;-1:-1:-1;4510:2:0;4500:12;4460:55;4542:6;4533:5;:15;4529:55;;4561:6;4552:15;;;-1:-1:-1;4579:2:0;4569:12;4529:55;4611:6;4602:5;:15;4598:55;;4630:6;4621:15;;;-1:-1:-1;4648:2:0;4638:12;4598:55;4680:5;4671;:14;4667:52;;4698:5;4689:14;;;-1:-1:-1;4715:1:0;4705:11;4667:52;4746:5;4737;:14;4733:52;;4764:5;4755:14;;;-1:-1:-1;4781:1:0;4771:11;4733:52;4812:5;4803;:14;4799:52;;4830:5;4821:14;;;-1:-1:-1;4847:1:0;4837:11;4799:52;4878:5;4869;:14;4865:36;;4897:1;4887:11;4865:36;4915:8;;4958:20;4915:8;4981:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4981:18:0;-1:-1:-1;4958:41:0;-1:-1:-1;5075:28:0;;;5091:2;5075:28;5132:298;-1:-1:-1;;5164:5:0;-1:-1:-1;;;5301:2:0;5290:14;;5285:40;5164:5;5272:54;5372:2;5363:11;;;-1:-1:-1;5393:21:0;5132:298;5393:21;-1:-1:-1;5451:6:0;4157:1319;-1:-1:-1;;;4157:1319:0:o;14:180:1:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:1;;14:180;-1:-1:-1;14:180:1:o;199:173::-;267:20;;-1:-1:-1;;;;;316:31:1;;306:42;;296:70;;362:1;359;352:12;296:70;199:173;;;:::o;377:186::-;436:6;489:2;477:9;468:7;464:23;460:32;457:52;;;505:1;502;495:12;457:52;528:29;547:9;528:29;:::i;776:254::-;844:6;852;905:2;893:9;884:7;880:23;876:32;873:52;;;921:1;918;911:12;873:52;944:29;963:9;944:29;:::i;:::-;934:39;1020:2;1005:18;;;;992:32;;-1:-1:-1;;;776:254:1:o;1227:127::-;1288:10;1283:3;1279:20;1276:1;1269:31;1319:4;1316:1;1309:15;1343:4;1340:1;1333:15;1359:1063;1445:6;1453;1461;1514:2;1502:9;1493:7;1489:23;1485:32;1482:52;;;1530:1;1527;1520:12;1482:52;1553:29;1572:9;1553:29;:::i;:::-;1543:39;;1629:2;1618:9;1614:18;1601:32;1591:42;;1684:2;1673:9;1669:18;1656:32;1707:18;1748:2;1740:6;1737:14;1734:34;;;1764:1;1761;1754:12;1734:34;1802:6;1791:9;1787:22;1777:32;;1847:7;1840:4;1836:2;1832:13;1828:27;1818:55;;1869:1;1866;1859:12;1818:55;1905:2;1892:16;1927:2;1923;1920:10;1917:36;;;1933:18;;:::i;:::-;2008:2;2002:9;1976:2;2062:13;;-1:-1:-1;;2058:22:1;;;2082:2;2054:31;2050:40;2038:53;;;2106:18;;;2126:22;;;2103:46;2100:72;;;2152:18;;:::i;:::-;2192:10;2188:2;2181:22;2227:2;2219:6;2212:18;2267:7;2262:2;2257;2253;2249:11;2245:20;2242:33;2239:53;;;2288:1;2285;2278:12;2239:53;2344:2;2339;2335;2331:11;2326:2;2318:6;2314:15;2301:46;2389:1;2384:2;2379;2371:6;2367:15;2363:24;2356:35;2410:6;2400:16;;;;;;;1359:1063;;;;;:::o;2427:260::-;2495:6;2503;2556:2;2544:9;2535:7;2531:23;2527:32;2524:52;;;2572:1;2569;2562:12;2524:52;2595:29;2614:9;2595:29;:::i;:::-;2585:39;;2643:38;2677:2;2666:9;2662:18;2643:38;:::i;:::-;2633:48;;2427:260;;;;;:::o;2692:297::-;2810:12;;2857:4;2846:16;;;2840:23;;2810:12;2875:16;;2872:111;;;-1:-1:-1;;2949:4:1;2945:17;;;;2942:1;2938:25;2934:38;2923:50;;2692:297;-1:-1:-1;2692:297:1:o;2994:338::-;3196:2;3178:21;;;3235:2;3215:18;;;3208:30;-1:-1:-1;;;3269:2:1;3254:18;;3247:44;3323:2;3308:18;;2994:338::o;3337:229::-;3486:2;3482:15;;;;-1:-1:-1;;3478:53:1;3466:66;;3557:2;3548:12;;3337:229::o;7609:250::-;7694:1;7704:113;7718:6;7715:1;7712:13;7704:113;;;7794:11;;;7788:18;7775:11;;;7768:39;7740:2;7733:10;7704:113;;;-1:-1:-1;;7851:1:1;7833:16;;7826:27;7609:250::o;7864:701::-;8172:66;8167:3;8160:79;8142:3;8268:6;8262:13;8284:75;8352:6;8347:2;8342:3;8338:12;8331:4;8323:6;8319:17;8284:75;:::i;:::-;8419:13;;8378:16;;;;8441:76;8419:13;8503:2;8495:11;;8488:4;8476:17;;8441:76;:::i;:::-;8537:17;8556:2;8533:26;;7864:701;-1:-1:-1;;;;7864:701:1:o

Swarm Source

ipfs://50fc5cba022461e9f93f2ba1f1990f745eddded6f4c1bf801581f80c06e2aa21

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
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.