ETH Price: $2,682.39 (-1.71%)

Contract

0x7dC3A74F0684fc026f9163C6D5c3C99fda2cf60a
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Redeem218494892025-02-15 4:36:2316 hrs ago1739594183IN
Yearn: dYFI Redemption
0.02134074 ETH0.000122120.80250749
Redeem218291582025-02-12 8:15:233 days ago1739348123IN
Yearn: dYFI Redemption
0.17210347 ETH0.000130070.88250695
Redeem218007802025-02-08 9:04:237 days ago1739005463IN
Yearn: dYFI Redemption
0.00027607 ETH0.000147010.89371404
Redeem217872682025-02-06 11:49:119 days ago1738842551IN
Yearn: dYFI Redemption
0.00265013 ETH0.000142730.96852449
Redeem217835272025-02-05 23:17:239 days ago1738797443IN
Yearn: dYFI Redemption
0.04980832 ETH0.000261751.77600673
Redeem217765692025-02-04 23:58:5910 days ago1738713539IN
Yearn: dYFI Redemption
0.19276759 ETH0.000189211.28364483
Redeem217560722025-02-02 3:12:4713 days ago1738465967IN
Yearn: dYFI Redemption
0.04020292 ETH0.000434172.94679647
Redeem217555802025-02-02 1:34:1113 days ago1738460051IN
Yearn: dYFI Redemption
0.00282293 ETH0.000292861.92496508
Redeem217498422025-02-01 6:21:1114 days ago1738390871IN
Yearn: dYFI Redemption
0.00965724 ETH0.000307512.0211013
Redeem217489362025-02-01 3:18:4714 days ago1738379927IN
Yearn: dYFI Redemption
0.02177935 ETH0.00024621.45475692
Redeem216903952025-01-23 23:10:5922 days ago1737673859IN
Yearn: dYFI Redemption
0.075884 ETH0.001474628.12240676
Redeem216564372025-01-19 5:26:5927 days ago1737264419IN
Yearn: dYFI Redemption
0.0183859 ETH0.0018788812.34984084
Redeem215983072025-01-11 2:38:1135 days ago1736563091IN
Yearn: dYFI Redemption
0.00430123 ETH0.000518473.40792765
Redeem215907662025-01-10 1:21:2336 days ago1736472083IN
Yearn: dYFI Redemption
0.00516952 ETH0.000583563.4481672
Redeem215696362025-01-07 2:34:3539 days ago1736217275IN
Yearn: dYFI Redemption
0.27723158 ETH0.001108857.52470797
Redeem215410992025-01-03 2:54:2343 days ago1735872863IN
Yearn: dYFI Redemption
0.19045962 ETH0.001567129.52879568
Redeem215203492024-12-31 5:24:5946 days ago1735622699IN
Yearn: dYFI Redemption
0.01702133 ETH0.000515433.38794949
Redeem215192882024-12-31 1:51:4746 days ago1735609907IN
Yearn: dYFI Redemption
0.61464168 ETH0.000835974.93997506
Redeem215192782024-12-31 1:49:3546 days ago1735609775IN
Yearn: dYFI Redemption
0.40443564 ETH0.000807164.7687555
Redeem214847322024-12-26 6:04:3551 days ago1735193075IN
Yearn: dYFI Redemption
0.00835681 ETH0.001145826.14918118
Redeem214697752024-12-24 3:53:3553 days ago1735012415IN
Yearn: dYFI Redemption
0.12953344 ETH0.000849945.68535875
Redeem214635522024-12-23 6:58:5954 days ago1734937139IN
Yearn: dYFI Redemption
0.01004766 ETH0.00093035.28169325
Redeem214621622024-12-23 2:19:1154 days ago1734920351IN
Yearn: dYFI Redemption
0.01679323 ETH0.000762154.9402937
Redeem214484362024-12-21 4:15:2356 days ago1734754523IN
Yearn: dYFI Redemption
0.00821361 ETH0.001105577.16577167
Redeem214483572024-12-21 3:59:3556 days ago1734753575IN
Yearn: dYFI Redemption
0.01919751 ETH0.001088637.05651777
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
218494892025-02-15 4:36:2316 hrs ago1739594183
Yearn: dYFI Redemption
0.02134074 ETH
218365792025-02-13 9:10:352 days ago1739437835
Yearn: dYFI Redemption
0.07766581 ETH
218365792025-02-13 9:10:352 days ago1739437835
Yearn: dYFI Redemption
0.07766581 ETH
218324372025-02-12 19:16:593 days ago1739387819
Yearn: dYFI Redemption
0.10495214 ETH
218324372025-02-12 19:16:593 days ago1739387819
Yearn: dYFI Redemption
0.10495214 ETH
218291582025-02-12 8:15:233 days ago1739348123
Yearn: dYFI Redemption
0.17210347 ETH
218280602025-02-12 4:30:233 days ago1739334623
Yearn: dYFI Redemption
0.09260115 ETH
218280602025-02-12 4:30:233 days ago1739334623
Yearn: dYFI Redemption
0.09260115 ETH
218007802025-02-08 9:04:237 days ago1739005463
Yearn: dYFI Redemption
0.00027607 ETH
217872682025-02-06 11:49:119 days ago1738842551
Yearn: dYFI Redemption
0.00265013 ETH
217835272025-02-05 23:17:239 days ago1738797443
Yearn: dYFI Redemption
0.04980832 ETH
217780712025-02-05 5:01:1110 days ago1738731671
Yearn: dYFI Redemption
0.05578816 ETH
217780712025-02-05 5:01:1110 days ago1738731671
Yearn: dYFI Redemption
0.05578816 ETH
217765692025-02-04 23:58:5910 days ago1738713539
Yearn: dYFI Redemption
0.19276759 ETH
217560722025-02-02 3:12:4713 days ago1738465967
Yearn: dYFI Redemption
0.04020292 ETH
217555802025-02-02 1:34:1113 days ago1738460051
Yearn: dYFI Redemption
0.00282293 ETH
217513142025-02-01 11:17:1114 days ago1738408631
Yearn: dYFI Redemption
0.15438816 ETH
217513142025-02-01 11:17:1114 days ago1738408631
Yearn: dYFI Redemption
0.15438816 ETH
217498422025-02-01 6:21:1114 days ago1738390871
Yearn: dYFI Redemption
0.00965724 ETH
217489362025-02-01 3:18:4714 days ago1738379927
Yearn: dYFI Redemption
0.02177935 ETH
217360192025-01-30 7:59:4716 days ago1738223987
Yearn: dYFI Redemption
0.04429104 ETH
217360192025-01-30 7:59:4716 days ago1738223987
Yearn: dYFI Redemption
0.04429104 ETH
217278082025-01-29 4:30:1117 days ago1738125011
Yearn: dYFI Redemption
0.09941875 ETH
217278082025-01-29 4:30:1117 days ago1738125011
Yearn: dYFI Redemption
0.09941875 ETH
216999842025-01-25 7:19:1121 days ago1737789551
Yearn: dYFI Redemption
0.05145926 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Vyper_contract

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

