Cryo Explorer Ethereum Mainnet

Address Contract Partially Verified

Address 0xF0E50840A6e67964216660Ebe9DE44ecd366AC28
Balance 0 ETH
Nonce 1
Code Size 2672 bytes
Indexed Transactions 0
External Etherscan · Sourcify

Contract Bytecode

2672 bytes
0x608060405234801561000f575f80fd5b50600436106100f0575f3560e01c806365fae35e116100935780639dc29fac116100635780639dc29fac1461023a578063a9059cbb1461024d578063bf353dbb14610260578063dd62ed3e1461027f575f80fd5b806365fae35e146101d157806370a08231146101e457806395d89b41146102035780639c52a7f114610227575f80fd5b806323b872dd116100ce57806323b872dd1461016f578063313ce5671461018257806340c10f191461019c57806354fd4d50146101b1575f80fd5b806306fdde03146100f4578063095ea7b31461013557806318160ddd14610158575b5f80fd5b61011f6040518060400160405280600c81526020016b4c6f636b7374616b65536b7960a01b81525081565b60405161012c91906107f1565b60405180910390f35b610148610143366004610857565b6102a9565b604051901515815260200161012c565b61016160015481565b60405190815260200161012c565b61014861017d36600461087f565b610315565b61018a601281565b60405160ff909116815260200161012c565b6101af6101aa366004610857565b610478565b005b61011f604051806040016040528060018152602001603160f81b81525081565b6101af6101df3660046108b8565b610542565b6101616101f23660046108b8565b60026020525f908152604090205481565b61011f604051806040016040528060058152602001646c73534b5960d81b81525081565b6101af6102353660046108b8565b6105b4565b6101af610248366004610857565b610625565b61014861025b366004610857565b61072e565b61016161026e3660046108b8565b5f6020819052908152604090205481565b61016161028d3660046108d8565b600360209081525f928352604080842090915290825290205481565b335f8181526003602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103039086815260200190565b60405180910390a35060015b92915050565b5f6001600160a01b0383161580159061033757506001600160a01b0383163014155b61035c5760405162461bcd60e51b815260040161035390610909565b60405180910390fd5b6001600160a01b0384165f90815260026020526040902054828110156103945760405162461bcd60e51b815260040161035390610940565b6001600160a01b0385163314610419576001600160a01b0385165f9081526003602090815260408083203384529091529020545f19811461041757838110156103ef5760405162461bcd60e51b815260040161035390610981565b6001600160a01b0386165f908152600360209081526040808320338452909152902084820390555b505b6001600160a01b038086165f8181526002602052604080822087860390559287168082529083902080548701905591515f80516020610a1b833981519152906104659087815260200190565b60405180910390a3506001949350505050565b335f908152602081905260409020546001146104a65760405162461bcd60e51b8152600401610353906109c4565b6001600160a01b038216158015906104c757506001600160a01b0382163014155b6104e35760405162461bcd60e51b815260040161035390610909565b6001600160a01b0382165f90815260026020526040902080548201905560015461050e9082906109fb565b6001556040518181526001600160a01b038316905f905f80516020610a1b8339815191529060200160405180910390a35050565b335f908152602081905260409020546001146105705760405162461bcd60e51b8152600401610353906109c4565b6001600160a01b0381165f8181526020819052604080822060019055517fdd0e34038ac38b2a1ce960229778ac48a8719bc900b6c4f8d0475c6e8b385a609190a250565b335f908152602081905260409020546001146105e25760405162461bcd60e51b8152600401610353906109c4565b6001600160a01b0381165f81815260208190526040808220829055517f184450df2e323acec0ed3b5c7531b81f9b4cdef7914dfd4c0a4317416bb5251b9190a250565b6001600160a01b0382165f908152600260205260409020548181101561065d5760405162461bcd60e51b815260040161035390610940565b6001600160a01b03831633146106e2576001600160a01b0383165f9081526003602090815260408083203384529091529020545f1981146106e057828110156106b85760405162461bcd60e51b815260040161035390610981565b6001600160a01b0384165f908152600360209081526040808320338452909152902083820390555b505b6001600160a01b0383165f8181526002602090815260408083208686039055600180548790039055518581529192915f80516020610a1b833981519152910160405180910390a3505050565b5f6001600160a01b0383161580159061075057506001600160a01b0383163014155b61076c5760405162461bcd60e51b815260040161035390610909565b335f908152600260205260409020548281101561079b5760405162461bcd60e51b815260040161035390610940565b335f81815260026020908152604080832087860390556001600160a01b03881680845292819020805488019055518681529192915f80516020610a1b833981519152910160405180910390a35060019392505050565b5f6020808352835180828501525f5b8181101561081c57858101830151858201604001528201610800565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610852575f80fd5b919050565b5f8060408385031215610868575f80fd5b6108718361083c565b946020939093013593505050565b5f805f60608486031215610891575f80fd5b61089a8461083c565b92506108a86020850161083c565b9150604084013590509250925092565b5f602082840312156108c8575f80fd5b6108d18261083c565b9392505050565b5f80604083850312156108e9575f80fd5b6108f28361083c565b91506109006020840161083c565b90509250929050565b6020808252601c908201527f4c6f636b7374616b65536b792f696e76616c69642d6164647265737300000000604082015260600190565b60208082526021908201527f4c6f636b7374616b65536b792f696e73756666696369656e742d62616c616e636040820152606560f81b606082015260800190565b60208082526023908201527f4c6f636b7374616b65536b792f696e73756666696369656e742d616c6c6f77616040820152626e636560e81b606082015260800190565b6020808252601b908201527f4c6f636b7374616b65536b792f6e6f742d617574686f72697a65640000000000604082015260600190565b8082018082111561030f57634e487b7160e01b5f52601160045260245ffdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220c3ad5832123c3ab2e12e428bc6845fcdfa61e738ecc6bf7329feba883148552b64736f6c63430008150033

