// SPDX-License-Identifier: MIT pragma solidity 0.8.17; import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; import "@openzeppelin/contracts/access/Ownable.sol"; import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol"; contract GNET is ERC20, ERC20Burnable, Ownable { address public minterContract; // this is not real name, please check the contract first before deploying ! constructor() ERC20("TestGlobalNetwork", "TGNET") { _mint(msg.sender, 1_000_000_000 * 10 ** 9); } function decimals() public pure override returns (uint8) { return 9; } function setMinterContract(address _minterContract) public onlyOwner { require(minterContract == address(0), "minter contract already set"); minterContract = _minterContract; } function mintForFarm(uint amount, address target) external { require(msg.sender == minterContract, "Unauthorized minter"); _mint(target, amount); } }