Cryo Explorer Ethereum Mainnet

Address Contract Partially Verified

Address 0xeAb3B66a24bD99171E0a854b6dA215CE3A7FFa98
Balance 0 ETH
Nonce 1
Code Size 5322 bytes
Indexed Transactions 0
External Etherscan · Sourcify

Contract Bytecode

5322 bytes
0x608060405234801561000f575f80fd5b50600436106100f3575f3560e01c806370a0823111610095578063a396c11911610064578063a396c11914610275578063a9059cbb14610293578063dd62ed3e146102c3578063eaf98d23146102f3576100f3565b806370a08231146101eb5780638da5cb5b1461021b578063902d55a51461023957806395d89b4114610257576100f3565b806318160ddd116100d157806318160ddd1461016157806323b872dd1461017f578063313ce567146101af5780634b942235146101cd576100f3565b806306fdde03146100f7578063095ea7b3146101155780630a1f647414610145575b5f80fd5b6100ff610311565b60405161010c9190610cae565b60405180910390f35b61012f600480360381019061012a9190610d5f565b6103a1565b60405161013c9190610db7565b60405180910390f35b61015f600480360381019061015a9190610dd0565b6103c3565b005b6101696104c0565b6040516101769190610e0a565b60405180910390f35b61019960048036038101906101949190610e23565b6104c9565b6040516101a69190610db7565b60405180910390f35b6101b76104f7565b6040516101c49190610e8e565b60405180910390f35b6101d56104fb565b6040516101e29190610eb6565b60405180910390f35b61020560048036038101906102009190610ecf565b610513565b6040516102129190610e0a565b60405180910390f35b610223610558565b6040516102309190610eb6565b60405180910390f35b610241610580565b60405161024e9190610e0a565b60405180910390f35b61025f610588565b60405161026c9190610cae565b60405180910390f35b61027d610618565b60405161028a9190610eb6565b60405180910390f35b6102ad60048036038101906102a89190610d5f565b610630565b6040516102ba9190610db7565b60405180910390f35b6102dd60048036038101906102d89190610efa565b6106e9565b6040516102ea9190610e0a565b60405180910390f35b6102fb61076b565b6040516103089190610e0a565b60405180910390f35b60606003805461032090610f65565b80601f016020809104026020016040519081016040528092919081815260200182805461034c90610f65565b80156103975780601f1061036e57610100808354040283529160200191610397565b820191905f5260205f20905b81548152906001019060200180831161037a57829003601f168201915b5050505050905090565b5f806103ab610770565b90506103b8818585610777565b600191505092915050565b6103cb610770565b73ffffffffffffffffffffffffffffffffffffffff166103e9610558565b73ffffffffffffffffffffffffffffffffffffffff161461043f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043690610fdf565b60405180910390fd5b8061045d7328666e861b1efd9a9aacbfae8a7bc13fb9e7f992610513565b101561049e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161049590611047565b60405180910390fd5b6104bd7328666e861b1efd9a9aacbfae8a7bc13fb9e7f992338361093a565b50565b5f600254905090565b5f806104d3610770565b90506104e0858285610b99565b6104eb85858561093a565b60019150509392505050565b5f90565b7352fdde70dd44a201836afbc13190345af1703e4481565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b63042c1d8081565b60606004805461059790610f65565b80601f01602080910402602001604051908101604052809291908181526020018280546105c390610f65565b801561060e5780601f106105e55761010080835404028352916020019161060e565b820191905f5260205f20905b8154815290600101906020018083116105f157829003601f168201915b5050505050905090565b7328666e861b1efd9a9aacbfae8a7bc13fb9e7f99281565b5f8061063a610770565b90508261064682610513565b1015610687576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067e906110af565b60405180910390fd5b5f606460028561069791906110fa565b6106a19190611168565b90505f81856106b09190611198565b90506106d1837352fdde70dd44a201836afbc13190345af1703e448461093a565b6106dc83878361093a565b6001935050505092915050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600281565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036107e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107dc90611215565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610853576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084a9061127d565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161092d9190610e0a565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036109a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099f9061130b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610a16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0d90611373565b60405180910390fd5b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015610a99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a90906113db565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610b2791906113f9565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610b8b9190610e0a565b60405180910390a350505050565b5f610ba484846106e9565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610c1e5781811015610c10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0790611476565b60405180910390fd5b610c1d8484848403610777565b5b50505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015610c5b578082015181840152602081019050610c40565b5f8484015250505050565b5f601f19601f8301169050919050565b5f610c8082610c24565b610c8a8185610c2e565b9350610c9a818560208601610c3e565b610ca381610c66565b840191505092915050565b5f6020820190508181035f830152610cc68184610c76565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610cfb82610cd2565b9050919050565b610d0b81610cf1565b8114610d15575f80fd5b50565b5f81359050610d2681610d02565b92915050565b5f819050919050565b610d3e81610d2c565b8114610d48575f80fd5b50565b5f81359050610d5981610d35565b92915050565b5f8060408385031215610d7557610d74610cce565b5b5f610d8285828601610d18565b9250506020610d9385828601610d4b565b9150509250929050565b5f8115159050919050565b610db181610d9d565b82525050565b5f602082019050610dca5f830184610da8565b92915050565b5f60208284031215610de557610de4610cce565b5b5f610df284828501610d4b565b91505092915050565b610e0481610d2c565b82525050565b5f602082019050610e1d5f830184610dfb565b92915050565b5f805f60608486031215610e3a57610e39610cce565b5b5f610e4786828701610d18565b9350506020610e5886828701610d18565b9250506040610e6986828701610d4b565b9150509250925092565b5f60ff82169050919050565b610e8881610e73565b82525050565b5f602082019050610ea15f830184610e7f565b92915050565b610eb081610cf1565b82525050565b5f602082019050610ec95f830184610ea7565b92915050565b5f60208284031215610ee457610ee3610cce565b5b5f610ef184828501610d18565b91505092915050565b5f8060408385031215610f1057610f0f610cce565b5b5f610f1d85828601610d18565b9250506020610f2e85828601610d18565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680610f7c57607f821691505b602082108103610f8f57610f8e610f38565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f610fc9602083610c2e565b9150610fd482610f95565b602082019050919050565b5f6020820190508181035f830152610ff681610fbd565b9050919050565b7f496e73756666696369656e74205053462062616c616e636500000000000000005f82015250565b5f611031601883610c2e565b915061103c82610ffd565b602082019050919050565b5f6020820190508181035f83015261105e81611025565b9050919050565b7f496e73756666696369656e742062616c616e63650000000000000000000000005f82015250565b5f611099601483610c2e565b91506110a482611065565b602082019050919050565b5f6020820190508181035f8301526110c68161108d565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61110482610d2c565b915061110f83610d2c565b925082820261111d81610d2c565b91508282048414831517611134576111336110cd565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61117282610d2c565b915061117d83610d2c565b92508261118d5761118c61113b565b5b828204905092915050565b5f6111a282610d2c565b91506111ad83610d2c565b92508282039050818111156111c5576111c46110cd565b5b92915050565b7f45524332303a20617070726f76652066726f6d207a65726f20616464726573735f82015250565b5f6111ff602083610c2e565b915061120a826111cb565b602082019050919050565b5f6020820190508181035f83015261122c816111f3565b9050919050565b7f45524332303a20617070726f766520746f207a65726f206164647265737300005f82015250565b5f611267601e83610c2e565b915061127282611233565b602082019050919050565b5f6020820190508181035f8301526112948161125b565b9050919050565b7f45524332303a207472616e736665722066726f6d207a65726f206164647265735f8201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b5f6112f5602183610c2e565b91506113008261129b565b604082019050919050565b5f6020820190508181035f830152611322816112e9565b9050919050565b7f45524332303a207472616e7366657220746f207a65726f2061646472657373005f82015250565b5f61135d601f83610c2e565b915061136882611329565b602082019050919050565b5f6020820190508181035f83015261138a81611351565b9050919050565b7f45524332303a207472616e7366657220657863656564732062616c616e6365005f82015250565b5f6113c5601f83610c2e565b91506113d082611391565b602082019050919050565b5f6020820190508181035f8301526113f2816113b9565b9050919050565b5f61140382610d2c565b915061140e83610d2c565b9250828201905080821115611426576114256110cd565b5b92915050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f611460601d83610c2e565b915061146b8261142c565b602082019050919050565b5f6020820190508181035f83015261148d81611454565b905091905056fea26469706673582212203a913658acb09e23ac7a5ef9ff7a0c9db0cb4c530030a55f4098cde175a7982864736f6c63430008140033