from vyper.interfaces import ERC20

interface AggregatorV3Interface:
    def latestRoundData() -> (uint80, int256, uint256, uint256, uint80): view

interface IDYFI:
    def burn(owner: address, amount: uint256): nonpayable

UNIT: constant(uint256) = 10**18
SLIPPAGE_TOLERANCE: constant(uint256) = 3
SLIPPAGE_DENOMINATOR: constant(uint256) = 1000

DYFI: immutable(IDYFI)
YFI: immutable(ERC20)
VEYFI: immutable(ERC20)
PRICE_FEED: immutable(AggregatorV3Interface)

# @dev Returns the address of the current owner.
owner: public(address)
# @dev Returns the address of the pending owner.
pending_owner: public(address)
# @dev when the contract is killed, redemptions aren't possible
killed: public(bool)
# @dev recipient of the ETH used for redemptions
payee: public(address)
# @dev scaling factor parameters packed into a single slot
packed_scaling_factor: uint256

# @dev Emitted when contract is killed
event Killed:
    yfi_recovered: uint256

event Sweep:
    token: indexed(address)
    amount: uint256

# @dev Emitted when the ownership transfer from
# `previous_owner` to `pending_owner` is initiated.
event PendingOwnershipTransfer:
    previous_owner: indexed(address)
    pending_owner: indexed(address)


# @dev Emitted when the ownership is transferred
# from `previous_owner` to `new_owner`.
event OwnershipTransferred:
    previous_owner: indexed(address)
    new_owner: indexed(address)

event SetPayee:
    payee: indexed(address)


MASK: constant(uint256) = 2**64 - 1

# powers of 10
E3: constant(int256)               = 1_000
E6: constant(int256)               = E3 * E3
E9: constant(int256)               = E3 * E6
E12: constant(int256)              = E3 * E9
E15: constant(int256)              = E3 * E12
E17: constant(int256)              = 100 * E15
E18: constant(int256)              = E3 * E15
E20: constant(int256)              = 100 * E18
MIN_NAT_EXP: constant(int256)      = -41 * E18
MAX_NAT_EXP: constant(int256)      = 130 * E18

# x_n = 2^(7-n), a_n = exp(x_n)
# in 20 decimals for n >= 2
X0: constant(int256)  = 128 * E18 # 18 decimals
A0: constant(int256)  = 38_877_084_059_945_950_922_200 * E15 * E18 # no decimals
X1: constant(int256)  = X0 / 2 # 18 decimals
A1: constant(int256)  = 6_235_149_080_811_616_882_910 * E6 # no decimals
X2: constant(int256)  = X1 * 100 / 2
A2: constant(int256)  = 7_896_296_018_268_069_516_100 * E12
X3: constant(int256)  = X2 / 2
A3: constant(int256)  = 888_611_052_050_787_263_676 * E6
X4: constant(int256)  = X3 / 2
A4: constant(int256)  = 298_095_798_704_172_827_474 * E3
X5: constant(int256)  = X4 / 2
A5: constant(int256)  = 5_459_815_003_314_423_907_810
X6: constant(int256)  = X5 / 2
A6: constant(int256)  = 738_905_609_893_065_022_723
X7: constant(int256)  = X6 / 2
A7: constant(int256)  = 271_828_182_845_904_523_536
X8: constant(int256)  = X7 / 2
A8: constant(int256)  = 164_872_127_070_012_814_685
X9: constant(int256)  = X8 / 2
A9: constant(int256)  = 128_402_541_668_774_148_407
X10: constant(int256) = X9 / 2
A10: constant(int256) = 11_331_4845_306_682_631_683
X11: constant(int256) = X10 / 2
A11: constant(int256) = 1_064_49_445_891_785_942_956

@external
def __init__(
    yfi: address, d_yfi: address, ve_yfi: address, owner: address, 
    price_feed: address, scaling_factor: uint256,
):
    assert scaling_factor >= UNIT and scaling_factor <= 12 * UNIT
    YFI = ERC20(yfi)
    DYFI = IDYFI(d_yfi)
    VEYFI = ERC20(ve_yfi)
    PRICE_FEED = AggregatorV3Interface(price_feed)
    self._transfer_ownership(owner)
    self.payee = owner
    self.packed_scaling_factor = shift(scaling_factor, 128) | shift(scaling_factor, 192)


@payable
@external
def redeem(amount: uint256, recipient: address = msg.sender) -> uint256:
    """
    @notice Redeem your dYFI for YFI using ETH.
    @dev Redemption tolerates a 0.3% negative or positive slippage.
    @param amount amount of dYFI to spend
    @param recipient of the exercised YFI
    """
    self._check_killed()
    assert YFI.balanceOf(self) >= amount, "not enough YFI"
    eth_required: uint256 = self._eth_required(amount)
    assert eth_required > 0
    tolerance: uint256 = eth_required * SLIPPAGE_TOLERANCE / SLIPPAGE_DENOMINATOR
    if msg.value < (eth_required - tolerance) or msg.value > (eth_required + tolerance):
        raise "price out of tolerance"
    DYFI.burn(msg.sender, amount)
    raw_call(self.payee, b"", value=msg.value)
    YFI.transfer(recipient, amount)
    return amount


@external
@view
def discount() -> uint256:
    """
    @notice Get the current dYFI redemption discount
    @return Redemption discount (18 decimals)
    @dev 
        Discount formula is `1/(1 + 10 e^(4.7(s*x - 1)))`,
        with `x = veyfi supply / yfi supply`
    """
    return self._discount()


@internal
@view
def _discount() -> uint256:
    yfi_supply: uint256 = YFI.totalSupply()
    veyfi_supply: uint256 = VEYFI.totalSupply()
    x: int256 = convert(veyfi_supply * UNIT / yfi_supply, int256)
    x = self._exp(47 * (self._scaling_factor()[0] * x / E18 - E18) / 10)
    return convert(E18 * E18 / (E18 + 10 * x), uint256)


@external
@view
def eth_required(amount: uint256) -> uint256:
    """
    @notice Estimate the required amount of ETH to redeem the amount of dYFI for YFI
    @param amount Amount of dYFI
    @return Amount of ETH required
    """
    return self._eth_required(amount)


@internal
@view
def _eth_required(amount: uint256) -> uint256:
    return amount * self._get_latest_price() / UNIT * (UNIT - self._discount()) / UNIT


@external
@view
def get_latest_price() -> uint256:
    """
    @notice Get the latest price of YFI in ETH
    @return Price of YFI in ETH (18 decimals)
    """
    return self._get_latest_price()


@internal
@view
def _get_latest_price() -> uint256:
    round_id: uint80 = 0
    price: int256 = 0
    started_at: uint256 = 0
    updated_at: uint256 = 0
    answered_in_round: uint80 = 0
    (round_id, price, started_at, updated_at, answered_in_round) = PRICE_FEED.latestRoundData()
    assert updated_at + 3600 > block.timestamp, "price too old"
    return convert(price, uint256)


