MahamGostar Web3 Token Lab · MahamGostar

Web3 Guide to Creating Tokens with the “Mother Contract”

On this Web3-style page you learn how to configure the MahamGostar Mother Contract once and then only change the name, symbol, total supply and a 9-word signature to create new tokens for the MahamGostar ecosystem and future projects.

Author: Mahyar Amini — Founder of MahamGostar
Mahyar-Amini.com · MahyarAmini.me · MahamGostar.com
MahamGostar Logo
MahamGostar
Research Group & IT/AI Solutions · Web3 Ecosystem
Open MahamGostar.com ↗
1. Mother Contract (Template) for Any Token

This contract is used as the MahamGostar Mother Contract. For each new token (MGC, MGAI, MahamGostar.com, MG, etc.) you only change the CONFIG section and the return value of mgSignature:

Main properties: No owner / admin No mint / burn No tax / fee No blacklist / freeze No proxy / upgrade

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

/// @title MahamGostar Fixed-Supply Token (Template Mother Contract)
/// @author Mahyar Amini
/// @notice
///  - No owner / admin
///  - No mint / burn
///  - No fees / tax
///  - No pause / blacklist / freeze
///  - No upgradeability / proxy
///  - Name, symbol, website & descriptions are immutable (constants)
///  - Anyone can trade this token
///  - User balances cannot be manipulated by any admin
///  - No external contracts are called
///  - Designed to be transparent and low-risk
///  - Issued by MahamGostar Research Group, an independent & self-funded
///    research and information technology company

contract MahamGostarTokenMother {
    // -------------------------------------------------
    //  CONFIG — only change this section for each token
    // -------------------------------------------------

    // Token name (example: "MahamGostar Coin")
    string public constant TOKEN_NAME   = "Your Token Name";

    // Token symbol (example: "MGC")
    string public constant TOKEN_SYMBOL = "YTN";

    // Decimals (standard ERC20: 18)
    uint8  public constant DECIMALS     = 18;

    // Total supply before decimals (example here: 1,000,000)
    // This value will be multiplied by 10**DECIMALS.
    uint256 public constant INITIAL_SUPPLY_UNITS = 1_000_000;

    // Short title for this token
    string public constant TOKEN_TITLE  = "Short one-line title for this token";

    // Project website
    string public constant PROJECT_WEBSITE = "https://mahamgostar.com";

    // Short description
    string public constant projectDescriptionShort =
        "Short description for this specific MahamGostar-related token.";

    // Long description
    string public constant projectDescriptionLong =
        "MahamGostar (MG) is a fixed-supply coordination and reputation token for the "
        "MahamGostar ecosystem. It connects MahamGostar Research Group and IT/AI "
        "solutions across multiple domains and products. All benefits and reputation "
        "effects of this token are intended to support future research, digital tools "
        "and ecosystem development by MahamGostar.";

    // -------------------------------------------------
    //  End of CONFIG — rest of the structure is fixed
    // -------------------------------------------------

    uint256 private constant _initialSupply =
        INITIAL_SUPPLY_UNITS * (10 ** uint256(DECIMALS));

    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply = _initialSupply;

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

    constructor() {
        // On deployment, the full supply goes to the deployer
        _balances[msg.sender] = _initialSupply;
        emit Transfer(address(0), msg.sender, _initialSupply);
    }

    // ----------------- View functions (ERC20 standard) -----------------

    function name() external pure returns (string memory) {
        return TOKEN_NAME;
    }

    function symbol() external pure returns (string memory) {
        return TOKEN_SYMBOL;
    }

    function decimals() external pure returns (uint8) {
        return DECIMALS;
    }

    // Extra view function for the token title
    function title() external pure returns (string memory) {
        return TOKEN_TITLE;
    }

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

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

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

    // ----------------- Mutating functions (ERC20 standard) --------------

    function transfer(address to, uint256 amount) external returns (bool) {
        _transfer(msg.sender, to, amount);
        return true;
    }

    function approve(address spender, uint256 amount) external returns (bool) {
        _approve(msg.sender, spender, amount);
        return true;
    }

    function transferFrom(address from, address to, uint256 amount)
        external
        returns (bool)
    {
        uint256 currentAllowance = _allowances[from][msg.sender];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        _transfer(from, to, amount);
        _approve(from, msg.sender, currentAllowance - amount);
        return true;
    }

    // ----------------- Internal helpers ----------------------------------

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

        uint256 fromBalance = _balances[from];
        require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");

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

        emit Transfer(from, to, amount);
    }

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

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

    // -------------------------------------------------
    //  Signature (9 words) to distinguish each contract
    // -------------------------------------------------
    /// @dev Fingerprint / signature: change this 9-word string for every deployment.
    function mgSignature() external pure returns (string memory) {
        // Example (must be changed before mainnet deployment):
        // web3 mahamgostar research token template navy lemon 2025
        return "web3 mahamgostar research token template navy lemon 2025";
    }
}
2. What should you change for each new token?

