Cryo Explorer Ethereum Mainnet

Address Contract Partially Verified

Address 0xc52FaFDc900cB92Ae01E6E4F8979aF7f436e2EB2
Balance 0 ETH
Nonce 1
Code Size 3058 bytes
Last Active
Indexed Transactions 9 (24,178,45424,318,515)
Gas Used (indexed) 385,990
External Etherscan · Sourcify

Contract Bytecode

3058 bytes
0x6003361161000c57610b72565b5f3560e01c34610be15763313ce567811861002c57601260405260206040f35b6318160ddd8118610042575f5460405260206040f35b6370a08231811861007b5760243610610be1576004358060a01c610be15760405260016040516020525f5260405f205460605260206060f35b63dd62ed3e81186100d15760443610610be1576004358060a01c610be1576040526024358060a01c610be15760605260026040516020525f5260405f20806060516020525f5260405f2090505460805260206080f35b630754617281186100e85760035460405260206040f35b6306fdde0381186101675760208060805260136040527f536574746c656420455448585920546f6b656e0000000000000000000000000060605260408160800181516020830160208301815181525050808252508051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506080f35b6395d89b4181186101e65760208060805260046040527f534558590000000000000000000000000000000000000000000000000000000060605260408160800181516020830160208301815181525050808252508051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506080f35b631652e9fc81186102185760243610610be1576004358060a01c610be1576040526003543318610be157604051600355005b63095ea7b381186102935760443610610be1576004358060a01c610be1576040526024356002336020525f5260405f20806040516020525f5260405f20905055604051337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560243560605260206060a3600160605260206060f35b633950935181186103395760443610610be1576004358060a01c610be1576040526002336020525f5260405f20806040516020525f5260405f2090508054602435808201828110610be15790509050815550604051337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9256002336020525f5260405f20806040516020525f5260405f2090505460605260206060a3600160605260206060f35b63a457c2d781186103df5760443610610be1576004358060a01c610be1576040526002336020525f5260405f20806040516020525f5260405f2090508054602435808203828111610be15790509050815550604051337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9256002336020525f5260405f20806040516020525f5260405f2090505460605260206060a3600160605260206060f35b63a9059cbb81186104815760443610610be1576004358060a01c610be1576040526001336020525f5260405f208054602435808203828111610be1579050905081555060016040516020525f5260405f208054602435808201828110610be15790509050815550604051337fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60243560605260206060a3600160605260206060f35b6323b872dd81186105665760643610610be1576004358060a01c610be1576040526024358060a01c610be15760605260026040516020525f5260405f2080336020525f5260405f2090508054604435808203828111610be1579050905081555060016040516020525f5260405f208054604435808203828111610be1579050905081555060016060516020525f5260405f208054604435808201828110610be157905090508155506060516040517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60443560805260206080a3600160805260206080f35b6340c10f1981186105fb5760443610610be1576004358060a01c610be1576040526003543318610be15760016040516020525f5260405f208054602435808201828110610be157905090508155505f54602435808201828110610be157905090505f556040515f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60243560605260206060a3005b6342966c68811861067f5760243610610be1576001336020525f5260405f208054600435808203828111610be157905090508155505f54600435808203828111610be157905090505f555f337fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60043560405260206040a360043560405260206040f35b637ecebe0081186106b85760243610610be1576004358060a01c610be15760405260046040516020525f5260405f205460605260206060f35b63d505accf81186109395760e43610610be1576004358060a01c610be1576040526024358060a01c610be1576060526084358060081c610be1576080524260643510610be15760046040516020525f5260405f205460a05260a05160018101818110610be157905060046040516020525f5260405f20557f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f610100527f2d103f9b36ad244a9c78fc4f870bcfd43e49f6e627c691581d0b02215281761a610120527fe6bbd6277e1bf288eed5e8d1780f9a50b239e86b153736bceebccf4ea79d90b3610140524661016052306101805260a060e05260e080516020820120905060c0527f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c96101205260405161014052606051610160526044356101805260a0516101a0526064356101c05260c06101005261010080516020820120905060e0525f6002610120527f19010000000000000000000000000000000000000000000000000000000000006101405261012080516020820183610180018151815250508083019250505060c05181610180015260208101905060e0518161018001526020810190508061016052610160905080516020820120905061010052610100516101205260805161014052604060a46101603760205f608061012060015afa505f5160405118610be15760046040516020525f5260405f20805460018101818110610be157905081555060443560026040516020525f5260405f20806060516020525f5260405f209050556060516040517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925604435610120526020610120a3005b6399d0555081186109725760243610610be1576004358060a01c610be15760405260056040516020525f5260405f205460605260206060f35b63a79b092f8118610b705760a43610610be1576004358060a01c610be15760a0526044358060081c610be15760c0527f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f610120527f2d103f9b36ad244a9c78fc4f870bcfd43e49f6e627c691581d0b02215281761a610140527fe6bbd6277e1bf288eed5e8d1780f9a50b239e86b153736bceebccf4ea79d90b3610160524661018052306101a05260a06101005261010080516020820120905060e0527fc68376ee809bc84a1619f411f9dd76615e4a60ad57444bc108028d84b0e75e906101405260a0516101605260243561018052600560a0516020525f5260405f20546101a052608061012052610120805160208201209050610100525f6002610140527f190100000000000000000000000000000000000000000000000000000000000061016052610140805160208201836101a0018151815250508083019250505060e051816101a0015260208101905061010051816101a001526020810190508061018052610180905080516020820120905061012052610120516101405260c05161016052604060646101803760205f608061014060015afa505f5160035418610be157600560a0516020525f5260405f208054602435808201828110610be1579050905081555060a051604052602435606052610b6e610b76565b005b505b5f5ffd5b60016040516020525f5260405f208054606051808201828110610be157905090508155505f54606051808201828110610be157905090505f556040515f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60605160805260206080a3565b5f80fda165767970657283000309000b

