Cryo Explorer Ethereum Mainnet

Address Contract Partially Verified

Address 0x9681ee0D91E737C3B60aCEbA7Fbdae61B5462f42
Balance 0 ETH
Nonce 1
Code Size 10621 bytes
Indexed Transactions 0
External Etherscan · Sourcify

Contract Bytecode

10621 bytes
0x608060405234801561001057600080fd5b506004361061012c5760003560e01c8063715018a6116100ad578063a9059cbb11610071578063a9059cbb1461035f578063bbde5b251461038f578063dd62ed3e146103bf578063eb91e651146103ef578063f2fde38b1461041f5761012c565b8063715018a6146102b75780638456cb59146102d55780638da5cb5b146102f357806395d89b41146103115780639cfe42da1461032f5761012c565b80633f4ba83a116100f45780633f4ba83a146101eb57806340c10f191461020957806342966c68146102395780635c975abb1461026957806370a08231146102875761012c565b806306fdde0314610131578063095ea7b31461014f57806318160ddd1461017f57806323b872dd1461019d578063313ce567146101cd575b600080fd5b61013961044f565b6040516101469190611c99565b60405180910390f35b61016960048036038101906101649190611d54565b6104e1565b6040516101769190611daf565b60405180910390f35b610187610684565b6040516101949190611dd9565b60405180910390f35b6101b760048036038101906101b29190611df4565b61068e565b6040516101c49190611daf565b60405180910390f35b6101d56107f8565b6040516101e29190611e63565b60405180910390f35b6101f3610801565b6040516102009190611daf565b60405180910390f35b610223600480360381019061021e9190611d54565b610946565b6040516102309190611daf565b60405180910390f35b610253600480360381019061024e9190611e7e565b610ae5565b6040516102609190611daf565b60405180910390f35b610271610d05565b60405161027e9190611daf565b60405180910390f35b6102a1600480360381019061029c9190611eab565b610d1c565b6040516102ae9190611dd9565b60405180910390f35b6102bf610d65565b6040516102cc9190611daf565b60405180910390f35b6102dd610e07565b6040516102ea9190611daf565b60405180910390f35b6102fb610f4d565b6040516103089190611ee7565b60405180910390f35b610319610f76565b6040516103269190611c99565b60405180910390f35b61034960048036038101906103449190611eab565b611008565b6040516103569190611daf565b60405180910390f35b61037960048036038101906103749190611d54565b6111c9565b6040516103869190611daf565b60405180910390f35b6103a960048036038101906103a49190611eab565b6111e0565b6040516103b69190611daf565b60405180910390f35b6103d960048036038101906103d49190611f02565b611236565b6040516103e69190611dd9565b60405180910390f35b61040960048036038101906104049190611eab565b6112bd565b6040516104169190611daf565b60405180910390f35b61043960048036038101906104349190611eab565b61147e565b6040516104469190611daf565b60405180910390f35b60606004805461045e90611f71565b80601f016020809104026020016040519081016040528092919081815260200182805461048a90611f71565b80156104d75780601f106104ac576101008083540402835291602001916104d7565b820191906000526020600020905b8154815290600101906020018083116104ba57829003601f168201915b5050505050905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610551576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161054890612014565b60405180910390fd5b60008211610594576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058b90612080565b60405180910390fd5b81600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516106729190611dd9565b60405180910390a36001905092915050565b6000600354905090565b6000600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111561074f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161074690612014565b60405180910390fd5b61075a8484846115f7565b81600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546107e691906120cf565b92505081905550600190509392505050565b60006006905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610892576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108899061214f565b60405180910390fd5b600260009054906101000a900460ff166108e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d8906121bb565b60405180910390fd5b6000600260006101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff167fc12ea4596a5504d11e0dcd87045fc6c80e476fca74798a09a2050e289d5a4fa260405160405180910390a26001905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146109d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ce9061214f565b60405180910390fd5b6109e3600354836118e4565b600381905550610a32600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118e4565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610ad39190611dd9565b60405180910390a36001905092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6d9061214f565b60405180910390fd5b81600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610bf8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bef9061224d565b60405180910390fd5b610c0460035483611942565b600381905550610c53600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611942565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610cf49190611dd9565b60405180910390a360019050919050565b6000600260009054906101000a900460ff16905090565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610df6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ded9061214f565b60405180910390fd5b610e0060006119a1565b6001905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8f9061214f565b60405180910390fd5b600260009054906101000a900460ff1615610ee8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610edf906122b9565b60405180910390fd5b6001600260006101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff167f5ee71a369c8672edded508e624ffc9257fa1ae6886ef32905c18e60196bca39960405160405180910390a26001905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060058054610f8590611f71565b80601f0160208091040260200160405190810160405280929190818152602001828054610fb190611f71565b8015610ffe5780601f10610fd357610100808354040283529160200191610ffe565b820191906000526020600020905b815481529060010190602001808311610fe157829003601f168201915b5050505050905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611099576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110909061214f565b60405180910390fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611126576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111d90612325565b60405180910390fd5b60018060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f7e239e822fa537514cc6b38d8350bde5ce06a8f9282c77161b926fc077a8102660405160405180910390a260019050919050565b60006111d63384846115f7565b6001905092915050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461134e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113459061214f565b60405180910390fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166113da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d190612391565b60405180910390fd5b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f54646b2d47b5332deb93b310542f2c11bc9351e59950cdfb3ba518af28f13d2960405160405180910390a260019050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461150f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115069061214f565b60405180910390fd5b61151882611a3e565b611557576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154e90612423565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036115e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115dc9061248f565b60405180910390fd5b6115ee826119a1565b60019050919050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611666576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165d90612521565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116cc906125b3565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611757576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174e90612645565b60405180910390fd5b611762838383611a57565b6117ab600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482611942565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611837600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054826118e4565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516118d79190611dd9565b60405180910390a3505050565b60008082846118f39190612665565b905083811015611938576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192f906126e5565b60405180910390fd5b8091505092915050565b600082821115611987576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197e90612751565b60405180910390fd5b6000828461199591906120cf565b90508091505092915050565b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b600080823b905060008163ffffffff1611915050919050565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611ae4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611adb906127bd565b60405180910390fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611b71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6890612829565b60405180910390fd5b60008111611bb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bab906128bb565b60405180910390fd5b600260009054906101000a900460ff1615611c04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bfb90612927565b60405180910390fd5b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611c43578082015181840152602081019050611c28565b60008484015250505050565b6000601f19601f8301169050919050565b6000611c6b82611c09565b611c758185611c14565b9350611c85818560208601611c25565b611c8e81611c4f565b840191505092915050565b60006020820190508181036000830152611cb38184611c60565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611ceb82611cc0565b9050919050565b611cfb81611ce0565b8114611d0657600080fd5b50565b600081359050611d1881611cf2565b92915050565b6000819050919050565b611d3181611d1e565b8114611d3c57600080fd5b50565b600081359050611d4e81611d28565b92915050565b60008060408385031215611d6b57611d6a611cbb565b5b6000611d7985828601611d09565b9250506020611d8a85828601611d3f565b9150509250929050565b60008115159050919050565b611da981611d94565b82525050565b6000602082019050611dc46000830184611da0565b92915050565b611dd381611d1e565b82525050565b6000602082019050611dee6000830184611dca565b92915050565b600080600060608486031215611e0d57611e0c611cbb565b5b6000611e1b86828701611d09565b9350506020611e2c86828701611d09565b9250506040611e3d86828701611d3f565b9150509250925092565b600060ff82169050919050565b611e5d81611e47565b82525050565b6000602082019050611e786000830184611e54565b92915050565b600060208284031215611e9457611e93611cbb565b5b6000611ea284828501611d3f565b91505092915050565b600060208284031215611ec157611ec0611cbb565b5b6000611ecf84828501611d09565b91505092915050565b611ee181611ce0565b82525050565b6000602082019050611efc6000830184611ed8565b92915050565b60008060408385031215611f1957611f18611cbb565b5b6000611f2785828601611d09565b9250506020611f3885828601611d09565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611f8957607f821691505b602082108103611f9c57611f9b611f42565b5b50919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611ffe602283611c14565b915061200982611fa2565b604082019050919050565b6000602082019050818103600083015261202d81611ff1565b9050919050565b7f696e76616c69642076616c756500000000000000000000000000000000000000600082015250565b600061206a600d83611c14565b915061207582612034565b602082019050919050565b600060208201905081810360008301526120998161205d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006120da82611d1e565b91506120e583611d1e565b92508282039050818111156120fd576120fc6120a0565b5b92915050565b7f556e617574686f72697a65640000000000000000000000000000000000000000600082015250565b6000612139600c83611c14565b915061214482612103565b602082019050919050565b600060208201905081810360008301526121688161212c565b9050919050565b7f416374696f6e3a20616c72656164792020756e70617573650000000000000000600082015250565b60006121a5601883611c14565b91506121b08261216f565b602082019050919050565b600060208201905081810360008301526121d481612198565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000612237602283611c14565b9150612242826121db565b604082019050919050565b600060208201905081810360008301526122668161222a565b9050919050565b7f416374696f6e3a20616c72656164792070617573650000000000000000000000600082015250565b60006122a3601583611c14565b91506122ae8261226d565b602082019050919050565b600060208201905081810360008301526122d281612296565b9050919050565b7f416374696f6e3a20616c726561647920626c61636b6c69737465640000000000600082015250565b600061230f601b83611c14565b915061231a826122d9565b602082019050919050565b6000602082019050818103600083015261233e81612302565b9050919050565b7f416374696f6e3a206e6f7420626c61636b6c6973746564000000000000000000600082015250565b600061237b601783611c14565b915061238682612345565b602082019050919050565b600060208201905081810360008301526123aa8161236e565b9050919050565b7f4f776e61626c653a204e6577206f776e65722061646472657373206973206e6f60008201527f74206120636f6e74726163740000000000000000000000000000000000000000602082015250565b600061240d602c83611c14565b9150612418826123b1565b604082019050919050565b6000602082019050818103600083015261243c81612400565b9050919050565b7f4f776e61626c653a205468652073616d65206f776e6572000000000000000000600082015250565b6000612479601783611c14565b915061248482612443565b602082019050919050565b600060208201905081810360008301526124a88161246c565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061250b602583611c14565b9150612516826124af565b604082019050919050565b6000602082019050818103600083015261253a816124fe565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061259d602383611c14565b91506125a882612541565b604082019050919050565b600060208201905081810360008301526125cc81612590565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061262f602683611c14565b915061263a826125d3565b604082019050919050565b6000602082019050818103600083015261265e81612622565b9050919050565b600061267082611d1e565b915061267b83611d1e565b9250828201905080821115612693576126926120a0565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006126cf601b83611c14565b91506126da82612699565b602082019050919050565b600060208201905081810360008301526126fe816126c2565b9050919050565b7f536166654d6174683a207375627472616374696f6e206f766572666c6f770000600082015250565b600061273b601e83611c14565b915061274682612705565b602082019050919050565b6000602082019050818103600083015261276a8161272e565b9050919050565b7f416374696f6e3a2053656e64657220626c61636b6c6973746564000000000000600082015250565b60006127a7601a83611c14565b91506127b282612771565b602082019050919050565b600060208201905081810360008301526127d68161279a565b9050919050565b7f416374696f6e3a20526563697069656e7420626c61636b6c6973746564000000600082015250565b6000612813601d83611c14565b915061281e826127dd565b602082019050919050565b6000602082019050818103600083015261284281612806565b9050919050565b7f416374696f6e3a207472616e7366657220616d6f756e742068617320746f206260008201527f6967207468616e20300000000000000000000000000000000000000000000000602082015250565b60006128a5602983611c14565b91506128b082612849565b604082019050919050565b600060208201905081810360008301526128d481612898565b9050919050565b7f416374696f6e3a20706175736564000000000000000000000000000000000000600082015250565b6000612911600e83611c14565b915061291c826128db565b602082019050919050565b6000602082019050818103600083015261294081612904565b905091905056fea2646970667358221220d1b02a8eb4f8c1e9a9cec9dda115cb8499d8d129e79031aaea8974247ed6422364736f6c63430008100033

