ETH Price: $1,982.35 (-4.47%)

Contract

0x95710BDE45C8D384A976Cc58Cc7a7e489576b098
 

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
Approve245940912026-03-05 21:54:5927 hrs ago1772747699IN
0x95710BDE...89576b098
0 ETH0.00000250.05452942
Approve245227082026-02-23 22:55:3511 days ago1771887335IN
0x95710BDE...89576b098
0 ETH0.000006990.15232696
Approve244585382026-02-15 0:12:3520 days ago1771114355IN
0x95710BDE...89576b098
0 ETH0.000001450.03172129
Approve244516732026-02-14 1:14:4720 days ago1771031687IN
0x95710BDE...89576b098
0 ETH0.000006690.14584171
Approve244315912026-02-11 5:58:5923 days ago1770789539IN
0x95710BDE...89576b098
0 ETH0.000002490.05437422
Approve244179332026-02-09 8:11:4725 days ago1770624707IN
0x95710BDE...89576b098
0 ETH0.000002180.04765973
Approve244008922026-02-06 22:53:3528 days ago1770418415IN
0x95710BDE...89576b098
0 ETH0.000012230.26653511
Approve244008562026-02-06 22:46:2328 days ago1770417983IN
0x95710BDE...89576b098
0 ETH0.000010390.22519218
Approve243937712026-02-05 23:00:5929 days ago1770332459IN
0x95710BDE...89576b098
0 ETH0.000076091.65787915
Approve240389362025-12-18 10:36:5978 days ago1766054219IN
0x95710BDE...89576b098
0 ETH0.00000180.03922461
Approve238779412025-11-25 19:40:11101 days ago1764099611IN
0x95710BDE...89576b098
0 ETH0.000008050.17441088
Approve237719492025-11-10 22:51:23116 days ago1762815083IN
0x95710BDE...89576b098
0 ETH0.000023430.50761846
Approve237281042025-11-04 19:41:35122 days ago1762285295IN
0x95710BDE...89576b098
0 ETH0.000124112.68871743
Approve237065052025-11-01 19:15:23125 days ago1762024523IN
0x95710BDE...89576b098
0 ETH0.000004390.09568466
Approve235218002025-10-06 22:47:23151 days ago1759790843IN
0x95710BDE...89576b098
0 ETH0.000017710.38373804
Approve235197842025-10-06 16:00:59151 days ago1759766459IN
0x95710BDE...89576b098
0 ETH0.000136252.95167554
Approve234905802025-10-02 14:04:47155 days ago1759413887IN
0x95710BDE...89576b098
0 ETH0.000075371.64224118
Approve234797962025-10-01 1:51:35156 days ago1759283495IN
0x95710BDE...89576b098
0 ETH0.000006170.13381254
Approve234699712025-09-29 16:54:23158 days ago1759164863IN
0x95710BDE...89576b098
0 ETH0.000381388.30967441
Approve234468322025-09-26 11:16:47161 days ago1758885407IN
0x95710BDE...89576b098
0 ETH0.000060151.3106036
Approve233927702025-09-18 21:52:47169 days ago1758232367IN
0x95710BDE...89576b098
0 ETH0.000013510.29282453
Approve233419972025-09-11 19:45:59176 days ago1757619959IN
0x95710BDE...89576b098
0 ETH0.000014740.31938049
Approve233356472025-09-10 22:28:35177 days ago1757543315IN
0x95710BDE...89576b098
0 ETH0.000007090.15465212
Deposit233355282025-09-10 22:04:35177 days ago1757541875IN
0x95710BDE...89576b098
0 ETH0.000078110.25255678
Approve233086102025-09-07 3:44:47180 days ago1757216687IN
0x95710BDE...89576b098
0 ETH0.000014660.55861496
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
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

Contract Source Code Verified (Exact Match)

Contract Name:
Liquid locker

Compiler Version
vyper:0.3.10

Optimization Enabled:
N/A

Other Settings:
default evmVersion, GNU AGPLv3 license

Contract Source Code (Vyper language format)