@external
@view
def scaling_factor() -> uint256:
    """
    @notice Get the current discount curve scaling factor
    @return Scaling factor (18 decimals)
    """
    return convert(self._scaling_factor()[0], uint256)

@external
@view
def scaling_factor_ramp() -> (uint256, uint256, uint256, uint256):
    """
    @notice Get the current discount curve scaling factor ramp parameters
    @return Tuple of ramp start timestamp, ramp end timestamp, ramp start scaling factor, ramp end scaling factor
    """
    ramp_start: uint256 = 0
    ramp_end: uint256 = 0
    old: int256 = 0
    new: int256 = 0
    ramp_start, ramp_end, old, new = self._unpack_scaling_factor(self.packed_scaling_factor)
    return ramp_start, ramp_end, convert(old, uint256), convert(new, uint256)


@internal
@view
def _scaling_factor() -> (int256, bool):
    ramp_start: uint256 = 0
    ramp_end: uint256 = 0
    old: int256 = 0
    new: int256 = 0
    ramp_start, ramp_end, old, new = self._unpack_scaling_factor(self.packed_scaling_factor)
    if ramp_end <= block.timestamp:
        return new, False
    if ramp_start > block.timestamp:
        return old, False
    
    duration: int256 = convert(ramp_end - ramp_start, int256)
    time: int256 = convert(block.timestamp - ramp_start, int256)
    return old + (new - old) * time / duration, True


@external
def set_payee(new_payee: address):
    """
    @dev set the payee of the ETH used for redemptions
    @param new_payee the new payee
    """
    self._check_owner()
    assert new_payee != empty(address)
    self.payee = new_payee
    log SetPayee(new_payee)


@external
def start_ramp(new: uint256, duration: uint256 = 604_800, start: uint256 = block.timestamp):
    """
    @notice Start ramping of scaling factor
    @param new New scaling factor (18 decimals)
    @param duration Ramp duration (seconds)
    @param start Ramp start timestamp
    """
    self._check_owner()
    assert new >= UNIT and new <= 12 * UNIT
    assert start >= block.timestamp
    scaling_factor: int256 = 0
    active: bool = False
    scaling_factor, active = self._scaling_factor()
    assert not active
    self.packed_scaling_factor = self._pack_scaling_factor(
        start, start + duration, scaling_factor, convert(new, int256)
    )

@external
def stop_ramp():
    """
    @notice Stop a currently active ramp
    """
    self._check_owner()
    scaling_factor: int256 = 0
    active: bool = False
    scaling_factor, active = self._scaling_factor()
    assert active
    self.packed_scaling_factor = self._pack_scaling_factor(0, 0, scaling_factor, scaling_factor)


@external
def kill():
    """
    @dev stop the contract from being used and reclaim YFI
    """
    self._check_killed()
    self._check_owner()
    self.killed = True
    yfi_balance: uint256 = YFI.balanceOf(self)
    YFI.transfer(self.owner, yfi_balance)

    log Killed(yfi_balance)

@internal
def _check_killed():
    """
    @dev Throws if contract was killed
    """
    assert self.killed == False, "killed"

@external
def sweep(token: address) -> uint256:
    assert self.killed or token != YFI.address, "protected token"
    self._check_owner()
    amount: uint256 = 0
    if token == empty(address):
        amount = self.balance
        raw_call(self.owner, b"", value=amount)
    else:
        amount = ERC20(token).balanceOf(self)
        assert ERC20(token).transfer(self.owner, amount, default_return_value=True)
    log Sweep(token, amount)
    return amount


### Ownable2Step ###
@external
def transfer_ownership(new_owner: address):
    """
    @dev Starts the ownership transfer of the contract
         to a new account `new_owner`.
    @notice Note that this function can only be
            called by the current `owner`. Also, there is
            no security risk in setting `new_owner` to the
            zero address as the default value of `pending_owner`
            is in fact already the zero address and the zero
            address cannot call `accept_ownership`. Eventually,
            the function replaces the pending transfer if
            there is one.
    @param new_owner The 20-byte address of the new owner.
    """
    self._check_owner()
    self.pending_owner = new_owner
    log PendingOwnershipTransfer(self.owner, new_owner)


@external
def accept_ownership():
    """
    @dev The new owner accepts the ownership transfer.
    @notice Note that this function can only be
            called by the current `pending_owner`.
    """
    assert self.pending_owner == msg.sender, "Ownable2Step: caller is not the new owner"
    self._transfer_ownership(msg.sender)


@internal
def _check_owner():
    """
    @dev Throws if the sender is not the owner.
    """
    assert msg.sender == self.owner, "Ownable2Step: caller is not the owner"


@internal
def _transfer_ownership(new_owner: address):
    """
    @dev Transfers the ownership of the contract
         to a new account `new_owner` and deletes
         any pending owner.
    @notice This is an `internal` function without
            access restriction.
    @param new_owner The 20-byte address of the new owner.
    """
    self.pending_owner = empty(address)
    old_owner: address = self.owner
    self.owner = new_owner
    log OwnershipTransferred(old_owner, new_owner)


@internal
@pure
def _pack_scaling_factor(_ramp_start: uint256, _ramp_end: uint256, _old: int256, _new: int256) -> uint256:
    assert _ramp_start <= MASK and _ramp_end <= MASK
    assert _old <= convert(MASK, int256) and _new > 0 and _new <= convert(MASK, int256)
    return _ramp_start | shift(_ramp_end, 64) | \
        shift(convert(_old, uint256), 128) | shift(convert(_new, uint256), 192)

@internal
@pure
def _unpack_scaling_factor(_packed: uint256) -> (uint256, uint256, int256, int256):
    return _packed & MASK, shift(_packed, -64) & MASK, \
        convert(shift(_packed, -128) & MASK, int256), convert(shift(_packed, -192), int256)

# From https://github.com/yearn/yETH/blob/main/contracts/Pool.vy, based on Balancer code

@internal
@pure
def _exp(_x: int256) -> int256:
    """
    @notice Calculate natural exponent `e^x`
    @param _x Exponent (18 decimals)
    @return Natural exponent in 18 decimals
    """
    assert _x >= MIN_NAT_EXP and _x <= MAX_NAT_EXP
    if _x < 0:
        # exp(-x) = 1/exp(x)
        return unsafe_mul(E18, E18) / self.__exp(-_x)
    return self.__exp(_x)