Verified Source Code Partial Match

Compiler: v0.3.9+commit.66b96705
SettledEthXYToken.vy 162 lines
# @version ^0.3.9
# @title Settled 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: constant(String[24]) = "Settled ETHXY Token"
_symbol: constant(String[5]) = "SEXY"
decimals: public(constant(uint256)) = 18
totalSupply: public(uint256)

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

minter: public(address)

@view
@external
def name() -> String[24]:
    return _name

@view
@external
def symbol() -> String[5]:
    return _symbol

@external
def __init__():
    self.minter = msg.sender

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

@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) -> uint256:
    self.balanceOf[msg.sender] -= _value
    self.totalSupply -= _value
    log Transfer(msg.sender, ZERO_ADDRESS, _value)
    return _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)")
_MINT_TYPE_HASH: constant(bytes32) = keccak256("Mint(address to,uint256 value,uint256 amountMinted)")


@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, keccak256(_name), keccak256("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)

amount_minted: public(HashMap[address, uint256])

@external
def mint_by_sig(to: address, amount: uint256, v: uint8, r: bytes32, s: bytes32):
    domain_separator: bytes32 = keccak256(
        _abi_encode(_DOMAIN_TYPEHASH, keccak256(_name), keccak256("1.0"), chain.id, self)
    )

    struct_hash: bytes32 = keccak256(_abi_encode(_MINT_TYPE_HASH, to, amount, self.amount_minted[to]))
    hash: bytes32 = keccak256(
        concat(
            b"\x19\x01",
            domain_separator,
            struct_hash
        )
    )

    assert self.minter == ecrecover(hash, v, r, s)

    self.amount_minted[to] += amount
    self._mint(to, 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)

Read Contract

allowance 0xdd62ed3e → uint256
amount_minted 0x99d05550 → uint256
balanceOf 0x70a08231 → uint256
decimals 0x313ce567 → uint256
minter 0x07546172 → address
name 0x06fdde03 → string
nonces 0x7ecebe00 → uint256
symbol 0x95d89b41 → string
totalSupply 0x18160ddd → uint256

Write Contract 10 functions

These functions modify contract state and require a wallet transaction to execute.

approve 0x095ea7b3
address spender
uint256 amount
returns: bool
burn 0x42966c68
uint256 _value
returns: uint256
decreaseAllowance 0xa457c2d7
address spender
uint256 subtractedValue
returns: bool
increaseAllowance 0x39509351
address spender
uint256 addedValue
returns: bool
mint 0x40c10f19
address _to
uint256 _value
mint_by_sig 0xa79b092f
address to
uint256 amount
uint8 v
bytes32 r
bytes32 s
permit 0xd505accf
address owner
address spender
uint256 amount
uint256 deadline
uint8 v
bytes32 r
bytes32 s
set_minter 0x1652e9fc
address minter
transfer 0xa9059cbb
address _to
uint256 _value
returns: bool
transferFrom 0x23b872dd
address _from
address _to
uint256 _value
returns: bool

Recent Transactions

CSV
|
Hash Method Block Age From/To Value Txn Fee Type
0xe47fd0ca...3d4d5a approve 24,318,515 IN 0xD9F0834E...7e82 0 ETH 0.000001212805 ETH EIP-1559
0xe46cd44a...fb4ccf transfer 24,316,921 IN 0x9642b23E...5D4E 0 ETH 0.000008331086 ETH Legacy
0x794f5ba2...9a90db approve 24,290,566 IN 0x7DB0ecE6...496c 0 ETH 0.000055404979 ETH Legacy
0x8237f59b...bde440 approve 24,281,756 IN 0x0347B84b...68dE 0 ETH 0.000003081344 ETH EIP-1559
0x50ff96c5...d4f584 transfer 24,245,917 IN 0x9642b23E...5D4E 0 ETH 0.000003339186 ETH Legacy
0x5de3854f...d62746 approve 24,242,441 IN 0xB2943FF4...c66a 0 ETH 0.000003191835 ETH EIP-1559
0x9ac4e945...4b834a approve 24,218,934 IN 0xD6d65Ae6...2614 0 ETH 0.000008753897 ETH EIP-1559
0x9ce69f3a...7a6733 approve 24,179,706 IN 0x9642b23E...5D4E 0 ETH 0.000004479063 ETH Legacy
0xef310ba3...a97753 approve 24,178,454 IN 0x23F9D580...391A 0 ETH 0.000095363836 ETH EIP-1559