Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 1 from a total of 1 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
0x6080610a | 11278894 | 1333 days ago | IN | Create: Vyper_contract | 0 ETH | 0.04289452 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
Vyper_contract
Compiler Version
vyper:0.2.7
Contract Source Code (Vyper language format)
# @version 0.2.7 """ @title Meta Burner @notice Converts Metapool-paired coins to 3CRV and transfers to fee distributor """ from vyper.interfaces import ERC20 interface RegistrySwap: def exchange_with_best_rate( _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 is_approved: HashMap[address, HashMap[address, bool]] receiver: public(address) recovery: 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__(_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.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 # transfer coins from caller amount: uint256 = ERC20(_coin).balanceOf(msg.sender) if amount != 0: response: Bytes[32] = raw_call( _coin, concat( method_id("transferFrom(address,address,uint256)"), convert(msg.sender, bytes32), convert(self, bytes32), convert(amount, bytes32), ), max_outsize=32, ) if len(response) != 0: assert convert(response, bool) # get actual balance in case of transfer fee or pre-existing balance amount = ERC20(_coin).balanceOf(self) # swap coin for 3CRV and transfer to fee distributor registry_swap: address = AddressProvider(ADDRESS_PROVIDER).get_address(2) if not self.is_approved[registry_swap][_coin]: response: Bytes[32] = raw_call( _coin, concat( method_id("approve(address,uint256)"), convert(registry_swap, bytes32), convert(MAX_UINT256, bytes32), ), max_outsize=32, ) if len(response) != 0: assert convert(response, bool) self.is_approved[registry_swap][_coin] = True if amount != 0: RegistrySwap(registry_swap).exchange_with_best_rate(_coin, 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_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
- No Contract Security Audit Submitted- Submit Audit Here
[{"outputs":[],"inputs":[{"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":48580},{"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_killed","outputs":[{"type":"bool","name":""}],"inputs":[{"type":"bool","name":"_is_killed"}],"stateMutability":"nonpayable","type":"function","gas":37670},{"name":"commit_transfer_ownership","outputs":[{"type":"bool","name":""}],"inputs":[{"type":"address","name":"_future_owner"}],"stateMutability":"nonpayable","type":"function","gas":36473},{"name":"accept_transfer_ownership","outputs":[{"type":"bool","name":""}],"inputs":[],"stateMutability":"nonpayable","type":"function","gas":36399},{"name":"commit_transfer_emergency_ownership","outputs":[{"type":"bool","name":""}],"inputs":[{"type":"address","name":"_future_owner"}],"stateMutability":"nonpayable","type":"function","gas":36533},{"name":"accept_transfer_emergency_ownership","outputs":[{"type":"bool","name":""}],"inputs":[],"stateMutability":"nonpayable","type":"function","gas":36459},{"name":"receiver","outputs":[{"type":"address","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":1391},{"name":"recovery","outputs":[{"type":"address","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":1421},{"name":"is_killed","outputs":[{"type":"bool","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":1451},{"name":"owner","outputs":[{"type":"address","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":1481},{"name":"emergency_owner","outputs":[{"type":"address","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":1511},{"name":"future_owner","outputs":[{"type":"address","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":1541},{"name":"future_emergency_owner","outputs":[{"type":"address","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":1571}]
Contract Creation Code
6080610a59610140396020610a5960c03960c05160a01c1561002057600080fd5b60206020610a590160c03960c05160a01c1561003b57600080fd5b60206040610a590160c03960c05160a01c1561005657600080fd5b60206060610a590160c03960c05160a01c1561007157600080fd5b6101405160015561016051600255610180516004556101a051600555610a4156600436101561000d576109a9565b600035601c526389afcb4460005114156104925760043560a01c1561003157600080fd5b6003541561003e57600080fd5b60206101e060246370a0823161016052336101805261017c6004355afa61006457600080fd5b601f3d1161007157600080fd5b6000506101e0516101405260006101405118156101d857600060046101c0527f23b872dd000000000000000000000000000000000000000000000000000000006101e0526101c060048060208461022001018260208501600060045af1505080518201915050336020826102200101526020810190503060208261022001015260208101905061014051602082610220010152602081019050806102205261022090508051602001806102e08284600060045af161012e57600080fd5b505060206103c06102e05161030060006004355af161014c57600080fd5b60203d8082111561015d578061015f565b815b905090506103a0526103a08051602001806101608284600060045af161018457600080fd5b505060006101605118156101d7576101608060200151600082518060209013156101ad57600080fd5b80919012156101bb57600080fd5b806020036101000a820490509050905015156101d657600080fd5b5b5b60206101e060246370a0823161016052306101805261017c6004355afa6101fe57600080fd5b601f3d1161020b57600080fd5b6000506101e051610140526020610200602463493f4f746101805260026101a05261019c6f22d53366457f9d5e68ec105046fc43835afa61024b57600080fd5b601f3d1161025857600080fd5b600050610200516101605260006101605160e05260c052604060c02060043560e05260c052604060c02054151561040b57600060046101e0527f095ea7b300000000000000000000000000000000000000000000000000000000610200526101e060048060208461024001018260208501600060045af1505080518201915050610160516020826102400101526020810190507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602082610240010152602081019050806102405261024090508051602001806102e08284600060045af161033f57600080fd5b505060206103a06102e05161030060006004355af161035d57600080fd5b60203d8082111561036e5780610370565b815b90509050610380526103808051602001806101808284600060045af161039557600080fd5b505060006101805118156103e8576101808060200151600082518060209013156103be57600080fd5b80919012156103cc57600080fd5b806020036101000a820490509050905015156103e757600080fd5b5b600160006101605160e05260c052604060c02060043560e05260c052604060c020555b600061014051181561048557602061028060a4639f69a6a6610180526004356101a052736c3f90f043a72fa612cbac8115ee7e52bde6e4906101c052610140516101e0526000610200526001546102205261019c6000610160515af161047057600080fd5b601f3d1161047d57600080fd5b600050610280505b600160005260206000f350005b63db2f5f7960005114156106aa5734156104ab57600080fd5b60043560a01c156104bb57600080fd5b600454610160526005546101805260006101405261014061012060006002818352015b6101205160200261016001513314156104fa576001835261050b565b5b81516001018083528114156104de575b5050506101405160011461051e57600080fd5b60206101e060246370a0823161016052306101805261017c6004355afa61054457600080fd5b601f3d1161055157600080fd5b6000506101e05161014052600060046101c0527fa9059cbb000000000000000000000000000000000000000000000000000000006101e0526101c060048060208461022001018260208501600060045af150508051820191505060025460208261022001015260208101905061014051602082610220010152602081019050806102205261022090508051602001806102c08284600060045af16105f457600080fd5b505060206103806102c0516102e060006004355af161061257600080fd5b60203d808211156106235780610625565b815b90509050610360526103608051602001806101608284600060045af161064a57600080fd5b5050600061016051181561069d5761016080602001516000825180602090131561067357600080fd5b809190121561068157600080fd5b806020036101000a8204905090509050151561069c57600080fd5b5b600160005260206000f350005b635dc659b060005114156106f45734156106c357600080fd5b60043560a01c156106d357600080fd5b60045433146106e157600080fd5b600435600255600160005260206000f350005b6390b22997600051141561079357341561070d57600080fd5b60043560011c1561071d57600080fd5b600454610160526005546101805260006101405261014061012060006002818352015b61012051602002610160015133141561075c576001835261076d565b5b8151600101808352811415610740575b5050506101405160011461078057600080fd5b600435600355600160005260206000f350005b636b441a4060005114156107dd5734156107ac57600080fd5b60043560a01c156107bc57600080fd5b60045433146107ca57600080fd5b600435600655600160005260206000f350005b63e5ea47b860005114156108155734156107f657600080fd5b600654331461080457600080fd5b33600455600160005260206000f350005b6395c89915600051141561085f57341561082e57600080fd5b60043560a01c1561083e57600080fd5b600554331461084c57600080fd5b600435600755600160005260206000f350005b632d2cb675600051141561089757341561087857600080fd5b600754331461088657600080fd5b33600555600160005260206000f350005b63f7260d3e60005114156108be5734156108b057600080fd5b60015460005260206000f350005b63ddceafa960005114156108e55734156108d757600080fd5b60025460005260206000f350005b639c868ac0600051141561090c5734156108fe57600080fd5b60035460005260206000f350005b638da5cb5b600051141561093357341561092557600080fd5b60045460005260206000f350005b6363a4042a600051141561095a57341561094c57600080fd5b60055460005260206000f350005b631ec0cdc1600051141561098157341561097357600080fd5b60065460005260206000f350005b63e19f994c60005114156109a857341561099a57600080fd5b60075460005260206000f350005b5b60006000fd5b610092610a4103610092600039610092610a41036000f3000000000000000000000000a464e6dcda8ac41e03616f95f4bc98a13b8922dc000000000000000000000000ae9c8320a6394120ecb7b2b2678d9b4ac848d10600000000000000000000000040907540d8a6c65c637785e8f8b742ae6b0b996800000000000000000000000000669df67e4827fcc0e48a1838a8d5ab79281909
Deployed Bytecode
0x600436101561000d576109a9565b600035601c526389afcb4460005114156104925760043560a01c1561003157600080fd5b6003541561003e57600080fd5b60206101e060246370a0823161016052336101805261017c6004355afa61006457600080fd5b601f3d1161007157600080fd5b6000506101e0516101405260006101405118156101d857600060046101c0527f23b872dd000000000000000000000000000000000000000000000000000000006101e0526101c060048060208461022001018260208501600060045af1505080518201915050336020826102200101526020810190503060208261022001015260208101905061014051602082610220010152602081019050806102205261022090508051602001806102e08284600060045af161012e57600080fd5b505060206103c06102e05161030060006004355af161014c57600080fd5b60203d8082111561015d578061015f565b815b905090506103a0526103a08051602001806101608284600060045af161018457600080fd5b505060006101605118156101d7576101608060200151600082518060209013156101ad57600080fd5b80919012156101bb57600080fd5b806020036101000a820490509050905015156101d657600080fd5b5b5b60206101e060246370a0823161016052306101805261017c6004355afa6101fe57600080fd5b601f3d1161020b57600080fd5b6000506101e051610140526020610200602463493f4f746101805260026101a05261019c6f22d53366457f9d5e68ec105046fc43835afa61024b57600080fd5b601f3d1161025857600080fd5b600050610200516101605260006101605160e05260c052604060c02060043560e05260c052604060c02054151561040b57600060046101e0527f095ea7b300000000000000000000000000000000000000000000000000000000610200526101e060048060208461024001018260208501600060045af1505080518201915050610160516020826102400101526020810190507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602082610240010152602081019050806102405261024090508051602001806102e08284600060045af161033f57600080fd5b505060206103a06102e05161030060006004355af161035d57600080fd5b60203d8082111561036e5780610370565b815b90509050610380526103808051602001806101808284600060045af161039557600080fd5b505060006101805118156103e8576101808060200151600082518060209013156103be57600080fd5b80919012156103cc57600080fd5b806020036101000a820490509050905015156103e757600080fd5b5b600160006101605160e05260c052604060c02060043560e05260c052604060c020555b600061014051181561048557602061028060a4639f69a6a6610180526004356101a052736c3f90f043a72fa612cbac8115ee7e52bde6e4906101c052610140516101e0526000610200526001546102205261019c6000610160515af161047057600080fd5b601f3d1161047d57600080fd5b600050610280505b600160005260206000f350005b63db2f5f7960005114156106aa5734156104ab57600080fd5b60043560a01c156104bb57600080fd5b600454610160526005546101805260006101405261014061012060006002818352015b6101205160200261016001513314156104fa576001835261050b565b5b81516001018083528114156104de575b5050506101405160011461051e57600080fd5b60206101e060246370a0823161016052306101805261017c6004355afa61054457600080fd5b601f3d1161055157600080fd5b6000506101e05161014052600060046101c0527fa9059cbb000000000000000000000000000000000000000000000000000000006101e0526101c060048060208461022001018260208501600060045af150508051820191505060025460208261022001015260208101905061014051602082610220010152602081019050806102205261022090508051602001806102c08284600060045af16105f457600080fd5b505060206103806102c0516102e060006004355af161061257600080fd5b60203d808211156106235780610625565b815b90509050610360526103608051602001806101608284600060045af161064a57600080fd5b5050600061016051181561069d5761016080602001516000825180602090131561067357600080fd5b809190121561068157600080fd5b806020036101000a8204905090509050151561069c57600080fd5b5b600160005260206000f350005b635dc659b060005114156106f45734156106c357600080fd5b60043560a01c156106d357600080fd5b60045433146106e157600080fd5b600435600255600160005260206000f350005b6390b22997600051141561079357341561070d57600080fd5b60043560011c1561071d57600080fd5b600454610160526005546101805260006101405261014061012060006002818352015b61012051602002610160015133141561075c576001835261076d565b5b8151600101808352811415610740575b5050506101405160011461078057600080fd5b600435600355600160005260206000f350005b636b441a4060005114156107dd5734156107ac57600080fd5b60043560a01c156107bc57600080fd5b60045433146107ca57600080fd5b600435600655600160005260206000f350005b63e5ea47b860005114156108155734156107f657600080fd5b600654331461080457600080fd5b33600455600160005260206000f350005b6395c89915600051141561085f57341561082e57600080fd5b60043560a01c1561083e57600080fd5b600554331461084c57600080fd5b600435600755600160005260206000f350005b632d2cb675600051141561089757341561087857600080fd5b600754331461088657600080fd5b33600555600160005260206000f350005b63f7260d3e60005114156108be5734156108b057600080fd5b60015460005260206000f350005b63ddceafa960005114156108e55734156108d757600080fd5b60025460005260206000f350005b639c868ac0600051141561090c5734156108fe57600080fd5b60035460005260206000f350005b638da5cb5b600051141561093357341561092557600080fd5b60045460005260206000f350005b6363a4042a600051141561095a57341561094c57600080fd5b60055460005260206000f350005b631ec0cdc1600051141561098157341561097357600080fd5b60065460005260206000f350005b63e19f994c60005114156109a857341561099a57600080fd5b60075460005260206000f350005b5b60006000fd
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000a464e6dcda8ac41e03616f95f4bc98a13b8922dc000000000000000000000000ae9c8320a6394120ecb7b2b2678d9b4ac848d10600000000000000000000000040907540d8a6c65c637785e8f8b742ae6b0b996800000000000000000000000000669df67e4827fcc0e48a1838a8d5ab79281909
-----Decoded View---------------
Arg [0] : _receiver (address): 0xA464e6DCda8AC41e03616F95f4BC98a13b8922Dc
Arg [1] : _recovery (address): 0xAe9c8320A6394120ECb7B2B2678d9b4aC848d106
Arg [2] : _owner (address): 0x40907540d8a6C65c637785e8f8B742ae6b0b9968
Arg [3] : _emergency_owner (address): 0x00669DF67E4827FCc0E48A1838a8d5AB79281909
-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 000000000000000000000000a464e6dcda8ac41e03616f95f4bc98a13b8922dc
Arg [1] : 000000000000000000000000ae9c8320a6394120ecb7b2b2678d9b4ac848d106
Arg [2] : 00000000000000000000000040907540d8a6c65c637785e8f8b742ae6b0b9968
Arg [3] : 00000000000000000000000000669df67e4827fcc0e48a1838a8d5ab79281909
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.