ETH Price: $2,004.17 (-0.12%)

Contract

0xCFf782DbB92f187AA3df6823C8E690c4F128Ef41
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Withdraw179429052023-08-18 16:36:47587 days ago1692376607IN
0xCFf782Db...4F128Ef41
0 ETH0.0019937631.66372267
Withdraw174654502023-06-12 17:27:47653 days ago1686590867IN
0xCFf782Db...4F128Ef41
0 ETH0.0012195617.99643547
Withdraw169864922023-04-06 1:49:59721 days ago1680745799IN
0xCFf782Db...4F128Ef41
0 ETH0.0022337132.96175549
Withdraw165524832023-02-04 2:36:47782 days ago1675478207IN
0xCFf782Db...4F128Ef41
0 ETH0.0017151125.30897147
Withdraw161159342022-12-05 3:32:35843 days ago1670211155IN
0xCFf782Db...4F128Ef41
0 ETH0.0008548112.61395863
Withdraw156798902022-10-05 5:43:11904 days ago1664948591IN
0xCFf782Db...4F128Ef41
0 ETH0.000452096.67137576
Withdraw152797282022-08-05 2:49:08965 days ago1659667748IN
0xCFf782Db...4F128Ef41
0 ETH0.000652439.62762737
Withdraw149060132022-06-05 0:04:551026 days ago1654387495IN
0xCFf782Db...4F128Ef41
0 ETH0.002920543.09620125
Withdraw145230992022-04-05 1:53:161087 days ago1649123596IN
0xCFf782Db...4F128Ef41
0 ETH0.0049782773.46163608
Withdraw141344052022-02-03 17:36:581147 days ago1643909818IN
0xCFf782Db...4F128Ef41
0 ETH0.00745861110.06257368
Withdraw137368382021-12-04 0:52:531209 days ago1638579173IN
0xCFf782Db...4F128Ef41
0 ETH0.006575997.03701786
Withdraw133493442021-10-04 0:03:251270 days ago1633305805IN
0xCFf782Db...4F128Ef41
0 ETH0.0037232554.94202561
Withdraw129559822021-08-04 2:11:281331 days ago1628043088IN
0xCFf782Db...4F128Ef41
0 ETH0.0019572734
Withdraw125646302021-06-04 0:05:511392 days ago1622765151IN
0xCFf782Db...4F128Ef41
0 ETH0.0034540260
Withdraw121697962021-04-04 0:14:381453 days ago1617495278IN
0xCFf782Db...4F128Ef41
0 ETH0.00741198146
Withdraw117800682021-02-03 0:35:271513 days ago1612312527IN
0xCFf782Db...4F128Ef41
0 ETH0.00722493202
Withdraw114686642020-12-17 5:04:471561 days ago1608181487IN
0xCFf782Db...4F128Ef41
0 ETH0.0042205118
Withdraw110964472020-10-21 1:10:291618 days ago1603242629IN
0xCFf782Db...4F128Ef41
0 ETH0.00548154108
Deposit107799772020-09-02 5:43:121667 days ago1599025392IN
0xCFf782Db...4F128Ef41
0 ETH0.58124832480

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

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

Contract Name:
TimeLock

Compiler Version
v0.6.0+commit.26b70077

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2020-09-01
*/

// contracts/OffshiftVesting.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.6.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

