Cryo Explorer Ethereum Mainnet

Address Contract Verified

Address 0x8fCeaa55df7EB37dD2Ed9c8a29569c43d8f54d6d
Balance 0 ETH
Nonce 1
Code Size 4756 bytes
Indexed Transactions 0
External Etherscan · Sourcify

Contract Bytecode

4756 bytes
0x608060405234801561000f575f80fd5b506004361061016d575f3560e01c80635dde10bc116100d957806395d89b4111610093578063b09f12661161006e578063b09f12661461032d578063d28d885214610335578063dd62ed3e1461033d578063f2fde38b14610375575f80fd5b806395d89b41146102ff578063a457c2d714610307578063a9059cbb1461031a575f80fd5b80635dde10bc146102675780636ebcf6071461027a57806370a0823114610299578063715018a6146102c1578063893d20e8146102cb5780638da5cb5b146102ef575f80fd5b8063313ce5671161012a578063313ce5671461020957806332424aa314610222578063395093511461022f5780633eaaf86b1461024257806342966c681461024b57806354fd4d501461025e575f80fd5b8063024c2ddd1461017157806306fdde03146101ae578063095ea7b3146101c35780630d8e6e2c146101e657806318160ddd146101ee57806323b872dd146101f6575b5f80fd5b61019b61017f366004610d13565b600260209081525f928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b6101b6610388565b6040516101a59190610d44565b6101d66101d1366004610d79565b610418565b60405190151581526020016101a5565b60085461019b565b60035461019b565b6101d6610204366004610da1565b61042e565b60045460ff165b60405160ff90911681526020016101a5565b6004546102109060ff1681565b6101d661023d366004610d79565b61047e565b61019b60035481565b6101d6610259366004610ddb565b6104b4565b61019b60085481565b6101d6610275366004610fa9565b6104c7565b61019b61028836600461108e565b60016020525f908152604090205481565b61019b6102a736600461108e565b6001600160a01b03165f9081526001602052604090205490565b6102c96106e3565b005b5f546001600160a01b03165b6040516001600160a01b0390911681526020016101a5565b5f546001600160a01b03166102d7565b6101b6610754565b6101d6610315366004610d79565b610763565b6101d6610328366004610d79565b610799565b6101b66107a5565b6101b6610831565b61019b61034b366004610d13565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b6102c961038336600461108e565b61083e565b606060068054610397906110ae565b80601f01602080910402602001604051908101604052809291908181526020018280546103c3906110ae565b801561040e5780601f106103e55761010080835404028352916020019161040e565b820191905f5260205f20905b8154815290600101906020018083116103f157829003601f168201915b5050505050905090565b5f610424338484610873565b5060015b92915050565b5f61043a848484610980565b6001600160a01b0384165f9081526002602090815260408083203380855292529091205461047491869161046f9086906110fa565b610873565b5060019392505050565b335f8181526002602090815260408083206001600160a01b0387168452909152812054909161042491859061046f90869061110d565b5f6104bf3383610b38565b506001919050565b5f80546001600160a01b031633146104fa5760405162461bcd60e51b81526004016104f190611120565b60405180910390fd5b60075460ff16156105335760405162461bcd60e51b815260206004820152600360248201526232b93960e91b60448201526064016104f1565b6007805460ff191660019081179091558251610566918491811061055957610559611143565b6020026020010151610c1e565b6105898260028151811061057c5761057c611143565b6020026020010151610c2e565b6105be8460018151811061059f5761059f611143565b60200260200101516004805460ff90921660ff19909216919091179055565b6105e1846002815181106105d4576105d4611143565b6020026020010151600355565b610635836001815181106105f7576105f7611143565b60200260200101518560028151811061061257610612611143565b60200260200101516001600160a01b039091165f90815260016020526040902055565b6106588360018151811061064b5761064b611143565b602002602001015161083e565b8260018151811061066b5761066b611143565b60200260200101516001600160a01b03165f6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866002815181106106ba576106ba611143565b60200260200101516040516106d191815260200190565b60405180910390a35060019392505050565b5f546001600160a01b0316331461070c5760405162461bcd60e51b81526004016104f190611120565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b606060058054610397906110ae565b335f8181526002602090815260408083206001600160a01b0387168452909152812054909161042491859061046f9086906110fa565b5f610424338484610980565b600580546107b2906110ae565b80601f01602080910402602001604051908101604052809291908181526020018280546107de906110ae565b80156108295780601f1061080057610100808354040283529160200191610829565b820191905f5260205f20905b81548152906001019060200180831161080c57829003601f168201915b505050505081565b600680546107b2906110ae565b5f546001600160a01b031633146108675760405162461bcd60e51b81526004016104f190611120565b61087081610c3a565b50565b6001600160a01b0383166108c95760405162461bcd60e51b815260206004820152601d60248201527f417070726f76652066726f6d20746865207a65726f206164647265737300000060448201526064016104f1565b6001600160a01b03821661091f5760405162461bcd60e51b815260206004820152601b60248201527f417070726f766520746f20746865207a65726f2061646472657373000000000060448201526064016104f1565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166109d65760405162461bcd60e51b815260206004820152601e60248201527f5472616e736665722066726f6d20746865207a65726f2061646472657373000060448201526064016104f1565b6001600160a01b038216610a2c5760405162461bcd60e51b815260206004820152601c60248201527f5472616e7366657220746f20746865207a65726f20616464726573730000000060448201526064016104f1565b6001600160a01b0383165f90815260016020526040902054811115610a935760405162461bcd60e51b815260206004820152601f60248201527f5472616e7366657220616d6f756e7420657863656564732062616c616e63650060448201526064016104f1565b6001600160a01b0383165f90815260016020526040902054610ab69082906110fa565b6001600160a01b038085165f908152600160205260408082209390935590841681522054610ae590829061110d565b6001600160a01b038084165f8181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906109739085815260200190565b6001600160a01b038216610b8e5760405162461bcd60e51b815260206004820152601a60248201527f4275726e2066726f6d20746865207a65726f206164647265737300000000000060448201526064016104f1565b6001600160a01b0382165f90815260016020526040902054610bb19082906110fa565b6001600160a01b0383165f90815260016020526040902055600354610bd79082906110fa565b6003556040518181525f906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6006610c2a82826111a3565b5050565b6005610c2a82826111a3565b6001600160a01b038116610c9f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104f1565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b80356001600160a01b0381168114610d0e575f80fd5b919050565b5f8060408385031215610d24575f80fd5b610d2d83610cf8565b9150610d3b60208401610cf8565b90509250929050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f8060408385031215610d8a575f80fd5b610d9383610cf8565b946020939093013593505050565b5f805f60608486031215610db3575f80fd5b610dbc84610cf8565b9250610dca60208501610cf8565b929592945050506040919091013590565b5f60208284031215610deb575f80fd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610e2f57610e2f610df2565b604052919050565b5f67ffffffffffffffff821115610e5057610e50610df2565b5060051b60200190565b5f82601f830112610e69575f80fd5b8135610e7c610e7782610e37565b610e06565b8082825260208201915060208360051b860101925085831115610e9d575f80fd5b602085015b83811015610ec157610eb381610cf8565b835260209283019201610ea2565b5095945050505050565b5f82601f830112610eda575f80fd5b8135610ee8610e7782610e37565b8082825260208201915060208360051b860101925085831115610f09575f80fd5b602085015b83811015610ec157803567ffffffffffffffff811115610f2c575f80fd5b8601603f81018813610f3c575f80fd5b602081013567ffffffffffffffff811115610f5957610f59610df2565b610f6c601f8201601f1916602001610e06565b8181526040838301018a1015610f80575f80fd5b816040840160208301375f60208383010152808652505050602083019250602081019050610f0e565b5f805f60608486031215610fbb575f80fd5b833567ffffffffffffffff811115610fd1575f80fd5b8401601f81018613610fe1575f80fd5b8035610fef610e7782610e37565b8082825260208201915060208360051b850101925088831115611010575f80fd5b6020840193505b82841015611032578335825260209384019390910190611017565b9550505050602084013567ffffffffffffffff811115611050575f80fd5b61105c86828701610e5a565b925050604084013567ffffffffffffffff811115611078575f80fd5b61108486828701610ecb565b9150509250925092565b5f6020828403121561109e575f80fd5b6110a782610cf8565b9392505050565b600181811c908216806110c257607f821691505b6020821081036110e057634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610428576104286110e6565b80820180821115610428576104286110e6565b60208082526009908201526837b7363ca7bbb732b960b91b604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b601f82111561119e57805f5260205f20601f840160051c8101602085101561117c5750805b601f840160051c820191505b8181101561119b575f8155600101611188565b50505b505050565b815167ffffffffffffffff8111156111bd576111bd610df2565b6111d1816111cb84546110ae565b84611157565b6020601f821160018114611203575f83156111ec5750848201515b5f19600385901b1c1916600184901b17845561119b565b5f84815260208120601f198516915b828110156112325787850151825560209485019460019092019101611212565b508482101561124f57868401515f19600387901b60f8161c191681555b50505050600190811b0190555056fea2646970667358221220d8a3481b4b052ae3557aea433cc8e4b55d089572c505d840ef079254d7441ad764736f6c634300081a0033

