Cryo Explorer Ethereum Mainnet

Address Contract Partially Verified

Address 0x471B080EffB2bc6fb33c8c6FE6ce1AB46F9f522b
Balance 1.8000 ETH ($3603.60)
Nonce 1
Code Size 6998 bytes
Last Active
Indexed Transactions 38 (10,658,68010,691,868)
Value (indexed) ↓ 5.3472 ETH
Gas Used (indexed) 1,059,206
External Etherscan · Sourcify

Contract Bytecode

6998 bytes
0x60806040526004361061009c5760003560e01c806394e15c8f1161006457806394e15c8f14610186578063af78feef146101b1578063c90bd047146101dc578063d363209514610207578063ec56a37314610223578063fbdf3b43146102685761009c565b80632f21a663146100a1578063414ac85b146100de57806363615149146101095780637249fbb6146101325780637fcce2a91461015b575b600080fd5b3480156100ad57600080fd5b506100c860048036036100c39190810190611210565b6102a5565b6040516100d59190611701565b60405180910390f35b3480156100ea57600080fd5b506100f3610335565b6040516101009190611807565b60405180910390f35b34801561011557600080fd5b50610130600480360361012b91908101906112a3565b61033a565b005b34801561013e57600080fd5b5061015960048036036101549190810190611251565b6105c3565b005b34801561016757600080fd5b50610170610796565b60405161017d9190611807565b60405180910390f35b34801561019257600080fd5b5061019b61079b565b6040516101a89190611807565b60405180910390f35b3480156101bd57600080fd5b506101c66107a0565b6040516101d39190611807565b60405180910390f35b3480156101e857600080fd5b506101f16107a5565b6040516101fe9190611807565b60405180910390f35b610221600480360361021c91908101906112df565b6107aa565b005b34801561022f57600080fd5b5061024a60048036036102459190810190611251565b610b92565b60405161025f99989796959493929190611895565b60405180910390f35b34801561027457600080fd5b5061028f600480360361028a9190810190611251565b610d50565b60405161029c9190611807565b60405180910390f35b60608082516040519080825280602002602001820160405280156102d85781602001602082028038833980820191505090505b50905060008090505b835181101561032b576103068482815181106102f957fe5b6020026020010151610d50565b82828151811061031257fe5b60200260200101818152505080806001019150506102e1565b5080915050919050565b600481565b600080600084815260200190815260200160002090506001816003015414610397576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161038e906117a7565b60405180910390fd5b428160020154116103dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103d4906117c7565b60405180910390fd5b6002826040516020016103f091906116cf565b60405160208183030381529060405260405161040c91906116ea565b602060405180830381855afa158015610429573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525061044c919081019061127a565b816004015414610491576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161048890611787565b60405180910390fd5b600381600301819055508060060160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc82600001549081150290604051600060405180830381858888f19350505050158015610509573d6000803e3d6000fd5b508060060160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168160050160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16847f2d3a5ed13d0553389b4078e01264416362e34d23520fda797fbc17f3905ed1318585600401546040516105b692919061173e565b60405180910390a4505050565b600080600083815260200190815260200160002090506001816003015414610620576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610617906117a7565b60405180910390fd5b4281600201541115610667576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161065e906117c7565b60405180910390fd5b600281600301819055508060050160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc82600001549081150290604051600060405180830381858888f193505050501580156106df573d6000803e3d6000fd5b508060060160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168160050160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16837f6fa50d56c31f3efe0cb6ff06232bffce8fe8c4155e3cbb6f2d79dd12631c2522846004015460405161078a9190611723565b60405180910390a45050565b600081565b600281565b600381565b600181565b600033905060003490504289116107f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ed906117c7565b60405180910390fd5b60008111610839576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610830906117e7565b60405180910390fd5b600060028389848c8e604051602001610856959493929190611670565b60405160208183030381529060405260405161087291906116ea565b602060405180830381855afa15801561088f573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052506108b2919081019061127a565b90506000806000838152602001908152602001600020600301541461090c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090390611767565b60405180910390fd5b6040518061012001604052808381526020018c81526020018b8152602001600181526020018a81526020018473ffffffffffffffffffffffffffffffffffffffff1681526020018973ffffffffffffffffffffffffffffffffffffffff16815260200188888080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050815260200186868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050815250600080838152602001908152602001600020600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a08201518160050160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060c08201518160060160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060e0820151816007019080519060200190610aef929190610fcf565b50610100820151816008019080519060200190610b0d929190610fcf565b509050508773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16827f767d0ffbc3d16cc51fc05770a22976e4b0fda9198e37878b76979429b2d5d88c858f8f8f8e8e8e8e604051610b7d989796959493929190611822565b60405180910390a45050505050505050505050565b60006020528060005260406000206000915090508060000154908060010154908060020154908060030154908060040154908060050160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060060160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806007018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610ca85780601f10610c7d57610100808354040283529160200191610ca8565b820191906000526020600020905b815481529060010190602001808311610c8b57829003601f168201915b505050505090806008018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610d465780601f10610d1b57610100808354040283529160200191610d46565b820191906000526020600020905b815481529060010190602001808311610d2957829003601f168201915b5050505050905089565b6000610d5a61104f565b6000808481526020019081526020016000206040518061012001604052908160008201548152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016005820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016006820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600782018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610eef5780601f10610ec457610100808354040283529160200191610eef565b820191906000526020600020905b815481529060010190602001808311610ed257829003601f168201915b50505050508152602001600882018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610f915780601f10610f6657610100808354040283529160200191610f91565b820191906000526020600020905b815481529060010190602001808311610f7457829003601f168201915b505050505081525050905060018160600151148015610fb35750428160400151105b15610fc15760049150610fc9565b806060015191505b50919050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061101057805160ff191683800117855561103e565b8280016001018555821561103e579182015b8281111561103d578251825591602001919060010190611022565b5b50905061104b91906110ca565b5090565b6040518061012001604052806000815260200160008152602001600081526020016000815260200160008019168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160608152602001606081525090565b6110ec91905b808211156110e85760008160009055506001016110d0565b5090565b90565b6000813590506110fe81611ace565b92915050565b600082601f83011261111557600080fd5b81356111286111238261195d565b611930565b9150818183526020840193506020810190508385602084028201111561114d57600080fd5b60005b8381101561117d57816111638882611187565b845260208401935060208301925050600181019050611150565b5050505092915050565b60008135905061119681611ae5565b92915050565b6000815190506111ab81611ae5565b92915050565b60008083601f8401126111c357600080fd5b8235905067ffffffffffffffff8111156111dc57600080fd5b6020830191508360018202830111156111f457600080fd5b9250929050565b60008135905061120a81611afc565b92915050565b60006020828403121561122257600080fd5b600082013567ffffffffffffffff81111561123c57600080fd5b61124884828501611104565b91505092915050565b60006020828403121561126357600080fd5b600061127184828501611187565b91505092915050565b60006020828403121561128c57600080fd5b600061129a8482850161119c565b91505092915050565b600080604083850312156112b657600080fd5b60006112c485828601611187565b92505060206112d585828601611187565b9150509250929050565b60008060008060008060008060c0898b0312156112fb57600080fd5b60006113098b828c016111fb565b985050602061131a8b828c016111fb565b975050604061132b8b828c01611187565b965050606061133c8b828c016110ef565b955050608089013567ffffffffffffffff81111561135957600080fd5b6113658b828c016111b1565b945094505060a089013567ffffffffffffffff81111561138457600080fd5b6113908b828c016111b1565b92509250509295985092959890939650565b60006113ae838361163b565b60208301905092915050565b6113c3816119f0565b82525050565b6113da6113d5826119f0565b611a78565b82525050565b60006113eb82611995565b6113f581856119c3565b935061140083611985565b8060005b8381101561143157815161141888826113a2565b9750611423836119b6565b925050600181019050611404565b5085935050505092915050565b61144781611a02565b82525050565b61145e61145982611a02565b611a8a565b82525050565b600061146f826119a0565b61147981856119d4565b9350611489818560208601611a45565b80840191505092915050565b60006114a183856119df565b93506114ae838584611a36565b6114b783611ab0565b840190509392505050565b60006114cd826119ab565b6114d781856119df565b93506114e7818560208601611a45565b6114f081611ab0565b840191505092915050565b6000611508600b836119df565b91507f535741505f4558495354530000000000000000000000000000000000000000006000830152602082019050919050565b6000611548600e836119df565b91507f494e56414c49445f5345435245540000000000000000000000000000000000006000830152602082019050919050565b6000611588600f836119df565b91507f535741505f4e4f545f41435449564500000000000000000000000000000000006000830152602082019050919050565b60006115c8600c836119df565b91507f494e56414c49445f54494d4500000000000000000000000000000000000000006000830152602082019050919050565b6000611608600e836119df565b91507f494e56414c49445f414d4f554e540000000000000000000000000000000000006000830152602082019050919050565b61164481611a2c565b82525050565b61165381611a2c565b82525050565b61166a61166582611a2c565b611aa6565b82525050565b600061167c82886113c9565b60148201915061168c82876113c9565b60148201915061169c8286611659565b6020820191506116ac828561144d565b6020820191506116bc8284611659565b6020820191508190509695505050505050565b60006116db828461144d565b60208201915081905092915050565b60006116f68284611464565b915081905092915050565b6000602082019050818103600083015261171b81846113e0565b905092915050565b6000602082019050611738600083018461143e565b92915050565b6000604082019050611753600083018561143e565b611760602083018461143e565b9392505050565b60006020820190508181036000830152611780816114fb565b9050919050565b600060208201905081810360008301526117a08161153b565b9050919050565b600060208201905081810360008301526117c08161157b565b9050919050565b600060208201905081810360008301526117e0816115bb565b9050919050565b60006020820190508181036000830152611800816115fb565b9050919050565b600060208201905061181c600083018461164a565b92915050565b600060c082019050611837600083018b61164a565b611844602083018a61164a565b611851604083018961164a565b61185e606083018861143e565b8181036080830152611871818688611495565b905081810360a0830152611886818486611495565b90509998505050505050505050565b6000610120820190506118ab600083018c61164a565b6118b8602083018b61164a565b6118c5604083018a61164a565b6118d2606083018961164a565b6118df608083018861143e565b6118ec60a08301876113ba565b6118f960c08301866113ba565b81810360e083015261190b81856114c2565b905081810361010083015261192081846114c2565b90509a9950505050505050505050565b6000604051905081810181811067ffffffffffffffff8211171561195357600080fd5b8060405250919050565b600067ffffffffffffffff82111561197457600080fd5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006119fb82611a0c565b9050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015611a63578082015181840152602081019050611a48565b83811115611a72576000848401525b50505050565b6000611a8382611a94565b9050919050565b6000819050919050565b6000611a9f82611ac1565b9050919050565b6000819050919050565b6000601f19601f8301169050919050565b60008160601b9050919050565b611ad7816119f0565b8114611ae257600080fd5b50565b611aee81611a02565b8114611af957600080fd5b50565b611b0581611a2c565b8114611b1057600080fd5b5056fea365627a7a72315820a86d30a8cc0b92853468189a4db0ebf3be78c3fb35466edc38e8a39dd268dee96c6578706572696d656e74616cf564736f6c63430005110040

