Можно, как вариант, использовать что-то типа такого:
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.7.0 <0.9.0;
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
contract YourContractName is ERC20{
address owner;
constructor() ERC20("Your token name", "YourSymbol") {
// запоминаем кошелёк, который загружал токен, чтобы только он мог допечатывать деньги
owner = msg.sender;
}
function printCoins(uint256 amount) public {
require(msg.sender == owner, "Forbidden");
_mint(owner, amount); // зачисляем деньги на кошелёк владельца контракта
}
}