Cryo Explorer Ethereum Mainnet

Address Contract Partially Verified

Address 0x98E3bA1DF549d4178bD1CFaCde3Bec3b4b000000
Balance 0 ETH
Nonce 1
Code Size 4490 bytes
Indexed Transactions 0
External Etherscan · Sourcify

Contract Bytecode

4490 bytes
0x608060405234801561000f575f5ffd5b50600436106100e8575f3560e01c80638da5cb5b1161008a578063b670720911610064578063b67072091461024c578063ca1515ac1461026a578063dd62ed3e14610288578063f2fde38b146102b8576100e8565b80638da5cb5b146101e057806395d89b41146101fe578063a9059cbb1461021c576100e8565b806323b872dd116100c657806323b872dd14610158578063313ce5671461018857806370a08231146101a6578063715018a6146101d6576100e8565b806306fdde03146100ec578063095ea7b31461010a57806318160ddd1461013a575b5f5ffd5b6100f46102d4565b6040516101019190610d77565b60405180910390f35b610124600480360381019061011f9190610e28565b610364565b6040516101319190610e80565b60405180910390f35b610142610386565b60405161014f9190610ea8565b60405180910390f35b610172600480360381019061016d9190610ec1565b61038f565b60405161017f9190610e80565b60405180910390f35b6101906103bd565b60405161019d9190610f2c565b60405180910390f35b6101c060048036038101906101bb9190610f45565b6103c5565b6040516101cd9190610ea8565b60405180910390f35b6101de61040a565b005b6101e861041d565b6040516101f59190610f7f565b60405180910390f35b610206610445565b6040516102139190610d77565b60405180910390f35b61023660048036038101906102319190610e28565b6104d5565b6040516102439190610e80565b60405180910390f35b6102546104f7565b6040516102619190610d77565b60405180910390f35b610272610513565b60405161027f9190610d77565b60405180910390f35b6102a2600480360381019061029d9190610f98565b610533565b6040516102af9190610ea8565b60405180910390f35b6102d260048036038101906102cd9190610f45565b6105b5565b005b6060600380546102e390611003565b80601f016020809104026020016040519081016040528092919081815260200182805461030f90611003565b801561035a5780601f106103315761010080835404028352916020019161035a565b820191905f5260205f20905b81548152906001019060200180831161033d57829003601f168201915b5050505050905090565b5f5f61036e610639565b905061037b818585610640565b600191505092915050565b5f600254905090565b5f5f610399610639565b90506103a6858285610652565b6103b18585856106e5565b60019150509392505050565b5f6012905090565b5f5f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6104126107d5565b61041b5f61085c565b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461045490611003565b80601f016020809104026020016040519081016040528092919081815260200182805461048090611003565b80156104cb5780601f106104a2576101008083540402835291602001916104cb565b820191905f5260205f20905b8154815290600101906020018083116104ae57829003601f168201915b5050505050905090565b5f5f6104df610639565b90506104ec8185856106e5565b600191505092915050565b60405180606001604052806027815260200161112e6027913981565b60606040518060a00160405280606581526020016110c960659139905090565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6105bd6107d5565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361062d575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016106249190610f7f565b60405180910390fd5b6106368161085c565b50565b5f33905090565b61064d838383600161091f565b505050565b5f61065d8484610533565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8110156106df57818110156106d0578281836040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526004016106c793929190611033565b60405180910390fd5b6106de84848484035f61091f565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610755575f6040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260040161074c9190610f7f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036107c5575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016107bc9190610f7f565b60405180910390fd5b6107d0838383610aee565b505050565b6107dd610639565b73ffffffffffffffffffffffffffffffffffffffff166107fb61041d565b73ffffffffffffffffffffffffffffffffffffffff161461085a5761081e610639565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016108519190610f7f565b60405180910390fd5b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361098f575f6040517fe602df050000000000000000000000000000000000000000000000000000000081526004016109869190610f7f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036109ff575f6040517f94280d620000000000000000000000000000000000000000000000000000000081526004016109f69190610f7f565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015610ae8578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610adf9190610ea8565b60405180910390a35b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610b3e578060025f828254610b329190611095565b92505081905550610c0c565b5f5f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015610bc7578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401610bbe93929190611033565b60405180910390fd5b8181035f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c53578060025f8282540392505081905550610c9d565b805f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610cfa9190610ea8565b60405180910390a3505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610d4982610d07565b610d538185610d11565b9350610d63818560208601610d21565b610d6c81610d2f565b840191505092915050565b5f6020820190508181035f830152610d8f8184610d3f565b905092915050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610dc482610d9b565b9050919050565b610dd481610dba565b8114610dde575f5ffd5b50565b5f81359050610def81610dcb565b92915050565b5f819050919050565b610e0781610df5565b8114610e11575f5ffd5b50565b5f81359050610e2281610dfe565b92915050565b5f5f60408385031215610e3e57610e3d610d97565b5b5f610e4b85828601610de1565b9250506020610e5c85828601610e14565b9150509250929050565b5f8115159050919050565b610e7a81610e66565b82525050565b5f602082019050610e935f830184610e71565b92915050565b610ea281610df5565b82525050565b5f602082019050610ebb5f830184610e99565b92915050565b5f5f5f60608486031215610ed857610ed7610d97565b5b5f610ee586828701610de1565b9350506020610ef686828701610de1565b9250506040610f0786828701610e14565b9150509250925092565b5f60ff82169050919050565b610f2681610f11565b82525050565b5f602082019050610f3f5f830184610f1d565b92915050565b5f60208284031215610f5a57610f59610d97565b5b5f610f6784828501610de1565b91505092915050565b610f7981610dba565b82525050565b5f602082019050610f925f830184610f70565b92915050565b5f5f60408385031215610fae57610fad610d97565b5b5f610fbb85828601610de1565b9250506020610fcc85828601610de1565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061101a57607f821691505b60208210810361102d5761102c610fd6565b5b50919050565b5f6060820190506110465f830186610f70565b6110536020830185610e99565b6110606040830184610e99565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61109f82610df5565b91506110aa83610df5565b92508282019050808211156110c2576110c1611068565b5b9291505056fe486f6c64657273206d757374207265676973746572207468656972206964656e74697479206f66662d636861696e2e20506c65617365207669736974205b68747470733a2f2f7868626f782e636f6d2f7368617265686f6c6465725d20666f72204b59432e4b594320526567697374726174696f6e20526571756972656420666f72204469766964656e6473a26469706673582212200abc4f19705672fd0428724141be7d5d014618de459abfe4276d1c8d29f3f85764736f6c63430008210033