1) Token name and symbol

string public constant TOKEN_NAME   = "Your Token Name";
string public constant TOKEN_SYMBOL = "YTN";

Examples: "MahamGostar AI", "MGAI", "MG", "MahamGostar.com"

2) Decimals and total supply

uint8  public constant DECIMALS     = 18;
uint256 public constant INITIAL_SUPPLY_UNITS = 1_000_000;
  • DECIMALS is usually kept at 18.
  • INITIAL_SUPPLY_UNITS is the number before decimals (for example 19_000_000 for 19M).

3) Title and descriptions

string public constant TOKEN_TITLE  = "...";
string public constant projectDescriptionShort = "...";
string public constant projectDescriptionLong  = "...";

Write clear and honest text for each specific token here.

3. 9-word signature and deployment steps

1) 9-word signature (mgSignature)

function mgSignature() external pure returns (string memory) {
    return "navy lemon mg token family research mother 2025";
}
  • For every new contract, change this sentence.
  • Make sure it has exactly 9 words separated by spaces.

2) Quick deployment steps in Remix

  1. Open remix.ethereum.org.
  2. Create a new .sol file and paste this contract code.
  3. Edit the CONFIG section and mgSignature for your token.
  4. Compile using a compiler version close to 0.8.20.
  5. In “Deploy & Run”, choose Injected Provider and connect your wallet (BSC / Testnet / other EVM network).
  6. Deploy the contract and save the token contract address.
  7. Add the contract address as a Custom Token in your wallet (MetaMask, Trust Wallet, etc.).
4. Full MahamGostar (MG) Contract — 19,000,000 Tokens

This is a complete example contract for MahamGostar (MG) on BNB Smart Chain with a fixed total supply of 19,000,000 tokens (18 decimals). You can deploy it directly in Remix or adapt it for other tokens.

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