Verified Source Code Full Match

Compiler: v0.8.26+commit.8a97fa7a EVM: cancun Optimization: Yes (200 runs)
SimpleToken.sol 77 lines
// SPDX-License-Identifier: MIT

/**
 * DAppCrypto
 * GitHub Website: https://dappcrypto.github.io/
 * GitHub: https://github.com/dappcrypto
 */

/**
 * SimpleToken is a simple token contract without cheating
 * This contract contains the minimum functions required for the token to operate.
 * Read Contract: _decimals, decimals, _name, name, _symbol, symbol, allowance, balanceOf, getOwner, totalSupply, owner.
 * Write Contract: transfer, transferFrom, approve, decreaseAllowance, increaseAllowance, burn.
 * Write Contract, only for owner: renounceOwnership, transferOwnership.
 * Token created using DAppCrypto https://dappcrypto.github.io/
 */

 /**
 * Important! Always check liquidity lock before investing
 * Important! Always check if the token address is available in DAppCrypto https://dappcrypto.github.io/
 */

pragma solidity >=0.8.0;

import "./IERC20.sol";
import "./Token.sol";

contract SimpleToken is IERC20, Token {
    bool private inToken = false;
    uint256 public version=3;

    function getVersion() public view returns (uint256) {
        return version;
    }

    constructor() {}

    // Token initialization is only available once
    function initToken(uint256[] memory nArr, address[] memory aArr, string[] memory sArr) public onlyOwner returns (bool) {
        require(inToken == false, "err");
        inToken = true;

        //string memory t_name = sArr[1];
        //string memory t_symbol = sArr[2];
        //uint8 t_decimals = uint8(nArr[1]);
        //uint256 t_totalSupply = nArr[2];
        //address addressOwner = aArr[1];

        setName(sArr[1]);
        setSymbol(sArr[2]);
        setDecimals(uint8(nArr[1]));
        setTotalSupply(nArr[2]);
        setBalance(aArr[1], nArr[2]);

        transferOwnership(aArr[1]);

        emit Transfer(address(0), aArr[1], nArr[2]);

        return true;
    }
}

