ETH Price: $3,113.25 (-1.78%)

Token

EthXYToken (EXY)
 

Overview

Max Total Supply

298,695.674460655356135741 EXY

Holders

623

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
sherlockmcaping.eth
Balance
0 EXY

Value
$0.00
0xb602d49a76d99cab5744fd0cfc172d2cdf933752
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
EthXYToken

Compiler Version
vyper:0.3.9

Optimization Enabled:
N/A

Other Settings:
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

Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.