SISKOCOIN ($SISKO)

Description:

ERC20 token contract. Standard implementation for fungible tokens on Ethereum.

Blockchain: Ethereum

Source Code: View Code On The Blockchain

Solidity Source Code:

// SPDX-License-Identifier: MIT

/*
???? WELCOME TO THE SISKO COIN ????

Sisko Token ($SISKO) – where the brave burn brighter.

*/

pragma solidity ^0.8.28;

/* ========= Context (OpenZeppelin) ========= */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

/* ========= IERC20 (OpenZeppelin) ========= */
interface IERC20 {
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address to, uint256 value) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 value) external returns (bool);
    function transferFrom(address from, address to, uint256 value) external returns (bool);
}

/* ========= IERC20Metadata (OpenZeppelin) ========= */
interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}


contract SiskoCoin is Context, IERC20, IERC20Metadata {

    mapping(address => uint256) private _emberBalance;
    mapping(address => mapping(address => uint256)) private _flameAllowance;

    uint256 private _totalSupply;
    string private _name;
    string private _symbol;
    uint8 private immutable _decimals;

    error BurnDenied();
    error UnauthorizedFirestarter();
    error InsufficientFlame();
    error TryAgainAshling();

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

    constructor() {
        _name = "SISKOCOIN";
        _symbol = "$SISKO";
        _decimals = 18;
        _ignite(msg.sender, 200_000_000_000 * 10**18); // 200B tokens
    }

    function whyDoWeBurn() external pure returns (string memory) {
        return "To rise from ashes, again and again.";
    }

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

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

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

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

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

    function allowance(address owner, address spender) external view override returns (uint256) {
        return _flameAllowance[owner][spender];
    }

    function transfer(address to, uint256 amount) external override returns (bool) {
        address owner = _msgSender();
        _blaze(owner, to, amount);
        return true;
    }

    function approve(address spender, uint256 amount) external override returns (bool) {
        address owner = _msgSender();
        _authorizeFlame(owner, spender, amount);
        return true;
    }

    function transferFrom(address from, address to, uint256 amount) external override returns (bool) {
        address spender = _msgSender();
        _spendFlame(from, spender, amount);
        _blaze(from, to, amount);
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) external returns (bool) {
        address owner = _msgSender();
        _authorizeFlame(owner, spender, _flameAllowance[owner][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) external returns (bool) {
        address owner = _msgSender();
        uint256 currentAllowance = _flameAllowance[owner][spender];
        if (currentAllowance < subtractedValue) revert BurnDenied();
        unchecked {
            _authorizeFlame(owner, spender, currentAllowance - subtractedValue);
        }
        return true;
    }

    function _blaze(address from, address to, uint256 amount) internal {
        if (from == address(0)) revert UnauthorizedFirestarter();
        if (to == address(0)) revert UnauthorizedFirestarter();

        uint256 fromBalance = _emberBalance[from];
        if (fromBalance < amount) revert InsufficientFlame();

        unchecked {
            _emberBalance[from] = fromBalance - amount;
            _emberBalance[to] += amount;
        }

        emit Transfer(from, to, amount);
        emit Ignition(from, to, amount);
    }

    function _ignite(address account, uint256 amount) internal {
        if (account == address(0)) revert UnauthorizedFirestarter();

        _totalSupply += amount;
        unchecked {
            _emberBalance[account] += amount;
        }

        emit Transfer(address(0), account, amount);
    }

    function _authorizeFlame(address owner, address spender, uint256 amount) internal {
        if (owner == address(0)) revert UnauthorizedFirestarter();
        if (spender == address(0)) revert UnauthorizedFirestarter();

        _flameAllowance[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _spendFlame(address owner, address spender, uint256 amount) internal {
        uint256 currentAllowance = _flameAllowance[owner][spender];
        if (currentAllowance != type(uint256).max) {
            if (currentAllowance < amount) revert TryAgainAshling();
            unchecked {
                _authorizeFlame(owner, spender, currentAllowance - amount);
            }
        }
    }
}

Tags:
ERC20, Token|addr:0x0e89197ee645303fd7cddf22cc320c7b64ff06eb|verified:true|block:23589835|tx:0x9147605e8743180b80ba4f1f77f3cdffd56567c9a24df0a8b54867d1c3716353|first_check:1760616894

Submitted on: 2025-10-16 14:14:54

Comments

Log in to comment.

No comments yet.