ETH Price: $1,973.83 (+0.62%)
Gas: 0.03 Gwei
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

More Info

Private Name Tags

Multichain Info

1 address found via
Transaction Hash
Method
Block
From
To

There are no matching entries

> 10 Token Transfers found.

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

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

Contract Name:
Vyper_contract

Compiler Version
vyper:0.2.7

Optimization Enabled:
N/A

Other Settings:
petersburg EvmVersion, MIT license

Contract Source Code (Vyper language format)

# @version 0.2.7
"""
@title USDN Burner
@notice Return 50% of USDN to pool LPs, convert remaining to 3CRV
"""

from vyper.interfaces import ERC20

interface PoolProxy:
    def withdraw_admin_fees(_pool: address): nonpayable
    def donate_admin_fees(_pool: address): nonpayable


interface RegistrySwap:
    def exchange(
        _poool: address,
        _from: address,
        _to: address,
        _amount: uint256,
        _expected: uint256,
        _receiver: address,
    ) -> uint256: payable

interface AddressProvider:
    def get_address(_id: uint256) -> address: view


ADDRESS_PROVIDER: constant(address) = 0x0000000022D53366457F9d5E68Ec105046FC4383
TRIPOOL_LP: constant(address) = 0x6c3F90f043a72FA612cbac8115EE7e52BDe6E490
USDN_POOL: constant(address) = 0x0f9cb53Ebe405d49A0bbdBD291A65Ff571bC83e1
USDN: constant(address) = 0x674C6Ad92Fd080e4004b2312b45f796a192D27a0

is_approved: HashMap[address, bool]

receiver: public(address)
recovery: public(address)
pool_proxy: public(address)

is_killed: public(bool)

owner: public(address)
emergency_owner: public(address)
future_owner: public(address)
future_emergency_owner: public(address)


@external
def __init__(_pool_proxy: address, _receiver: address, _recovery: address, _owner: address, _emergency_owner: address):
    """
    @notice Contract constructor
    @param _receiver Address that converted tokens are transferred to.
                     Should be set to an `UnderlyingBurner` deployment.
    @param _recovery Address that tokens are transferred to during an
                     emergency token recovery.
    @param _owner Owner address. Can kill the contract, recover tokens
                  and modify the recovery address.
    @param _emergency_owner Emergency owner address. Can kill the contract
                            and recover tokens.
    """
    self.pool_proxy = _pool_proxy
    self.receiver = _receiver
    self.recovery = _recovery
    self.owner = _owner
    self.emergency_owner = _emergency_owner


@payable
@external
def burn(_coin: address) -> bool:
    """
    @notice Swap `_coin` for 3CRV and transfer to the fee distributor
    @param _coin Address of the coin being swapped
    @return bool success
    """
    assert not self.is_killed  # dev: is killed
    assert _coin == USDN  # dev: only USDN

    # transfer coins from caller
    amount: uint256 = ERC20(USDN).balanceOf(msg.sender)
    if amount != 0:
        ERC20(USDN).transferFrom(msg.sender, self, amount)

    # get actual balance in case of transfer fee or pre-existing balance
    amount = ERC20(USDN).balanceOf(self)

    if amount > 1:
        # withdraw any pending fees from USDN pool
        PoolProxy(self.pool_proxy).withdraw_admin_fees(USDN_POOL)

        # transfer 50% of USDN back into the pool
        ERC20(USDN).transfer(USDN_POOL, amount / 2)

        # donate tranferred USDN to LPs
        PoolProxy(self.pool_proxy).donate_admin_fees(USDN_POOL)

        # swap remaining USDN for 3CRV and transfer to fee distributor
        amount = ERC20(USDN).balanceOf(self)
        registry_swap: address = AddressProvider(ADDRESS_PROVIDER).get_address(2)
        if not self.is_approved[registry_swap]:
            ERC20(USDN).approve(registry_swap, MAX_UINT256)
            self.is_approved[registry_swap] = True

        RegistrySwap(registry_swap).exchange(USDN_POOL, USDN, TRIPOOL_LP, amount, 0, self.receiver)

    return True


@external
def recover_balance(_coin: address) -> bool:
    """
    @notice Recover ERC20 tokens from this contract
    @dev Tokens are sent to the recovery address
    @param _coin Token address
    @return bool success
    """
    assert msg.sender in [self.owner, self.emergency_owner]  # dev: only owner

    amount: uint256 = ERC20(_coin).balanceOf(self)
    response: Bytes[32] = raw_call(
        _coin,
        concat(
            method_id("transfer(address,uint256)"),
            convert(self.recovery, bytes32),
            convert(amount, bytes32),
        ),
        max_outsize=32,
    )
    if len(response) != 0:
        assert convert(response, bool)

    return True


@external
def set_recovery(_recovery: address) -> bool:
    """
    @notice Set the token recovery address
    @param _recovery Token recovery address
    @return bool success
    """
    assert msg.sender == self.owner  # dev: only owner
    self.recovery = _recovery

    return True


@external
def set_pool_proxy(_pool_proxy: address) -> bool:
    """
    @notice Set the pool proxy address
    @param _pool_proxy Pool proxy address
    @return bool success
    """
    assert msg.sender == self.owner  # dev: only owner
    self.pool_proxy = _pool_proxy

    return True


@external
def set_killed(_is_killed: bool) -> bool:
    """
    @notice Set killed status for this contract
    @dev When killed, the `burn` function cannot be called
    @param _is_killed Killed status
    @return bool success
    """
    assert msg.sender in [self.owner, self.emergency_owner]  # dev: only owner
    self.is_killed = _is_killed

    return True



@external
def commit_transfer_ownership(_future_owner: address) -> bool:
    """
    @notice Commit a transfer of ownership
    @dev Must be accepted by the new owner via `accept_transfer_ownership`
    @param _future_owner New owner address
    @return bool success
    """
    assert msg.sender == self.owner  # dev: only owner
    self.future_owner = _future_owner

    return True


@external
def accept_transfer_ownership() -> bool:
    """
    @notice Accept a transfer of ownership
    @return bool success
    """
    assert msg.sender == self.future_owner  # dev: only owner
    self.owner = msg.sender

    return True


@external
def commit_transfer_emergency_ownership(_future_owner: address) -> bool:
    """
    @notice Commit a transfer of ownership
    @dev Must be accepted by the new owner via `accept_transfer_ownership`
    @param _future_owner New owner address
    @return bool success
    """
    assert msg.sender == self.emergency_owner  # dev: only owner
    self.future_emergency_owner = _future_owner

    return True


@external
def accept_transfer_emergency_ownership() -> bool:
    """
    @notice Accept a transfer of ownership
    @return bool success
    """
    assert msg.sender == self.future_emergency_owner  # dev: only owner
    self.emergency_owner = msg.sender

    return True

Contract Security Audit

Contract ABI

API
[{"outputs":[],"inputs":[{"type":"address","name":"_pool_proxy"},{"type":"address","name":"_receiver"},{"type":"address","name":"_recovery"},{"type":"address","name":"_owner"},{"type":"address","name":"_emergency_owner"}],"stateMutability":"nonpayable","type":"constructor"},{"name":"burn","outputs":[{"type":"bool","name":""}],"inputs":[{"type":"address","name":"_coin"}],"stateMutability":"payable","type":"function","gas":50183},{"name":"recover_balance","outputs":[{"type":"bool","name":""}],"inputs":[{"type":"address","name":"_coin"}],"stateMutability":"nonpayable","type":"function","gas":7769},{"name":"set_recovery","outputs":[{"type":"bool","name":""}],"inputs":[{"type":"address","name":"_recovery"}],"stateMutability":"nonpayable","type":"function","gas":36413},{"name":"set_pool_proxy","outputs":[{"type":"bool","name":""}],"inputs":[{"type":"address","name":"_pool_proxy"}],"stateMutability":"nonpayable","type":"function","gas":36443},{"name":"set_killed","outputs":[{"type":"bool","name":""}],"inputs":[{"type":"bool","name":"_is_killed"}],"stateMutability":"nonpayable","type":"function","gas":37700},{"name":"commit_transfer_ownership","outputs":[{"type":"bool","name":""}],"inputs":[{"type":"address","name":"_future_owner"}],"stateMutability":"nonpayable","type":"function","gas":36503},{"name":"accept_transfer_ownership","outputs":[{"type":"bool","name":""}],"inputs":[],"stateMutability":"nonpayable","type":"function","gas":36429},{"name":"commit_transfer_emergency_ownership","outputs":[{"type":"bool","name":""}],"inputs":[{"type":"address","name":"_future_owner"}],"stateMutability":"nonpayable","type":"function","gas":36563},{"name":"accept_transfer_emergency_ownership","outputs":[{"type":"bool","name":""}],"inputs":[],"stateMutability":"nonpayable","type":"function","gas":36489},{"name":"receiver","outputs":[{"type":"address","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":1421},{"name":"recovery","outputs":[{"type":"address","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":1451},{"name":"pool_proxy","outputs":[{"type":"address","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":1481},{"name":"is_killed","outputs":[{"type":"bool","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":1511},{"name":"owner","outputs":[{"type":"address","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":1541},{"name":"emergency_owner","outputs":[{"type":"address","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":1571},{"name":"future_owner","outputs":[{"type":"address","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":1601},{"name":"future_emergency_owner","outputs":[{"type":"address","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":1631}]

0x60a0610ab7610140396020610ab760c03960c05160a01c1561002057600080fd5b60206020610ab70160c03960c05160a01c1561003b57600080fd5b60206040610ab70160c03960c05160a01c1561005657600080fd5b60206060610ab70160c03960c05160a01c1561007157600080fd5b60206080610ab70160c03960c05160a01c1561008c57600080fd5b6101405160035561016051600155610180516002556101a0516005556101c051600655610a9f56600436101561000d576109e5565b600035601c526389afcb44600051141561045d5760043560a01c1561003157600080fd5b6004541561003e57600080fd5b73674c6ad92fd080e4004b2312b45f796a192d27a06004351461006057600080fd5b60206101e060246370a0823161016052336101805261017c73674c6ad92fd080e4004b2312b45f796a192d27a05afa61009857600080fd5b601f3d116100a557600080fd5b6000506101e05161014052600061014051181561011857602061022060646323b872dd610160523361018052306101a052610140516101c05261017c600073674c6ad92fd080e4004b2312b45f796a192d27a05af161010357600080fd5b601f3d1161011057600080fd5b600050610220505b60206101e060246370a0823161016052306101805261017c73674c6ad92fd080e4004b2312b45f796a192d27a05afa61015057600080fd5b601f3d1161015d57600080fd5b6000506101e051610140526001610140511115610450576003543b61018157600080fd5b60006000602463e4e67c0f61016052730f9cb53ebe405d49a0bbdbd291a65ff571bc83e16101805261017c60006003545af16101bc57600080fd5b6020610200604463a9059cbb61016052730f9cb53ebe405d49a0bbdbd291a65ff571bc83e161018052610140516002808204905090506101a05261017c600073674c6ad92fd080e4004b2312b45f796a192d27a05af161021b57600080fd5b601f3d1161022857600080fd5b600050610200506003543b61023c57600080fd5b60006000602463db0a840661016052730f9cb53ebe405d49a0bbdbd291a65ff571bc83e16101805261017c60006003545af161027757600080fd5b60206101e060246370a0823161016052306101805261017c73674c6ad92fd080e4004b2312b45f796a192d27a05afa6102af57600080fd5b601f3d116102bc57600080fd5b6000506101e051610140526020610200602463493f4f746101805260026101a05261019c6f22d53366457f9d5e68ec105046fc43835afa6102fc57600080fd5b601f3d1161030957600080fd5b600050610200516101605260006101605160e05260c052604060c0205415156103b7576020610220604463095ea7b361018052610160516101a0527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101c05261019c600073674c6ad92fd080e4004b2312b45f796a192d27a05af161038e57600080fd5b601f3d1161039b57600080fd5b60005061022050600160006101605160e05260c052604060c020555b60206102a060c4631a4c1ca361018052730f9cb53ebe405d49a0bbdbd291a65ff571bc83e16101a05273674c6ad92fd080e4004b2312b45f796a192d27a06101c052736c3f90f043a72fa612cbac8115ee7e52bde6e4906101e05261014051610200526000610220526001546102405261019c6000610160515af161043b57600080fd5b601f3d1161044857600080fd5b6000506102a0505b600160005260206000f350005b63db2f5f79600051141561067557341561047657600080fd5b60043560a01c1561048657600080fd5b600554610160526006546101805260006101405261014061012060006002818352015b6101205160200261016001513314156104c557600183526104d6565b5b81516001018083528114156104a9575b505050610140516001146104e957600080fd5b60206101e060246370a0823161016052306101805261017c6004355afa61050f57600080fd5b601f3d1161051c57600080fd5b6000506101e05161014052600060046101c0527fa9059cbb000000000000000000000000000000000000000000000000000000006101e0526101c060048060208461022001018260208501600060045af150508051820191505060025460208261022001015260208101905061014051602082610220010152602081019050806102205261022090508051602001806102c08284600060045af16105bf57600080fd5b505060206103806102c0516102e060006004355af16105dd57600080fd5b60203d808211156105ee57806105f0565b815b90509050610360526103608051602001806101608284600060045af161061557600080fd5b505060006101605118156106685761016080602001516000825180602090131561063e57600080fd5b809190121561064c57600080fd5b806020036101000a8204905090509050151561066757600080fd5b5b600160005260206000f350005b635dc659b060005114156106bf57341561068e57600080fd5b60043560a01c1561069e57600080fd5b60055433146106ac57600080fd5b600435600255600160005260206000f350005b63cb8c7acc60005114156107095734156106d857600080fd5b60043560a01c156106e857600080fd5b60055433146106f657600080fd5b600435600355600160005260206000f350005b6390b2299760005114156107a857341561072257600080fd5b60043560011c1561073257600080fd5b600554610160526006546101805260006101405261014061012060006002818352015b6101205160200261016001513314156107715760018352610782565b5b8151600101808352811415610755575b5050506101405160011461079557600080fd5b600435600455600160005260206000f350005b636b441a4060005114156107f25734156107c157600080fd5b60043560a01c156107d157600080fd5b60055433146107df57600080fd5b600435600755600160005260206000f350005b63e5ea47b8600051141561082a57341561080b57600080fd5b600754331461081957600080fd5b33600555600160005260206000f350005b6395c89915600051141561087457341561084357600080fd5b60043560a01c1561085357600080fd5b600654331461086157600080fd5b600435600855600160005260206000f350005b632d2cb67560005114156108ac57341561088d57600080fd5b600854331461089b57600080fd5b33600655600160005260206000f350005b63f7260d3e60005114156108d35734156108c557600080fd5b60015460005260206000f350005b63ddceafa960005114156108fa5734156108ec57600080fd5b60025460005260206000f350005b6391db89f3600051141561092157341561091357600080fd5b60035460005260206000f350005b639c868ac0600051141561094857341561093a57600080fd5b60045460005260206000f350005b638da5cb5b600051141561096f57341561096157600080fd5b60055460005260206000f350005b6363a4042a600051141561099657341561098857600080fd5b60065460005260206000f350005b631ec0cdc160005114156109bd5734156109af57600080fd5b60075460005260206000f350005b63e19f994c60005114156109e45734156109d657600080fd5b60085460005260206000f350005b5b60006000fd5b6100b4610a9f036100b46000396100b4610a9f036000f3000000000000000000000000ecb456ea5365865ebab8a2661b0c503410e9b347000000000000000000000000a464e6dcda8ac41e03616f95f4bc98a13b8922dc000000000000000000000000ae9c8320a6394120ecb7b2b2678d9b4ac848d10600000000000000000000000040907540d8a6c65c637785e8f8b742ae6b0b996800000000000000000000000000669df67e4827fcc0e48a1838a8d5ab79281909

Deployed Bytecode

0x600436101561000d576109e5565b600035601c526389afcb44600051141561045d5760043560a01c1561003157600080fd5b6004541561003e57600080fd5b73674c6ad92fd080e4004b2312b45f796a192d27a06004351461006057600080fd5b60206101e060246370a0823161016052336101805261017c73674c6ad92fd080e4004b2312b45f796a192d27a05afa61009857600080fd5b601f3d116100a557600080fd5b6000506101e05161014052600061014051181561011857602061022060646323b872dd610160523361018052306101a052610140516101c05261017c600073674c6ad92fd080e4004b2312b45f796a192d27a05af161010357600080fd5b601f3d1161011057600080fd5b600050610220505b60206101e060246370a0823161016052306101805261017c73674c6ad92fd080e4004b2312b45f796a192d27a05afa61015057600080fd5b601f3d1161015d57600080fd5b6000506101e051610140526001610140511115610450576003543b61018157600080fd5b60006000602463e4e67c0f61016052730f9cb53ebe405d49a0bbdbd291a65ff571bc83e16101805261017c60006003545af16101bc57600080fd5b6020610200604463a9059cbb61016052730f9cb53ebe405d49a0bbdbd291a65ff571bc83e161018052610140516002808204905090506101a05261017c600073674c6ad92fd080e4004b2312b45f796a192d27a05af161021b57600080fd5b601f3d1161022857600080fd5b600050610200506003543b61023c57600080fd5b60006000602463db0a840661016052730f9cb53ebe405d49a0bbdbd291a65ff571bc83e16101805261017c60006003545af161027757600080fd5b60206101e060246370a0823161016052306101805261017c73674c6ad92fd080e4004b2312b45f796a192d27a05afa6102af57600080fd5b601f3d116102bc57600080fd5b6000506101e051610140526020610200602463493f4f746101805260026101a05261019c6f22d53366457f9d5e68ec105046fc43835afa6102fc57600080fd5b601f3d1161030957600080fd5b600050610200516101605260006101605160e05260c052604060c0205415156103b7576020610220604463095ea7b361018052610160516101a0527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101c05261019c600073674c6ad92fd080e4004b2312b45f796a192d27a05af161038e57600080fd5b601f3d1161039b57600080fd5b60005061022050600160006101605160e05260c052604060c020555b60206102a060c4631a4c1ca361018052730f9cb53ebe405d49a0bbdbd291a65ff571bc83e16101a05273674c6ad92fd080e4004b2312b45f796a192d27a06101c052736c3f90f043a72fa612cbac8115ee7e52bde6e4906101e05261014051610200526000610220526001546102405261019c6000610160515af161043b57600080fd5b601f3d1161044857600080fd5b6000506102a0505b600160005260206000f350005b63db2f5f79600051141561067557341561047657600080fd5b60043560a01c1561048657600080fd5b600554610160526006546101805260006101405261014061012060006002818352015b6101205160200261016001513314156104c557600183526104d6565b5b81516001018083528114156104a9575b505050610140516001146104e957600080fd5b60206101e060246370a0823161016052306101805261017c6004355afa61050f57600080fd5b601f3d1161051c57600080fd5b6000506101e05161014052600060046101c0527fa9059cbb000000000000000000000000000000000000000000000000000000006101e0526101c060048060208461022001018260208501600060045af150508051820191505060025460208261022001015260208101905061014051602082610220010152602081019050806102205261022090508051602001806102c08284600060045af16105bf57600080fd5b505060206103806102c0516102e060006004355af16105dd57600080fd5b60203d808211156105ee57806105f0565b815b90509050610360526103608051602001806101608284600060045af161061557600080fd5b505060006101605118156106685761016080602001516000825180602090131561063e57600080fd5b809190121561064c57600080fd5b806020036101000a8204905090509050151561066757600080fd5b5b600160005260206000f350005b635dc659b060005114156106bf57341561068e57600080fd5b60043560a01c1561069e57600080fd5b60055433146106ac57600080fd5b600435600255600160005260206000f350005b63cb8c7acc60005114156107095734156106d857600080fd5b60043560a01c156106e857600080fd5b60055433146106f657600080fd5b600435600355600160005260206000f350005b6390b2299760005114156107a857341561072257600080fd5b60043560011c1561073257600080fd5b600554610160526006546101805260006101405261014061012060006002818352015b6101205160200261016001513314156107715760018352610782565b5b8151600101808352811415610755575b5050506101405160011461079557600080fd5b600435600455600160005260206000f350005b636b441a4060005114156107f25734156107c157600080fd5b60043560a01c156107d157600080fd5b60055433146107df57600080fd5b600435600755600160005260206000f350005b63e5ea47b8600051141561082a57341561080b57600080fd5b600754331461081957600080fd5b33600555600160005260206000f350005b6395c89915600051141561087457341561084357600080fd5b60043560a01c1561085357600080fd5b600654331461086157600080fd5b600435600855600160005260206000f350005b632d2cb67560005114156108ac57341561088d57600080fd5b600854331461089b57600080fd5b33600655600160005260206000f350005b63f7260d3e60005114156108d35734156108c557600080fd5b60015460005260206000f350005b63ddceafa960005114156108fa5734156108ec57600080fd5b60025460005260206000f350005b6391db89f3600051141561092157341561091357600080fd5b60035460005260206000f350005b639c868ac0600051141561094857341561093a57600080fd5b60045460005260206000f350005b638da5cb5b600051141561096f57341561096157600080fd5b60055460005260206000f350005b6363a4042a600051141561099657341561098857600080fd5b60065460005260206000f350005b631ec0cdc160005114156109bd5734156109af57600080fd5b60075460005260206000f350005b63e19f994c60005114156109e45734156109d657600080fd5b60085460005260206000f350005b5b60006000fd

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
0x06534b0BF7Ff378F162d4F348390BDA53b15fA35
Net Worth in USD
$11,185.46

Net Worth in ETH
5.666879

Token Allocations
USDT 39.89%
MIM 21.96%
FRAX 19.29%
Others 18.86%
Chain Token Portfolio % Price Amount Value
AVAX39.89%$0.004,463.215$0.00
AVAX21.96%$0.002,497.4095$0.00
AVAX19.29%$0.9915822,175.689$2,157.37
AVAX16.35%$0.999921,829.1075$1,828.96
AVAX1.12%$0.999819124.9526$124.93
AVAX0.38%$9.044.7277$42.75
AVAX0.24%$0.9998127.0616$27.06
AVAX0.16%$0.9979118.2679$18.23
AVAX0.16%$76,2480.00023085$17.6
AVAX0.12%$0.99961713.964$13.96
AVAX0.12%$67,825.960.00019329$13.11
AVAX0.08%$0.008.6625$0.00
AVAX0.07%$10.660.74$7.89
AVAX0.06%$9.050.709$6.42
Loading...
Loading
Loading...
Loading
Loading...
Loading

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.