interface iToken {
    function initToken(uint256[] memory nArr, address[] memory aArr, string[] memory sArr) external returns (bool);
}

contract DeployContract {

    function deploy (uint256[] memory nArr, address[] memory aArr, string[] memory sArr) external returns (address) {
        require(nArr[0] == 0, "type SimpleToken");
        SimpleToken SimpleToken1 = new SimpleToken();
        address aToken = address(SimpleToken1);
        iToken(aToken).initToken(nArr, aArr, sArr);
        return aToken;
    }

}
Token.sol 141 lines
// SPDX-License-Identifier: MIT

/**
 * DAppCrypto
 * GitHub Website: https://dappcrypto.github.io/
 * GitHub: https://github.com/dappcrypto
 */

/**
 * SimpleToken is a simple token contract without cheating
 * This contract contains the minimum functions required for the token to operate.
 * Read Contract: _decimals, decimals, _name, name, _symbol, symbol, allowance, balanceOf, getOwner, totalSupply, owner.
 * Write Contract: transfer, transferFrom, approve, decreaseAllowance, increaseAllowance, burn.
 * Write Contract, only for owner: renounceOwnership, transferOwnership.
 * Token created using DAppCrypto https://dappcrypto.github.io/
 */

pragma solidity >=0.8.0;

import "./IERC20.sol";
import "./Ownable.sol";