Verified Source Code Partial Match

Compiler: v0.8.33+commit.64118f21 EVM: osaka Optimization: No
XHTokenizedStock.sol 233 lines
// SPDX-License-Identifier: MIT
/**
 *  XH Tokenized Stock (XHx)
 * @author XHBox CryptoPay Network Ltd.
 *  https://www.xhbox.com
 * * LEGAL NOTICE & COMPLIANCE:
 * 1. DIVIDEND ELIGIBILITY: Token ownership alone does not guarantee dividends.
 * Holders must complete off-chain KYC (Know Your Customer) via the official
 * portal to be eligible for distributions.
 * 2. REGISTRATION: To link your wallet address with your legal identity,
 * please visit: https://www.xhbox.com/shareholder
 */
pragma solidity 0.8.33;

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);
}

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

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
    function _contextSuffixLength() internal view virtual returns (uint256) {
        return 0;
    }
}


interface IERC20Errors {
    error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);
    error ERC20InvalidSender(address sender);
    error ERC20InvalidReceiver(address receiver);
    error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);
    error ERC20InvalidApprover(address approver);
    error ERC20InvalidSpender(address spender);
}

abstract contract ERC20 is Context, IERC20, IERC20Metadata, IERC20Errors {
    mapping(address account => uint256) private _balances;
    mapping(address account => mapping(address spender => uint256)) private _allowances;
    uint256 private _totalSupply;
    string private _name;
    string private _symbol;
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }
    function name() public view virtual returns (string memory) {
        return _name;
    }
    function symbol() public view virtual returns (string memory) {
        return _symbol;
    }
    function decimals() public view virtual returns (uint8) {
        return 18;
    }
    function totalSupply() public view virtual returns (uint256) {
        return _totalSupply;
    }
    function balanceOf(address account) public view virtual returns (uint256) {
        return _balances[account];
    }
    function transfer(address to, uint256 value) public virtual returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, value);
        return true;
    }
    function allowance(address owner, address spender) public view virtual returns (uint256) {
        return _allowances[owner][spender];
    }
    function approve(address spender, uint256 value) public virtual returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, value);
        return true;
    }
    function transferFrom(address from, address to, uint256 value) public virtual returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, value);
        _transfer(from, to, value);
        return true;
    }
    function _transfer(address from, address to, uint256 value) internal {
        if (from == address(0)) {
            revert ERC20InvalidSender(address(0));
        }
        if (to == address(0)) {
            revert ERC20InvalidReceiver(address(0));
        }
        _update(from, to, value);
    }
    function _update(address from, address to, uint256 value) internal virtual {
        if (from == address(0)) {
            _totalSupply += value;
        } else {
            uint256 fromBalance = _balances[from];
            if (fromBalance < value) {
                revert ERC20InsufficientBalance(from, fromBalance, value);
            }
            unchecked {
                _balances[from] = fromBalance - value;
            }
        }
        if (to == address(0)) {
            unchecked {
                _totalSupply -= value;
            }
        } else {
            unchecked {
                _balances[to] += value;
            }
        }
        emit Transfer(from, to, value);
    }
    function _mint(address account, uint256 value) internal {
        if (account == address(0)) {
            revert ERC20InvalidReceiver(address(0));
        }
        _update(address(0), account, value);
    }
    function _burn(address account, uint256 value) internal {
        if (account == address(0)) {
            revert ERC20InvalidSender(address(0));
        }
        _update(account, address(0), value);
    }
    function _approve(address owner, address spender, uint256 value) internal {
        _approve(owner, spender, value, true);
    }
    function _approve(address owner, address spender, uint256 value, bool emitEvent) internal virtual {
        if (owner == address(0)) {
            revert ERC20InvalidApprover(address(0));
        }
        if (spender == address(0)) {
            revert ERC20InvalidSpender(address(0));
        }
        _allowances[owner][spender] = value;
        if (emitEvent) {
            emit Approval(owner, spender, value);
        }
    }
    function _spendAllowance(address owner, address spender, uint256 value) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance < type(uint256).max) {
            if (currentAllowance < value) {
                revert ERC20InsufficientAllowance(spender, currentAllowance, value);
            }
            unchecked {
                _approve(owner, spender, currentAllowance - value, false);
            }
        }
    }
}


