Address Contract Partially Verified
Address
0x98E3bA1DF549d4178bD1CFaCde3Bec3b4b000000
Balance
0 ETH
Nonce
1
Code Size
4490 bytes
Creator
0x5C69f06A...7BAa at tx 0x265478dc...dcdd1d
Indexed Transactions
0
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