ETH Price: $3,317.23 (-4.26%)

Contract

0xCe96cc49a25e8C1E6E380F8Ab4B64DFF188fd035
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve214543742024-12-22 0:11:594 days ago1734826319IN
0xCe96cc49...F188fd035
0 ETH0.000455329.90002751
Approve213974452024-12-14 1:23:2312 days ago1734139403IN
0xCe96cc49...F188fd035
0 ETH0.0005892512.72914845
Approve213974382024-12-14 1:21:5912 days ago1734139319IN
0xCe96cc49...F188fd035
0 ETH0.0005796212.52104506
Increase Allowan...213422762024-12-06 8:31:1120 days ago1733473871IN
0xCe96cc49...F188fd035
0 ETH0.0007076315.2584245
Approve213261942024-12-04 2:36:2322 days ago1733279783IN
0xCe96cc49...F188fd035
0 ETH0.0009478620.44934449
Approve212849912024-11-28 8:25:3528 days ago1732782335IN
0xCe96cc49...F188fd035
0 ETH0.000212938.04980145
Approve212849892024-11-28 8:25:1128 days ago1732782311IN
0xCe96cc49...F188fd035
0 ETH0.000377628.14697147
Approve212609872024-11-24 23:48:2331 days ago1732492103IN
0xCe96cc49...F188fd035
0 ETH0.000250529.61482605
Approve212609862024-11-24 23:48:1131 days ago1732492091IN
0xCe96cc49...F188fd035
0 ETH0.000236269.82147298
Approve212318532024-11-20 22:12:3535 days ago1732140755IN
0xCe96cc49...F188fd035
0 ETH0.0003456914.37056834
Approve211126492024-11-04 6:59:4752 days ago1730703587IN
0xCe96cc49...F188fd035
0 ETH0.000267315.77457062
Increase Allowan...210869112024-10-31 16:47:2356 days ago1730393243IN
0xCe96cc49...F188fd035
0 ETH0.0006072413.09375231
Increase Allowan...210869052024-10-31 16:46:1156 days ago1730393171IN
0xCe96cc49...F188fd035
0 ETH0.0005959112.84928264
Approve208566172024-09-29 13:32:3588 days ago1727616755IN
0xCe96cc49...F188fd035
0 ETH0.0003389814.09146125
Approve208446212024-09-27 21:22:2389 days ago1727472143IN
0xCe96cc49...F188fd035
0 ETH0.000242910.09745125
Approve208399402024-09-27 5:42:5990 days ago1727415779IN
0xCe96cc49...F188fd035
0 ETH0.0002439310.14045774
Increase Allowan...207617362024-09-16 7:36:35101 days ago1726472195IN
0xCe96cc49...F188fd035
0 ETH0.0004915910.6
Approve207566642024-09-15 14:38:23102 days ago1726411103IN
0xCe96cc49...F188fd035
0 ETH0.000087323.63000071
Approve206364212024-08-29 19:46:59119 days ago1724960819IN
0xCe96cc49...F188fd035
0 ETH0.000063452.63655155
Approve206100442024-08-26 3:20:59122 days ago1724642459IN
0xCe96cc49...F188fd035
0 ETH0.000023860.99185329
Approve205354902024-08-15 17:21:59133 days ago1723742519IN
0xCe96cc49...F188fd035
0 ETH0.000134715.6
Approve200714112024-06-11 21:56:35197 days ago1718142995IN
0xCe96cc49...F188fd035
0 ETH0.0005335411.58864596
Approve200048742024-06-02 14:57:11207 days ago1717340231IN
0xCe96cc49...F188fd035
0 ETH0.000237889.88896495
Approve198530442024-05-12 9:27:47228 days ago1715506067IN
0xCe96cc49...F188fd035
0 ETH0.000091483.80291714
Approve198527882024-05-12 8:36:23228 days ago1715502983IN
0xCe96cc49...F188fd035
0 ETH0.000112234.66546331
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
EthXYToken

Compiler Version
vyper:0.3.9

Optimization Enabled:
N/A