Verified Source Code Partial Match

Compiler: v0.5.17+commit.d19bba13 EVM: istanbul Optimization: No
HashTimeLock.sol 155 lines
pragma solidity ^0.5.0;
pragma experimental ABIEncoderV2;

contract HashTimeLock {

    mapping(bytes32 => LockContract) public contracts;

    //                   / - WITHDRAWN
    // INVALID - ACTIVE |
    //                   \ - EXPIRED - REFUNDED

    uint256 public constant INVALID = 0; // Uninitialized  swap -> can go to ACTIVE
    uint256 public constant ACTIVE = 1; // Active swap -> can go to WITHDRAWN or EXPIRED
    uint256 public constant REFUNDED = 2; // Swap is refunded -> final state.
    uint256 public constant WITHDRAWN = 3; // Swap is withdrawn -> final state.
    uint256 public constant EXPIRED = 4; // Swap is expired -> can go to REFUNDED

    struct LockContract {
        uint256 inputAmount;
        uint256 outputAmount;
        uint256 expiration;
        uint256 status;
        bytes32 hashLock;
        address payable sender;
        address payable receiver;
        string outputNetwork;
        string outputAddress;
    }

    event Withdraw(
        bytes32 indexed id,
        bytes32 secret,
        bytes32 hashLock,
        address indexed sender,
        address indexed receiver
    );

    event Refund(
        bytes32 indexed id,
        bytes32 hashLock,
        address indexed sender,
        address indexed receiver
    );

    event NewContract(
        uint256 inputAmount,
        uint256 outputAmount,
        uint256 expiration,
        bytes32 indexed id,
        bytes32 hashLock,
        address indexed sender,
        address indexed receiver,
        string outputNetwork,
        string outputAddress
    );

    function newContract(
        uint256 outputAmount,
        uint256 expiration,
        bytes32 hashLock,
        address payable receiver,
        string calldata outputNetwork,
        string calldata outputAddress
    ) external payable {
        address payable sender = msg.sender;
        uint256 inputAmount = msg.value;

        require(expiration > block.timestamp, 'INVALID_TIME');

        require(inputAmount > 0, 'INVALID_AMOUNT');

        bytes32 id = sha256(
            abi.encodePacked(sender, receiver, inputAmount, hashLock, expiration)
        );

        require(contracts[id].status == INVALID, "SWAP_EXISTS");

        contracts[id] = LockContract(
            inputAmount,
            outputAmount,
            expiration,
            ACTIVE,
            hashLock,
            sender,
            receiver,
            outputNetwork,
            outputAddress
        );

        emit NewContract(
            inputAmount,
            outputAmount,
            expiration,
            id,
            hashLock,
            sender,
            receiver,
            outputNetwork,
            outputAddress
        );
    }

    function withdraw(bytes32 id, bytes32 secret) external {
        LockContract storage c = contracts[id];

        require(c.status == ACTIVE, "SWAP_NOT_ACTIVE");

        require(c.expiration > block.timestamp, "INVALID_TIME");

        require(c.hashLock == sha256(abi.encodePacked(secret)),"INVALID_SECRET");

        c.status = WITHDRAWN;

        c.receiver.transfer(c.inputAmount);

        emit Withdraw(id, secret, c.hashLock, c.sender, c.receiver);
    }

    function refund(bytes32 id) external {
        LockContract storage c = contracts[id];

        require(c.status == ACTIVE, "SWAP_NOT_ACTIVE");

        require(c.expiration <= block.timestamp, "INVALID_TIME");

        c.status = REFUNDED;

        c.sender.transfer(c.inputAmount);

        emit Refund(id, c.hashLock, c.sender, c.receiver);
    }

    function getStatus(bytes32[] memory ids) public view returns (uint256[] memory) {
        uint256[] memory result = new uint256[](ids.length);

        for (uint256 index = 0; index < ids.length; index++) {
            result[index] = getSingleStatus(ids[index]);
        }

        return result;
    }

    function getSingleStatus(bytes32 id) public view returns (uint256 result) {
        LockContract memory tempContract = contracts[id];

        if (
            tempContract.status == ACTIVE &&
            tempContract.expiration < block.timestamp
        ) {
            result = EXPIRED;
        } else {
            result = tempContract.status;
        }
    }
}