# @version 0.3.10
"""
@title Liquid locker
@author 1up
@license GNU AGPLv3
@notice
    Tokenization of protocol's voting escrow position.
    Mints a fixed amount of tokens per token locked in the voting escrow.
    Intended to be a proxy operator.
"""

from vyper.interfaces import ERC20
implements: ERC20

interface Proxy:
    def modify_lock(_amount: uint256, _unlock_time: uint256): nonpayable

interface YearnVotingEscrow:
    def locked(_account: address) -> uint256: view

token: public(immutable(ERC20))
voting_escrow: public(immutable(YearnVotingEscrow))
proxy: public(immutable(Proxy))

totalSupply: public(uint256)
balanceOf: public(HashMap[address, uint256])
allowance: public(HashMap[address, HashMap[address, uint256]])

decimals: public(constant(uint8)) = 18
name: public(constant(String[14])) = "1UP Locked YFI"
symbol: public(constant(String[5])) = "upYFI"

event Transfer:
    sender: indexed(address)
    receiver: indexed(address)
    value: uint256

event Approval:
    owner: indexed(address)
    spender: indexed(address)
    value: uint256

SCALE: constant(uint256) = 69_420
WEEK: constant(uint256) = 7 * 24 * 60 * 60
LOCK_TIME: constant(uint256) = 500 * WEEK

@external
def __init__(_token: address, _voting_escrow: address, _proxy: address):
    """
    @notice Constructor
    @param _token Token to be locked in the voting escrow
    @param _voting_escrow Voting escrow
    @param _proxy Proxy
    """
    token = ERC20(_token)
    voting_escrow = YearnVotingEscrow(_voting_escrow)
    proxy = Proxy(_proxy)
    log Transfer(empty(address), msg.sender, 0)

@external
def deposit(_amount: uint256, _receiver: address = msg.sender) -> uint256:
    """
    @notice Deposit tokens into the protocol's ve position and mint liquid locker tokens
    @param _amount Amount of tokens to add to the lock
    @param _receiver Recipient of newly minted liquid locker tokens
    @return Amount of tokens minted to the recipient
    """
    minted: uint256 = _amount * SCALE
    self._mint(minted, _receiver)
    assert token.transferFrom(msg.sender, proxy.address, _amount, default_return_value=True)
    proxy.modify_lock(_amount, block.timestamp + LOCK_TIME)
    return minted

@external
def mint(_receiver: address = msg.sender) -> uint256:
    """
    @notice Mint liquid locker tokens for any new tokens in the ve lock
    @param _receiver Receiver of newly minted liquid locker tokens
    @return Amount of tokens minted to the recipient
    """
    excess: uint256 = voting_escrow.locked(proxy.address) * SCALE - self.totalSupply
    self._mint(excess, _receiver)
    return excess

@internal
def _mint(_amount: uint256, _receiver: address):
    """
    @notice Mint an amount of liquid locker tokens
    """
    assert _amount > 0
    assert _receiver != empty(address) and _receiver != self

    self.totalSupply += _amount
    self.balanceOf[_receiver] += _amount
    log Transfer(empty(address), _receiver, _amount)

@external
def extend_lock():
    """
    @notice Extend the duration of the protocol's ve lock
    """
    proxy.modify_lock(0, block.timestamp + LOCK_TIME)

@external
def transfer(_to: address, _value: uint256) -> bool:
    """
    @notice Transfer tokens
    @param _to Receiver of tokens
    @param _value Amount of tokens to transfer
    """
    assert _to != empty(address) and _to != self

    if _value > 0:
        self.balanceOf[msg.sender] -= _value
        self.balanceOf[_to] += _value
    log Transfer(msg.sender, _to, _value)
    return True

