POL Price: $0.715139 (-1.43%)
 

Overview

POL Balance

Polygon PoS Chain LogoPolygon PoS Chain LogoPolygon PoS Chain Logo0 POL

POL Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Commit_transfer_...391855642023-02-11 20:50:38662 days ago1676148638IN
Curve.fi: EURT Burner
0 POL0.00663002144.55216738

Parent Transaction Hash Block From To
View All Internal Transactions
Loading...
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

Deployed Bytecode

0x600436101561000d5761037e565b60003560e01c34610384576389afcb448118610174576004358060a01c610384576040526370a082316080523360a052602060806024609c6040515afa610059573d600060003e3d6000fd5b60203d10610384576080516060526323b872dd6080523360a0523060c05260605160e052602060806064609c60006040515af161009b573d600060003e3d6000fd5b60203d10610384576080518060011c610384576101005261010050630b4c7e4d60805260605160a052600060c052600060e052602060806064609c600073b446bf7b8d6d4276d0c75ec0e3ee8dd7fe15783a5af16100fe573d600060003e3d6000fd5b60203d106103845760805160605263a9059cbb60805260005460a05260605160c052602060806044609c600073600743b1d8a96438bd46836fd34977a00293f6aa5af1610150573d600060003e3d6000fd5b60203d10610384576080518060011c6103845760e05260e050600160805260206080f35b63db2f5f7981186102ae576004358060a01c610384576040526001543318610384576370a082316080523060a052602060806024609c6040515afa6101be573d600060003e3d6000fd5b60203d10610384576080516060526000600460c0527fa9059cbb0000000000000000000000000000000000000000000000000000000060e05260c0805160208201836101200181518152505080830192505050338161012001526020810190506060518161012001526020810190508061010052610100505060206101a06101005161012060006040515af1610259573d600060003e3d6000fd5b61018060203d80821161026c578161026e565b805b90509050815280518060805260208201805160a0525050506000608051146102a35760a0516080516020036008021c15610384575b600160c052602060c0f35b63d1dd6f5681186102e1576004358060a01c61038457604052600154331861038457604051600055600160605260206060f35b636b441a408118610314576004358060a01c61038457604052600154331861038457604051600255600160605260206060f35b63e5ea47b881186103375760025433186103845733600155600160405260206040f35b63f7260d3e811861034e5760005460405260206040f35b638da5cb5b81186103655760015460405260206040f35b631ec0cdc1811861037c5760025460405260206040f35b505b60006000fd5b600080fd

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