contract TimeLock {
    IERC20 token;

    struct LockBoxStruct {
        address beneficiary;
        uint balance;
        uint releaseTime;
    }

    LockBoxStruct[] public lockBoxStructs; // This could be a mapping by address, but these numbered lockBoxes support possibility of multiple tranches per address

    event LogLockBoxDeposit(address sender, uint amount, uint releaseTime);
    event LogLockBoxWithdrawal(address receiver, uint amount);

    constructor(address tokenContract) public {
        token = IERC20(tokenContract);
    }

    function deposit(address beneficiary, uint totalAmount, uint trenchAmount, uint firstRelease, uint releaseStride) public returns(bool success) {
        require(token.transferFrom(msg.sender, address(this), totalAmount));
        LockBoxStruct memory l;
        l.beneficiary = beneficiary;
        l.balance = trenchAmount;
        l.releaseTime = firstRelease;
        lockBoxStructs.push(l);
        for (uint i = 1; i < 18; ++i) {
            uint time = firstRelease + (releaseStride * i);
            l.releaseTime = time;
            lockBoxStructs.push(l);
            emit LogLockBoxDeposit(msg.sender, trenchAmount, time);
        }
        return true;
    }

    function withdraw(uint lockBoxNumber) public returns(bool success) {
        LockBoxStruct storage l = lockBoxStructs[lockBoxNumber];
        require(l.beneficiary == msg.sender);
        require(l.releaseTime <= now);
        uint amount = l.balance;
        l.balance = 0;
        emit LogLockBoxWithdrawal(msg.sender, amount);
        require(token.transfer(msg.sender, amount));
        return true;
    }

}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"tokenContract","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"releaseTime","type":"uint256"}],"name":"LogLockBoxDeposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"receiver","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"LogLockBoxWithdrawal","type":"event"},{"inputs":[{"internalType":"address","name":"beneficiary","type":"address"},{"internalType":"uint256","name":"totalAmount","type":"uint256"},{"internalType":"uint256","name":"trenchAmount","type":"uint256"},{"internalType":"uint256","name":"firstRelease","type":"uint256"},{"internalType":"uint256","name":"releaseStride","type":"uint256"}],"name":"deposit","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"lockBoxStructs","outputs":[{"internalType":"address","name":"beneficiary","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"releaseTime","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"lockBoxNumber","type":"uint256"}],"name":"withdraw","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100415760003560e01c80632e1a7d4d146100465780633d8cf56f1461008c5780636893680914610108575b600080fd5b6100726004803603602081101561005c57600080fd5b810190808035906020019092919050505061018c565b604051808215151515815260200191505060405180910390f35b6100b8600480360360208110156100a257600080fd5b810190808035906020019092919050505061038e565b604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001935050505060405180910390f35b610172600480360360a081101561011e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190929190803590602001909291905050506103e5565b604051808215151515815260200191505060405180910390f35b6000806001838154811061019c57fe5b906000526020600020906003020190503373ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461020857600080fd5b428160020154111561021957600080fd5b600081600101549050600082600101819055507f4ee0bce2f3dfb53dc0564ce5a7e1934da5c7866b06ba77f86c397b7b976a31443382604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a16000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561033f57600080fd5b505af1158015610353573d6000803e3d6000fd5b505050506040513d602081101561036957600080fd5b810190808051906020019092919050505061038357600080fd5b600192505050919050565b6001818154811061039b57fe5b90600052602060002090600302016000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154905083565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330886040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b1580156104c357600080fd5b505af11580156104d7573d6000803e3d6000fd5b505050506040513d60208110156104ed57600080fd5b810190808051906020019092919050505061050757600080fd5b61050f61071e565b86816000019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508481602001818152505083816040018181525050600181908060018154018082558091505060019003906000526020600020906003020160009091909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602082015181600101556040820151816002015550506000600190505b601281101561070f5760008185028601905080836040018181525050600183908060018154018082558091505060019003906000526020600020906003020160009091909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602082015181600101556040820151816002015550507fcf2fafad2e64ab2802e3c57893f71b2645379029535db982282b4b24f4ff567a338883604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001935050505060405180910390a1508060010190506105eb565b50600191505095945050505050565b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160008152509056fea26469706673582212200b02afe721eb16296f97df0cefc5805a1c9f7496806aa48a35e494687fa4b14164736f6c63430006000033

Deployed Bytecode Sourcemap

2807:1685:0:-:0;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2807:1685:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4069:418;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4069:418:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2970:37;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2970:37:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3378:683;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;3378:683:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4069:418;4122:12;4147:23;4173:14;4188:13;4173:29;;;;;;;;;;;;;;;;;;4147:55;;4238:10;4221:27;;:1;:13;;;;;;;;;;;;:27;;;4213:36;;;;;;4285:3;4268:1;:13;;;:20;;4260:29;;;;;;4300:11;4314:1;:9;;;4300:23;;4346:1;4334;:9;;:13;;;;4363:40;4384:10;4396:6;4363:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;4422:5;;;;;;;;;;;:14;;;4437:10;4449:6;4422:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4422:34:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4422:34:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4422:34:0;;;;;;;;;;;;;;;;4414:43;;;;;;4475:4;4468:11;;;;4069:418;;;:::o;2970:37::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3378:683::-;3507:12;3540:5;;;;;;;;;;;:18;;;3559:10;3579:4;3586:11;3540:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3540:58:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3540:58:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3540:58:0;;;;;;;;;;;;;;;;3532:67;;;;;;3610:22;;:::i;:::-;3659:11;3643:1;:13;;:27;;;;;;;;;;;3693:12;3681:1;:9;;:24;;;;;3732:12;3716:1;:13;;:28;;;;;3755:14;3775:1;3755:22;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;3755:22:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3793:6;3802:1;3793:10;;3788:244;3809:2;3805:1;:6;3788:244;;;3833:9;3877:1;3861:13;:17;3845:12;:34;3833:46;;3910:4;3894:1;:13;;:20;;;;;3929:14;3949:1;3929:22;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;3929:22:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3971:49;3989:10;4001:12;4015:4;3971:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3788:244;3813:3;;;;;3788:244;;;;4049:4;4042:11;;;3378:683;;;;;;;:::o;2807:1685::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o

Swarm Source

ipfs://0b02afe721eb16296f97df0cefc5805a1c9f7496806aa48a35e494687fa4b141

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
Loading...
Loading
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.