@external
def transferFrom(_from: address, _to: address, _value: uint256) -> bool:
    """
    @notice Transfer tokens from another user
    @param _from User to transfer tokens from 
    @param _to Receiver of tokens
    @param _value Amount of tokens to transfer
    @dev Requires prior set allowance
    """
    assert _to != empty(address) and _to != self

    if _value > 0:
        allowance: uint256 = self.allowance[_from][msg.sender]
        if allowance < max_value(uint256):
            self.allowance[_from][msg.sender] = allowance - _value

        self.balanceOf[_from] -= _value
        self.balanceOf[_to] += _value
    log Transfer(_from, _to, _value)
    return True

@external
def approve(_spender: address, _value: uint256) -> bool:
    """
    @notice Approve another user to spend your tokens
    @param _spender Spender
    @param _value Amount of tokens allowed to be spent
    """
    assert _spender != empty(address)

    self.allowance[msg.sender][_spender] = _value
    log Approval(msg.sender, _spender, _value)
    return True

Contract Security Audit

Contract ABI

API
[{"name":"Transfer","inputs":[{"name":"sender","type":"address","indexed":true},{"name":"receiver","type":"address","indexed":true},{"name":"value","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true},{"name":"spender","type":"address","indexed":true},{"name":"value","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"stateMutability":"nonpayable","type":"constructor","inputs":[{"name":"_token","type":"address"},{"name":"_voting_escrow","type":"address"},{"name":"_proxy","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"deposit","inputs":[{"name":"_amount","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"nonpayable","type":"function","name":"deposit","inputs":[{"name":"_amount","type":"uint256"},{"name":"_receiver","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"nonpayable","type":"function","name":"mint","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"nonpayable","type":"function","name":"mint","inputs":[{"name":"_receiver","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"nonpayable","type":"function","name":"extend_lock","inputs":[],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"transfer","inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"outputs":[{"name":"","type":"bool"}]},{"stateMutability":"nonpayable","type":"function","name":"transferFrom","inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"outputs":[{"name":"","type":"bool"}]},{"stateMutability":"nonpayable","type":"function","name":"approve","inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"outputs":[{"name":"","type":"bool"}]},{"stateMutability":"view","type":"function","name":"token","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"voting_escrow","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"proxy","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"balanceOf","inputs":[{"name":"arg0","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"allowance","inputs":[{"name":"arg0","type":"address"},{"name":"arg1","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8"}]},{"stateMutability":"view","type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string"}]},{"stateMutability":"view","type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string"}]}]

61083a5150346100985760206108ac5f395f518060a01c6100985760405260206108cc5f395f518060a01c6100985760605260206108ec5f395f518060a01c610098576080526040516107fa5260605161081a5260805161083a52335f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f60a052602060a0a36107fa61009c6100003961085a610000f35b5f80fd5f3560e01c6002600e820660011b6107de01601e395f51565b63fc0c546a811861003657346107da5760206107fa60403960206040f35b63e61680d4811861074957346107da57602061083a5f395f5163622b6d966040525f60605242631206420081018181106107da579050608052803b156107da575f60406044605c5f855af161008d573d5f5f3e3d5ffd5b5000610749565b63dfe05031811861074957346107da57602061081a60403960206040f3610749565b63ec55688981186100d457346107da57602061083a60403960206040f35b6370a082318118610749576024361034176107da576004358060a01c6107da5760405260016040516020525f5260405f205460605260206060f3610749565b6318160ddd811861012e57346107da575f5460405260206040f35b63313ce567811861074957346107da57601260405260206040f3610749565b63dd62ed3e8118610749576044361034176107da576004358060a01c6107da576040526024358060a01c6107da5760605260026040516020525f5260405f20806060516020525f5260405f2090505460805260206080f3610749565b6306fdde03811861022757346107da57602080608052600e6040527f315550204c6f636b65642059464900000000000000000000000000000000000060605260408160800181518152602082015160208201528051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506080f35b636e553f658118610343576044361034176107da576024358060a01c6107da5760a0525b60043562010f2c81028162010f2c8204186107da57905060c05260c05160405260a05160605261027961074d565b60206107fa5f395f516323b872dd60e0523361010052602061083a6101203960043561014052602060e0606460fc5f855af16102b7573d5f5f3e3d5ffd5b3d6102ce57803b156107da576001610160526102e6565b60203d106107da5760e0518060011c6107da57610160525b610160905051156107da57602061083a5f395f5163622b6d9660e0526004356101005242631206420081018181106107da57905061012052803b156107da575f60e0604460fc5f855af161033c573d5f5f3e3d5ffd5b50602060c0f35b63a9059cbb8118610749576044361034176107da576004358060a01c6107da57604052604051156103795730604051141561037b565b5f5b156107da57602435156103cf576001336020525f5260405f2080546024358082038281116107da579050905081555060016040516020525f5260405f2080546024358082018281106107da57905090508155505b604051337fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60243560605260206060a3600160605260206060f3610749565b6395d89b41811861048c57346107da5760208060805260056040527f757059464900000000000000000000000000000000000000000000000000000060605260408160800181518152602082015160208201528051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506080f35b631249c58b811861074957346107da573360a05261064156610749565b63b6b55f2581186104c7576024361034176107da573360a05261024b565b6323b872dd8118610749576064361034176107da576004358060a01c6107da576040526024358060a01c6107da576060526060511561050b5730606051141561050d565b5f5b156107da57604435156105dc5760026040516020525f5260405f2080336020525f5260405f209050546080527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60805114610593576080516044358082038281116107da579050905060026040516020525f5260405f2080336020525f5260405f209050555b60016040516020525f5260405f2080546044358082038281116107da579050905081555060016060516020525f5260405f2080546044358082018281106107da57905090508155505b6060516040517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60443560805260206080a3600160805260206080f3610749565b636a6278428118610749576024361034176107da576004358060a01c6107da5760a0525b602061081a5f395f5163cbf9fe5f60e052602061083a61010039602060e0602460fc845afa610672573d5f5f3e3d5ffd5b60203d106107da5760e090505162010f2c81028162010f2c8204186107da5790505f548082038281116107da579050905060c05260c05160405260a0516060526106ba61074d565b602060c0f3610749565b63095ea7b38118610749576044361034176107da576004358060a01c6107da57604052604051156107da576024356002336020525f5260405f20806040516020525f5260405f20905055604051337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560243560605260206060a3600160605260206060f35b5f5ffd5b604051156107da57606051156107685730606051141561076a565b5f5b156107da575f546040518082018281106107da57905090505f5560016060516020525f5260405f2080546040518082018281106107da57905090508155506060515f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160805260206080a3565b5f80fd074906c4074901a900180113014d00b6061d04a9074900940749040e841907fa81181c1860a16576797065728300030a00160000000000000000000000000bc529c00c6401aef6d220be8c6ea1667f6ad93e00000000000000000000000090c1f9220d90d3966fbee24045edd73e1d588ad5000000000000000000000000242521ca01f330f050a65ff5b8ebbe92198ae64f

Deployed Bytecode

0x5f3560e01c6002600e820660011b6107de01601e395f51565b63fc0c546a811861003657346107da5760206107fa60403960206040f35b63e61680d4811861074957346107da57602061083a5f395f5163622b6d966040525f60605242631206420081018181106107da579050608052803b156107da575f60406044605c5f855af161008d573d5f5f3e3d5ffd5b5000610749565b63dfe05031811861074957346107da57602061081a60403960206040f3610749565b63ec55688981186100d457346107da57602061083a60403960206040f35b6370a082318118610749576024361034176107da576004358060a01c6107da5760405260016040516020525f5260405f205460605260206060f3610749565b6318160ddd811861012e57346107da575f5460405260206040f35b63313ce567811861074957346107da57601260405260206040f3610749565b63dd62ed3e8118610749576044361034176107da576004358060a01c6107da576040526024358060a01c6107da5760605260026040516020525f5260405f20806060516020525f5260405f2090505460805260206080f3610749565b6306fdde03811861022757346107da57602080608052600e6040527f315550204c6f636b65642059464900000000000000000000000000000000000060605260408160800181518152602082015160208201528051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506080f35b636e553f658118610343576044361034176107da576024358060a01c6107da5760a0525b60043562010f2c81028162010f2c8204186107da57905060c05260c05160405260a05160605261027961074d565b60206107fa5f395f516323b872dd60e0523361010052602061083a6101203960043561014052602060e0606460fc5f855af16102b7573d5f5f3e3d5ffd5b3d6102ce57803b156107da576001610160526102e6565b60203d106107da5760e0518060011c6107da57610160525b610160905051156107da57602061083a5f395f5163622b6d9660e0526004356101005242631206420081018181106107da57905061012052803b156107da575f60e0604460fc5f855af161033c573d5f5f3e3d5ffd5b50602060c0f35b63a9059cbb8118610749576044361034176107da576004358060a01c6107da57604052604051156103795730604051141561037b565b5f5b156107da57602435156103cf576001336020525f5260405f2080546024358082038281116107da579050905081555060016040516020525f5260405f2080546024358082018281106107da57905090508155505b604051337fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60243560605260206060a3600160605260206060f3610749565b6395d89b41811861048c57346107da5760208060805260056040527f757059464900000000000000000000000000000000000000000000000000000060605260408160800181518152602082015160208201528051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506080f35b631249c58b811861074957346107da573360a05261064156610749565b63b6b55f2581186104c7576024361034176107da573360a05261024b565b6323b872dd8118610749576064361034176107da576004358060a01c6107da576040526024358060a01c6107da576060526060511561050b5730606051141561050d565b5f5b156107da57604435156105dc5760026040516020525f5260405f2080336020525f5260405f209050546080527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60805114610593576080516044358082038281116107da579050905060026040516020525f5260405f2080336020525f5260405f209050555b60016040516020525f5260405f2080546044358082038281116107da579050905081555060016060516020525f5260405f2080546044358082018281106107da57905090508155505b6060516040517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60443560805260206080a3600160805260206080f3610749565b636a6278428118610749576024361034176107da576004358060a01c6107da5760a0525b602061081a5f395f5163cbf9fe5f60e052602061083a61010039602060e0602460fc845afa610672573d5f5f3e3d5ffd5b60203d106107da5760e090505162010f2c81028162010f2c8204186107da5790505f548082038281116107da579050905060c05260c05160405260a0516060526106ba61074d565b602060c0f3610749565b63095ea7b38118610749576044361034176107da576004358060a01c6107da57604052604051156107da576024356002336020525f5260405f20806040516020525f5260405f20905055604051337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560243560605260206060a3600160605260206060f35b5f5ffd5b604051156107da57606051156107685730606051141561076a565b5f5b156107da575f546040518082018281106107da57905090505f5560016060516020525f5260405f2080546040518082018281106107da57905090508155506060515f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160805260206080a3565b5f80fd074906c4074901a900180113014d00b6061d04a9074900940749040e0000000000000000000000000bc529c00c6401aef6d220be8c6ea1667f6ad93e00000000000000000000000090c1f9220d90d3966fbee24045edd73e1d588ad5000000000000000000000000242521ca01f330f050a65ff5b8ebbe92198ae64f

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000000bc529c00c6401aef6d220be8c6ea1667f6ad93e00000000000000000000000090c1f9220d90d3966fbee24045edd73e1d588ad5000000000000000000000000242521ca01f330f050a65ff5b8ebbe92198ae64f

-----Decoded View---------------
Arg [0] : _token (address): 0x0bc529c00C6401aEF6D220BE8C6Ea1667F6Ad93e
Arg [1] : _voting_escrow (address): 0x90c1f9220d90d3966FbeE24045EDd73E1d588aD5
Arg [2] : _proxy (address): 0x242521ca01f330F050a65FF5B8Ebbe92198Ae64F

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000000bc529c00c6401aef6d220be8c6ea1667f6ad93e
Arg [1] : 00000000000000000000000090c1f9220d90d3966fbee24045edd73e1d588ad5
Arg [2] : 000000000000000000000000242521ca01f330f050a65ff5b8ebbe92198ae64f


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