Read Contract

ACTIVE 0xc90bd047 → uint256
EXPIRED 0x414ac85b → uint256
INVALID 0x7fcce2a9 → uint256
REFUNDED 0x94e15c8f → uint256
WITHDRAWN 0xaf78feef → uint256
contracts 0xec56a373 → uint256, uint256, uint256, uint256, bytes32, address, address, string, string
getSingleStatus 0xfbdf3b43 → uint256
getStatus 0x2f21a663 → uint256[]

Write Contract 3 functions

These functions modify contract state and require a wallet transaction to execute.

newContract 0xd3632095
uint256 outputAmount
uint256 expiration
bytes32 hashLock
address receiver
string outputNetwork
string outputAddress
refund 0x7249fbb6
bytes32 id
withdraw 0x63615149
bytes32 id
bytes32 secret

Top Interactions

Recent Transactions

CSV View All 38 Transactions →
|
Hash Method Block Age From/To Value Txn Fee Type
0x88a0c9ea...373178 0x63615149 10,691,868 IN 0xf0756e18...f026 0 ETH 0.00649936 ETH Legacy
0x0d8d6d65...4191a9 0xd3632095 10,691,864 IN 0x8f1ee4c6...EBFE 0.100000 ETH 0.03642562 ETH Legacy
0x6791e94e...4d4bda 0x63615149 10,659,967 IN 0x54F994EE...ab2C 0 ETH 0.00696360 ETH Legacy
0x7921479a...610ee2 0xd3632095 10,659,948 IN 0xb2cB83E2...A1A9 4.2039 ETH 0.04206577 ETH Legacy
0x599ef03f...7060fe 0x7249fbb6 10,659,811 IN 0xb2cB83E2...A1A9 0 ETH 0.00641985 ETH Legacy
0xdd6f7c40...93fff6 0xd3632095 10,659,213 IN 0xb2cB83E2...A1A9 1.0433 ETH 0.05202940 ETH Legacy
0x6770f078...5a96e2 0x63615149 10,658,680 IN 0xb2cB83E2...A1A9 0 ETH 0.00749952 ETH Legacy
0xec6e7838...cc4e64 Fail 0x63615149 10,658,680 IN 0xb2cB83E2...A1A9 0 ETH 0.00277078 ETH Legacy
0x709f0653...c7eb36 Fail 0x63615149 10,658,680 IN 0xb2cB83E2...A1A9 0 ETH 0.00277078 ETH Legacy
0xf6959218...0201d3 Fail 0x63615149 10,658,680 IN 0xb2cB83E2...A1A9 0 ETH 0.00277078 ETH Legacy