Other Settings:
default evmVersion, MIT license

Contract Source Code (Vyper language format)

# @version ^0.3.9
# @title EthXYToken

from vyper.interfaces import ERC20

implements: ERC20

event Transfer:
    _from: indexed(address)
    _to: indexed(address)
    _value: uint256

event Approval:
    _owner: indexed(address)
    _spender: indexed(address)
    _value: uint256

name: public(immutable(String[10]))
symbol: public(immutable(String[3]))
decimals: public(constant(uint256)) = 18
totalSupply: public(uint256)

balanceOf: public(HashMap[address, uint256])
allowance: public(HashMap[address, HashMap[address, uint256]])

minter: public(address)
burner: public(address)

@external
def __init__():
    name = "EthXYToken"
    symbol = "EXY"
    self.minter = msg.sender
    self.burner = msg.sender

@external
def set_minter(minter: address):
    assert msg.sender == self.minter
    self.minter = minter

@external
def set_burner(burner: address):
    assert msg.sender == self.burner
    self.burner = burner

@external
def approve(spender: address, amount: uint256) -> bool:
    self.allowance[msg.sender][spender] = amount
    log Approval(msg.sender, spender, amount)
    return True

@external
def increaseAllowance(spender: address, addedValue: uint256) -> bool:
    self.allowance[msg.sender][spender] += addedValue
    log Approval(msg.sender, spender, self.allowance[msg.sender][spender])
    return True

@external
def decreaseAllowance(spender: address, subtractedValue: uint256) -> bool:
    self.allowance[msg.sender][spender] -= subtractedValue
    log Approval(msg.sender, spender, self.allowance[msg.sender][spender])
    return True

@external
def transfer(_to: address, _value: uint256) -> bool:
    self.balanceOf[msg.sender] -= _value
    self.balanceOf[_to] += _value
    log Transfer(msg.sender, _to, _value)
    return True

@external
def transferFrom(_from: address, _to: address, _value: uint256) -> bool:
    self.allowance[_from][msg.sender] -= _value
    self.balanceOf[_from] -= _value
    self.balanceOf[_to] += _value
    log Transfer(_from, _to, _value)
    return True

@external
def mint(_to: address, _value: uint256):
    assert msg.sender == self.minter
    self.balanceOf[_to] += _value
    self.totalSupply += _value
    log Transfer(ZERO_ADDRESS, _to, _value)

@external
def burn(_value: uint256):
    assert msg.sender == self.burner
    self.balanceOf[msg.sender] -= _value
    self.totalSupply -= _value
    log Transfer(msg.sender, ZERO_ADDRESS, _value)

################################################################
#                           EIP-2612                           #
################################################################

nonces: public(HashMap[address, uint256])

_DOMAIN_TYPEHASH: constant(bytes32) = keccak256("EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)")
_PERMIT_TYPE_HASH: constant(bytes32) = keccak256("Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)")


@external
def permit(owner: address, spender: address, amount: uint256, deadline: uint256, v: uint8, r: bytes32, s: bytes32):
    assert deadline >= block.timestamp
    nonce: uint256 = self.nonces[owner]
    self.nonces[owner] = nonce + 1

    domain_separator: bytes32 = keccak256(
        _abi_encode(_DOMAIN_TYPEHASH, name, "1.0", chain.id, self)
    )

    struct_hash: bytes32 = keccak256(_abi_encode(_PERMIT_TYPE_HASH, owner, spender, amount, nonce, deadline))
    hash: bytes32 = keccak256(
        concat(
            b"\x19\x01",
            domain_separator,
            struct_hash
        )
    )

    assert owner == ecrecover(hash, v, r, s)
    self.nonces[owner] += 1
    self.allowance[owner][spender] = amount
    log Approval(owner, spender, amount)

@internal
def _mint(_to: address, _value: uint256):
    self.balanceOf[_to] += _value
    self.totalSupply += _value
    log Transfer(ZERO_ADDRESS, _to, _value)

