TokenFactory
0xA11768954AACeA9e52995AE398aaA7cca736c6FeVerifiedNative balance0USDX
Account typeSmart contract
NetworkTuven 99359
Overview
- Contract name
- TokenFactory
- Verification
- Verified source
- Creation transaction
- 0x545e87944e20331f31ba5e9e900af455b62afc0054b99ae6e6a68828b7cd0324
- Balance updated at block
- 15561
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
import {MintableERC20} from "./MintableERC20.sol";
/// @notice Multisig-controlled factory that deploys MintableERC20s with multisig as sole minter.
contract TokenFactory {
address public immutable multisig;
address[] public tokens;
error NotMultisig();
event TokenCreated(address indexed token, string name, string symbol, uint256 cap);
modifier onlyMultisig() {
if (msg.sender != multisig) revert NotMultisig();
_;
}
constructor(address _multisig) {
require(_multisig != address(0), "multisig=0");
multisig = _multisig;
}
function createToken(string calldata name_, string calldata symbol_, uint256 cap_)
external
onlyMultisig
returns (address token)
{
token = address(new MintableERC20(name_, symbol_, cap_, multisig));
tokens.push(token);
emit TokenCreated(token, name_, symbol_, cap_);
}
function tokensLength() external view returns (uint256) {
return tokens.length;
}
}
Contract ABI
[
{
"inputs": [
{
"internalType": "address",
"name": "_multisig",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [],
"name": "NotMultisig",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "token",
"type": "address"
},
{
"indexed": false,
"internalType": "string",
"name": "name",
"type": "string"
},
{
"indexed": false,
"internalType": "string",
"name": "symbol",
"type": "string"
},
{
"indexed": false,
"internalType": "uint256",
"name": "cap",
"type": "uint256"
}
],
"name": "TokenCreated",
"type": "event"
},
{
"inputs": [
{
"internalType": "string",
"name": "name_",
"type": "string"
},
{
"internalType": "string",
"name": "symbol_",
"type": "string"
},
{
"internalType": "uint256",
"name": "cap_",
"type": "uint256"
}
],
"name": "createToken",
"outputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "multisig",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "tokens",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "tokensLength",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
}
]