Verified Source Code Partial Match

Compiler: v0.8.21+commit.d9974bed EVM: shanghai Optimization: Yes (200 runs)
LockstakeSky.sol 146 lines
// SPDX-License-Identifier: AGPL-3.0-or-later

/// LockstakeSky.sol -- LockstakeSky token

// Copyright (C) 2017, 2018, 2019 dbrock, rain, mrchico
// Copyright (C) 2023 Dai Foundation
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program.  If not, see <https://www.gnu.org/licenses/>.

pragma solidity ^0.8.21;

contract LockstakeSky {
    mapping (address => uint256) public wards;

    // --- ERC20 Data ---
    string  public constant name     = "LockstakeSky";
    string  public constant symbol   = "lsSKY";
    string  public constant version  = "1";
    uint8   public constant decimals = 18;
    uint256 public totalSupply;

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

    // --- Events ---
    event Rely(address indexed usr);
    event Deny(address indexed usr);
    event Approval(address indexed owner, address indexed spender, uint256 value);
    event Transfer(address indexed from, address indexed to, uint256 value);

    modifier auth {
        require(wards[msg.sender] == 1, "LockstakeSky/not-authorized");
        _;
    }

    constructor() {
        wards[msg.sender] = 1;
        emit Rely(msg.sender);
    }

    // --- Administration ---
    function rely(address usr) external auth {
        wards[usr] = 1;
        emit Rely(usr);
    }

    function deny(address usr) external auth {
        wards[usr] = 0;
        emit Deny(usr);
    }

    // --- ERC20 Mutations ---
    function transfer(address to, uint256 value) external returns (bool) {
        require(to != address(0) && to != address(this), "LockstakeSky/invalid-address");
        uint256 balance = balanceOf[msg.sender];
        require(balance >= value, "LockstakeSky/insufficient-balance");

        unchecked {
            balanceOf[msg.sender] = balance - value;
            balanceOf[to] += value; // note: we don't need an overflow check here b/c sum of all balances == totalSupply
        }

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

        return true;
    }

    function transferFrom(address from, address to, uint256 value) external returns (bool) {
        require(to != address(0) && to != address(this), "LockstakeSky/invalid-address");
        uint256 balance = balanceOf[from];
        require(balance >= value, "LockstakeSky/insufficient-balance");

        if (from != msg.sender) {
            uint256 allowed = allowance[from][msg.sender];
            if (allowed != type(uint256).max) {
                require(allowed >= value, "LockstakeSky/insufficient-allowance");

                unchecked {
                    allowance[from][msg.sender] = allowed - value;
                }
            }
        }

        unchecked {
            balanceOf[from] = balance - value;
            balanceOf[to] += value; // note: we don't need an overflow check here b/c sum of all balances == totalSupply
        }

        emit Transfer(from, to, value);

        return true;
    }

    function approve(address spender, uint256 value) external returns (bool) {
        allowance[msg.sender][spender] = value;

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

        return true;
    }

    // --- Mint/Burn ---
    function mint(address to, uint256 value) external auth {
        require(to != address(0) && to != address(this), "LockstakeSky/invalid-address");
        unchecked {
            balanceOf[to] = balanceOf[to] + value; // note: we don't need an overflow check here b/c balanceOf[to] <= totalSupply and there is an overflow check below
        }
        totalSupply = totalSupply + value;

        emit Transfer(address(0), to, value);
    }

    function burn(address from, uint256 value) external {
        uint256 balance = balanceOf[from];
        require(balance >= value, "LockstakeSky/insufficient-balance");

        if (from != msg.sender) {
            uint256 allowed = allowance[from][msg.sender];
            if (allowed != type(uint256).max) {
                require(allowed >= value, "LockstakeSky/insufficient-allowance");

                unchecked {
                    allowance[from][msg.sender] = allowed - value;
                }
            }
        }

        unchecked {
            balanceOf[from] = balance - value; // note: we don't need overflow checks b/c require(balance >= value) and balance <= totalSupply
            totalSupply     = totalSupply - value;
        }

        emit Transfer(from, address(0), value);
    }
}

Read Contract

allowance 0xdd62ed3e → uint256
balanceOf 0x70a08231 → uint256
decimals 0x313ce567 → uint8
name 0x06fdde03 → string
symbol 0x95d89b41 → string
totalSupply 0x18160ddd → uint256
version 0x54fd4d50 → string
wards 0xbf353dbb → uint256

Write Contract 7 functions

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

approve 0x095ea7b3
address spender
uint256 value
returns: bool
burn 0x9dc29fac
address from
uint256 value
deny 0x9c52a7f1
address usr
mint 0x40c10f19
address to
uint256 value
rely 0x65fae35e
address usr
transfer 0xa9059cbb
address to
uint256 value
returns: bool
transferFrom 0x23b872dd
address from
address to
uint256 value
returns: bool

Recent Transactions

No transactions found for this address