contract Token is Ownable, IERC20 {

    mapping(address => uint256) public _balances;
    mapping(address => mapping(address => uint256)) public _allowances;

    uint256 public _totalSupply;
    uint8 public _decimals;
    string public _symbol;
    string public _name;

    constructor() {}

    function setTotalSupply(uint256 totalSupply_) internal {
        _totalSupply = totalSupply_;
    }

    function setDecimals(uint8 decimals_) internal {
        _decimals = decimals_;
    }

    function setSymbol(string memory symbol_) internal {
        _symbol = symbol_;
    }

    function setName(string memory name_) internal {
        _name = name_;
    }

    function setBalance(address account, uint256 balance) internal {
         _balances[account] = balance;
    }

    function owner() external view returns (address) {
        return getOwner();
    }

    function decimals() external view returns (uint8) {
        return _decimals;
    }

    function symbol() external view returns (string memory) {
        return _symbol;
    }

    function name() external view returns (string memory) {
        return _name;
    }

    function totalSupply() external view returns (uint256) {
        return _totalSupply;
    }

    function balanceOf(address account) external view returns (uint256) {
        return _balances[account];
    }

    function transfer(address recipient, uint256 amount) external returns (bool) {
        _transfer(msg.sender, recipient, amount);
        return true;
    }

    function allowance(address addressOwner, address spender) external view returns (uint256) {
        return _allowances[addressOwner][spender];
    }

    function approve(address spender, uint256 amount) external returns (bool) {
        _approve(msg.sender, spender, amount);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, msg.sender, _allowances[sender][msg.sender]-amount);
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public returns (bool) {
        _approve(msg.sender, spender, _allowances[msg.sender][spender]+addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) {
        _approve(msg.sender, spender, _allowances[msg.sender][spender]-subtractedValue);
        return true;
    }

    function _transfer(address sender, address recipient, uint256 amount) internal virtual {
        require(sender != address(0), "Transfer from the zero address");
        require(recipient != address(0), "Transfer to the zero address");
        require(amount <= _balances[sender], "Transfer amount exceeds balance");

        _balances[sender] = _balances[sender]-amount;
        _balances[recipient] = _balances[recipient]+amount;
        emit Transfer(sender, recipient, amount);
    }

    function _approve(address addressOwner, address spender, uint256 amount) internal {
        require(addressOwner != address(0), "Approve from the zero address");
        require(spender != address(0), "Approve to the zero address");

        _allowances[addressOwner][spender] = amount;
        emit Approval(addressOwner, spender, amount);
    }
    
    // burn
    function _burn(address account, uint256 amount) internal {
        require(account != address(0), "Burn from the zero address");

        _balances[account] = _balances[account]-amount;
        _totalSupply = _totalSupply-amount;
        emit Transfer(account, address(0), amount);
    }

    function burn(uint256 amount) public returns (bool) {
        _burn(msg.sender, amount);
        return true;
    }

}
IERC20.sol 23 lines
// SPDX-License-Identifier: MIT

/**
 * interface IERC20
 */

pragma solidity >=0.8.0;

interface IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
    function totalSupply() external view returns (uint256);
    function owner() external view returns (address);
    function balanceOf(address account) external view returns (uint256);
    function allowance(address owner, address spender) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}
Ownable.sol 53 lines
// SPDX-License-Identifier: MIT

/**
 * DAppCrypto
 * GitHub Website: https://dappcrypto.github.io/
 * GitHub: https://github.com/dappcrypto
 */

/**
 * contract Ownable
 * Read Contract: getOwner
 * Write Contract, only for owner: renounceOwnership, transferOwnership
 */

pragma solidity >=0.8.0;

import "./Context.sol";

contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    function getOwner() public view returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(_owner == _msgSender(), "onlyOwner");
        _;
    }

    function renounceOwnership() public onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    function transferOwnership(address newOwner) public onlyOwner {
        _transferOwnership(newOwner);
    }

    function _transferOwnership(address newOwner) internal {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}
Context.sol 19 lines
// SPDX-License-Identifier: MIT

/**
 * abstract contract Context
 */

pragma solidity >=0.8.0;

abstract contract Context {

    function _msgSender() internal view returns (address payable) {
        return payable(msg.sender);
    }

    function _msgData() internal view returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

Read Contract

_allowances 0x024c2ddd → uint256
_balances 0x6ebcf607 → uint256
_decimals 0x32424aa3 → uint8
_name 0xd28d8852 → string
_symbol 0xb09f1266 → string
_totalSupply 0x3eaaf86b → uint256
allowance 0xdd62ed3e → uint256
balanceOf 0x70a08231 → uint256
decimals 0x313ce567 → uint8
getOwner 0x893d20e8 → address
getVersion 0x0d8e6e2c → uint256
name 0x06fdde03 → string
owner 0x8da5cb5b → address
symbol 0x95d89b41 → string
totalSupply 0x18160ddd → uint256
version 0x54fd4d50 → uint256

Write Contract 9 functions

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

approve 0x095ea7b3
address spender
uint256 amount
returns: bool
burn 0x42966c68
uint256 amount
returns: bool
decreaseAllowance 0xa457c2d7
address spender
uint256 subtractedValue
returns: bool
increaseAllowance 0x39509351
address spender
uint256 addedValue
returns: bool
initToken 0x5dde10bc
uint256[] nArr
address[] aArr
string[] sArr
returns: bool
renounceOwnership 0x715018a6
No parameters
transfer 0xa9059cbb
address recipient
uint256 amount
returns: bool
transferFrom 0x23b872dd
address sender
address recipient
uint256 amount
returns: bool
transferOwnership 0xf2fde38b
address newOwner

Recent Transactions

No transactions found for this address