Verified Source Code Partial Match

Compiler: v0.8.20+commit.a1b79de6 EVM: shanghai Optimization: No
HFVToken.sol 179 lines
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
}

contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor(address initialOwner) {
        _transferOwnership(initialOwner);
    }

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

    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

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

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address to, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address from, address to, uint256 amount) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

contract ERC20 is Context, IERC20 {
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    uint256 private _totalSupply;
    string private _name;
    string private _symbol;

    uint8 private constant _decimals = 0; // ✅ Explicitly set to 0

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

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

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

    function decimals() public pure returns (uint8) {
        return _decimals;
    }

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

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

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

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

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

    function transferFrom(address from, address to, uint256 amount) public override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

    function _transfer(address from, address to, uint256 amount) internal virtual {
        require(from != address(0), "ERC20: transfer from zero address");
        require(to != address(0), "ERC20: transfer to zero address");

        uint256 fromBalance = _balances[from];
        require(fromBalance >= amount, "ERC20: transfer exceeds balance");
        unchecked {
            _balances[from] = fromBalance - amount;
        }
        _balances[to] += amount;

        emit Transfer(from, to, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to zero address");

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);
    }

    function _approve(address owner, address spender, uint256 amount) internal virtual {
        require(owner != address(0), "ERC20: approve from zero address");
        require(spender != address(0), "ERC20: approve to zero address");

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

    function _spendAllowance(address owner, address spender, uint256 amount) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: insufficient allowance");
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }
}