Verified Source Code Partial Match

Compiler: v0.8.16+commit.07a7930e EVM: london Optimization: No
Action.sol 70 lines
// SPDX-License-Identifier: MIT
pragma solidity 0.8.16;
import "./Ownable.sol";

contract Action is Ownable {
    mapping(address => bool) private _blacklist;
    bool private _pause;

    event AddBlacklist(address indexed account);
    event RemoveBlacklist(address indexed account);
    event Pause(address indexed account);
    event UnPause(address indexed account);

    constructor() {
        _pause = false;
    }



    function pause() public onlyOwner returns(bool) {
        require(!_pause, "Action: already pause");
        _pause = true;
        emit Pause(msg.sender);
        return true;
    }

    function unpause() public onlyOwner returns(bool) {
        require(_pause, "Action: already  unpause");
        _pause = false;
        emit UnPause(msg.sender);
        return true;
    }

    function paused() public view returns (bool) {
        return _pause;
    }

    function addBlacklist(
        address blackAddress
    ) public onlyOwner returns (bool) {
        require(!_blacklist[blackAddress], "Action: already blacklisted");
        _blacklist[blackAddress] = true;
        emit AddBlacklist(blackAddress);
        return true;
    }

    function removeBlacklist(
        address blackAddress
    ) public onlyOwner returns (bool) {
        require(_blacklist[blackAddress], 'Action: not blacklisted');
        _blacklist[blackAddress] = false;
        emit RemoveBlacklist(blackAddress);
        return true;
    }

    function blackListed(address account) public view returns (bool) {
        return _blacklist[account];
    }

    function _beforeTransferToken(
        address from,
        address to,
        uint256 amount
    ) internal view {
        require(!_blacklist[from], "Action: Sender blacklisted");
        require(!_blacklist[to], "Action: Recipient blacklisted");
        require(amount > 0, "Action: transfer amount has to big than 0");
        require(!_pause, "Action: paused");
    }
}
IERC20.sol 42 lines
// SPDX-License-Identifier: MIT
pragma solidity 0.8.16;

