Contract 0x64de4bc49dba9990a16fc6f8c4e23cb01a086ede 1

 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x1d82dfd9040c6ef92843cf3fca40c5d482a2d40e09e6c737f77dac10e80d403fClaim632742552023-05-29 5:54:2019 hrs 15 mins ago0x19145b49fd5e4c345822a4a83fe5543c5bbb785c IN  0x64de4bc49dba9990a16fc6f8c4e23cb01a086ede0 FTM0.015201984
0xa8009494a4493f411200acf7cf335bed360ff2fe6e8ba9d6335b9d810e3f3188Claim632136042023-05-28 5:16:441 day 19 hrs ago0x19145b49fd5e4c345822a4a83fe5543c5bbb785c IN  0x64de4bc49dba9990a16fc6f8c4e23cb01a086ede0 FTM0.005383832
0x7678ac793fd5aef2b885bbf9457df8e88dc5ec4d4efcbb1a867163e0c6f7ecebClaim631867042023-05-27 16:29:052 days 8 hrs ago0x19145b49fd5e4c345822a4a83fe5543c5bbb785c IN  0x64de4bc49dba9990a16fc6f8c4e23cb01a086ede0 FTM0.004671443
0x275cb1616790b2df99a839a9bb7cb6c3409b5bf02eb9a6a4708f65c427e8fd51Claim631015272023-05-26 6:12:223 days 18 hrs ago0x19145b49fd5e4c345822a4a83fe5543c5bbb785c IN  0x64de4bc49dba9990a16fc6f8c4e23cb01a086ede0 FTM0.004131690232
0x6ed41197d7d21ef786d41c7f4b38140ce77a047fb399c94482dc1faeae7b5662Claim630330542023-05-25 6:55:474 days 18 hrs ago0x19145b49fd5e4c345822a4a83fe5543c5bbb785c IN  0x64de4bc49dba9990a16fc6f8c4e23cb01a086ede0 FTM0.008725786878
0xfcb6096ddaae69a7065a54cdf5dd57bc7464de6a13602de456a45af51d837030Claim629125092023-05-23 15:34:136 days 9 hrs ago0x19145b49fd5e4c345822a4a83fe5543c5bbb785c IN  0x64de4bc49dba9990a16fc6f8c4e23cb01a086ede0 FTM0.08947001
0x1e1d9dbdb3f3dca15cca4cc316e5843db75fb6dac0684064808940e27f4c6261Claim628396382023-05-22 5:40:577 days 19 hrs ago0x19145b49fd5e4c345822a4a83fe5543c5bbb785c IN  0x64de4bc49dba9990a16fc6f8c4e23cb01a086ede0 FTM0.005304859
0x7b66b3099246cbdb5a1b7a96ab3bccce9ac00467b5049c116dba4101b2a92ce6Claim627870822023-05-21 4:41:188 days 20 hrs ago0x19145b49fd5e4c345822a4a83fe5543c5bbb785c IN  0x64de4bc49dba9990a16fc6f8c4e23cb01a086ede0 FTM0.055186369
0x49c205b64e08fc8878eca872a7d4a3a04083a84563eb17a6c00c0a05e2cde803Claim627164762023-05-20 5:25:459 days 19 hrs ago0x19145b49fd5e4c345822a4a83fe5543c5bbb785c IN  0x64de4bc49dba9990a16fc6f8c4e23cb01a086ede0 FTM0.005067328
0x73d6ce02b001c56873290c926607d0db7b8c76f5582a0a366b210ff33adbef85Claim626493012023-05-19 6:07:4010 days 19 hrs ago0x19145b49fd5e4c345822a4a83fe5543c5bbb785c IN  0x64de4bc49dba9990a16fc6f8c4e23cb01a086ede0 FTM0.041013686
0xf79710c874bca07a70116bbc5c6824da8e5473268db3f2e1eca703d001cefc7cClaim625588922023-05-18 4:15:1311 days 20 hrs ago0x19145b49fd5e4c345822a4a83fe5543c5bbb785c IN  0x64de4bc49dba9990a16fc6f8c4e23cb01a086ede0 FTM0.035549455677
0xff6f2ca832ed2e32142bf97bc42c02dda06b96e02fad9cfcccb340baa83e305bClaim624894442023-05-17 4:56:1012 days 20 hrs ago0x19145b49fd5e4c345822a4a83fe5543c5bbb785c IN  0x64de4bc49dba9990a16fc6f8c4e23cb01a086ede0 FTM0.005892942024
0xb2223a6949045480e075575b6c6c6318e9871f4573b2617c936129c5f79949dcClaim624161892023-05-16 4:38:3613 days 20 hrs ago0x19145b49fd5e4c345822a4a83fe5543c5bbb785c IN  0x64de4bc49dba9990a16fc6f8c4e23cb01a086ede0 FTM0.005254789857
0x1a81961eeabd6afcff37f306be64a5c0295296ea5236b2d09d0453289078ba96Claim623307812023-05-15 3:24:2614 days 21 hrs ago0x19145b49fd5e4c345822a4a83fe5543c5bbb785c IN  0x64de4bc49dba9990a16fc6f8c4e23cb01a086ede0 FTM0.006182639579
0xef0f0f88c6065e2eafeaa2fa00d1eae2946db7dca98a04d0d3b2fa5c88d9fbf3Claim622462222023-05-14 3:59:3615 days 21 hrs ago0x19145b49fd5e4c345822a4a83fe5543c5bbb785c IN  0x64de4bc49dba9990a16fc6f8c4e23cb01a086ede0 FTM0.005995348466
0x51c12c25ec7048b91cdc63ce4c645e39161c0f0ddcecf57c8430121fe0cd5b98Claim621693702023-05-13 4:35:4116 days 20 hrs ago0x19145b49fd5e4c345822a4a83fe5543c5bbb785c IN  0x64de4bc49dba9990a16fc6f8c4e23cb01a086ede0 FTM0.006722312061
0x0e2ee371383e0eb422d66b731a27007a17b24b3029d94e2ca2c11f316a40d7f3Claim620908212023-05-12 6:10:2817 days 18 hrs ago0x19145b49fd5e4c345822a4a83fe5543c5bbb785c IN  0x64de4bc49dba9990a16fc6f8c4e23cb01a086ede0 FTM0.009958032
0xaaa68e544397bf8bc1f44183a30f676f959ed0e2649399faa2e916382b86f4e7Claim619899402023-05-11 4:18:2718 days 20 hrs ago0x19145b49fd5e4c345822a4a83fe5543c5bbb785c IN  0x64de4bc49dba9990a16fc6f8c4e23cb01a086ede0 FTM0.015174144
0x4e11407069ff8adbf9b3a3cadc514e2e7b3a260f4857dc9927c3e0d91f48cd96Claim619039172023-05-10 6:01:5119 days 19 hrs ago0x19145b49fd5e4c345822a4a83fe5543c5bbb785c IN  0x64de4bc49dba9990a16fc6f8c4e23cb01a086ede0 FTM0.006638688
0xddb4ce0701e5473e01bf9257a549ef42ee30b1fb9f47c2cec328ee0af19ef3dbClaim618202312023-05-09 4:55:4120 days 20 hrs ago0x19145b49fd5e4c345822a4a83fe5543c5bbb785c IN  0x64de4bc49dba9990a16fc6f8c4e23cb01a086ede0 FTM0.010436776
0x1e3062844968d7b2b7d5ccdf347e2d3e5138a8705d9bb9705297cd775f0a46daClaim617444032023-05-08 6:20:4121 days 18 hrs ago0x19145b49fd5e4c345822a4a83fe5543c5bbb785c IN  0x64de4bc49dba9990a16fc6f8c4e23cb01a086ede0 FTM0.010175568
0xf4539e2981f4922035deaf7d2dcec28ad4256c8379da69f73b95a51a29299b04Claim616640162023-05-07 5:45:1522 days 19 hrs ago0x19145b49fd5e4c345822a4a83fe5543c5bbb785c IN  0x64de4bc49dba9990a16fc6f8c4e23cb01a086ede0 FTM0.033904728
0x4a3d2d1901f004617f098d4a27e714b0166a127df4a99135109b9fd04f2cd27dClaim615860982023-05-06 5:24:1623 days 19 hrs ago0x19145b49fd5e4c345822a4a83fe5543c5bbb785c IN  0x64de4bc49dba9990a16fc6f8c4e23cb01a086ede0 FTM0.036886434
0x3bbbeee15808d7b9a05655f31a0289602c260b2a5a30ae29394837ca4793b95fClaim615106122023-05-05 5:41:1824 days 19 hrs ago0x19145b49fd5e4c345822a4a83fe5543c5bbb785c IN  0x64de4bc49dba9990a16fc6f8c4e23cb01a086ede0 FTM0.00750974489
0x98716bdea6faae5b93f4eeba35d696933e7d3cc786937e19e89138f44c914200Claim614389282023-05-04 5:20:5225 days 19 hrs ago0x19145b49fd5e4c345822a4a83fe5543c5bbb785c IN  0x64de4bc49dba9990a16fc6f8c4e23cb01a086ede0 FTM0.015361194
[ Download CSV Export 
Latest 1 internal transaction
Parent Txn Hash Block From To Value
0xb5d506f2fbea907f7c1474719934b113bbb12c386cab20e007f5e6c16fdf7d0c551228122023-02-05 8:27:34113 days 16 hrs ago 0x9e462d5603bb983b74e941ebd5ce9ea76f3a9e1e  Contract Creation0 FTM
[ Download CSV Export 
Loading

Minimal Proxy Contract for 0x7dc8fbd9be15c5a0217bc8272aab6309938e2dff

Similar Match Source Code (Similar Match)
Note: This contract matches the deployed ByteCode of the Source Code for Contract 0x299237c947CE36aAC8f1226bEA4d050785e68fB5

Contract Name:
Vyper_contract

Compiler Version
vyper:0.2.16

Optimization Enabled:
N/A

Other Settings:
MIT license
Decompile ByteCode

Contract Source Code (Vyper language format)

# @version 0.2.16
"""
@title Simple Vesting Escrow
@author Curve Finance, Yearn Finance
@license MIT
@notice Vests ERC20 tokens for a single address
@dev Intended to be deployed many times via `VotingEscrowFactory`
"""

from vyper.interfaces import ERC20

event Fund:
    recipient: indexed(address)
    amount: uint256

event Claim:
    recipient: indexed(address)
    claimed: uint256

event CommitOwnership:
    admin: address

event ApplyOwnership:
    admin: address

recipient: public(address)
token: public(ERC20)
start_time: public(uint256)
end_time: public(uint256)
cliff_length: public(uint256)
total_locked: public(uint256)
total_claimed: public(uint256)
disabled_at: public(uint256)
initialized: public(bool)

admin: public(address)
future_admin: public(address)

@external
def __init__():
    # ensure that the original contract cannot be initialized
    self.initialized = True


@external
@nonreentrant('lock')
def initialize(
    admin: address,
    token: address,
    recipient: address,
    amount: uint256,
    start_time: uint256,
    end_time: uint256,
    cliff_length: uint256,
) -> bool:
    """
    @notice Initialize the contract.
    @dev This function is seperate from `__init__` because of the factory pattern
         used in `VestingEscrowFactory.deploy_vesting_contract`. It may be called
         once per deployment.
    @param admin Admin address
    @param token Address of the ERC20 token being distributed
    @param recipient Address to vest tokens for
    @param amount Amount of tokens being vested for `recipient`
    @param start_time Epoch time at which token distribution starts
    @param end_time Time until everything should be vested
    @param cliff_length Duration after which the first portion vests
    """
    assert not self.initialized  # dev: can only initialize once
    self.initialized = True

    self.token = ERC20(token)
    self.admin = admin
    self.start_time = start_time
    self.end_time = end_time
    self.cliff_length = cliff_length

    assert self.token.transferFrom(msg.sender, self, amount)  # dev: could not fund escrow

    self.recipient = recipient
    self.disabled_at = end_time  # Set to maximum time
    self.total_locked = amount
    log Fund(recipient, amount)

    return True


@internal
@view
def _total_vested_at(time: uint256 = block.timestamp) -> uint256:
    start: uint256 = self.start_time
    end: uint256 = self.end_time
    locked: uint256 = self.total_locked
    if time < start + self.cliff_length:
        return 0
    return min(locked * (time - start) / (end - start), locked)


@internal
@view
def _unclaimed(time: uint256 = block.timestamp) -> uint256:
    return self._total_vested_at(time) - self.total_claimed


@external
@view
def unclaimed() -> uint256:
    """
    @notice Get the number of unclaimed, vested tokens for recipient
    """
    # NOTE: if `rug_pull` is activated, limit by the activation timestamp
    return self._unclaimed(min(block.timestamp, self.disabled_at))


@internal
@view
def _locked(time: uint256 = block.timestamp) -> uint256:
    return self.total_locked - self._total_vested_at(time)


@external
@view
def locked() -> uint256:
    """
    @notice Get the number of locked tokens for recipient
    """
    # NOTE: if `rug_pull` is activated, limit by the activation timestamp
    return self._locked(min(block.timestamp, self.disabled_at))


@external
def claim(beneficiary: address = msg.sender, amount: uint256 = MAX_UINT256):
    """
    @notice Claim tokens which have vested
    @param beneficiary Address to transfer claimed tokens to
    @param amount Amount of tokens to claim
    """
    assert msg.sender == self.recipient  # dev: not recipient

    claim_period_end: uint256 = min(block.timestamp, self.disabled_at)
    claimable: uint256 = min(self._unclaimed(claim_period_end), amount)
    self.total_claimed += claimable

    assert self.token.transfer(beneficiary, claimable)
    log Claim(beneficiary, claimable)


@external
def commit_transfer_ownership(addr: address):
    """
    @notice Transfer ownership of the contract to `addr`
    @param addr Address to have ownership transferred to
    """
    assert msg.sender == self.admin  # dev: admin only
    self.future_admin = addr
    log CommitOwnership(addr)


@external
def apply_transfer_ownership():
    """
    @notice Apply pending ownership transfer
    """
    assert msg.sender == self.future_admin  # dev: future admin only
    self.admin = msg.sender
    self.future_admin = ZERO_ADDRESS
    log ApplyOwnership(msg.sender)


@external
def renounce_ownership():
    """
    @notice Renounce admin control of the escrow
    """
    assert msg.sender == self.admin  # dev: admin only
    self.future_admin = ZERO_ADDRESS
    self.admin = ZERO_ADDRESS
    log ApplyOwnership(ZERO_ADDRESS)

@external
def collect_dust(token: address):
    assert msg.sender == self.recipient  # dev: recipient only
    assert (token != self.token.address or block.timestamp > self.disabled_at)
    assert ERC20(token).transfer(self.recipient, ERC20(token).balanceOf(self))

Contract ABI

[{"name":"Fund","inputs":[{"name":"recipient","type":"address","indexed":true},{"name":"amount","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"Claim","inputs":[{"name":"recipient","type":"address","indexed":true},{"name":"claimed","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"CommitOwnership","inputs":[{"name":"admin","type":"address","indexed":false}],"anonymous":false,"type":"event"},{"name":"ApplyOwnership","inputs":[{"name":"admin","type":"address","indexed":false}],"anonymous":false,"type":"event"},{"stateMutability":"nonpayable","type":"constructor","inputs":[],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"initialize","inputs":[{"name":"admin","type":"address"},{"name":"token","type":"address"},{"name":"recipient","type":"address"},{"name":"amount","type":"uint256"},{"name":"start_time","type":"uint256"},{"name":"end_time","type":"uint256"},{"name":"cliff_length","type":"uint256"}],"outputs":[{"name":"","type":"bool"}],"gas":402331},{"stateMutability":"view","type":"function","name":"unclaimed","inputs":[],"outputs":[{"name":"","type":"uint256"}],"gas":26060},{"stateMutability":"view","type":"function","name":"locked","inputs":[],"outputs":[{"name":"","type":"uint256"}],"gas":26120},{"stateMutability":"nonpayable","type":"function","name":"claim","inputs":[],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"claim","inputs":[{"name":"beneficiary","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"claim","inputs":[{"name":"beneficiary","type":"address"},{"name":"amount","type":"uint256"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"commit_transfer_ownership","inputs":[{"name":"addr","type":"address"}],"outputs":[],"gas":39565},{"stateMutability":"nonpayable","type":"function","name":"apply_transfer_ownership","inputs":[],"outputs":[],"gas":59493},{"stateMutability":"nonpayable","type":"function","name":"renounce_ownership","inputs":[],"outputs":[],"gas":44525},{"stateMutability":"nonpayable","type":"function","name":"collect_dust","inputs":[{"name":"token","type":"address"}],"outputs":[],"gas":14090},{"stateMutability":"view","type":"function","name":"recipient","inputs":[],"outputs":[{"name":"","type":"address"}],"gas":2628},{"stateMutability":"view","type":"function","name":"token","inputs":[],"outputs":[{"name":"","type":"address"}],"gas":2658},{"stateMutability":"view","type":"function","name":"start_time","inputs":[],"outputs":[{"name":"","type":"uint256"}],"gas":2688},{"stateMutability":"view","type":"function","name":"end_time","inputs":[],"outputs":[{"name":"","type":"uint256"}],"gas":2718},{"stateMutability":"view","type":"function","name":"cliff_length","inputs":[],"outputs":[{"name":"","type":"uint256"}],"gas":2748},{"stateMutability":"view","type":"function","name":"total_locked","inputs":[],"outputs":[{"name":"","type":"uint256"}],"gas":2778},{"stateMutability":"view","type":"function","name":"total_claimed","inputs":[],"outputs":[{"name":"","type":"uint256"}],"gas":2808},{"stateMutability":"view","type":"function","name":"disabled_at","inputs":[],"outputs":[{"name":"","type":"uint256"}],"gas":2838},{"stateMutability":"view","type":"function","name":"initialized","inputs":[],"outputs":[{"name":"","type":"bool"}],"gas":2868},{"stateMutability":"view","type":"function","name":"admin","inputs":[],"outputs":[{"name":"","type":"address"}],"gas":2898},{"stateMutability":"view","type":"function","name":"future_admin","inputs":[],"outputs":[{"name":"","type":"address"}],"gas":2928}]

Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Validator ID :
0 FTM

Amount Staked
0

Amount Delegated
0

Staking Total
0

Staking Start Epoch
0

Staking Start Time
0

Proof of Importance
0

Origination Score
0

Validation Score
0

Active
0

Online
0

Downtime
0 s
Address Amount claimed Rewards Created On Epoch Created On
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.