@internal
@pure
def __exp(_x: int256) -> int256:
    """
    @notice Calculate natural exponent `e^x`, assuming exponent is positive
    @param _x Exponent (18 decimals)
    @return Natural exponent in 18 decimals
    @dev Caller should perform bounds checks before calling this function
    """
    
    # e^x = e^(sum(k_n x_n) + rem)
    #     = product(e^(k_n x_n)) * e^(rem)
    #     = product(a_n^k_n) * e^(rem)
    # k_n = {0,1}, x_n = 2^(7-n), a_n = exp(x_n)
    x: int256 = _x

    # subtract out x_ns
    f: int256 = 1
    if x >= X0:
        x = unsafe_sub(x, X0)
        f = A0
    elif x >= X1:
        x = unsafe_sub(x, X1)
        f = A1

    # other terms are in 20 decimals
    x = unsafe_mul(x, 100)

    p: int256 = E20
    if x >= X2:
        x = unsafe_sub(x, X2)
        p = unsafe_div(unsafe_mul(p, A2), E20) # p * A2 / E20
    if x >= X3:
        x = unsafe_sub(x, X3)
        p = unsafe_div(unsafe_mul(p, A3), E20)
    if x >= X4:
        x = unsafe_sub(x, X4)
        p = unsafe_div(unsafe_mul(p, A4), E20)
    if x >= X5:
        x = unsafe_sub(x, X5)
        p = unsafe_div(unsafe_mul(p, A5), E20)
    if x >= X6:
        x = unsafe_sub(x, X6)
        p = unsafe_div(unsafe_mul(p, A6), E20)
    if x >= X7:
        x = unsafe_sub(x, X7)
        p = unsafe_div(unsafe_mul(p, A7), E20)
    if x >= X8:
        x = unsafe_sub(x, X8)
        p = unsafe_div(unsafe_mul(p, A8), E20)
    if x >= X9:
        x = unsafe_sub(x, X9)
        p = unsafe_div(unsafe_mul(p, A9), E20)
    
    # x < X9 (0.25), taylor series for remainder
    # c = e^x = sum(x^n / n!)
    n: int256 = x
    c: int256 = unsafe_add(E20, x)

    n = unsafe_div(unsafe_div(unsafe_mul(n, x), E20), 2) # n * x / E20 / 2
    c = unsafe_add(c, n)
    n = unsafe_div(unsafe_div(unsafe_mul(n, x), E20), 3)
    c = unsafe_add(c, n)
    n = unsafe_div(unsafe_div(unsafe_mul(n, x), E20), 4)
    c = unsafe_add(c, n)
    n = unsafe_div(unsafe_div(unsafe_mul(n, x), E20), 5)
    c = unsafe_add(c, n)
    n = unsafe_div(unsafe_div(unsafe_mul(n, x), E20), 6)
    c = unsafe_add(c, n)
    n = unsafe_div(unsafe_div(unsafe_mul(n, x), E20), 7)
    c = unsafe_add(c, n)
    n = unsafe_div(unsafe_div(unsafe_mul(n, x), E20), 8)
    c = unsafe_add(c, n)
    n = unsafe_div(unsafe_div(unsafe_mul(n, x), E20), 9)
    c = unsafe_add(c, n)
    n = unsafe_div(unsafe_div(unsafe_mul(n, x), E20), 10)
    c = unsafe_add(c, n)
    n = unsafe_div(unsafe_div(unsafe_mul(n, x), E20), 11)
    c = unsafe_add(c, n)
    n = unsafe_div(unsafe_div(unsafe_mul(n, x), E20), 12)
    c = unsafe_add(c, n)

    # p * c / E20 * f / 100
    return unsafe_div(unsafe_mul(unsafe_div(unsafe_mul(p, c), E20), f), 100)

Contract Security Audit

Contract ABI