// Abstract contract defining interface for an ERC20 token
abstract contract IERC20 {
    // Get the total supply of tokens
    function totalSupply() external view virtual returns (uint256);

    // Transfer specified number of tokens from caller to the `to` address
    function transfer(
        address to,
        uint256 tokens
    ) external virtual returns (bool);

    // Approve the `spender` address to spend the specified number of tokens on behalf of the caller
    function approve(
        address spender,
        uint256 tokens
    ) external virtual returns (bool);

    // Get the approved number of tokens for a `spender` address from the `tokenOwner` address
    function allowance(
        address tokenOwner,
        address spender
    ) external view virtual returns (uint256);

    // Transfer specified number of tokens from `from` address to the `to` address
    function transferFrom(
        address from,
        address to,
        uint256 tokens
    ) external virtual returns (bool);

    // Get the balance of tokens for an `account` address
    function balanceOf(address account) public view virtual returns (uint256);

    // Event emitted when tokens are transferred
    event Transfer(address indexed from, address indexed to, uint256 tokens);

    // Event emitted when an approval is made
    event Approval(address indexed tokenOwner, address indexed spender, uint256 tokens);
}
Ownable.sol 53 lines
// SPDX-License-Identifier: MIT
pragma solidity 0.8.16;

contract Ownable {
    address private _owner;

    constructor() {
        _owner = msg.sender;
    }

    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );
    modifier onlyOwner() {
        require(msg.sender == _owner, "Unauthorized");
        _;
    }

    function isContract(address _addr) private view returns (bool) {
        uint32 size;
        assembly {
            size := extcodesize(_addr)
        }
        return (size > 0);
    }

    function transferOwnership(
        address newOwner
    ) public onlyOwner returns (bool) {
        require(
            isContract(newOwner),
            "Ownable: New owner address is not a contract"
        );
        require(_owner != newOwner, "Ownable: The same owner");
        _transferOwnership(newOwner);
        return true;
    }

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

    function _transferOwnership(address newOwner) private {
        _owner = newOwner;
        emit OwnershipTransferred(msg.sender, newOwner);
    }

    function renounceOwnership() public onlyOwner returns (bool) {
        _transferOwnership(address(0));
        return true;
    }
}
SafeMath.sol 16 lines
// SPDX-License-Identifier: UNLICENSED
pragma solidity 0.8.16;

