mirror of
https://github.com/luxfi/bridge.git
synced 2026-09-24 00:26:46 +00:00
refactor: clean up bridge contracts and simplify Zoo token implementations
This commit is contained in:
@@ -14,6 +14,9 @@ contract ETHVault is ERC20 {
|
||||
uint256 amount
|
||||
);
|
||||
|
||||
// Errors
|
||||
error ZeroAddress();
|
||||
|
||||
constructor(string memory name, string memory symbol) ERC20(name, symbol) {}
|
||||
// Function to receive ETH and mint shares
|
||||
receive() external payable {}
|
||||
@@ -24,6 +27,7 @@ contract ETHVault is ERC20 {
|
||||
* @param receiver_ receiver's address
|
||||
*/
|
||||
function deposit(uint256 amount_, address receiver_) external payable {
|
||||
if (receiver_ == address(0)) revert ZeroAddress();
|
||||
require(msg.value > 0 && amount_ == msg.value, "Must send ETH");
|
||||
// Calculate the number of shares to mint
|
||||
uint256 shares = msg.value; // For simplicity, 1 ETH = 1 share
|
||||
@@ -43,14 +47,15 @@ contract ETHVault is ERC20 {
|
||||
address receiver_,
|
||||
address owner_
|
||||
) external {
|
||||
if (receiver_ == address(0)) revert ZeroAddress();
|
||||
require(amount_ <= address(this).balance, "Insufficient balance");
|
||||
if (msg.sender != owner_) {
|
||||
uint256 allowed = allowance(owner_, msg.sender);
|
||||
require(allowed >= amount_, "Invalid alowance");
|
||||
require(allowed >= amount_, "Invalid allowance");
|
||||
}
|
||||
_burn(owner_, amount_);
|
||||
(bool success, ) = payable(receiver_).call{value: amount_}("");
|
||||
require(success, "sending failed");
|
||||
require(success, "ETH transfer failed");
|
||||
emit Withdraw(msg.sender, receiver_, owner_, amount_);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -39,7 +39,7 @@ contract LuxVault is Ownable {
|
||||
string memory a,
|
||||
string memory b
|
||||
) internal pure returns (string memory) {
|
||||
return string(abi.encodePacked(a, b));
|
||||
return string.concat(a, b);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
pragma solidity ^0.8.20;
|
||||
|
||||
import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
|
||||
import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
|
||||
import "@openzeppelin/contracts/token/ERC721/IERC721.sol";
|
||||
import "@openzeppelin/contracts/token/ERC1155/IERC1155.sol";
|
||||
import "@openzeppelin/contracts/access/Ownable.sol";
|
||||
@@ -13,6 +14,8 @@ import "./interfaces/IBridge.sol";
|
||||
* @dev Manages token vaults for X-Chain bridging with support for ERC20, ERC721, and ERC1155
|
||||
*/
|
||||
contract XChainVault is Ownable {
|
||||
using SafeERC20 for IERC20;
|
||||
|
||||
// Warp precompile address
|
||||
address constant WARP_PRECOMPILE = 0x0200000000000000000000000000000000000000;
|
||||
|
||||
@@ -67,16 +70,29 @@ contract XChainVault is Ownable {
|
||||
mapping(address => mapping(uint32 => address)) public wrappedTokens; // originalToken => chainId => wrappedToken
|
||||
mapping(address => bool) public supportedTokens;
|
||||
mapping(uint32 => bool) public supportedChains;
|
||||
|
||||
|
||||
uint256 private nonce;
|
||||
address public bridge;
|
||||
|
||||
|
||||
// Maximum array length for ERC1155 batch operations to prevent DoS
|
||||
uint256 public constant MAX_BATCH_SIZE = 100;
|
||||
|
||||
// Events for admin functions
|
||||
event SupportedTokenUpdated(address indexed token, bool supported);
|
||||
event SupportedChainUpdated(uint32 indexed chainId, bool supported);
|
||||
event BridgeUpdated(address indexed oldBridge, address indexed newBridge);
|
||||
|
||||
// Errors
|
||||
error ZeroAddress();
|
||||
error BatchSizeTooLarge(uint256 size, uint256 max);
|
||||
|
||||
modifier onlyBridge() {
|
||||
require(msg.sender == bridge, "Only bridge can call");
|
||||
_;
|
||||
}
|
||||
|
||||
|
||||
constructor(address _bridge) Ownable(msg.sender) {
|
||||
if (_bridge == address(0)) revert ZeroAddress();
|
||||
bridge = _bridge;
|
||||
}
|
||||
|
||||
@@ -93,8 +109,8 @@ contract XChainVault is Ownable {
|
||||
require(supportedChains[destinationChainId], "Chain not supported");
|
||||
require(amount > 0, "Amount must be greater than 0");
|
||||
|
||||
// Transfer tokens to vault
|
||||
IERC20(token).transferFrom(msg.sender, address(this), amount);
|
||||
// Transfer tokens to vault (using SafeERC20)
|
||||
IERC20(token).safeTransferFrom(msg.sender, address(this), amount);
|
||||
|
||||
// Generate vault ID
|
||||
vaultId = keccak256(abi.encodePacked(
|
||||
@@ -182,6 +198,7 @@ contract XChainVault is Ownable {
|
||||
require(supportedChains[destinationChainId], "Chain not supported");
|
||||
require(tokenIds.length == amounts.length, "Arrays length mismatch");
|
||||
require(tokenIds.length > 0, "Empty arrays");
|
||||
if (tokenIds.length > MAX_BATCH_SIZE) revert BatchSizeTooLarge(tokenIds.length, MAX_BATCH_SIZE);
|
||||
|
||||
// Transfer tokens to vault
|
||||
IERC1155(token).safeBatchTransferFrom(
|
||||
@@ -239,7 +256,7 @@ contract XChainVault is Ownable {
|
||||
if (vault.tokenType == TokenType.ERC20) {
|
||||
require(vault.amount >= amount, "Insufficient vault balance");
|
||||
vault.amount -= amount;
|
||||
IERC20(vault.originalToken).transfer(recipient, amount);
|
||||
IERC20(vault.originalToken).safeTransfer(recipient, amount);
|
||||
} else if (vault.tokenType == TokenType.ERC721) {
|
||||
require(amount == 1, "Invalid amount for NFT");
|
||||
vault.isActive = false;
|
||||
@@ -308,21 +325,27 @@ contract XChainVault is Ownable {
|
||||
* @dev Update supported tokens
|
||||
*/
|
||||
function setSupportedToken(address token, bool supported) external onlyOwner {
|
||||
if (token == address(0)) revert ZeroAddress();
|
||||
supportedTokens[token] = supported;
|
||||
emit SupportedTokenUpdated(token, supported);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @dev Update supported chains
|
||||
*/
|
||||
function setSupportedChain(uint32 chainId, bool supported) external onlyOwner {
|
||||
supportedChains[chainId] = supported;
|
||||
emit SupportedChainUpdated(chainId, supported);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @dev Update bridge address
|
||||
*/
|
||||
function setBridge(address _bridge) external onlyOwner {
|
||||
if (_bridge == address(0)) revert ZeroAddress();
|
||||
address oldBridge = bridge;
|
||||
bridge = _bridge;
|
||||
emit BridgeUpdated(oldBridge, _bridge);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -36,7 +36,7 @@ contract ZooVault is Ownable {
|
||||
string memory a,
|
||||
string memory b
|
||||
) internal pure returns (string memory) {
|
||||
return string(abi.encodePacked(a, b));
|
||||
return string.concat(a, b);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -13,20 +13,12 @@ pragma solidity ^0.8.20;
|
||||
import "../ERC20B.sol";
|
||||
|
||||
contract CYRUS is ERC20B {
|
||||
string public constant _name = "Cyrus AI";
|
||||
string public constant _symbol = "CYRUS";
|
||||
string public constant TOKEN_NAME = "Cyrus AI";
|
||||
string public constant TOKEN_SYMBOL = "CYRUS";
|
||||
|
||||
constructor() ERC20B(_name, _symbol) {}
|
||||
constructor(address admin) ERC20B(TOKEN_NAME, TOKEN_SYMBOL, admin) {}
|
||||
|
||||
function decimals() public view virtual override returns (uint8) {
|
||||
return 6;
|
||||
}
|
||||
|
||||
function mint(address account, uint256 amount) public {
|
||||
_mint(account, amount);
|
||||
}
|
||||
|
||||
function burn(address account, uint256 amount) public {
|
||||
_burn(account, amount);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,31 +2,23 @@
|
||||
pragma solidity ^0.8.20;
|
||||
|
||||
/**
|
||||
███╗ ███╗███████╗██╗ █████╗ ███╗ ██╗██╗ █████╗
|
||||
███╗ ███╗███████╗██╗ █████╗ ███╗ ██╗██╗ █████╗
|
||||
████╗ ████║██╔════╝██║ ██╔══██╗████╗ ██║██║██╔══██╗
|
||||
██╔████╔██║█████╗ ██║ ███████║██╔██╗ ██║██║███████║
|
||||
██║╚██╔╝██║██╔══╝ ██║ ██╔══██║██║╚██╗██║██║██╔══██║
|
||||
██║ ╚═╝ ██║███████╗███████╗██║ ██║██║ ╚████║██║██║ ██║
|
||||
╚═╝ ╚═╝╚══════╝╚══════╝╚═╝ ╚═╝╚═╝ ╚═══╝╚═╝╚═╝ ╚═╝
|
||||
╚═╝ ╚═╝╚══════╝╚══════╝╚═╝ ╚═╝╚═╝ ╚═══╝╚═╝╚═╝ ╚═╝
|
||||
*/
|
||||
|
||||
import "../ERC20B.sol";
|
||||
|
||||
contract MELANIA is ERC20B {
|
||||
string public constant _name = "Melania Meme";
|
||||
string public constant _symbol = "MELANIA";
|
||||
string public constant TOKEN_NAME = "Melania Meme";
|
||||
string public constant TOKEN_SYMBOL = "MELANIA";
|
||||
|
||||
constructor() ERC20B(_name, _symbol) {}
|
||||
constructor(address admin) ERC20B(TOKEN_NAME, TOKEN_SYMBOL, admin) {}
|
||||
|
||||
function decimals() public view virtual override returns (uint8) {
|
||||
return 6;
|
||||
}
|
||||
|
||||
function mint(address account, uint256 amount) public {
|
||||
_mint(account, amount);
|
||||
}
|
||||
|
||||
function burn(address account, uint256 amount) public {
|
||||
_burn(account, amount);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,33 +2,23 @@
|
||||
pragma solidity ^0.8.20;
|
||||
|
||||
/**
|
||||
███████╗██╗ ██████╗ ██████╗
|
||||
██╔════╝██║ ██╔═══██╗██╔════╝
|
||||
███████╗██╗ ██████╗ ██████╗
|
||||
██╔════╝██║ ██╔═══██╗██╔════╝
|
||||
███████╗██║ ██║ ██║██║ ███╗
|
||||
╚════██║██║ ██║ ██║██║ ██║
|
||||
███████║███████╗╚██████╔╝╚██████╔╝
|
||||
╚══════╝╚══════╝ ╚═════╝ ╚═════╝
|
||||
╚══════╝╚══════╝ ╚═════╝ ╚═════╝
|
||||
*/
|
||||
|
||||
import "../ERC20B.sol";
|
||||
|
||||
contract SLOG is ERC20B {
|
||||
string public constant _name = "Slog";
|
||||
string public constant _symbol = "SLOG";
|
||||
string public constant TOKEN_NAME = "Slog";
|
||||
string public constant TOKEN_SYMBOL = "SLOG";
|
||||
|
||||
constructor() ERC20B(_name, _symbol) {
|
||||
_mint(msg.sender, 1000000000 * 10 ** decimals());
|
||||
}
|
||||
constructor(address admin) ERC20B(TOKEN_NAME, TOKEN_SYMBOL, admin) {}
|
||||
|
||||
function decimals() public view virtual override returns (uint8) {
|
||||
return 6;
|
||||
}
|
||||
|
||||
function mint(address account, uint256 amount) public {
|
||||
_mint(account, amount);
|
||||
}
|
||||
|
||||
function burn(address account, uint256 amount) public {
|
||||
_burn(account, amount);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,31 +2,23 @@
|
||||
pragma solidity ^0.8.20;
|
||||
|
||||
/**
|
||||
████████╗██████╗ ██╗ ██╗███╗ ███╗██████╗
|
||||
████████╗██████╗ ██╗ ██╗███╗ ███╗██████╗
|
||||
╚══██╔══╝██╔══██╗██║ ██║████╗ ████║██╔══██╗
|
||||
██║ ██████╔╝██║ ██║██╔████╔██║██████╔╝
|
||||
██║ ██╔══██╗██║ ██║██║╚██╔╝██║██╔═══╝
|
||||
██║ ██║ ██║╚██████╔╝██║ ╚═╝ ██║██║
|
||||
╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝╚═╝
|
||||
██║ ██╔══██╗██║ ██║██║╚██╔╝██║██╔═══╝
|
||||
██║ ██║ ██║╚██████╔╝██║ ╚═╝ ██║██║
|
||||
╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝╚═╝
|
||||
*/
|
||||
|
||||
import "../ERC20B.sol";
|
||||
|
||||
contract TRUMP is ERC20B {
|
||||
string public constant _name = "OFFICIAL TRUMP";
|
||||
string public constant _symbol = "TRUMP";
|
||||
string public constant TOKEN_NAME = "OFFICIAL TRUMP";
|
||||
string public constant TOKEN_SYMBOL = "TRUMP";
|
||||
|
||||
constructor() ERC20B(_name, _symbol) {}
|
||||
constructor(address admin) ERC20B(TOKEN_NAME, TOKEN_SYMBOL, admin) {}
|
||||
|
||||
function decimals() public view virtual override returns (uint8) {
|
||||
return 6;
|
||||
}
|
||||
|
||||
function mint(address account, uint256 amount) public {
|
||||
_mint(account, amount);
|
||||
}
|
||||
|
||||
function burn(address account, uint256 amount) public {
|
||||
_burn(account, amount);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,8 +4,8 @@ pragma solidity ^0.8.20;
|
||||
/**
|
||||
███████╗
|
||||
╚══███╔╝
|
||||
███╔╝
|
||||
███╔╝
|
||||
███╔╝
|
||||
███╔╝
|
||||
███████╗
|
||||
╚══════╝
|
||||
*/
|
||||
@@ -13,20 +13,12 @@ pragma solidity ^0.8.20;
|
||||
import "../ERC20B.sol";
|
||||
|
||||
contract Z is ERC20B {
|
||||
string public constant _name = "Z";
|
||||
string public constant _symbol = "Z";
|
||||
string public constant TOKEN_NAME = "Z";
|
||||
string public constant TOKEN_SYMBOL = "Z";
|
||||
|
||||
constructor() ERC20B(_name, _symbol) {}
|
||||
constructor(address admin) ERC20B(TOKEN_NAME, TOKEN_SYMBOL, admin) {}
|
||||
|
||||
function decimals() public view virtual override returns (uint8) {
|
||||
return 6;
|
||||
}
|
||||
|
||||
function mint(address account, uint256 amount) public {
|
||||
_mint(account, amount);
|
||||
}
|
||||
|
||||
function burn(address account, uint256 amount) public {
|
||||
_burn(account, amount);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
pragma solidity ^0.8.20;
|
||||
|
||||
/**
|
||||
███████╗ ██████╗ ██████╗ █████╗ ██████╗ █████╗
|
||||
███████╗ ██████╗ ██████╗ █████╗ ██████╗ █████╗
|
||||
╚══███╔╝██╔═══██╗██╔═══██╗ ██╔══██╗██╔══██╗██╔══██╗
|
||||
███╔╝ ██║ ██║██║ ██║ ███████║██║ ██║███████║
|
||||
███╔╝ ██║ ██║██║ ██║ ██╔══██║██║ ██║██╔══██║
|
||||
@@ -13,16 +13,8 @@ pragma solidity ^0.8.20;
|
||||
import "../ERC20B.sol";
|
||||
|
||||
contract ZooADA is ERC20B {
|
||||
string public constant _name = "Zoo ADA";
|
||||
string public constant _symbol = "ZADA";
|
||||
string public constant TOKEN_NAME = "Zoo ADA";
|
||||
string public constant TOKEN_SYMBOL = "ZADA";
|
||||
|
||||
constructor() ERC20B(_name, _symbol) {}
|
||||
|
||||
function mint(address account, uint256 amount) public {
|
||||
_mint(account, amount);
|
||||
}
|
||||
|
||||
function burn(address account, uint256 amount) public {
|
||||
_burn(account, amount);
|
||||
}
|
||||
constructor(address admin) ERC20B(TOKEN_NAME, TOKEN_SYMBOL, admin) {}
|
||||
}
|
||||
|
||||
@@ -4,8 +4,8 @@ pragma solidity ^0.8.20;
|
||||
/*
|
||||
███████╗ ██████╗ ██████╗ █████╗ ██╗ ██╗ ██████╗ ███████╗
|
||||
╚══███╔╝██╔═══██╗██╔═══██╗ ██╔══██╗██║███║██╔════╝ ╚══███╔╝
|
||||
███╔╝ ██║ ██║██║ ██║ ███████║██║╚██║███████╗ ███╔╝
|
||||
███╔╝ ██║ ██║██║ ██║ ██╔══██║██║ ██║██╔═══██╗ ███╔╝
|
||||
███╔╝ ██║ ██║██║ ██║ ███████║██║╚██║███████╗ ███╔╝
|
||||
███╔╝ ██║ ██║██║ ██║ ██╔══██║██║ ██║██╔═══██╗ ███╔╝
|
||||
███████╗╚██████╔╝╚██████╔╝ ██║ ██║██║ ██║╚██████╔╝███████╗
|
||||
╚══════╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝ ╚══════╝
|
||||
*/
|
||||
@@ -13,16 +13,8 @@ pragma solidity ^0.8.20;
|
||||
import "../ERC20B.sol";
|
||||
|
||||
contract ZooAI16Z is ERC20B {
|
||||
string public constant _name = "Zoo AI16Z";
|
||||
string public constant _symbol = "ZAI16Z";
|
||||
string public constant TOKEN_NAME = "Zoo AI16Z";
|
||||
string public constant TOKEN_SYMBOL = "ZAI16Z";
|
||||
|
||||
constructor() ERC20B(_name, _symbol) {}
|
||||
|
||||
function mint(address account, uint256 amount) public {
|
||||
_mint(account, amount);
|
||||
}
|
||||
|
||||
function burn(address account, uint256 amount) public {
|
||||
_burn(account, amount);
|
||||
}
|
||||
constructor(address admin) ERC20B(TOKEN_NAME, TOKEN_SYMBOL, admin) {}
|
||||
}
|
||||
|
||||
@@ -4,8 +4,8 @@ pragma solidity ^0.8.20;
|
||||
/*
|
||||
███████╗ ██████╗ ██████╗ █████╗ ██╗ ██╗ █████╗ ██╗ ██╗
|
||||
╚══███╔╝██╔═══██╗██╔═══██╗ ██╔══██╗██║ ██║██╔══██╗╚██╗██╔╝
|
||||
███╔╝ ██║ ██║██║ ██║ ███████║██║ ██║███████║ ╚███╔╝
|
||||
███╔╝ ██║ ██║██║ ██║ ██╔══██║╚██╗ ██╔╝██╔══██║ ██╔██╗
|
||||
███╔╝ ██║ ██║██║ ██║ ███████║██║ ██║███████║ ╚███╔╝
|
||||
███╔╝ ██║ ██║██║ ██║ ██╔══██║╚██╗ ██╔╝██╔══██║ ██╔██╗
|
||||
███████╗╚██████╔╝╚██████╔╝ ██║ ██║ ╚████╔╝ ██║ ██║██╔╝ ██╗
|
||||
╚══════╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝
|
||||
*/
|
||||
@@ -13,16 +13,8 @@ pragma solidity ^0.8.20;
|
||||
import "../ERC20B.sol";
|
||||
|
||||
contract ZooAVAX is ERC20B {
|
||||
string public constant _name = "Zoo AVAX";
|
||||
string public constant _symbol = "ZAVAX";
|
||||
string public constant TOKEN_NAME = "Zoo AVAX";
|
||||
string public constant TOKEN_SYMBOL = "ZAVAX";
|
||||
|
||||
constructor() ERC20B(_name, _symbol) {}
|
||||
|
||||
function mint(address account, uint256 amount) public {
|
||||
_mint(account, amount);
|
||||
}
|
||||
|
||||
function burn(address account, uint256 amount) public {
|
||||
_burn(account, amount);
|
||||
}
|
||||
constructor(address admin) ERC20B(TOKEN_NAME, TOKEN_SYMBOL, admin) {}
|
||||
}
|
||||
|
||||
@@ -4,25 +4,17 @@ pragma solidity ^0.8.20;
|
||||
/*
|
||||
███████╗ ██████╗ ██████╗ ██████╗ ██╗ █████╗ ███████╗████████╗
|
||||
╚══███╔╝██╔═══██╗██╔═══██╗ ██╔══██╗██║ ██╔══██╗██╔════╝╚══██╔══╝
|
||||
███╔╝ ██║ ██║██║ ██║ ██████╔╝██║ ███████║███████╗ ██║
|
||||
███╔╝ ██║ ██║██║ ██║ ██╔══██╗██║ ██╔══██║╚════██║ ██║
|
||||
███████╗╚██████╔╝╚██████╔╝ ██████╔╝███████╗██║ ██║███████║ ██║
|
||||
╚══════╝ ╚═════╝ ╚═════╝ ╚═════╝ ╚══════╝╚═╝ ╚═╝╚══════╝ ╚═╝
|
||||
███╔╝ ██║ ██║██║ ██║ ██████╔╝██║ ███████║███████╗ ██║
|
||||
███╔╝ ██║ ██║██║ ██║ ██╔══██╗██║ ██╔══██║╚════██║ ██║
|
||||
███████╗╚██████╔╝╚██████╔╝ ██████╔╝███████╗██║ ██║███████║ ██║
|
||||
╚══════╝ ╚═════╝ ╚═════╝ ╚═════╝ ╚══════╝╚═╝ ╚═╝╚══════╝ ╚═╝
|
||||
*/
|
||||
|
||||
import "../ERC20B.sol";
|
||||
|
||||
contract ZooBLAST is ERC20B {
|
||||
string public constant _name = "Zoo BLAST";
|
||||
string public constant _symbol = "ZBLAST";
|
||||
string public constant TOKEN_NAME = "Zoo BLAST";
|
||||
string public constant TOKEN_SYMBOL = "ZBLAST";
|
||||
|
||||
constructor() ERC20B(_name, _symbol) {}
|
||||
|
||||
function mint(address account, uint256 amount) public {
|
||||
_mint(account, amount);
|
||||
}
|
||||
|
||||
function burn(address account, uint256 amount) public {
|
||||
_burn(account, amount);
|
||||
}
|
||||
constructor(address admin) ERC20B(TOKEN_NAME, TOKEN_SYMBOL, admin) {}
|
||||
}
|
||||
|
||||
@@ -2,27 +2,19 @@
|
||||
pragma solidity ^0.8.20;
|
||||
|
||||
/*
|
||||
███████╗ ██████╗ ██████╗ ██████╗ ███╗ ██╗██████╗
|
||||
███████╗ ██████╗ ██████╗ ██████╗ ███╗ ██╗██████╗
|
||||
╚══███╔╝██╔═══██╗██╔═══██╗ ██╔══██╗████╗ ██║██╔══██╗
|
||||
███╔╝ ██║ ██║██║ ██║ ██████╔╝██╔██╗ ██║██████╔╝
|
||||
███╔╝ ██║ ██║██║ ██║ ██╔══██╗██║╚██╗██║██╔══██╗
|
||||
███████╗╚██████╔╝╚██████╔╝ ██████╔╝██║ ╚████║██████╔╝
|
||||
╚══════╝ ╚═════╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═══╝╚═════╝
|
||||
╚══════╝ ╚═════╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═══╝╚═════╝
|
||||
*/
|
||||
|
||||
import "../ERC20B.sol";
|
||||
|
||||
contract ZooBNB is ERC20B {
|
||||
string public constant _name = "Zoo BNB";
|
||||
string public constant _symbol = "ZBNB";
|
||||
string public constant TOKEN_NAME = "Zoo BNB";
|
||||
string public constant TOKEN_SYMBOL = "ZBNB";
|
||||
|
||||
constructor() ERC20B(_name, _symbol) {}
|
||||
|
||||
function mint(address account, uint256 amount) public {
|
||||
_mint(account, amount);
|
||||
}
|
||||
|
||||
function burn(address account, uint256 amount) public {
|
||||
_burn(account, amount);
|
||||
}
|
||||
constructor(address admin) ERC20B(TOKEN_NAME, TOKEN_SYMBOL, admin) {}
|
||||
}
|
||||
|
||||
@@ -4,8 +4,8 @@ pragma solidity ^0.8.20;
|
||||
/**
|
||||
███████╗ ██████╗ ██████╗ ██████╗ ██████╗ ███╗ ███╗███████╗
|
||||
╚══███╔╝██╔═══██╗██╔═══██╗ ██╔══██╗██╔═══██╗████╗ ████║██╔════╝
|
||||
███╔╝ ██║ ██║██║ ██║ ██████╔╝██║ ██║██╔████╔██║█████╗
|
||||
███╔╝ ██║ ██║██║ ██║ ██╔══██╗██║ ██║██║╚██╔╝██║██╔══╝
|
||||
███╔╝ ██║ ██║██║ ██║ ██████╔╝██║ ██║██╔████╔██║█████╗
|
||||
███╔╝ ██║ ██║██║ ██║ ██╔══██╗██║ ██║██║╚██╔╝██║██╔══╝
|
||||
███████╗╚██████╔╝╚██████╔╝ ██████╔╝╚██████╔╝██║ ╚═╝ ██║███████╗
|
||||
╚══════╝ ╚═════╝ ╚═════╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═╝╚══════╝
|
||||
*/
|
||||
@@ -13,16 +13,8 @@ pragma solidity ^0.8.20;
|
||||
import "../ERC20B.sol";
|
||||
|
||||
contract ZooBOME is ERC20B {
|
||||
string public constant _name = "Zoo BOME";
|
||||
string public constant _symbol = "ZBOME";
|
||||
string public constant TOKEN_NAME = "Zoo BOME";
|
||||
string public constant TOKEN_SYMBOL = "ZBOME";
|
||||
|
||||
constructor() ERC20B(_name, _symbol) {}
|
||||
|
||||
function mint(address account, uint256 amount) public {
|
||||
_mint(account, amount);
|
||||
}
|
||||
|
||||
function burn(address account, uint256 amount) public {
|
||||
_burn(account, amount);
|
||||
}
|
||||
constructor(address admin) ERC20B(TOKEN_NAME, TOKEN_SYMBOL, admin) {}
|
||||
}
|
||||
|
||||
@@ -4,8 +4,8 @@ pragma solidity ^0.8.20;
|
||||
/**
|
||||
███████╗ ██████╗ ██████╗ ██████╗ ██████╗ ███╗ ██╗██╗ ██╗
|
||||
╚══███╔╝██╔═══██╗██╔═══██╗ ██╔══██╗██╔═══██╗████╗ ██║██║ ██╔╝
|
||||
███╔╝ ██║ ██║██║ ██║ ██████╔╝██║ ██║██╔██╗ ██║█████╔╝
|
||||
███╔╝ ██║ ██║██║ ██║ ██╔══██╗██║ ██║██║╚██╗██║██╔═██╗
|
||||
███╔╝ ██║ ██║██║ ██║ ██████╔╝██║ ██║██╔██╗ ██║█████╔╝
|
||||
███╔╝ ██║ ██║██║ ██║ ██╔══██╗██║ ██║██║╚██╗██║██╔═██╗
|
||||
███████╗╚██████╔╝╚██████╔╝ ██████╔╝╚██████╔╝██║ ╚████║██║ ██╗
|
||||
╚══════╝ ╚═════╝ ╚═════╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═══╝╚═╝ ╚═╝
|
||||
*/
|
||||
@@ -13,16 +13,8 @@ pragma solidity ^0.8.20;
|
||||
import "../ERC20B.sol";
|
||||
|
||||
contract ZooBONK is ERC20B {
|
||||
string public constant _name = "Zoo BONK";
|
||||
string public constant _symbol = "ZBONK";
|
||||
string public constant TOKEN_NAME = "Zoo BONK";
|
||||
string public constant TOKEN_SYMBOL = "ZBONK";
|
||||
|
||||
constructor() ERC20B(_name, _symbol) {}
|
||||
|
||||
function mint(address account, uint256 amount) public {
|
||||
_mint(account, amount);
|
||||
}
|
||||
|
||||
function burn(address account, uint256 amount) public {
|
||||
_burn(account, amount);
|
||||
}
|
||||
constructor(address admin) ERC20B(TOKEN_NAME, TOKEN_SYMBOL, admin) {}
|
||||
}
|
||||
|
||||
@@ -4,8 +4,8 @@ pragma solidity ^0.8.20;
|
||||
/**
|
||||
███████╗ ██████╗ ██████╗ ██████╗ ████████╗ ██████╗
|
||||
╚══███╔╝██╔═══██╗██╔═══██╗ ██╔══██╗╚══██╔══╝██╔════╝
|
||||
███╔╝ ██║ ██║██║ ██║ ██████╔╝ ██║ ██║
|
||||
███╔╝ ██║ ██║██║ ██║ ██╔══██╗ ██║ ██║
|
||||
███╔╝ ██║ ██║██║ ██║ ██████╔╝ ██║ ██║
|
||||
███╔╝ ██║ ██║██║ ██║ ██╔══██╗ ██║ ██║
|
||||
███████╗╚██████╔╝╚██████╔╝ ██████╔╝ ██║ ╚██████╗
|
||||
╚══════╝ ╚═════╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═════╝
|
||||
*/
|
||||
@@ -13,16 +13,8 @@ pragma solidity ^0.8.20;
|
||||
import "../ERC20B.sol";
|
||||
|
||||
contract ZooBTC is ERC20B {
|
||||
string public constant _name = "Zoo BTC";
|
||||
string public constant _symbol = "ZBTC";
|
||||
string public constant TOKEN_NAME = "Zoo BTC";
|
||||
string public constant TOKEN_SYMBOL = "ZBTC";
|
||||
|
||||
constructor() ERC20B(_name, _symbol) {}
|
||||
|
||||
function mint(address account, uint256 amount) public {
|
||||
_mint(account, amount);
|
||||
}
|
||||
|
||||
function burn(address account, uint256 amount) public {
|
||||
_burn(account, amount);
|
||||
}
|
||||
constructor(address admin) ERC20B(TOKEN_NAME, TOKEN_SYMBOL, admin) {}
|
||||
}
|
||||
|
||||
@@ -1,27 +1,20 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
pragma solidity ^0.8.20;
|
||||
|
||||
/*
|
||||
███████╗ ██████╗ ██████╗ ██████╗███████╗██╗ ██████╗
|
||||
███████╗ ██████╗ ██████╗ ██████╗███████╗██╗ ██████╗
|
||||
╚══███╔╝██╔═══██╗██╔═══██╗ ██╔════╝██╔════╝██║ ██╔═══██╗
|
||||
███╔╝ ██║ ██║██║ ██║ ██║ █████╗ ██║ ██║ ██║
|
||||
███╔╝ ██║ ██║██║ ██║ ██║ ██╔══╝ ██║ ██║ ██║
|
||||
███████╗╚██████╔╝╚██████╔╝ ╚██████╗███████╗███████╗╚██████╔╝
|
||||
╚══════╝ ╚═════╝ ╚═════╝ ╚═════╝╚══════╝╚══════╝ ╚═════╝
|
||||
╚══════╝ ╚═════╝ ╚═════╝ ╚═════╝╚══════╝╚══════╝ ╚═════╝
|
||||
*/
|
||||
|
||||
import "../ERC20B.sol";
|
||||
|
||||
contract ZooCELO is ERC20B {
|
||||
string public constant _name = "Zoo CELO";
|
||||
string public constant _symbol = "ZCELO";
|
||||
string public constant TOKEN_NAME = "Zoo CELO";
|
||||
string public constant TOKEN_SYMBOL = "ZCELO";
|
||||
|
||||
constructor() ERC20B(_name, _symbol) {}
|
||||
|
||||
function mint(address account, uint256 amount) public {
|
||||
_mint(account, amount);
|
||||
}
|
||||
|
||||
function burn(address account, uint256 amount) public {
|
||||
_burn(account, amount);
|
||||
}
|
||||
constructor(address admin) ERC20B(TOKEN_NAME, TOKEN_SYMBOL, admin) {}
|
||||
}
|
||||
|
||||
@@ -4,16 +4,8 @@ pragma solidity ^0.8.20;
|
||||
import "../ERC20B.sol";
|
||||
|
||||
contract ZooDOGS is ERC20B {
|
||||
string public constant _name = "Zoo DOGS";
|
||||
string public constant _symbol = "ZDOGS";
|
||||
string public constant TOKEN_NAME = "Zoo DOGS";
|
||||
string public constant TOKEN_SYMBOL = "ZDOGS";
|
||||
|
||||
constructor() ERC20B(_name, _symbol) {}
|
||||
|
||||
function mint(address account, uint256 amount) public {
|
||||
_mint(account, amount);
|
||||
}
|
||||
|
||||
function burn(address account, uint256 amount) public {
|
||||
_burn(account, amount);
|
||||
}
|
||||
constructor(address admin) ERC20B(TOKEN_NAME, TOKEN_SYMBOL, admin) {}
|
||||
}
|
||||
|
||||
@@ -13,16 +13,8 @@ pragma solidity ^0.8.20;
|
||||
import "../ERC20B.sol";
|
||||
|
||||
contract ZooETH is ERC20B {
|
||||
string public constant _name = "Zoo ETH";
|
||||
string public constant _symbol = "ZETH";
|
||||
string public constant TOKEN_NAME = "Zoo ETH";
|
||||
string public constant TOKEN_SYMBOL = "ZETH";
|
||||
|
||||
constructor() ERC20B(_name, _symbol) {}
|
||||
|
||||
function mint(address account, uint256 amount) public {
|
||||
_mint(account, amount);
|
||||
}
|
||||
|
||||
function burn(address account, uint256 amount) public {
|
||||
_burn(account, amount);
|
||||
}
|
||||
constructor(address admin) ERC20B(TOKEN_NAME, TOKEN_SYMBOL, admin) {}
|
||||
}
|
||||
|
||||
@@ -13,16 +13,8 @@ pragma solidity ^0.8.20;
|
||||
import "../ERC20B.sol";
|
||||
|
||||
contract ZooFTM is ERC20B {
|
||||
string public constant _name = "Zoo FTM";
|
||||
string public constant _symbol = "ZFTM";
|
||||
string public constant TOKEN_NAME = "Zoo FTM";
|
||||
string public constant TOKEN_SYMBOL = "ZFTM";
|
||||
|
||||
constructor() ERC20B(_name, _symbol) {}
|
||||
|
||||
function mint(address account, uint256 amount) public {
|
||||
_mint(account, amount);
|
||||
}
|
||||
|
||||
function burn(address account, uint256 amount) public {
|
||||
_burn(account, amount);
|
||||
}
|
||||
constructor(address admin) ERC20B(TOKEN_NAME, TOKEN_SYMBOL, admin) {}
|
||||
}
|
||||
|
||||
@@ -2,27 +2,19 @@
|
||||
pragma solidity ^0.8.20;
|
||||
|
||||
/**
|
||||
███████╗ ██████╗ ██████╗ ███████╗██╗ ██╗ ██████╗ ██████╗
|
||||
╚══███╔╝██╔═══██╗██╔═══██╗ ██╔════╝██║ ██║██╔═══██╗██╔════╝
|
||||
███████╗ ██████╗ ██████╗ ███████╗██╗ ██╗ ██████╗ ██████╗
|
||||
╚══███╔╝██╔═══██╗██╔═══██╗ ██╔════╝██║ ██║██╔═══██╗██╔════╝
|
||||
███╔╝ ██║ ██║██║ ██║ █████╗ ██║ █╗ ██║██║ ██║██║ ███╗
|
||||
███╔╝ ██║ ██║██║ ██║ ██╔══╝ ██║███╗██║██║ ██║██║ ██║
|
||||
███████╗╚██████╔╝╚██████╔╝ ██║ ╚███╔███╔╝╚██████╔╝╚██████╔╝
|
||||
╚══════╝ ╚═════╝ ╚═════╝ ╚═╝ ╚══╝╚══╝ ╚═════╝ ╚═════╝
|
||||
╚══════╝ ╚═════╝ ╚═════╝ ╚═╝ ╚══╝╚══╝ ╚═════╝ ╚═════╝
|
||||
*/
|
||||
|
||||
import "../ERC20B.sol";
|
||||
|
||||
contract ZooFWOG is ERC20B {
|
||||
string public constant _name = "Zoo FWOG";
|
||||
string public constant _symbol = "ZFWOG";
|
||||
string public constant TOKEN_NAME = "Zoo FWOG";
|
||||
string public constant TOKEN_SYMBOL = "ZFWOG";
|
||||
|
||||
constructor() ERC20B(_name, _symbol) {}
|
||||
|
||||
function mint(address account, uint256 amount) public {
|
||||
_mint(account, amount);
|
||||
}
|
||||
|
||||
function burn(address account, uint256 amount) public {
|
||||
_burn(account, amount);
|
||||
}
|
||||
constructor(address admin) ERC20B(TOKEN_NAME, TOKEN_SYMBOL, admin) {}
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
pragma solidity ^0.8.20;
|
||||
|
||||
/**
|
||||
███████╗ ██████╗ ██████╗ ██████╗ ██╗ ██████╗ █████╗
|
||||
███████╗ ██████╗ ██████╗ ██████╗ ██╗ ██████╗ █████╗
|
||||
╚══███╔╝██╔═══██╗██╔═══██╗ ██╔════╝ ██║██╔════╝ ██╔══██╗
|
||||
███╔╝ ██║ ██║██║ ██║ ██║ ███╗██║██║ ███╗███████║
|
||||
███╔╝ ██║ ██║██║ ██║ ██║ ██║██║██║ ██║██╔══██║
|
||||
@@ -13,16 +13,8 @@ pragma solidity ^0.8.20;
|
||||
import "../ERC20B.sol";
|
||||
|
||||
contract ZooGIGA is ERC20B {
|
||||
string public constant _name = "Zoo GIGA";
|
||||
string public constant _symbol = "ZGIGA";
|
||||
string public constant TOKEN_NAME = "Zoo GIGA";
|
||||
string public constant TOKEN_SYMBOL = "ZGIGA";
|
||||
|
||||
constructor() ERC20B(_name, _symbol) {}
|
||||
|
||||
function mint(address account, uint256 amount) public {
|
||||
_mint(account, amount);
|
||||
}
|
||||
|
||||
function burn(address account, uint256 amount) public {
|
||||
_burn(account, amount);
|
||||
}
|
||||
constructor(address admin) ERC20B(TOKEN_NAME, TOKEN_SYMBOL, admin) {}
|
||||
}
|
||||
|
||||
@@ -4,8 +4,8 @@ pragma solidity ^0.8.20;
|
||||
/**
|
||||
███████╗ ██████╗ ██████╗ ██╗ ██╗ ██╗██╗ ██╗
|
||||
╚══███╔╝██╔═══██╗██╔═══██╗ ██║ ██║ ██║╚██╗██╔╝
|
||||
███╔╝ ██║ ██║██║ ██║ ██║ ██║ ██║ ╚███╔╝
|
||||
███╔╝ ██║ ██║██║ ██║ ██║ ██║ ██║ ██╔██╗
|
||||
███╔╝ ██║ ██║██║ ██║ ██║ ██║ ██║ ╚███╔╝
|
||||
███╔╝ ██║ ██║██║ ██║ ██║ ██║ ██║ ██╔██╗
|
||||
███████╗╚██████╔╝╚██████╔╝ ███████╗╚██████╔╝██╔╝ ██╗
|
||||
╚══════╝ ╚═════╝ ╚═════╝ ╚══════╝ ╚═════╝ ╚═╝ ╚═╝
|
||||
*/
|
||||
@@ -13,16 +13,8 @@ pragma solidity ^0.8.20;
|
||||
import "../ERC20B.sol";
|
||||
|
||||
contract ZooLUX is ERC20B {
|
||||
string public constant _name = "Zoo LUX";
|
||||
string public constant _symbol = "ZLUX";
|
||||
string public constant TOKEN_NAME = "Zoo LUX";
|
||||
string public constant TOKEN_SYMBOL = "ZLUX";
|
||||
|
||||
constructor() ERC20B(_name, _symbol) {}
|
||||
|
||||
function mint(address account, uint256 amount) public {
|
||||
_mint(account, amount);
|
||||
}
|
||||
|
||||
function burn(address account, uint256 amount) public {
|
||||
_burn(account, amount);
|
||||
}
|
||||
constructor(address admin) ERC20B(TOKEN_NAME, TOKEN_SYMBOL, admin) {}
|
||||
}
|
||||
|
||||
@@ -7,22 +7,14 @@ pragma solidity ^0.8.20;
|
||||
███╔╝ ██║ ██║██║ ██║ ██╔████╔██║█████╗ ██║ █╗ ██║
|
||||
███╔╝ ██║ ██║██║ ██║ ██║╚██╔╝██║██╔══╝ ██║███╗██║
|
||||
███████╗╚██████╔╝╚██████╔╝ ██║ ╚═╝ ██║███████╗╚███╔███╔╝
|
||||
╚══════╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═╝╚══════╝ ╚══╝╚══╝
|
||||
╚══════╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═╝╚══════╝ ╚══╝╚══╝
|
||||
*/
|
||||
|
||||
import "../ERC20B.sol";
|
||||
|
||||
contract ZooMEW is ERC20B {
|
||||
string public constant _name = "Zoo MEW";
|
||||
string public constant _symbol = "ZMEW";
|
||||
string public constant TOKEN_NAME = "Zoo MEW";
|
||||
string public constant TOKEN_SYMBOL = "ZMEW";
|
||||
|
||||
constructor() ERC20B(_name, _symbol) {}
|
||||
|
||||
function mint(address account, uint256 amount) public {
|
||||
_mint(account, amount);
|
||||
}
|
||||
|
||||
function burn(address account, uint256 amount) public {
|
||||
_burn(account, amount);
|
||||
}
|
||||
constructor(address admin) ERC20B(TOKEN_NAME, TOKEN_SYMBOL, admin) {}
|
||||
}
|
||||
|
||||
@@ -2,27 +2,19 @@
|
||||
pragma solidity ^0.8.20;
|
||||
|
||||
/*
|
||||
███████╗ ██████╗ ██████╗ ███╗ ███╗ ██████╗ ██████╗ ██████╗ ███████╗███╗ ██╗ ██████╗
|
||||
╚══███╔╝██╔═══██╗██╔═══██╗ ████╗ ████║██╔═══██╗██╔═══██╗██╔══██╗██╔════╝████╗ ██║██╔════╝
|
||||
███████╗ ██████╗ ██████╗ ███╗ ███╗ ██████╗ ██████╗ ██████╗ ███████╗███╗ ██╗ ██████╗
|
||||
╚══███╔╝██╔═══██╗██╔═══██╗ ████╗ ████║██╔═══██╗██╔═══██╗██╔══██╗██╔════╝████╗ ██║██╔════╝
|
||||
███╔╝ ██║ ██║██║ ██║ ██╔████╔██║██║ ██║██║ ██║██║ ██║█████╗ ██╔██╗ ██║██║ ███╗
|
||||
███╔╝ ██║ ██║██║ ██║ ██║╚██╔╝██║██║ ██║██║ ██║██║ ██║██╔══╝ ██║╚██╗██║██║ ██║
|
||||
███████╗╚██████╔╝╚██████╔╝ ██║ ╚═╝ ██║╚██████╔╝╚██████╔╝██████╔╝███████╗██║ ╚████║╚██████╔╝
|
||||
╚══════╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═╝ ╚═════╝ ╚═════╝ ╚═════╝ ╚══════╝╚═╝ ╚═══╝ ╚═════╝
|
||||
╚══════╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═╝ ╚═════╝ ╚═════╝ ╚═════╝ ╚══════╝╚═╝ ╚═══╝ ╚═════╝
|
||||
*/
|
||||
|
||||
import "../ERC20B.sol";
|
||||
|
||||
contract ZooMOODENG is ERC20B {
|
||||
string public constant _name = "Zoo MOODENG";
|
||||
string public constant _symbol = "ZMOODENG";
|
||||
string public constant TOKEN_NAME = "Zoo MOODENG";
|
||||
string public constant TOKEN_SYMBOL = "ZMOODENG";
|
||||
|
||||
constructor() ERC20B(_name, _symbol) {}
|
||||
|
||||
function mint(address account, uint256 amount) public {
|
||||
_mint(account, amount);
|
||||
}
|
||||
|
||||
function burn(address account, uint256 amount) public {
|
||||
_burn(account, amount);
|
||||
}
|
||||
constructor(address admin) ERC20B(TOKEN_NAME, TOKEN_SYMBOL, admin) {}
|
||||
}
|
||||
|
||||
@@ -4,16 +4,8 @@ pragma solidity ^0.8.20;
|
||||
import "../ERC20B.sol";
|
||||
|
||||
contract ZooMRB is ERC20B {
|
||||
string public constant _name = "Zoo MoonRabbits";
|
||||
string public constant _symbol = "ZMRB";
|
||||
string public constant TOKEN_NAME = "Zoo MoonRabbits";
|
||||
string public constant TOKEN_SYMBOL = "ZMRB";
|
||||
|
||||
constructor() ERC20B(_name, _symbol) {}
|
||||
|
||||
function mint(address account, uint256 amount) public {
|
||||
_mint(account, amount);
|
||||
}
|
||||
|
||||
function burn(address account, uint256 amount) public {
|
||||
_burn(account, amount);
|
||||
}
|
||||
constructor(address admin) ERC20B(TOKEN_NAME, TOKEN_SYMBOL, admin) {}
|
||||
}
|
||||
|
||||
@@ -4,16 +4,8 @@ pragma solidity ^0.8.20;
|
||||
import "../ERC20B.sol";
|
||||
|
||||
contract ZooNOT is ERC20B {
|
||||
string public constant _name = "Zoo Notcoin";
|
||||
string public constant _symbol = "ZNOT";
|
||||
string public constant TOKEN_NAME = "Zoo Notcoin";
|
||||
string public constant TOKEN_SYMBOL = "ZNOT";
|
||||
|
||||
constructor() ERC20B(_name, _symbol) {}
|
||||
|
||||
function mint(address account, uint256 amount) public {
|
||||
_mint(account, amount);
|
||||
}
|
||||
|
||||
function burn(address account, uint256 amount) public {
|
||||
_burn(account, amount);
|
||||
}
|
||||
constructor(address admin) ERC20B(TOKEN_NAME, TOKEN_SYMBOL, admin) {}
|
||||
}
|
||||
|
||||
@@ -2,10 +2,10 @@
|
||||
pragma solidity ^0.8.20;
|
||||
|
||||
/*
|
||||
███████╗ ██████╗ ██████╗ ██████╗ ██████╗ ██╗
|
||||
╚══███╔╝██╔═══██╗██╔═══██╗ ██╔══██╗██╔═══██╗██║
|
||||
███╔╝ ██║ ██║██║ ██║ ██████╔╝██║ ██║██║
|
||||
███╔╝ ██║ ██║██║ ██║ ██╔═══╝ ██║ ██║██║
|
||||
███████╗ ██████╗ ██████╗ ██████╗ ██████╗ ██╗
|
||||
╚══███╔╝██╔═══██╗██╔═══██╗ ██╔══██╗██╔═══██╗██║
|
||||
███╔╝ ██║ ██║██║ ██║ ██████╔╝██║ ██║██║
|
||||
███╔╝ ██║ ██║██║ ██║ ██╔═══╝ ██║ ██║██║
|
||||
███████╗╚██████╔╝╚██████╔╝ ██║ ╚██████╔╝███████╗
|
||||
╚══════╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═════╝ ╚══════╝
|
||||
*/
|
||||
@@ -13,16 +13,8 @@ pragma solidity ^0.8.20;
|
||||
import "../ERC20B.sol";
|
||||
|
||||
contract ZooPOL is ERC20B {
|
||||
string public constant _name = "Zoo POL";
|
||||
string public constant _symbol = "ZPOL";
|
||||
string public constant TOKEN_NAME = "Zoo POL";
|
||||
string public constant TOKEN_SYMBOL = "ZPOL";
|
||||
|
||||
constructor() ERC20B(_name, _symbol) {}
|
||||
|
||||
function mint(address account, uint256 amount) public {
|
||||
_mint(account, amount);
|
||||
}
|
||||
|
||||
function burn(address account, uint256 amount) public {
|
||||
_burn(account, amount);
|
||||
}
|
||||
constructor(address admin) ERC20B(TOKEN_NAME, TOKEN_SYMBOL, admin) {}
|
||||
}
|
||||
|
||||
@@ -4,8 +4,8 @@ pragma solidity ^0.8.20;
|
||||
/*
|
||||
███████╗ ██████╗ ██████╗ ██████╗ ██████╗ ███╗ ██╗██╗ ██╗███████╗
|
||||
╚══███╔╝██╔═══██╗██╔═══██╗ ██╔══██╗██╔═══██╗████╗ ██║██║ ██╔╝██╔════╝
|
||||
███╔╝ ██║ ██║██║ ██║ ██████╔╝██║ ██║██╔██╗ ██║█████╔╝ █████╗
|
||||
███╔╝ ██║ ██║██║ ██║ ██╔═══╝ ██║ ██║██║╚██╗██║██╔═██╗ ██╔══╝
|
||||
███╔╝ ██║ ██║██║ ██║ ██████╔╝██║ ██║██╔██╗ ██║█████╔╝ █████╗
|
||||
███╔╝ ██║ ██║██║ ██║ ██╔═══╝ ██║ ██║██║╚██╗██║██╔═██╗ ██╔══╝
|
||||
███████╗╚██████╔╝╚██████╔╝ ██║ ╚██████╔╝██║ ╚████║██║ ██╗███████╗
|
||||
╚══════╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝╚═╝ ╚═╝╚══════╝
|
||||
*/
|
||||
@@ -13,16 +13,8 @@ pragma solidity ^0.8.20;
|
||||
import "../ERC20B.sol";
|
||||
|
||||
contract ZooPONKE is ERC20B {
|
||||
string public constant _name = "Zoo PONKE";
|
||||
string public constant _symbol = "ZPONKE";
|
||||
string public constant TOKEN_NAME = "Zoo PONKE";
|
||||
string public constant TOKEN_SYMBOL = "ZPONKE";
|
||||
|
||||
constructor() ERC20B(_name, _symbol) {}
|
||||
|
||||
function mint(address account, uint256 amount) public {
|
||||
_mint(account, amount);
|
||||
}
|
||||
|
||||
function burn(address account, uint256 amount) public {
|
||||
_burn(account, amount);
|
||||
}
|
||||
constructor(address admin) ERC20B(TOKEN_NAME, TOKEN_SYMBOL, admin) {}
|
||||
}
|
||||
|
||||
@@ -4,25 +4,17 @@ pragma solidity ^0.8.20;
|
||||
/**
|
||||
███████╗ ██████╗ ██████╗ ██████╗ ██████╗ ██████╗ ██████╗ █████╗ ████████╗
|
||||
╚══███╔╝██╔═══██╗██╔═══██╗ ██╔══██╗██╔═══██╗██╔══██╗██╔════╝██╔══██╗╚══██╔══╝
|
||||
███╔╝ ██║ ██║██║ ██║ ██████╔╝██║ ██║██████╔╝██║ ███████║ ██║
|
||||
███╔╝ ██║ ██║██║ ██║ ██╔═══╝ ██║ ██║██╔═══╝ ██║ ██╔══██║ ██║
|
||||
███████╗╚██████╔╝╚██████╔╝ ██║ ╚██████╔╝██║ ╚██████╗██║ ██║ ██║
|
||||
╚══════╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═════╝ ╚═╝ ╚═════╝╚═╝ ╚═╝ ╚═╝
|
||||
███╔╝ ██║ ██║██║ ██║ ██████╔╝██║ ██║██████╔╝██║ ███████║ ██║
|
||||
███╔╝ ██║ ██║██║ ██║ ██╔═══╝ ██║ ██║██╔═══╝ ██║ ██╔══██║ ██║
|
||||
███████╗╚██████╔╝╚██████╔╝ ██║ ╚██████╔╝██║ ╚██████╗██║ ██║ ██║
|
||||
╚══════╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═════╝ ╚═╝ ╚═════╝╚═╝ ╚═╝ ╚═╝
|
||||
*/
|
||||
|
||||
import "../ERC20B.sol";
|
||||
|
||||
contract ZooPopcat is ERC20B {
|
||||
string public constant _name = "Zoo Popcat";
|
||||
string public constant _symbol = "ZPOPCAT";
|
||||
string public constant TOKEN_NAME = "Zoo Popcat";
|
||||
string public constant TOKEN_SYMBOL = "ZPOPCAT";
|
||||
|
||||
constructor() ERC20B(_name, _symbol) {}
|
||||
|
||||
function mint(address account, uint256 amount) public {
|
||||
_mint(account, amount);
|
||||
}
|
||||
|
||||
function burn(address account, uint256 amount) public {
|
||||
_burn(account, amount);
|
||||
}
|
||||
constructor(address admin) ERC20B(TOKEN_NAME, TOKEN_SYMBOL, admin) {}
|
||||
}
|
||||
|
||||
@@ -4,25 +4,17 @@ pragma solidity ^0.8.20;
|
||||
/*
|
||||
███████╗ ██████╗ ██████╗ ██████╗ ███╗ ██╗██╗ ██╗████████╗
|
||||
╚══███╔╝██╔═══██╗██╔═══██╗ ██╔══██╗████╗ ██║██║ ██║╚══██╔══╝
|
||||
███╔╝ ██║ ██║██║ ██║ ██████╔╝██╔██╗ ██║██║ ██║ ██║
|
||||
███╔╝ ██║ ██║██║ ██║ ██╔═══╝ ██║╚██╗██║██║ ██║ ██║
|
||||
███████╗╚██████╔╝╚██████╔╝ ██║ ██║ ╚████║╚██████╔╝ ██║
|
||||
╚══════╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═╝ ╚═══╝ ╚═════╝ ╚═╝
|
||||
███╔╝ ██║ ██║██║ ██║ ██████╔╝██╔██╗ ██║██║ ██║ ██║
|
||||
███╔╝ ██║ ██║██║ ██║ ██╔═══╝ ██║╚██╗██║██║ ██║ ██║
|
||||
███████╗╚██████╔╝╚██████╔╝ ██║ ██║ ╚████║╚██████╔╝ ██║
|
||||
╚══════╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═╝ ╚═══╝ ╚═════╝ ╚═╝
|
||||
*/
|
||||
|
||||
import "../ERC20B.sol";
|
||||
|
||||
contract ZooPNUT is ERC20B {
|
||||
string public constant _name = "Zoo PNUT";
|
||||
string public constant _symbol = "ZPNUT";
|
||||
string public constant TOKEN_NAME = "Zoo PNUT";
|
||||
string public constant TOKEN_SYMBOL = "ZPNUT";
|
||||
|
||||
constructor() ERC20B(_name, _symbol) {}
|
||||
|
||||
function mint(address account, uint256 amount) public {
|
||||
_mint(account, amount);
|
||||
}
|
||||
|
||||
function burn(address account, uint256 amount) public {
|
||||
_burn(account, amount);
|
||||
}
|
||||
constructor(address admin) ERC20B(TOKEN_NAME, TOKEN_SYMBOL, admin) {}
|
||||
}
|
||||
|
||||
@@ -4,16 +4,8 @@ pragma solidity ^0.8.20;
|
||||
import "../ERC20B.sol";
|
||||
|
||||
contract ZooREDO is ERC20B {
|
||||
string public constant _name = "Zoo Resistance Dog";
|
||||
string public constant _symbol = "ZREDO";
|
||||
string public constant TOKEN_NAME = "Zoo Resistance Dog";
|
||||
string public constant TOKEN_SYMBOL = "ZREDO";
|
||||
|
||||
constructor() ERC20B(_name, _symbol) {}
|
||||
|
||||
function mint(address account, uint256 amount) public {
|
||||
_mint(account, amount);
|
||||
}
|
||||
|
||||
function burn(address account, uint256 amount) public {
|
||||
_burn(account, amount);
|
||||
}
|
||||
constructor(address admin) ERC20B(TOKEN_NAME, TOKEN_SYMBOL, admin) {}
|
||||
}
|
||||
|
||||
@@ -2,10 +2,10 @@
|
||||
pragma solidity ^0.8.20;
|
||||
|
||||
/*
|
||||
███████╗ ██████╗ ██████╗ ███████╗ ██████╗ ██╗
|
||||
╚══███╔╝██╔═══██╗██╔═══██╗ ██╔════╝██╔═══██╗██║
|
||||
███╔╝ ██║ ██║██║ ██║ ███████╗██║ ██║██║
|
||||
███╔╝ ██║ ██║██║ ██║ ╚════██║██║ ██║██║
|
||||
███████╗ ██████╗ ██████╗ ███████╗ ██████╗ ██╗
|
||||
╚══███╔╝██╔═══██╗██╔═══██╗ ██╔════╝██╔═══██╗██║
|
||||
███╔╝ ██║ ██║██║ ██║ ███████╗██║ ██║██║
|
||||
███╔╝ ██║ ██║██║ ██║ ╚════██║██║ ██║██║
|
||||
███████╗╚██████╔╝╚██████╔╝ ███████║╚██████╔╝███████╗
|
||||
╚══════╝ ╚═════╝ ╚═════╝ ╚══════╝ ╚═════╝ ╚══════╝
|
||||
*/
|
||||
@@ -13,16 +13,8 @@ pragma solidity ^0.8.20;
|
||||
import "../ERC20B.sol";
|
||||
|
||||
contract ZooSOL is ERC20B {
|
||||
string public constant _name = "Zoo Solana";
|
||||
string public constant _symbol = "ZSOL";
|
||||
string public constant TOKEN_NAME = "Zoo Solana";
|
||||
string public constant TOKEN_SYMBOL = "ZSOL";
|
||||
|
||||
constructor() ERC20B(_name, _symbol) {}
|
||||
|
||||
function mint(address account, uint256 amount) public {
|
||||
_mint(account, amount);
|
||||
}
|
||||
|
||||
function burn(address account, uint256 amount) public {
|
||||
_burn(account, amount);
|
||||
}
|
||||
constructor(address admin) ERC20B(TOKEN_NAME, TOKEN_SYMBOL, admin) {}
|
||||
}
|
||||
|
||||
@@ -13,16 +13,8 @@ pragma solidity ^0.8.20;
|
||||
import "../ERC20B.sol";
|
||||
|
||||
contract ZooTON is ERC20B {
|
||||
string public constant _name = "Zoo TON";
|
||||
string public constant _symbol = "ZTON";
|
||||
string public constant TOKEN_NAME = "Zoo TON";
|
||||
string public constant TOKEN_SYMBOL = "ZTON";
|
||||
|
||||
constructor() ERC20B(_name, _symbol) {}
|
||||
|
||||
function mint(address account, uint256 amount) public {
|
||||
_mint(account, amount);
|
||||
}
|
||||
|
||||
function burn(address account, uint256 amount) public {
|
||||
_burn(account, amount);
|
||||
}
|
||||
constructor(address admin) ERC20B(TOKEN_NAME, TOKEN_SYMBOL, admin) {}
|
||||
}
|
||||
|
||||
@@ -2,27 +2,19 @@
|
||||
pragma solidity ^0.8.20;
|
||||
|
||||
/**
|
||||
███████╗ ██████╗ ██████╗ ██╗ ██╗███████╗██████╗
|
||||
███████╗ ██████╗ ██████╗ ██╗ ██╗███████╗██████╗
|
||||
╚══███╔╝██╔═══██╗██╔═══██╗ ██║ ██║██╔════╝██╔══██╗
|
||||
███╔╝ ██║ ██║██║ ██║ ██║ ██║███████╗██║ ██║
|
||||
███╔╝ ██║ ██║██║ ██║ ██║ ██║╚════██║██║ ██║
|
||||
███████╗╚██████╔╝╚██████╔╝ ╚██████╔╝███████║██████╔╝
|
||||
╚══════╝ ╚═════╝ ╚═════╝ ╚═════╝ ╚══════╝╚═════╝
|
||||
╚══════╝ ╚═════╝ ╚═════╝ ╚═════╝ ╚══════╝╚═════╝
|
||||
*/
|
||||
|
||||
import "../ERC20B.sol";
|
||||
|
||||
contract ZooUSD is ERC20B {
|
||||
string public constant _name = "Zoo Dollar";
|
||||
string public constant _symbol = "ZUSD";
|
||||
string public constant TOKEN_NAME = "Zoo Dollar";
|
||||
string public constant TOKEN_SYMBOL = "ZUSD";
|
||||
|
||||
constructor() ERC20B(_name, _symbol) {}
|
||||
|
||||
function mint(address account, uint256 amount) public {
|
||||
_mint(account, amount);
|
||||
}
|
||||
|
||||
function burn(address account, uint256 amount) public {
|
||||
_burn(account, amount);
|
||||
}
|
||||
constructor(address admin) ERC20B(TOKEN_NAME, TOKEN_SYMBOL, admin) {}
|
||||
}
|
||||
|
||||
@@ -4,25 +4,17 @@ pragma solidity ^0.8.20;
|
||||
/**
|
||||
███████╗ ██████╗ ██████╗ ██╗ ██╗██╗███████╗
|
||||
╚══███╔╝██╔═══██╗██╔═══██╗ ██║ ██║██║██╔════╝
|
||||
███╔╝ ██║ ██║██║ ██║ ██║ █╗ ██║██║█████╗
|
||||
███╔╝ ██║ ██║██║ ██║ ██║███╗██║██║██╔══╝
|
||||
███████╗╚██████╔╝╚██████╔╝ ╚███╔███╔╝██║██║
|
||||
╚══════╝ ╚═════╝ ╚═════╝ ╚══╝╚══╝ ╚═╝╚═╝
|
||||
███╔╝ ██║ ██║██║ ██║ ██║ █╗ ██║██║█████╗
|
||||
███╔╝ ██║ ██║██║ ██║ ██║███╗██║██║██╔══╝
|
||||
███████╗╚██████╔╝╚██████╔╝ ╚███╔███╔╝██║██║
|
||||
╚══════╝ ╚═════╝ ╚═════╝ ╚══╝╚══╝ ╚═╝╚═╝
|
||||
*/
|
||||
|
||||
import "../ERC20B.sol";
|
||||
|
||||
contract ZooWIF is ERC20B {
|
||||
string public constant _name = "Zoo WIF";
|
||||
string public constant _symbol = "ZWIF";
|
||||
string public constant TOKEN_NAME = "Zoo WIF";
|
||||
string public constant TOKEN_SYMBOL = "ZWIF";
|
||||
|
||||
constructor() ERC20B(_name, _symbol) {}
|
||||
|
||||
function mint(address account, uint256 amount) public {
|
||||
_mint(account, amount);
|
||||
}
|
||||
|
||||
function burn(address account, uint256 amount) public {
|
||||
_burn(account, amount);
|
||||
}
|
||||
constructor(address admin) ERC20B(TOKEN_NAME, TOKEN_SYMBOL, admin) {}
|
||||
}
|
||||
|
||||
@@ -13,16 +13,8 @@ pragma solidity ^0.8.20;
|
||||
import "../ERC20B.sol";
|
||||
|
||||
contract ZooXDAI is ERC20B {
|
||||
string public constant _name = "Zoo XDAI";
|
||||
string public constant _symbol = "ZXDAI";
|
||||
string public constant TOKEN_NAME = "Zoo XDAI";
|
||||
string public constant TOKEN_SYMBOL = "ZXDAI";
|
||||
|
||||
constructor() ERC20B(_name, _symbol) {}
|
||||
|
||||
function mint(address account, uint256 amount) public {
|
||||
_mint(account, amount);
|
||||
}
|
||||
|
||||
function burn(address account, uint256 amount) public {
|
||||
_burn(account, amount);
|
||||
}
|
||||
constructor(address admin) ERC20B(TOKEN_NAME, TOKEN_SYMBOL, admin) {}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user