/// @title MahamGostar - Fixed supply BEP20 token on BNB Smart Chain
/// @author Mahyar Amini Founder & Head of MahamGostar Research Group & IT Solution Company
/// @notice
///  - Fixed supply: 19000000 MahamGostar (18 decimals)
///  - No owner / admin
///  - No mint / burn
///  - No fees / tax
///  - No pause / blacklist / freeze
///  - No upgradeability / proxy
///  - Name, symbol, website & description are immutable (constants)
///  - Anyone can trade this token
///  - User balances cannot be manipulated by any admin
///  - No external contracts are called
///  - Designed to be transparent and low-risk
///  - Issued by MahamGostar Research Group, an independent & fully self-funded
///    research and information technology company
///  - All benefits from this token are intended to support future research
///    and ecosystem development by MahamGostar
///  - MahamGostar ecosystem has many active domains:
///    MahamGostar.com, .net, .org, .pro, .site, .xyz, .io, .ai, .vip,
///    .institute, .co
///  - MahamGostar IT & AI solutions (~20 core members + ~10 international
///    collaborators) are integrated with MahamGostar Research Group
///  - MahamGostar Research Group has 15+ verified Google Scholar members with
///    1,000+ published articles, 500+ conference papers and more than 50,000
///    citations in total until 2025
contract MahamGostar {
    // ---------------------------------------------------------------------
    // Token metadata (fixed and immutable)
    // ---------------------------------------------------------------------
    string public constant name = "MahamGostar";
    string public constant symbol = "MG";
    uint8 public constant decimals = 18;

    // 19,000,000 * 10^18 (19 million MG)
    uint256 public constant totalSupply = 19_000_000 * 10 ** uint256(decimals);

    // ---------------------------------------------------------------------
    // Extra project information (for transparency only, not used in logic)
    // ---------------------------------------------------------------------

    // Main project website
    string public constant projectWebsite = "https://mahamgostar.com";

    // Other official domains in the MahamGostar ecosystem
    string public constant projectWebsites =
        "https://mahamgostar.com, https://mahamgostar.net, https://mahamgostar.org, "
        "https://mahamgostar.pro, https://mahamgostar.site, https://mahamgostar.xyz, "
        "https://mahamgostar.io, https://mahamgostar.ai, https://mahamgostar.vip, "
        "https://mahamgostar.institute, https://mahamgostar.co, https://mahamgostar.app";

    // Founder & research info
    string public constant projectFounder = "Mahyar Amini";
    string public constant projectFounderWebsite =
        "https://www.MahyarAmini.me, https://Mahyar-Amini.com";

    // Home pages of founder
    string public constant projectFounderHomepages =
        "https://Mahyar-Amini.com, https://MahyarAmini.me";

    // Founder roles / titles
    string public constant projectFounderRoles =
        "Founder of MahamGostar and Founder and Head of MahamGostar Research Group.";

    string public constant projectFounderScholar =
        "https://scholar.google.com/citations?user=v0qJCzwAAAAJ&hl=en";

    // Summary from Google Scholar profile (citations + fields)
    string public constant projectFounderScholarSummary =
        "Google Scholar profile cited more than 5,800 times, with research spanning "
        "artificial intelligence systems, machine learning models, innovation adoption "
        "and related areas in digital transformation and data-driven decision making.";

    // Contact emails
    string public constant projectContactEmails =
        "[email protected], [email protected]";

    // Team & research stats
    string public constant projectTeamSummary =
        "MahamGostar IT & AI solution has around 20 fixed members and about 10 "
        "international members, integrated with MahamGostar Research Group.";

    string public constant projectResearchStats =
        "MahamGostar Research Group has 15+ verified Google Scholar members with "
        "over 1,000 published articles, 500 conference papers and more than 50,000 "
        "citations in total until 2025.";

    // Detailed core research members (names + main profile + Scholar)
    string public constant projectCoreResearchers =
        "Mahshid Hosseinzadeh Savadi - https://mahshid.me/ - "
        "https://scholar.google.com/citations?user=KDIZOgEAAAAJ&hl=en; "
        "https://scholar.google.com/citations?user=BZUUDagAAAAJ&hl=en; "
        "Pourya Noshirvan - https://www.MahamGostar.com.ink/pourya-noshirvan - "
        "https://scholar.google.com/citations?user=Lx6vbkEAAAAJ&hl=en; "
        "Zahra Hosseinzadeh - https://mahamgostar.com/ - "
        "https://scholar.google.com/citations?user=UhJ78nEAAAAJ&hl=en; "
        "Masih Ghadimi - https://MahamGostar.com.ink/masih-ghadimi - "
        "https://scholar.google.com/citations?user=Omw06_sAAAAJ&hl=en; "
        "Alireza Ghavamitabar - "
        "https://scholar.google.com/citations?user=Qc403hAAAAAJ&hl=en; "
        "Erfan Abedinpour - https://MahamGostar.com.ink/erfan-abedinpour - "
        "https://scholar.google.com/citations?user=IRl-dC8AAAAJ&hl=en; "
        "Komeil Kazemi - https://komeilkazemi.com/ , "
        "https://mahamgostar.site/about-us; "
        "More research members listed at https://mahamgostar.co/#research-members.";

    // IT department & extended team members
    string public constant projectITDepartmentMembers =
        "MahamGostar IT Department main page: https://mahamgostar.site/about-us , "
        "https://mahamgostar.site/en; "
        "Amir Rahimnezhad - https://MahamGostar.com.ink/amir-rahimnezhad; "
        "Babak Hashemzade - https://mahamgostar.site/en; "
        "Mehrshad Abedi - https://mahamgostar.site/about-us; "
        "Hossien Asadpour - https://mahamgostar.site/about-us; "
        "Erfan Mohabati - https://mahamgostar.site/en.";

    // Multichain / networks description
    string public constant projectNetworksMultichain =
        "MahamGostar (MG) is primarily deployed on BNB Smart Chain but is designed as a "
        "multichain-friendly asset. MG can be bridged or natively issued on other "
        "networks as reliable bridge infrastructure and deployments are established, "
        "including Layer 1 blockchains such as Ethereum, BNB Smart Chain, Avalanche "
        "(C-Chain), Polygon (PoS and Polygon zkEVM), Fantom (Opera), Celo, Cronos, "
        "Rootstock (RSK), Moonbeam, Evmos, Arbitrum Nova, Astar, Base, Chiliz Chain, "
        "Gnosis Chain (xDai), Kava, Optimism, Sei Network, ThunderCore, Velas, "
        "Viction and XinFin Network (XDC); Layer 2 scaling solutions such as "
        "Arbitrum One, Optimism (OP Mainnet), Base, zkSync, Linea, Boba Network and "
        "Manta; and non-EVM chains via dedicated bridges, including Tron, Solana, "
        "Stellar and similar networks, enabling MG to participate in a broader "
        "multichain Web3 environment.";

    // High-level description of the token and purpose
    string public constant projectDescriptionShort =
        "MahamGostar (MG) is the official limited-supply ecosystem token of MahamGostar "
        "(19,000,000 MG on BNB Smart Chain), designed for coordination, reputation and "
        "multichain Web3 integrations.";

    string public constant projectDescriptionLong =
        "MahamGostar (MG) is a fixed-supply coordination and reputation token for the "
        "MahamGostar ecosystem. It connects MahamGostar Research Group and IT/AI "
        "solutions across multiple domains, independent products and Web3 services. "
        "MG aligns incentives between research, software and tokens such as MGC and MGAI, "
        "rewarding long-term contributors, builders and partners who strengthen the ecosystem. "
        "Backed by an independent, self-funded research group with documented work in "
        "innovation adoption, cloud computing, AI, machine learning, data analytics and "
        "digital currencies, MG acts as a portable signal of support and trust for "
        "MahamGostar dashboards, AI platforms, digital identity tools and future experiments. "
        "All benefits and reputation effects of MG are intended to support transparent, "
        "real-world research, secure digital tools and long-term ecosystem development "
        "by MahamGostar. "
        "MG is architected as a multichain-friendly asset which can be bridged to or "
        "natively deployed on other networks such as Ethereum, Solana, Tron, Polygon, "
        "Base, Arbitrum and additional EVM Layer 1 and Layer 2 chains as reliable "
        "bridging infrastructure becomes available, allowing MahamGostar supporters to "
        "interact with the ecosystem across multiple chains in a unified way.";

    // ---------------------------------------------------------------------
    // BEP20 / ERC20 storage
    // ---------------------------------------------------------------------
    mapping(address => uint256) public balanceOf;
    mapping(address => mapping(address => uint256)) public allowance;

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

    /// @dev On deployment, the whole supply is assigned to the deployer.
    function _assignInitialSupply(address to) private {
        balanceOf[to] = totalSupply;
        emit Transfer(address(0), to, totalSupply);
    }

    constructor() {
        _assignInitialSupply(msg.sender);
    }

    /// @dev Internal transfer function with simple balance checks.
    ///      No fee, no blacklist, no freeze, no special rules.
    function _transfer(address from, address to, uint256 value) internal {
        require(to != address(0), "MG: transfer to the zero address");
        require(balanceOf[from] >= value, "MG: balance too low");

        unchecked {
            balanceOf[from] -= value;
            balanceOf[to] += value;
        }

        emit Transfer(from, to, value);
    }

    /// @notice Transfer tokens to another address.
    /// @param to Recipient address.
    /// @param value Amount of tokens to transfer.
    /// @return success True if transfer succeeds.
    function transfer(address to, uint256 value) external returns (bool success) {
        _transfer(msg.sender, to, value);
        return true;
    }

    /// @notice Approve another address to spend tokens on your behalf.
    /// @param spender Address which will be allowed to spend.
    /// @param value Maximum amount they can spend.
    /// @return success True if approval succeeds.
    function approve(address spender, uint256 value) external returns (bool success) {
        allowance[msg.sender][spender] = value;
        emit Approval(msg.sender, spender, value);
        return true;
    }

    /// @notice Transfer tokens using an existing allowance.
    /// @param from Address to send tokens from.
    /// @param to Recipient address.
    /// @param value Amount of tokens to transfer.
    /// @return success True if transfer succeeds.
    function transferFrom(address from, address to, uint256 value)
        external
        returns (bool success)
    {
        uint256 allowed = allowance[from][msg.sender];
        require(allowed >= value, "MG: allowance too low");

        if (allowed != type(uint256).max) {
            allowance[from][msg.sender] = allowed - value;
        }

        _transfer(from, to, value);
        return true;
    }

    /// @notice Some BSC tools expect an owner function; we explicitly
    ///         return the zero address to indicate there is no owner/admin.
    function getOwner() external pure returns (address) {
        return address(0);
    }
}
5. Official MahamGostar Domains

The following domains are the official infrastructure of the MahamGostar ecosystem. For authentic information, only trust these addresses: