Contract 0x410364C393C7E64b6F1d0Ee03f89BFD09b49940c

 
 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0xae4efe08a719bf9af49485ecfe6db5136b056094d1e52a91558a388fbd7c33470x60206104325023762022-08-31 2:20:5198 days 45 mins ago0x745748bcfd8f9c2de519a71d789be8a63dd7d66c IN  Create: Vyper_contract0 MATIC0.010527906339 32.065307879
[ Download CSV Export 
Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Vyper_contract

Compiler Version
vyper:0.3.3

Optimization Enabled:
N/A

Other Settings:
, None license

Contract Source Code (Vyper language format)

# @version 0.3.3
"""
@title EURT Burner
@notice Deposits EURT into EURT/am3CRV Crypto Pool and returns LP token
"""
from vyper.interfaces import ERC20


interface ECrypto:
    def add_liquidity(_amounts: uint256[2], _min_dy: uint256) -> uint256: nonpayable


EURT: constant(address) = 0x7BDF330f423Ea880FF95fC41A280fD5eCFD3D09f  # EURT
POOL: constant(address) = 0xB446BF7b8D6D4276d0c75eC0e3ee8dD7Fe15783A  # EURT/am3CRV
LP_TOKEN: constant(address) = 0x600743B1d8A96438bD46836fD34977a00293f6Aa  # crvEURTUSD


receiver: public(address)

owner: public(address)
future_owner: public(address)


@external
def __init__(receiver: address):
    ERC20(EURT).approve(POOL, MAX_UINT256)

    self.receiver = receiver
    self.owner = msg.sender


@external
def burn(_coin: address) -> bool:
    amount: uint256 = ERC20(_coin).balanceOf(msg.sender)
    ERC20(_coin).transferFrom(msg.sender, self, amount)

    amount = ECrypto(POOL).add_liquidity([amount, 0], 0)
    ERC20(LP_TOKEN).transfer(self.receiver, amount)

    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 == self.owner

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

    return True


@external
def set_receiver(_receiver: address) -> bool:
    """
    @notice Set the token receiver address
    @return bool success
    """
    assert msg.sender == self.owner  # dev: only owner
    self.receiver = _receiver

    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

Contract Security Audit

Contract ABI

[{"stateMutability":"nonpayable","type":"constructor","inputs":[{"name":"receiver","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"burn","inputs":[{"name":"_coin","type":"address"}],"outputs":[{"name":"","type":"bool"}]},{"stateMutability":"nonpayable","type":"function","name":"recover_balance","inputs":[{"name":"_coin","type":"address"}],"outputs":[{"name":"","type":"bool"}]},{"stateMutability":"nonpayable","type":"function","name":"set_receiver","inputs":[{"name":"_receiver","type":"address"}],"outputs":[{"name":"","type":"bool"}]},{"stateMutability":"nonpayable","type":"function","name":"commit_transfer_ownership","inputs":[{"name":"_future_owner","type":"address"}],"outputs":[{"name":"","type":"bool"}]},{"stateMutability":"nonpayable","type":"function","name":"accept_transfer_ownership","inputs":[],"outputs":[{"name":"","type":"bool"}]},{"stateMutability":"view","type":"function","name":"receiver","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"future_owner","inputs":[],"outputs":[{"name":"","type":"address"}]}]

60206104546000396000518060a01c61044f5760405263095ea7b360605273b446bf7b8d6d4276d0c75ec0e3ee8dd7fe15783a6080527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60a052602060606044607c6000737bdf330f423ea880ff95fc41a280fd5ecfd3d09f5af1610089573d600060003e3d6000fd5b60203d1061044f576060518060011c61044f5760c05260c050604051600055336001556103896100c56300000000396103896000016300000000f3600436101561000d5761037e565b60003560e01c34610384576389afcb448118610174576004358060a01c610384576040526370a082316080523360a052602060806024609c6040515afa610059573d600060003e3d6000fd5b60203d10610384576080516060526323b872dd6080523360a0523060c05260605160e052602060806064609c60006040515af161009b573d600060003e3d6000fd5b60203d10610384576080518060011c610384576101005261010050630b4c7e4d60805260605160a052600060c052600060e052602060806064609c600073b446bf7b8d6d4276d0c75ec0e3ee8dd7fe15783a5af16100fe573d600060003e3d6000fd5b60203d106103845760805160605263a9059cbb60805260005460a05260605160c052602060806044609c600073600743b1d8a96438bd46836fd34977a00293f6aa5af1610150573d600060003e3d6000fd5b60203d10610384576080518060011c6103845760e05260e050600160805260206080f35b63db2f5f7981186102ae576004358060a01c610384576040526001543318610384576370a082316080523060a052602060806024609c6040515afa6101be573d600060003e3d6000fd5b60203d10610384576080516060526000600460c0527fa9059cbb0000000000000000000000000000000000000000000000000000000060e05260c0805160208201836101200181518152505080830192505050338161012001526020810190506060518161012001526020810190508061010052610100505060206101a06101005161012060006040515af1610259573d600060003e3d6000fd5b61018060203d80821161026c578161026e565b805b90509050815280518060805260208201805160a0525050506000608051146102a35760a0516080516020036008021c15610384575b600160c052602060c0f35b63d1dd6f5681186102e1576004358060a01c61038457604052600154331861038457604051600055600160605260206060f35b636b441a408118610314576004358060a01c61038457604052600154331861038457604051600255600160605260206060f35b63e5ea47b881186103375760025433186103845733600155600160405260206040f35b63f7260d3e811861034e5760005460405260206040f35b638da5cb5b81186103655760015460405260206040f35b631ec0cdc1811861037c5760025460405260206040f35b505b60006000fd5b600080fd005b600080fd000000000000000000000000774d1dba98cfbd1f2bc3a1f59c494125e07c48f9

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

000000000000000000000000774d1dba98cfbd1f2bc3a1f59c494125e07c48f9

-----Decoded View---------------
Arg [0] : receiver (address): 0x774d1dba98cfbd1f2bc3a1f59c494125e07c48f9

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000774d1dba98cfbd1f2bc3a1f59c494125e07c48f9


Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.