// SPDX-License-Identifier: UNLISENCED
/**
* @title NTP Collabs
* @author 0xSumo
*/
pragma solidity ^0.8.0;
abstract contract OwnControll {
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
address public owner;
mapping(address => bool) public admin;
constructor() { owner = msg.sender; }
modifier onlyOwner { require(owner == msg.sender, "Not Owner");_; }
modifier onlyAdmin { require(admin[msg.sender], "Not Admin"); _; }
function setAdmin(address address_, bool bool_) external onlyOwner { admin[address_] = bool_; }
function transferOwnership(address new_) external onlyOwner { address _old = owner; owner = new_; emit OwnershipTransferred(_old, new_); }
}
interface iToken { function mintToken(address to, uint256 id, uint256 amount, bytes memory data) external; }
contract Minter is OwnControll {
iToken public Token = iToken(0x68607266e9118B971901239891e6280a8066fCEb);
uint256 public numberOfToken;
uint256 constant public mintPrice = 0.015 ether;
mapping(address => uint256) private minted;
modifier onlySender() { require(msg.sender == tx.origin, "No smart contract");_; }
bool public active;
function setActive() public onlyOwner { active = !active; }
function mintMany(bytes memory data) external payable onlySender {
require(minted[msg.sender] == 0, "Exceed max per addy and tx");
require(msg.value == mintPrice, "Value sent is not correct");
require(active, "Inactive");
require(numberOfToken < 100, "Exceed max token");
numberOfToken++;
minted[msg.sender]++;
Token.mintToken(msg.sender, 5, 1, data);
}
function withdraw() public onlyAdmin {
uint balance = address(this).balance;
payable(msg.sender).transfer(balance);
}
}
{
"compilationTarget": {
"Minter.sol": "Minter"
},
"evmVersion": "london",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": true,
"runs": 200
},
"remappings": []
}
[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"Token","outputs":[{"internalType":"contract iToken","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"active","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"admin","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"name":"mintMany","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"mintPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"numberOfToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"setActive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"address_","type":"address"},{"internalType":"bool","name":"bool_","type":"bool"}],"name":"setAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"new_","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]