@internal
def _burn(_from: address, _value: uint256):
    assert self.balanceOf[_from] >= _value
    self.balanceOf[_from] -= _value
    self.totalSupply -= _value
    log Transfer(_from, ZERO_ADDRESS, _value)

Contract Security Audit

Contract ABI

[{"name":"Transfer","inputs":[{"name":"_from","type":"address","indexed":true},{"name":"_to","type":"address","indexed":true},{"name":"_value","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"Approval","inputs":[{"name":"_owner","type":"address","indexed":true},{"name":"_spender","type":"address","indexed":true},{"name":"_value","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"stateMutability":"nonpayable","type":"constructor","inputs":[],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"set_minter","inputs":[{"name":"minter","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"set_burner","inputs":[{"name":"burner","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"approve","inputs":[{"name":"spender","type":"address"},{"name":"amount","type":"uint256"}],"outputs":[{"name":"","type":"bool"}]},{"stateMutability":"nonpayable","type":"function","name":"increaseAllowance","inputs":[{"name":"spender","type":"address"},{"name":"addedValue","type":"uint256"}],"outputs":[{"name":"","type":"bool"}]},{"stateMutability":"nonpayable","type":"function","name":"decreaseAllowance","inputs":[{"name":"spender","type":"address"},{"name":"subtractedValue","type":"uint256"}],"outputs":[{"name":"","type":"bool"}]},{"stateMutability":"nonpayable","type":"function","name":"transfer","inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"outputs":[{"name":"","type":"bool"}]},{"stateMutability":"nonpayable","type":"function","name":"transferFrom","inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"outputs":[{"name":"","type":"bool"}]},{"stateMutability":"nonpayable","type":"function","name":"mint","inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"burn","inputs":[{"name":"_value","type":"uint256"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"permit","inputs":[{"name":"owner","type":"address"},{"name":"spender","type":"address"},{"name":"amount","type":"uint256"},{"name":"deadline","type":"uint256"},{"name":"v","type":"uint8"},{"name":"r","type":"bytes32"},{"name":"s","type":"bytes32"}],"outputs":[]},{"stateMutability":"view","type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string"}]},{"stateMutability":"view","type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string"}]},{"stateMutability":"view","type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"balanceOf","inputs":[{"name":"arg0","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"allowance","inputs":[{"name":"arg0","type":"address"},{"name":"arg1","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"minter","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"burner","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"nonces","inputs":[{"name":"arg0","type":"address"}],"outputs":[{"name":"","type":"uint256"}]}]

610a25515034610a6757600a6040527f4574685859546f6b656e00000000000000000000000000000000000000000000606052604080516020820180516109e55250806109c552505060036040527f455859000000000000000000000000000000000000000000000000000000000060605260408051602082018051610a25525080610a0552505033600355336004556109c56100a161000039610a45610000f36003361161000c576109b0565b5f3560e01c346109b4576306fdde038118610071576020806040528060400160206109c55f395f516020820160206109e55f395f51815250808252508051806020830101601f825f03163682375050601f19601f825160200101169050810190506040f35b6395d89b4181186100cc57602080604052806040016020610a055f395f51602082016020610a255f395f51815250808252508051806020830101601f825f03163682375050601f19601f825160200101169050810190506040f35b63313ce56781186100e257601260405260206040f35b6318160ddd81186100f8575f5460405260206040f35b6370a08231811861013157602436106109b4576004358060a01c6109b45760405260016040516020525f5260405f205460605260206060f35b63dd62ed3e811861018757604436106109b4576004358060a01c6109b4576040526024358060a01c6109b45760605260026040516020525f5260405f20806060516020525f5260405f2090505460805260206080f35b6307546172811861019e5760035460405260206040f35b6327810b6e81186101b55760045460405260206040f35b631652e9fc81186101e757602436106109b4576004358060a01c6109b45760405260035433186109b457604051600355005b63e0774862811861021957602436106109b4576004358060a01c6109b45760405260045433186109b457604051600455005b63095ea7b3811861029457604436106109b4576004358060a01c6109b4576040526024356002336020525f5260405f20806040516020525f5260405f20905055604051337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560243560605260206060a3600160605260206060f35b6339509351811861033a57604436106109b4576004358060a01c6109b4576040526002336020525f5260405f20806040516020525f5260405f20905080546024358082018281106109b45790509050815550604051337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9256002336020525f5260405f20806040516020525f5260405f2090505460605260206060a3600160605260206060f35b63a457c2d781186103e057604436106109b4576004358060a01c6109b4576040526002336020525f5260405f20806040516020525f5260405f20905080546024358082038281116109b45790509050815550604051337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9256002336020525f5260405f20806040516020525f5260405f2090505460605260206060a3600160605260206060f35b63a9059cbb811861048257604436106109b4576004358060a01c6109b4576040526001336020525f5260405f2080546024358082038281116109b4579050905081555060016040516020525f5260405f2080546024358082018281106109b45790509050815550604051337fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60243560605260206060a3600160605260206060f35b6323b872dd811861056757606436106109b4576004358060a01c6109b4576040526024358060a01c6109b45760605260026040516020525f5260405f2080336020525f5260405f20905080546044358082038281116109b4579050905081555060016040516020525f5260405f2080546044358082038281116109b4579050905081555060016060516020525f5260405f2080546044358082018281106109b457905090508155506060516040517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60443560805260206080a3600160805260206080f35b6340c10f1981186105fc57604436106109b4576004358060a01c6109b45760405260035433186109b45760016040516020525f5260405f2080546024358082018281106109b457905090508155505f546024358082018281106109b457905090505f556040515f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60243560605260206060a3005b6342966c68811861067f57602436106109b45760045433186109b4576001336020525f5260405f2080546004358082038281116109b457905090508155505f546004358082038281116109b457905090505f555f337fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60043560405260206040a3005b637ecebe0081186106b857602436106109b4576004358060a01c6109b45760405260056040516020525f5260405f205460605260206060f35b63d505accf81186109ae5760e436106109b4576004358060a01c6109b4576040526024358060a01c6109b4576060526084358060081c6109b45760805242606435106109b45760056040516020525f5260405f205460a05260a051600181018181106109b457905060056040516020525f5260405f205560a07f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f610140528061016052806101400160206109c55f395f516020820160206109e55f395f51815250808252508051806020830101601f825f03163682375050601f19601f825160200101169050810190508061018052600360e0527f312e3000000000000000000000000000000000000000000000000000000000006101005260e0816101400181516020830160208301815181525050808252508051806020830101601f825f03163682375050601f19601f825160200101169050905081019050466101a052306101c0526101205261012080516020820120905060c0527f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c96101205260405161014052606051610160526044356101805260a0516101a0526064356101c05260c06101005261010080516020820120905060e0525f6002610120527f19010000000000000000000000000000000000000000000000000000000000006101405261012080516020820183610180018151815250508083019250505060c05181610180015260208101905060e0518161018001526020810190508061016052610160905080516020820120905061010052610100516101205260805161014052604060a46101603760205f608061012060015afa505f51604051186109b45760056040516020525f5260405f208054600181018181106109b457905081555060443560026040516020525f5260405f20806060516020525f5260405f209050556060516040517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925604435610120526020610120a3005b505b5f5ffd5b5f80fda165767970657283000309000b005b5f80fd

Deployed Bytecode

0x6003361161000c576109b0565b5f3560e01c346109b4576306fdde038118610071576020806040528060400160206109c55f395f516020820160206109e55f395f51815250808252508051806020830101601f825f03163682375050601f19601f825160200101169050810190506040f35b6395d89b4181186100cc57602080604052806040016020610a055f395f51602082016020610a255f395f51815250808252508051806020830101601f825f03163682375050601f19601f825160200101169050810190506040f35b63313ce56781186100e257601260405260206040f35b6318160ddd81186100f8575f5460405260206040f35b6370a08231811861013157602436106109b4576004358060a01c6109b45760405260016040516020525f5260405f205460605260206060f35b63dd62ed3e811861018757604436106109b4576004358060a01c6109b4576040526024358060a01c6109b45760605260026040516020525f5260405f20806060516020525f5260405f2090505460805260206080f35b6307546172811861019e5760035460405260206040f35b6327810b6e81186101b55760045460405260206040f35b631652e9fc81186101e757602436106109b4576004358060a01c6109b45760405260035433186109b457604051600355005b63e0774862811861021957602436106109b4576004358060a01c6109b45760405260045433186109b457604051600455005b63095ea7b3811861029457604436106109b4576004358060a01c6109b4576040526024356002336020525f5260405f20806040516020525f5260405f20905055604051337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560243560605260206060a3600160605260206060f35b6339509351811861033a57604436106109b4576004358060a01c6109b4576040526002336020525f5260405f20806040516020525f5260405f20905080546024358082018281106109b45790509050815550604051337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9256002336020525f5260405f20806040516020525f5260405f2090505460605260206060a3600160605260206060f35b63a457c2d781186103e057604436106109b4576004358060a01c6109b4576040526002336020525f5260405f20806040516020525f5260405f20905080546024358082038281116109b45790509050815550604051337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9256002336020525f5260405f20806040516020525f5260405f2090505460605260206060a3600160605260206060f35b63a9059cbb811861048257604436106109b4576004358060a01c6109b4576040526001336020525f5260405f2080546024358082038281116109b4579050905081555060016040516020525f5260405f2080546024358082018281106109b45790509050815550604051337fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60243560605260206060a3600160605260206060f35b6323b872dd811861056757606436106109b4576004358060a01c6109b4576040526024358060a01c6109b45760605260026040516020525f5260405f2080336020525f5260405f20905080546044358082038281116109b4579050905081555060016040516020525f5260405f2080546044358082038281116109b4579050905081555060016060516020525f5260405f2080546044358082018281106109b457905090508155506060516040517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60443560805260206080a3600160805260206080f35b6340c10f1981186105fc57604436106109b4576004358060a01c6109b45760405260035433186109b45760016040516020525f5260405f2080546024358082018281106109b457905090508155505f546024358082018281106109b457905090505f556040515f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60243560605260206060a3005b6342966c68811861067f57602436106109b45760045433186109b4576001336020525f5260405f2080546004358082038281116109b457905090508155505f546004358082038281116109b457905090505f555f337fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60043560405260206040a3005b637ecebe0081186106b857602436106109b4576004358060a01c6109b45760405260056040516020525f5260405f205460605260206060f35b63d505accf81186109ae5760e436106109b4576004358060a01c6109b4576040526024358060a01c6109b4576060526084358060081c6109b45760805242606435106109b45760056040516020525f5260405f205460a05260a051600181018181106109b457905060056040516020525f5260405f205560a07f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f610140528061016052806101400160206109c55f395f516020820160206109e55f395f51815250808252508051806020830101601f825f03163682375050601f19601f825160200101169050810190508061018052600360e0527f312e3000000000000000000000000000000000000000000000000000000000006101005260e0816101400181516020830160208301815181525050808252508051806020830101601f825f03163682375050601f19601f825160200101169050905081019050466101a052306101c0526101205261012080516020820120905060c0527f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c96101205260405161014052606051610160526044356101805260a0516101a0526064356101c05260c06101005261010080516020820120905060e0525f6002610120527f19010000000000000000000000000000000000000000000000000000000000006101405261012080516020820183610180018151815250508083019250505060c05181610180015260208101905060e0518161018001526020810190508061016052610160905080516020820120905061010052610100516101205260805161014052604060a46101603760205f608061012060015afa505f51604051186109b45760056040516020525f5260405f208054600181018181106109b457905081555060443560026040516020525f5260405f20806060516020525f5260405f209050556060516040517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925604435610120526020610120a3005b505b5f5ffd5b5f80fda165767970657283000309000b000000000000000000000000000000000000000000000000000000000000000a4574685859546f6b656e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034558590000000000000000000000000000000000000000000000000000000000

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  ]

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.