// ✅ HFVToken contract with proper decimals
contract HFVToken is ERC20, Ownable {
    address public constant mfAddress = 0x52Fdde70Dd44A201836AFBc13190345af1703E44;
    address public constant psfAddress = 0x28666e861b1efD9a9aACBfAe8A7Bc13fB9E7F992;

    uint256 public constant TOTAL_SUPPLY = 70_000_000; // ✅ No decimals applied here

    uint256 public constant FEE_PERCENT = 2;

    constructor() ERC20("HFV Protocol", "HFV") Ownable(msg.sender) {
        uint256 psfAmount = (TOTAL_SUPPLY * 15) / 100;
        uint256 ownerAmount = TOTAL_SUPPLY - psfAmount;

        _mint(psfAddress, psfAmount);
        _mint(msg.sender, ownerAmount);
    }

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        address sender = _msgSender();
        require(balanceOf(sender) >= amount, "Insufficient balance");

        uint256 fee = (amount * FEE_PERCENT) / 100;
        uint256 netAmount = amount - fee;

        _transfer(sender, mfAddress, fee);
        _transfer(sender, recipient, netAmount);

        return true;
    }

    function withdrawFromPSF(uint256 amount) external onlyOwner {
        require(balanceOf(psfAddress) >= amount, "Insufficient PSF balance");
        _transfer(psfAddress, msg.sender, amount);
    }
}

Read Contract

FEE_PERCENT 0xeaf98d23 → uint256
TOTAL_SUPPLY 0x902d55a5 → uint256
allowance 0xdd62ed3e → uint256
balanceOf 0x70a08231 → uint256
decimals 0x313ce567 → uint8
mfAddress 0x4b942235 → address
name 0x06fdde03 → string
owner 0x8da5cb5b → address
psfAddress 0xa396c119 → address
symbol 0x95d89b41 → string
totalSupply 0x18160ddd → uint256

Write Contract 4 functions

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

approve 0x095ea7b3
address spender
uint256 amount
returns: bool
transfer 0xa9059cbb
address recipient
uint256 amount
returns: bool
transferFrom 0x23b872dd
address from
address to
uint256 amount
returns: bool
withdrawFromPSF 0x0a1f6474
uint256 amount

Recent Transactions

No transactions found for this address