abstract contract Ownable is Context {
    address private _owner;
    error OwnableUnauthorizedAccount(address account);
    error OwnableInvalidOwner(address owner);
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    constructor(address initialOwner) {
        if (initialOwner == address(0)) {
            revert OwnableInvalidOwner(address(0));
        }
        _transferOwnership(initialOwner);
    }
    modifier onlyOwner() {
        _checkOwner();
        _;
    }
    function owner() public view virtual returns (address) {
        return _owner;
    }

    function _checkOwner() internal view virtual {
        if (owner() != _msgSender()) {
            revert OwnableUnauthorizedAccount(_msgSender());
        }
    }
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        if (newOwner == address(0)) {
            revert OwnableInvalidOwner(address(0));
        }
        _transferOwnership(newOwner);
    }

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}


contract XHTokenizedStock is ERC20, Ownable {
    // 100 Shares * 10^18 (fixed supply, no minting allowed after deployment)
    uint256 private constant FIXED_SUPPLY = 100 * 10**18;


    string public constant REGISTRATION_REQUIREMENT = "KYC Registration Required for Dividends";
    constructor()
    ERC20("XH Tokenized Stock", "XHx")
    Ownable(msg.sender)
    {
        _mint(msg.sender, FIXED_SUPPLY);
    }

    /**
     * @notice Returns the compliance policy for this stock token.
     */
    function compliancePolicy() external pure returns (string memory) {
        return "Holders must register their identity off-chain. Please visit [https://xhbox.com/shareholder] for KYC.";
    }
}

Read Contract

REGISTRATION_REQUIREMENT 0xb6707209 → string
allowance 0xdd62ed3e → uint256
balanceOf 0x70a08231 → uint256
compliancePolicy 0xca1515ac → string
decimals 0x313ce567 → uint8
name 0x06fdde03 → string
owner 0x8da5cb5b → address
symbol 0x95d89b41 → string
totalSupply 0x18160ddd → uint256

Write Contract 5 functions

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

approve 0x095ea7b3
address spender
uint256 value
returns: bool
renounceOwnership 0x715018a6
No parameters
transfer 0xa9059cbb
address to
uint256 value
returns: bool
transferFrom 0x23b872dd
address from
address to
uint256 value
returns: bool
transferOwnership 0xf2fde38b
address newOwner

Recent Transactions

No transactions found for this address