contract SafeMath {
    function safeAdd(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

    function safeSub(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a, "SafeMath: subtraction overflow");
        uint256 c = a - b;
        return c;
    }
}
CryptoCarbonEnergy.sol 167 lines
// SPDX-License-Identifier: MIT
pragma solidity 0.8.16;
import "./Action.sol";
import "./IERC20.sol";
import "./SafeMath.sol";

/*


   _____   _______   _____ _____ ___     ___   _   ___ ___  ___  _  _   ___ _  _ ___ ___  _____   __
  / __\ \ / / _ \ \ / / _ \_   _/ _ \   / __| /_\ | _ \ _ )/ _ \| \| | | __| \| | __| _ \/ __\ \ / /
 | (__ \ V /|   /\ V /|  _/ | || (_) | | (__ / _ \|   / _ \ (_) | .` | | _|| .` | _||   / (_ |\ V /
  \___| |_| |_|_\ |_| |_|   |_| \___/   \___/_/ \_\_|_\___/\___/|_|\_| |___|_|\_|___|_|_\\___| |_|


*/

// Contract to define a ERC20 Token with added functionality of mint and burn
contract CryptoCarbonEnergy is IERC20, SafeMath, Action {
    uint256 private _totalSupply; // Total supply of tokens
    string private _name; // Name of the token
    string private _symbol; // Symbol of the token

    // Mapping to keep track of token balances of each address
    mapping(address => uint) private _balances;

    // Mapping to keep track of allowed transfer of tokens for each address
    mapping(address => mapping(address => uint256)) private _allowances;

    // Constructor to set the name and symbol of the token
    constructor() {
        _name = "Crypto Carbon Energy";
        _symbol = "CYCE";
    }

    // Function to get the total supply of tokens
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    // Function to get the balance of tokens for a specific address
    function balanceOf(
        address account
    ) public view virtual override returns (uint256) {
        return _balances[account];
    }

    // Function to get the allowed transfer of tokens for a specific address
    function allowance(
        address tokenOwner,
        address spender
    ) public view virtual override returns (uint256) {
        return _allowances[tokenOwner][spender];
    }

    // Function to get the name of the token
    function name() public view returns (string memory) {
        return _name;
    }

    // Function to get the symbol of the token
    function symbol() public view returns (string memory) {
        return _symbol;
    }

    // Function to get the decimal places of the token
    function decimals() public pure returns (uint8) {
        return 6;
    }

    // Function to approve a specific address to transfer a specified amount of tokens
    function approve(
        address spender,
        uint256 amount
    ) public virtual override returns (bool) {
        // Require that the spender address is not zero address
        require(spender != address(0), "ERC20: approve to the zero address");
        // Require that the amount is greater than zero
        require(amount > 0, "invalid value");
        // Update the allowed transfer of tokens
        _allowances[msg.sender][spender] = amount;
        // Emit an approval event
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    // Function to transfer a specified amount of tokens from the sender to a recipient
    function transfer(
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        // Call the private transfer function
        _transfer(msg.sender, to, amount);
        return true;
    }

    // Function to transfer a specified amount of tokens from one address to another

    // Transfer tokens from one address to another
    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        // Ensure that the amount of tokens being transferred does not exceed the approved amount for the transferor
        require(
            amount <= _allowances[from][msg.sender],
            "ERC20: approve to the zero address"
        );
        // Call the private function to handle the transfer
        _transfer(from, to, amount);
        // Decrement the approved amount
        _allowances[from][msg.sender] -= amount;
        return true;
    }

    // Private function to handle the transfer of tokens
    function _transfer(address from, address to, uint256 amount) private {
        // Ensure that the transferor address is not the zero address
        require(from != address(0), "ERC20: transfer from the zero address");
        // Ensure that the recipient address is not the zero address
        require(to != address(0), "ERC20: transfer to the zero address");
        // Ensure that the transferor has enough tokens to transfer
        require(
            _balances[from] >= amount,
            "ERC20: transfer amount exceeds balance"
        );
        // Function call for any additional logic to be executed before the transfer
        _beforeTransferToken(from, to, amount);
        // Decrement the transferor's balance
        _balances[from] = safeSub(_balances[from], amount);
        // Increment the recipient's balance
        _balances[to] = safeAdd(_balances[to], amount);
        emit Transfer(from, to, amount);
    }

    // Function to mint new tokens and increase the total supply
    /**
     * @dev mint : To increase total supply of tokens
     */
    function mint(address to, uint256 tokens) public onlyOwner returns (bool) {
        // Increase the total supply
        _totalSupply = safeAdd(_totalSupply, tokens);
        // Increase the balance of the contract owner
        _balances[to] = safeAdd(_balances[to], tokens);
        emit Transfer(address(0), to, tokens);
        return true;
    }

    // Function to burn tokens and decrease the total supply
    /**
     * @dev burn : To decrease total supply of tokens
     */
    function burn(uint tokens) public onlyOwner returns (bool) {
        // Ensure that the contract owner has enough tokens to burn
        require(
            _balances[msg.sender] >= tokens,
            "ERC20: burn amount exceeds balance"
        );
        // Decrease the total supply
        _totalSupply = safeSub(_totalSupply, tokens);
        // Decrease the balance of the contract owner
        _balances[msg.sender] = safeSub(_balances[msg.sender], tokens);
        emit Transfer(msg.sender, address(0), tokens);
        return true;
    }
}

Read Contract

allowance 0xdd62ed3e → uint256
balanceOf 0x70a08231 → uint256
blackListed 0xbbde5b25 → bool
decimals 0x313ce567 → uint8
name 0x06fdde03 → string
owner 0x8da5cb5b → address
paused 0x5c975abb → bool
symbol 0x95d89b41 → string
totalSupply 0x18160ddd → uint256

Write Contract 11 functions

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

addBlacklist 0x9cfe42da
address blackAddress
returns: bool
approve 0x095ea7b3
address spender
uint256 amount
returns: bool
burn 0x42966c68
uint256 tokens
returns: bool
mint 0x40c10f19
address to
uint256 tokens
returns: bool
pause 0x8456cb59
No parameters
returns: bool
removeBlacklist 0xeb91e651
address blackAddress
returns: bool
renounceOwnership 0x715018a6
No parameters
returns: bool
transfer 0xa9059cbb
address to
uint256 amount
returns: bool
transferFrom 0x23b872dd
address from
address to
uint256 amount
returns: bool
transferOwnership 0xf2fde38b
address newOwner
returns: bool
unpause 0x3f4ba83a
No parameters
returns: bool

Recent Transactions

No transactions found for this address