[{"name":"Killed","inputs":[{"name":"yfi_recovered","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"Sweep","inputs":[{"name":"token","type":"address","indexed":true},{"name":"amount","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"PendingOwnershipTransfer","inputs":[{"name":"previous_owner","type":"address","indexed":true},{"name":"pending_owner","type":"address","indexed":true}],"anonymous":false,"type":"event"},{"name":"OwnershipTransferred","inputs":[{"name":"previous_owner","type":"address","indexed":true},{"name":"new_owner","type":"address","indexed":true}],"anonymous":false,"type":"event"},{"name":"SetPayee","inputs":[{"name":"payee","type":"address","indexed":true}],"anonymous":false,"type":"event"},{"stateMutability":"nonpayable","type":"constructor","inputs":[{"name":"yfi","type":"address"},{"name":"d_yfi","type":"address"},{"name":"ve_yfi","type":"address"},{"name":"owner","type":"address"},{"name":"price_feed","type":"address"},{"name":"scaling_factor","type":"uint256"}],"outputs":[]},{"stateMutability":"payable","type":"function","name":"redeem","inputs":[{"name":"amount","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"payable","type":"function","name":"redeem","inputs":[{"name":"amount","type":"uint256"},{"name":"recipient","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"discount","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"eth_required","inputs":[{"name":"amount","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"get_latest_price","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"scaling_factor","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"scaling_factor_ramp","inputs":[],"outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"}]},{"stateMutability":"nonpayable","type":"function","name":"set_payee","inputs":[{"name":"new_payee","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"start_ramp","inputs":[{"name":"new","type":"uint256"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"start_ramp","inputs":[{"name":"new","type":"uint256"},{"name":"duration","type":"uint256"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"start_ramp","inputs":[{"name":"new","type":"uint256"},{"name":"duration","type":"uint256"},{"name":"start","type":"uint256"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"stop_ramp","inputs":[],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"kill","inputs":[],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"sweep","inputs":[{"name":"token","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"nonpayable","type":"function","name":"transfer_ownership","inputs":[{"name":"new_owner","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"accept_ownership","inputs":[],"outputs":[]},{"stateMutability":"view","type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"pending_owner","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"killed","inputs":[],"outputs":[{"name":"","type":"bool"}]},{"stateMutability":"view","type":"function","name":"payee","inputs":[],"outputs":[{"name":"","type":"address"}]}]

61168f51503461014657602061178f5f395f518060a01c6101465760805260206117af5f395f518060a01c6101465760a05260206117cf5f395f518060a01c6101465760c05260206117ef5f395f518060a01c6101465760e052602061180f5f395f518060a01c6101465761010052670de0b6b3a7640000602061182f5f395f51101561008c575f6100a1565b67a688906bd8b00000602061182f5f395f5111155b156101465760805161164f5260a05161162f5260c05161166f526101005161168f5260e0516040526100d161010b565b60e051600355602061182f5f395f518060c01b9050602061182f5f395f518060801b90501760045561162f61014a610000396116af610000f35b5f6001555f546060526040515f556040516060517f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f6080a3565b5f80fd5f3560e01c60026014820660011b61160701601e395f51565b638da5cb5b81186100335734611603575f5460405260206040f35b63ae90b2138118610a0e57346116035760035460405260206040f3610a0e565b637f4ec4c38118610a0e57346116035760015460405260206040f3610a0e565b631f3a0e41811861008f57346116035760025460405260206040f35b6341c0e1b58118610a0e5734611603576100a7610a4d565b6100af6114dc565b6001600255602061164f5f395f516370a0823160c0523060e052602060c0602460dc845afa6100e0573d5f5f3e3d5ffd5b60203d106116035760c090505160a052602061164f5f395f5163a9059cbb60c0525f5460e05260a05161010052602060c0604460dc5f855af1610125573d5f5f3e3d5ffd5b60203d106116035760c0518060011c611603576101205261012050507ff4a991ad9e7f9711696f7bd41529beb4c470d75788573535d4ca3f0857c79ce860a05160c052602060c0a100610a0e565b63db006a75811861019157602336111561160357336102a05261021c565b63ec9b28f18118610a0e57602436103417611603576004358060a01c6116035760a0526101bc6114dc565b60a051156116035760a05160035560a0517fb35cb534021632242cdd9c586df6a75869880552d76afbabb674b6bd1f1b4f9f5f60c0a200610a0e565b637bde82f28118610487576043361115611603576024358060a01c611603576102a0525b610224610a4d565b600435602061164f5f395f516370a082316102c052306102e05260206102c060246102dc845afa610257573d5f5f3e3d5ffd5b60203d10611603576102c090505110156102d057600e610300527f6e6f7420656e6f756768205946490000000000000000000000000000000000006103205261030050610300518061032001601f825f031636823750506308c379a06102c05260206102e052601f19601f6103005101166044016102dcfd5b600435610240526102e26102e0611457565b6102e0516102c0526102c05115611603576102c051600381028160038204186116035790506103e8810490506102e0526102c0516102e0518082038281116116035790509050341061034b576102c0516102e0518082018281106116035790509050341161034e565b60015b156103b8576016610300527f7072696365206f7574206f6620746f6c6572616e6365000000000000000000006103205261030050610300518061032001601f825f031636823750506308c379a06102c05260206102e052601f19601f6103005101166044016102dcfd5b602061162f5f395f51639dc29fac61030052336103205260043561034052803b15611603575f610300604461031c5f855af16103f6573d5f5f3e3d5ffd5b506003545a5f61030052610300505f5f61030051610320348686f190509050610421573d5f5f3e3d5ffd5b602061164f5f395f5163a9059cbb610300526102a05161032052600435610340526020610300604461031c5f855af161045c573d5f5f3e3d5ffd5b60203d1061160357610300518060011c61160357610360526103605050600435610300526020610300f35b63e90354ca8118610a0e5734611603576104a261016061118e565b610160515f8112611603576101a05260206101a0f3610a0e565b636b6f4a9d81186104de57346116035760206104d96102406112b9565b610240f35b63951b93018118610a0e57346116035760803660603760045460405261050460e061112e565b60e080516060526020810151608052604081015160a052606081015160c0525060605160e0526080516101005260a0515f8112611603576101205260c0515f81126116035761014052608060e0f3610a0e565b63d127fe608118610a0e57602436103417611603576020600435610240526105806102a0611457565b6102a0f3610a0e565b631a67245a8118610a0e57346116035760206105a6610240610ab2565b610240f3610a0e565b63561e5d0a81186105d6576024361034176116035762093a806101605242610180526107df565b6301681a628118610a0e57602436103417611603576004358060a01c6116035760a05260025461061357602061164f5f395f5160a0511415610616565b60015b61067657600f60c0527f70726f74656374656420746f6b656e000000000000000000000000000000000060e05260c05060c0518060e001601f825f031636823750506308c379a0608052602060a052601f19601f60c0510116604401609cfd5b61067e6114dc565b5f60c05260a0516106bc574760c0525f5460c0515a5f60e05260e0505f5f60e051610100858786f190509050905061075e573d5f5f3e3d5ffd61075e565b60a0516370a0823160e0523061010052602060e0602460fc845afa6106e3573d5f5f3e3d5ffd5b60203d106116035760e090505160c05260a05163a9059cbb60e0525f546101005260c05161012052602060e0604460fc5f855af1610723573d5f5f3e3d5ffd5b3d61073a57803b1561160357600161014052610752565b60203d106116035760e0518060011c61160357610140525b61014090505115611603575b60a0517fab2246061d7b0dd3631d037e3f6da75782ae489eeb9f6af878a4b25df9b07c7760c05160e052602060e0a2602060c0f3610a0e565b63ec070a9d8118610a0e57604436103417611603576024356101605242610180526107df56610a0e565b63151357fc8118610893576064361034176116035760406024610160375b6107e76114dc565b670de0b6b3a764000060043510156107ff575f61080e565b67a688906bd8b0000060043511155b1561160357426101805110611603576040366101a03761082f6101e061118e565b6101e080516101a05260208101516101c052506101c0516116035761018051604052610180516101605180820182811061160357905090506060526101a0516080526004358060ff1c6116035760a05261088a6101e0611566565b6101e051600455005b63f0350c048118610a0e57602436103417611603576004358060a01c6116035760a0526108be6114dc565b60a05160015560a0515f547f23e1f881d1e797ea57a7247e53536f0bfc37c42e6645b3bdc4b1c9a0e0d8a1335f60c0a300610a0e565b636a6f101c8118610a0e57346116035761090c6114dc565b6040366101603761091e6101a061118e565b6101a080516101605260208101516101805250610180511561160357604036604037610160516080526101605160a0526109596101a0611566565b6101a05160045500610a0e565b63a67c2dcb8118610a0e573461160357336001541815610a005760296080527f4f776e61626c6532537465703a2063616c6c6572206973206e6f74207468652060a0527f6e6577206f776e6572000000000000000000000000000000000000000000000060c0526080506080518060a001601f825f031636823750506308c379a06040526020606052601f19601f6080510116604401605cfd5b33604052610a0c610a12565b005b5f5ffd5b5f6001555f546060526040515f556040516060517f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f6080a3565b60025415610ab05760066040527f6b696c6c6564000000000000000000000000000000000000000000000000000060605260405060405180606001601f825f031636823750506308c379a05f526020602052601f19601f6040510116604401601cfd5b565b60a036604037602061168f5f395f5163feaf968c60e05260a060e0600460fc845afa610ae0573d5f5f3e3d5ffd5b60a03d106116035760e0518060501c611603576101a052610100516101c052610120516101e0526101405161020052610160518060501c61160357610220526101a09050805160405260208101516060526040810151608052606081015160a052608081015160c052504260a051610e10810181811061160357905011610bbf57600d60e0527f707269636520746f6f206f6c64000000000000000000000000000000000000006101005260e05060e0518061010001601f825f031636823750506308c379a060a052602060c052601f19601f60e051011660440160bcfd5b6060515f811261160357815250565b60405160605260016080526806f05b59d3b20000006060511215610c24576803782dace9d900000060605112610c52576803782dace9d9000000606051036060526b1425982cf597cd205cef7380608052610c52565b6806f05b59d3b200000060605103606052770195e54c5dd42177f53a27172fa9ec6302628270000000006080525b60646060510260605268056bc75e2d6310000060a05268ad78ebc5ac6200000060605112610cae5768ad78ebc5ac620000006060510360605268056bc75e2d631000006e01855144814a7ff805980ff008400060a051020560a0525b6856bc75e2d63100000060605112610cf1576856bc75e2d6310000006060510360605268056bc75e2d631000006b02df0ab5a80a22c61ab5a70060a051020560a0525b682b5e3af16b1880000060605112610d3257682b5e3af16b188000006060510360605268056bc75e2d63100000693f1fce3da636ea5cf85060a051020560a0525b6815af1d78b58c40000060605112610d73576815af1d78b58c4000006060510360605268056bc75e2d63100000690127fa27722cc06cc5e260a051020560a0525b680ad78ebc5ac620000060605112610db357680ad78ebc5ac62000006060510360605268056bc75e2d6310000068280e60114edb805d0360a051020560a0525b68056bc75e2d6310000060605112610df35768056bc75e2d631000006060510360605268056bc75e2d63100000680ebc5fb4174612111060a051020560a0525b6802b5e3af16b188000060605112610e33576802b5e3af16b18800006060510360605268056bc75e2d631000006808f00f760a4b2db55d60a051020560a0525b68015af1d78b58c4000060605112610e735768015af1d78b58c400006060510360605268056bc75e2d631000006806f5f177578893793760a051020560a0525b60605160c05260605168056bc75e2d631000000160e052600268056bc75e2d6310000060605160c05102050560c05260c05160e0510160e052600368056bc75e2d6310000060605160c05102050560c05260c05160e0510160e052600468056bc75e2d6310000060605160c05102050560c05260c05160e0510160e052600568056bc75e2d6310000060605160c05102050560c05260c05160e0510160e052600668056bc75e2d6310000060605160c05102050560c05260c05160e0510160e052600768056bc75e2d6310000060605160c05102050560c05260c05160e0510160e052600868056bc75e2d6310000060605160c05102050560c05260c05160e0510160e052600968056bc75e2d6310000060605160c05102050560c05260c05160e0510160e052600a68056bc75e2d6310000060605160c05102050560c05260c05160e0510160e052600b68056bc75e2d6310000060605160c05102050560c05260c05160e0510160e052600c68056bc75e2d6310000060605160c05102050560c05260c05160e0510160e052606460805168056bc75e2d6310000060e05160a05102050205815250565b7ffffffffffffffffffffffffffffffffffffffffffffffffdc702bd3a30fc000061010051121561104f575f611060565b68070c1cc73b00c800006101005113155b15611603577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610100511361111257610100517f80000000000000000000000000000000000000000000000000000000000000008114611603575f036040526110ca610120610bce565b61012051801561160357806ec097ce7bc90715b34b9f100000000005600160ff1b6ec097ce7bc90715b34b9f100000000014155f19831415171561160357905081525061112c565b61010051604052611124610120610bce565b610120518152505b565b67ffffffffffffffff60405116815267ffffffffffffffff6040518060401c905016602082015267ffffffffffffffff6040518060801c9050168060ff1c6116035760408201526040518060c01c90508060ff1c61160357606082015250565b6080366060376004546040526111a460e061112e565b60e080516060526020810151608052604081015160a052606081015160c0525042608051116111de5760c05181525f6020820152506112b7565b4260605111156111f95760a05181525f6020820152506112b7565b60805160605180820382811161160357905090508060ff1c6116035760e0524260605180820382811161160357905090508060ff1c611603576101005260a05160c05160a0518082038281135f83121861160357905090506101005180820281191515600160ff1b8414151782158484840514171615611603579050905060e051801561160357808205600160ff1b8314155f19831415171561160357905090508082018281125f8312186116035790509050815260016020820152505b565b602061164f5f395f516318160ddd610180526020610180600461019c845afa6112e4573d5f5f3e3d5ffd5b60203d106116035761018090505161016052602061166f5f395f516318160ddd6101a05260206101a060046101bc845afa611321573d5f5f3e3d5ffd5b60203d10611603576101a09050516101805261018051670de0b6b3a7640000810281670de0b6b3a764000082041861160357905061016051801561160357808204905090508060ff1c611603576101a05261137d6101c061118e565b6101c0516101a05180820281191515600160ff1b84141517821584848405141716156116035790509050670de0b6b3a764000081059050670de0b6b3a76400008103818113611603579050602f810281602f820518611603579050600a810590506102205261022051610100526113f561020061101e565b610200516101a0526101a051600a810281600a82051861160357905080670de0b6b3a764000001670de0b6b3a764000081125f831218611603579050801561160357806ec097ce7bc90715b34b9f10000000000590505f811261160357815250565b61024051611466610260610ab2565b610260518082028115838383041417156116035790509050670de0b6b3a7640000810490506114966102806112b9565b6102805180670de0b6b3a764000003670de0b6b3a764000081116116035790508082028115838383041417156116035790509050670de0b6b3a764000081049050815250565b5f543318156115645760256040527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206060527f6f776e657200000000000000000000000000000000000000000000000000000060805260405060405180606001601f825f031636823750506308c379a05f526020602052601f19601f6040510116604401601cfd5b565b67ffffffffffffffff604051111561157e575f61158d565b67ffffffffffffffff60605111155b156116035767ffffffffffffffff60805113156115aa575f6115ca565b600160a05112156115bb575f6115ca565b67ffffffffffffffff60a05113155b156116035760a0515f8112611603578060c01b90506080515f8112611603578060801b90506060518060401b9050604051171717815250565b5f80fd0a0e0a0e01f8096607c107970a0e0a0e055704bc058900530a0e007305af001808f401730a0e0a0e8419162f8118281880a16576797065728300030a00160000000000000000000000000bc529c00c6401aef6d220be8c6ea1667f6ad93e00000000000000000000000041252e8691e964f7de35156b68493bab6797a27500000000000000000000000090c1f9220d90d3966fbee24045edd73e1d588ad5000000000000000000000000dddddddd0005d49d9b508bf034b036aab5818bcf0000000000000000000000003ebeaca272ce4f60e800f6c5ee678f50d2882fd40000000000000000000000000000000000000000000000008ac7230489e80000

Deployed Bytecode

0x5f3560e01c60026014820660011b61160701601e395f51565b638da5cb5b81186100335734611603575f5460405260206040f35b63ae90b2138118610a0e57346116035760035460405260206040f3610a0e565b637f4ec4c38118610a0e57346116035760015460405260206040f3610a0e565b631f3a0e41811861008f57346116035760025460405260206040f35b6341c0e1b58118610a0e5734611603576100a7610a4d565b6100af6114dc565b6001600255602061164f5f395f516370a0823160c0523060e052602060c0602460dc845afa6100e0573d5f5f3e3d5ffd5b60203d106116035760c090505160a052602061164f5f395f5163a9059cbb60c0525f5460e05260a05161010052602060c0604460dc5f855af1610125573d5f5f3e3d5ffd5b60203d106116035760c0518060011c611603576101205261012050507ff4a991ad9e7f9711696f7bd41529beb4c470d75788573535d4ca3f0857c79ce860a05160c052602060c0a100610a0e565b63db006a75811861019157602336111561160357336102a05261021c565b63ec9b28f18118610a0e57602436103417611603576004358060a01c6116035760a0526101bc6114dc565b60a051156116035760a05160035560a0517fb35cb534021632242cdd9c586df6a75869880552d76afbabb674b6bd1f1b4f9f5f60c0a200610a0e565b637bde82f28118610487576043361115611603576024358060a01c611603576102a0525b610224610a4d565b600435602061164f5f395f516370a082316102c052306102e05260206102c060246102dc845afa610257573d5f5f3e3d5ffd5b60203d10611603576102c090505110156102d057600e610300527f6e6f7420656e6f756768205946490000000000000000000000000000000000006103205261030050610300518061032001601f825f031636823750506308c379a06102c05260206102e052601f19601f6103005101166044016102dcfd5b600435610240526102e26102e0611457565b6102e0516102c0526102c05115611603576102c051600381028160038204186116035790506103e8810490506102e0526102c0516102e0518082038281116116035790509050341061034b576102c0516102e0518082018281106116035790509050341161034e565b60015b156103b8576016610300527f7072696365206f7574206f6620746f6c6572616e6365000000000000000000006103205261030050610300518061032001601f825f031636823750506308c379a06102c05260206102e052601f19601f6103005101166044016102dcfd5b602061162f5f395f51639dc29fac61030052336103205260043561034052803b15611603575f610300604461031c5f855af16103f6573d5f5f3e3d5ffd5b506003545a5f61030052610300505f5f61030051610320348686f190509050610421573d5f5f3e3d5ffd5b602061164f5f395f5163a9059cbb610300526102a05161032052600435610340526020610300604461031c5f855af161045c573d5f5f3e3d5ffd5b60203d1061160357610300518060011c61160357610360526103605050600435610300526020610300f35b63e90354ca8118610a0e5734611603576104a261016061118e565b610160515f8112611603576101a05260206101a0f3610a0e565b636b6f4a9d81186104de57346116035760206104d96102406112b9565b610240f35b63951b93018118610a0e57346116035760803660603760045460405261050460e061112e565b60e080516060526020810151608052604081015160a052606081015160c0525060605160e0526080516101005260a0515f8112611603576101205260c0515f81126116035761014052608060e0f3610a0e565b63d127fe608118610a0e57602436103417611603576020600435610240526105806102a0611457565b6102a0f3610a0e565b631a67245a8118610a0e57346116035760206105a6610240610ab2565b610240f3610a0e565b63561e5d0a81186105d6576024361034176116035762093a806101605242610180526107df565b6301681a628118610a0e57602436103417611603576004358060a01c6116035760a05260025461061357602061164f5f395f5160a0511415610616565b60015b61067657600f60c0527f70726f74656374656420746f6b656e000000000000000000000000000000000060e05260c05060c0518060e001601f825f031636823750506308c379a0608052602060a052601f19601f60c0510116604401609cfd5b61067e6114dc565b5f60c05260a0516106bc574760c0525f5460c0515a5f60e05260e0505f5f60e051610100858786f190509050905061075e573d5f5f3e3d5ffd61075e565b60a0516370a0823160e0523061010052602060e0602460fc845afa6106e3573d5f5f3e3d5ffd5b60203d106116035760e090505160c05260a05163a9059cbb60e0525f546101005260c05161012052602060e0604460fc5f855af1610723573d5f5f3e3d5ffd5b3d61073a57803b1561160357600161014052610752565b60203d106116035760e0518060011c61160357610140525b61014090505115611603575b60a0517fab2246061d7b0dd3631d037e3f6da75782ae489eeb9f6af878a4b25df9b07c7760c05160e052602060e0a2602060c0f3610a0e565b63ec070a9d8118610a0e57604436103417611603576024356101605242610180526107df56610a0e565b63151357fc8118610893576064361034176116035760406024610160375b6107e76114dc565b670de0b6b3a764000060043510156107ff575f61080e565b67a688906bd8b0000060043511155b1561160357426101805110611603576040366101a03761082f6101e061118e565b6101e080516101a05260208101516101c052506101c0516116035761018051604052610180516101605180820182811061160357905090506060526101a0516080526004358060ff1c6116035760a05261088a6101e0611566565b6101e051600455005b63f0350c048118610a0e57602436103417611603576004358060a01c6116035760a0526108be6114dc565b60a05160015560a0515f547f23e1f881d1e797ea57a7247e53536f0bfc37c42e6645b3bdc4b1c9a0e0d8a1335f60c0a300610a0e565b636a6f101c8118610a0e57346116035761090c6114dc565b6040366101603761091e6101a061118e565b6101a080516101605260208101516101805250610180511561160357604036604037610160516080526101605160a0526109596101a0611566565b6101a05160045500610a0e565b63a67c2dcb8118610a0e573461160357336001541815610a005760296080527f4f776e61626c6532537465703a2063616c6c6572206973206e6f74207468652060a0527f6e6577206f776e6572000000000000000000000000000000000000000000000060c0526080506080518060a001601f825f031636823750506308c379a06040526020606052601f19601f6080510116604401605cfd5b33604052610a0c610a12565b005b5f5ffd5b5f6001555f546060526040515f556040516060517f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f6080a3565b60025415610ab05760066040527f6b696c6c6564000000000000000000000000000000000000000000000000000060605260405060405180606001601f825f031636823750506308c379a05f526020602052601f19601f6040510116604401601cfd5b565b60a036604037602061168f5f395f5163feaf968c60e05260a060e0600460fc845afa610ae0573d5f5f3e3d5ffd5b60a03d106116035760e0518060501c611603576101a052610100516101c052610120516101e0526101405161020052610160518060501c61160357610220526101a09050805160405260208101516060526040810151608052606081015160a052608081015160c052504260a051610e10810181811061160357905011610bbf57600d60e0527f707269636520746f6f206f6c64000000000000000000000000000000000000006101005260e05060e0518061010001601f825f031636823750506308c379a060a052602060c052601f19601f60e051011660440160bcfd5b6060515f811261160357815250565b60405160605260016080526806f05b59d3b20000006060511215610c24576803782dace9d900000060605112610c52576803782dace9d9000000606051036060526b1425982cf597cd205cef7380608052610c52565b6806f05b59d3b200000060605103606052770195e54c5dd42177f53a27172fa9ec6302628270000000006080525b60646060510260605268056bc75e2d6310000060a05268ad78ebc5ac6200000060605112610cae5768ad78ebc5ac620000006060510360605268056bc75e2d631000006e01855144814a7ff805980ff008400060a051020560a0525b6856bc75e2d63100000060605112610cf1576856bc75e2d6310000006060510360605268056bc75e2d631000006b02df0ab5a80a22c61ab5a70060a051020560a0525b682b5e3af16b1880000060605112610d3257682b5e3af16b188000006060510360605268056bc75e2d63100000693f1fce3da636ea5cf85060a051020560a0525b6815af1d78b58c40000060605112610d73576815af1d78b58c4000006060510360605268056bc75e2d63100000690127fa27722cc06cc5e260a051020560a0525b680ad78ebc5ac620000060605112610db357680ad78ebc5ac62000006060510360605268056bc75e2d6310000068280e60114edb805d0360a051020560a0525b68056bc75e2d6310000060605112610df35768056bc75e2d631000006060510360605268056bc75e2d63100000680ebc5fb4174612111060a051020560a0525b6802b5e3af16b188000060605112610e33576802b5e3af16b18800006060510360605268056bc75e2d631000006808f00f760a4b2db55d60a051020560a0525b68015af1d78b58c4000060605112610e735768015af1d78b58c400006060510360605268056bc75e2d631000006806f5f177578893793760a051020560a0525b60605160c05260605168056bc75e2d631000000160e052600268056bc75e2d6310000060605160c05102050560c05260c05160e0510160e052600368056bc75e2d6310000060605160c05102050560c05260c05160e0510160e052600468056bc75e2d6310000060605160c05102050560c05260c05160e0510160e052600568056bc75e2d6310000060605160c05102050560c05260c05160e0510160e052600668056bc75e2d6310000060605160c05102050560c05260c05160e0510160e052600768056bc75e2d6310000060605160c05102050560c05260c05160e0510160e052600868056bc75e2d6310000060605160c05102050560c05260c05160e0510160e052600968056bc75e2d6310000060605160c05102050560c05260c05160e0510160e052600a68056bc75e2d6310000060605160c05102050560c05260c05160e0510160e052600b68056bc75e2d6310000060605160c05102050560c05260c05160e0510160e052600c68056bc75e2d6310000060605160c05102050560c05260c05160e0510160e052606460805168056bc75e2d6310000060e05160a05102050205815250565b7ffffffffffffffffffffffffffffffffffffffffffffffffdc702bd3a30fc000061010051121561104f575f611060565b68070c1cc73b00c800006101005113155b15611603577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610100511361111257610100517f80000000000000000000000000000000000000000000000000000000000000008114611603575f036040526110ca610120610bce565b61012051801561160357806ec097ce7bc90715b34b9f100000000005600160ff1b6ec097ce7bc90715b34b9f100000000014155f19831415171561160357905081525061112c565b61010051604052611124610120610bce565b610120518152505b565b67ffffffffffffffff60405116815267ffffffffffffffff6040518060401c905016602082015267ffffffffffffffff6040518060801c9050168060ff1c6116035760408201526040518060c01c90508060ff1c61160357606082015250565b6080366060376004546040526111a460e061112e565b60e080516060526020810151608052604081015160a052606081015160c0525042608051116111de5760c05181525f6020820152506112b7565b4260605111156111f95760a05181525f6020820152506112b7565b60805160605180820382811161160357905090508060ff1c6116035760e0524260605180820382811161160357905090508060ff1c611603576101005260a05160c05160a0518082038281135f83121861160357905090506101005180820281191515600160ff1b8414151782158484840514171615611603579050905060e051801561160357808205600160ff1b8314155f19831415171561160357905090508082018281125f8312186116035790509050815260016020820152505b565b602061164f5f395f516318160ddd610180526020610180600461019c845afa6112e4573d5f5f3e3d5ffd5b60203d106116035761018090505161016052602061166f5f395f516318160ddd6101a05260206101a060046101bc845afa611321573d5f5f3e3d5ffd5b60203d10611603576101a09050516101805261018051670de0b6b3a7640000810281670de0b6b3a764000082041861160357905061016051801561160357808204905090508060ff1c611603576101a05261137d6101c061118e565b6101c0516101a05180820281191515600160ff1b84141517821584848405141716156116035790509050670de0b6b3a764000081059050670de0b6b3a76400008103818113611603579050602f810281602f820518611603579050600a810590506102205261022051610100526113f561020061101e565b610200516101a0526101a051600a810281600a82051861160357905080670de0b6b3a764000001670de0b6b3a764000081125f831218611603579050801561160357806ec097ce7bc90715b34b9f10000000000590505f811261160357815250565b61024051611466610260610ab2565b610260518082028115838383041417156116035790509050670de0b6b3a7640000810490506114966102806112b9565b6102805180670de0b6b3a764000003670de0b6b3a764000081116116035790508082028115838383041417156116035790509050670de0b6b3a764000081049050815250565b5f543318156115645760256040527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206060527f6f776e657200000000000000000000000000000000000000000000000000000060805260405060405180606001601f825f031636823750506308c379a05f526020602052601f19601f6040510116604401601cfd5b565b67ffffffffffffffff604051111561157e575f61158d565b67ffffffffffffffff60605111155b156116035767ffffffffffffffff60805113156115aa575f6115ca565b600160a05112156115bb575f6115ca565b67ffffffffffffffff60a05113155b156116035760a0515f8112611603578060c01b90506080515f8112611603578060801b90506060518060401b9050604051171717815250565b5f80fd0a0e0a0e01f8096607c107970a0e0a0e055704bc058900530a0e007305af001808f401730a0e0a0e00000000000000000000000041252e8691e964f7de35156b68493bab6797a2750000000000000000000000000bc529c00c6401aef6d220be8c6ea1667f6ad93e00000000000000000000000090c1f9220d90d3966fbee24045edd73e1d588ad50000000000000000000000003ebeaca272ce4f60e800f6c5ee678f50d2882fd4

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

0000000000000000000000000bc529c00c6401aef6d220be8c6ea1667f6ad93e00000000000000000000000041252e8691e964f7de35156b68493bab6797a27500000000000000000000000090c1f9220d90d3966fbee24045edd73e1d588ad5000000000000000000000000dddddddd0005d49d9b508bf034b036aab5818bcf0000000000000000000000003ebeaca272ce4f60e800f6c5ee678f50d2882fd40000000000000000000000000000000000000000000000008ac7230489e80000

-----Decoded View---------------
Arg [0] : yfi (address): 0x0bc529c00C6401aEF6D220BE8C6Ea1667F6Ad93e
Arg [1] : d_yfi (address): 0x41252E8691e964f7DE35156B68493bAb6797a275
Arg [2] : ve_yfi (address): 0x90c1f9220d90d3966FbeE24045EDd73E1d588aD5
Arg [3] : owner (address): 0xdDddddDD0005d49D9b508BF034B036aaB5818bCF
Arg [4] : price_feed (address): 0x3EbEACa272Ce4f60E800f6C5EE678f50D2882fd4
Arg [5] : scaling_factor (uint256): 10000000000000000000

-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 0000000000000000000000000bc529c00c6401aef6d220be8c6ea1667f6ad93e
Arg [1] : 00000000000000000000000041252e8691e964f7de35156b68493bab6797a275
Arg [2] : 00000000000000000000000090c1f9220d90d3966fbee24045edd73e1d588ad5
Arg [3] : 000000000000000000000000dddddddd0005d49d9b508bf034b036aab5818bcf
Arg [4] : 0000000000000000000000003ebeaca272ce4f60e800f6c5ee678f50d2882fd4
Arg [5] : 0000000000000000000000000000000000000000000000008ac7230489e80000


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