neo-devpack-solidity 0.22.0

Production-focused Solidity-to-NeoVM compilation system
Documentation
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.19;

/**
 * @title ConstantsImmutableShowcase
 * @notice Demonstrates constant, immutable, and compile-time evaluation.
 */
contract ConstantsImmutableShowcase {
    uint256 public constant MAX_SUPPLY = 100_000_000;
    uint8 public constant DECIMALS = 8;
    string public constant TOKEN_NAME = "DemoToken";
    bytes32 public constant ADMIN_ROLE = keccak256("ADMIN");

    address public immutable deployer;
    uint256 public immutable deployBlock;
    uint256 public immutable initialRate;

    uint256 public minted;

    constructor(uint256 _rate) {
        deployer = msg.sender;
        deployBlock = block.number;
        initialRate = _rate;
    }

    function mint(uint256 amount) public {
        require(minted + amount <= MAX_SUPPLY, "exceeds max supply");
        minted += amount;
    }

    function getInfo()
        public
        view
        returns (
            string memory name,
            uint8 decimals,
            address dep,
            uint256 rate
        )
    {
        return (TOKEN_NAME, DECIMALS, deployer, initialRate);
    }
}