Warning! Contract bytecode has been changed and doesn't match the verified one. Therefore, interaction with this smart contract may be risky.
This contract has been partially verified via Sourcify.
- Contract name:
- Kus
- Optimization enabled
- true
- Compiler version
- v0.8.13+commit.abaa5c0e
- Optimization runs
- 200
- EVM Version
- default
- Verified at
- 2023-08-30T21:00:12.059622Z
Constructor Arguments
0x0000000000000000000000000348f836ced3b0003b59cf2ae3fe64995fa27d700000000000000000000000000000000000000000002051a94d8aaf3dee540000
Arg [0] (address) : 0x0348f836ced3b0003b59cf2ae3fe64995fa27d70
Arg [1] (uint256) : 39071261000000000000000000
Contract source code
// SPDX-License-Identifier: GPL-3.0-or-later
pragma solidity 0.8.13;
interface IKus {
function totalSupply() external view returns (uint);
function balanceOf(address) external view returns (uint);
function approve(address spender, uint value) external returns (bool);
function transfer(address, uint) external returns (bool);
function transferFrom(address,address,uint) external returns (bool);
function mint(address, uint) external returns (bool);
function minter() external returns (address);
}
contract Kus is IKus {
string public constant name = "KuSwapV3 Token";
string public constant symbol = "KUSv3";
uint8 public constant decimals = 18;
uint public totalSupply = 0;
mapping(address => uint) public balanceOf;
mapping(address => mapping(address => uint)) public allowance;
address public minter;
address public msTimelock;
uint public maxSupply = 47000000 ether;
event Transfer(address indexed from, address indexed to, uint value);
event Approval(address indexed owner, address indexed spender, uint value);
constructor(address initialSupplyRecipient, uint initialAmount) {
require(initialAmount <= maxSupply, "Exceeds max supply");
minter = msg.sender;
msTimelock = msg.sender; // changed to timelock
_mint(initialSupplyRecipient, initialAmount);
}
// No checks as its meant to be once off to set minting rights to KCC Minter
function setMinter(address _minter) external {
require(msg.sender == minter, "Only minter");
minter = _minter;
}
function approve(address _spender, uint _value) external returns (bool) {
allowance[msg.sender][_spender] = _value;
emit Approval(msg.sender, _spender, _value);
return true;
}
function _mint(address _to, uint _amount) internal returns (bool) {
require(totalSupply + _amount <= maxSupply, "Exceeds max supply");
totalSupply += _amount;
unchecked {
balanceOf[_to] += _amount;
}
emit Transfer(address(0x0), _to, _amount);
return true;
}
function _transfer(address _from, address _to, uint _value) internal returns (bool) {
balanceOf[_from] -= _value;
unchecked {
balanceOf[_to] += _value;
}
emit Transfer(_from, _to, _value);
return true;
}
function transfer(address _to, uint _value) external returns (bool) {
return _transfer(msg.sender, _to, _value);
}
function transferFrom(address _from, address _to, uint _value) external returns (bool) {
uint allowed_from = allowance[_from][msg.sender];
if (allowed_from != type(uint).max) {
allowance[_from][msg.sender] -= _value;
}
return _transfer(_from, _to, _value);
}
function mint(address account, uint amount) external returns (bool) {
require(msg.sender == minter, "Only minter");
_mint(account, amount);
return true;
}
function setMaxSupply(uint _maxSupply) external {
require(msg.sender == msTimelock, "Only msTimelock");
require(_maxSupply >= totalSupply, "New maxSupply must be >= totalSupply");
maxSupply = _maxSupply;
}
function setMSTimelock(address _msTimelock) external {
require(msg.sender == msTimelock, "Only msTimelock");
msTimelock = _msTimelock;
}
}
Contract ABI
[{"type":"constructor","inputs":[{"type":"address","name":"initialSupplyRecipient","internalType":"address"},{"type":"uint256","name":"initialAmount","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"allowance","inputs":[{"type":"address","name":"","internalType":"address"},{"type":"address","name":"","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"approve","inputs":[{"type":"address","name":"_spender","internalType":"address"},{"type":"uint256","name":"_value","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"balanceOf","inputs":[{"type":"address","name":"","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint8","name":"","internalType":"uint8"}],"name":"decimals","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"maxSupply","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"mint","inputs":[{"type":"address","name":"account","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"minter","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"msTimelock","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"name","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setMSTimelock","inputs":[{"type":"address","name":"_msTimelock","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setMaxSupply","inputs":[{"type":"uint256","name":"_maxSupply","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setMinter","inputs":[{"type":"address","name":"_minter","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"symbol","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"totalSupply","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"transfer","inputs":[{"type":"address","name":"_to","internalType":"address"},{"type":"uint256","name":"_value","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"transferFrom","inputs":[{"type":"address","name":"_from","internalType":"address"},{"type":"address","name":"_to","internalType":"address"},{"type":"uint256","name":"_value","internalType":"uint256"}]},{"type":"event","name":"Approval","inputs":[{"type":"address","name":"owner","indexed":true},{"type":"address","name":"spender","indexed":true},{"type":"uint256","name":"value","indexed":false}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"type":"address","name":"from","indexed":true},{"type":"address","name":"to","indexed":true},{"type":"uint256","name":"value","indexed":false}],"anonymous":false}]
Contract Creation Code
0x6080604052600080556a26e0a31af79fa08f00000060055534801561002357600080fd5b50604051610aaa380380610aaa83398101604081905261004291610187565b60055481111561008e5760405162461bcd60e51b815260206004820152601260248201527145786365656473206d617820737570706c7960701b60448201526064015b60405180910390fd5b60038054336001600160a01b031991821681179092556004805490911690911790556100ba82826100c2565b5050506101e7565b6000600554826000546100d591906101c1565b11156101185760405162461bcd60e51b815260206004820152601260248201527145786365656473206d617820737570706c7960701b6044820152606401610085565b8160008082825461012991906101c1565b90915550506001600160a01b0383166000818152600160209081526040808320805487019055518581527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350600192915050565b6000806040838503121561019a57600080fd5b82516001600160a01b03811681146101b157600080fd5b6020939093015192949293505050565b600082198211156101e257634e487b7160e01b600052601160045260246000fd5b500190565b6108b4806101f66000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c806370a0823111610097578063c67496dc11610066578063c67496dc1461026c578063d5abeb011461027f578063dd62ed3e14610288578063fca3b5aa146102b357600080fd5b806370a082311461020257806395d89b4114610222578063a9059cbb14610246578063c4022ad91461025957600080fd5b806323b872dd116100d357806323b872dd146101ad578063313ce567146101c057806340c10f19146101da5780636f8b44b0146101ed57600080fd5b806306fdde03146101055780630754617214610148578063095ea7b31461017357806318160ddd14610196575b600080fd5b6101326040518060400160405280600e81526020016d25baa9bbb0b82b19902a37b5b2b760911b81525081565b60405161013f91906106fb565b60405180910390f35b60035461015b906001600160a01b031681565b6040516001600160a01b03909116815260200161013f565b61018661018136600461076c565b6102c6565b604051901515815260200161013f565b61019f60005481565b60405190815260200161013f565b6101866101bb366004610796565b610332565b6101c8601281565b60405160ff909116815260200161013f565b6101866101e836600461076c565b6103ac565b6102006101fb3660046107d2565b610410565b005b61019f6102103660046107eb565b60016020526000908152604090205481565b610132604051806040016040528060058152602001644b5553763360d81b81525081565b61018661025436600461076c565b6104bf565b6102006102673660046107eb565b6104d3565b60045461015b906001600160a01b031681565b61019f60055481565b61019f610296366004610806565b600260209081526000928352604080842090915290825290205481565b6102006102c13660046107eb565b610541565b3360008181526002602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103219086815260200190565b60405180910390a350600192915050565b6001600160a01b03831660009081526002602090815260408083203384529091528120546000198114610398576001600160a01b03851660009081526002602090815260408083203384529091528120805485929061039290849061084f565b90915550505b6103a38585856105ab565b95945050505050565b6003546000906001600160a01b031633146103fc5760405162461bcd60e51b815260206004820152600b60248201526a27b7363c9036b4b73a32b960a91b60448201526064015b60405180910390fd5b6104068383610642565b5060019392505050565b6004546001600160a01b0316331461045c5760405162461bcd60e51b815260206004820152600f60248201526e4f6e6c79206d7354696d656c6f636b60881b60448201526064016103f3565b6000548110156104ba5760405162461bcd60e51b8152602060048201526024808201527f4e6577206d6178537570706c79206d757374206265203e3d20746f74616c537560448201526370706c7960e01b60648201526084016103f3565b600555565b60006104cc3384846105ab565b9392505050565b6004546001600160a01b0316331461051f5760405162461bcd60e51b815260206004820152600f60248201526e4f6e6c79206d7354696d656c6f636b60881b60448201526064016103f3565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b6003546001600160a01b031633146105895760405162461bcd60e51b815260206004820152600b60248201526a27b7363c9036b4b73a32b960a91b60448201526064016103f3565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166000908152600160205260408120805483919083906105d590849061084f565b90915550506001600160a01b03808416600081815260016020526040908190208054860190555190918616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906106309086815260200190565b60405180910390a35060019392505050565b6000600554826000546106559190610866565b11156106985760405162461bcd60e51b815260206004820152601260248201527145786365656473206d617820737570706c7960701b60448201526064016103f3565b816000808282546106a99190610866565b90915550506001600160a01b0383166000818152600160209081526040808320805487019055518581527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101610321565b600060208083528351808285015260005b818110156107285785810183015185820160400152820161070c565b8181111561073a576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b038116811461076757600080fd5b919050565b6000806040838503121561077f57600080fd5b61078883610750565b946020939093013593505050565b6000806000606084860312156107ab57600080fd5b6107b484610750565b92506107c260208501610750565b9150604084013590509250925092565b6000602082840312156107e457600080fd5b5035919050565b6000602082840312156107fd57600080fd5b6104cc82610750565b6000806040838503121561081957600080fd5b61082283610750565b915061083060208401610750565b90509250929050565b634e487b7160e01b600052601160045260246000fd5b60008282101561086157610861610839565b500390565b6000821982111561087957610879610839565b50019056fea264697066735822122040019e66009b9902791001f3037935f7ca78f81d6e32cbf55c97ff70a842c84564736f6c634300080d00330000000000000000000000000348f836ced3b0003b59cf2ae3fe64995fa27d700000000000000000000000000000000000000000002051a94d8aaf3dee540000
Deployed ByteCode
0x608060405234801561001057600080fd5b50600436106101005760003560e01c806370a0823111610097578063c67496dc11610066578063c67496dc1461026c578063d5abeb011461027f578063dd62ed3e14610288578063fca3b5aa146102b357600080fd5b806370a082311461020257806395d89b4114610222578063a9059cbb14610246578063c4022ad91461025957600080fd5b806323b872dd116100d357806323b872dd146101ad578063313ce567146101c057806340c10f19146101da5780636f8b44b0146101ed57600080fd5b806306fdde03146101055780630754617214610148578063095ea7b31461017357806318160ddd14610196575b600080fd5b6101326040518060400160405280600e81526020016d25baa9bbb0b82b19902a37b5b2b760911b81525081565b60405161013f91906106fb565b60405180910390f35b60035461015b906001600160a01b031681565b6040516001600160a01b03909116815260200161013f565b61018661018136600461076c565b6102c6565b604051901515815260200161013f565b61019f60005481565b60405190815260200161013f565b6101866101bb366004610796565b610332565b6101c8601281565b60405160ff909116815260200161013f565b6101866101e836600461076c565b6103ac565b6102006101fb3660046107d2565b610410565b005b61019f6102103660046107eb565b60016020526000908152604090205481565b610132604051806040016040528060058152602001644b5553763360d81b81525081565b61018661025436600461076c565b6104bf565b6102006102673660046107eb565b6104d3565b60045461015b906001600160a01b031681565b61019f60055481565b61019f610296366004610806565b600260209081526000928352604080842090915290825290205481565b6102006102c13660046107eb565b610541565b3360008181526002602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103219086815260200190565b60405180910390a350600192915050565b6001600160a01b03831660009081526002602090815260408083203384529091528120546000198114610398576001600160a01b03851660009081526002602090815260408083203384529091528120805485929061039290849061084f565b90915550505b6103a38585856105ab565b95945050505050565b6003546000906001600160a01b031633146103fc5760405162461bcd60e51b815260206004820152600b60248201526a27b7363c9036b4b73a32b960a91b60448201526064015b60405180910390fd5b6104068383610642565b5060019392505050565b6004546001600160a01b0316331461045c5760405162461bcd60e51b815260206004820152600f60248201526e4f6e6c79206d7354696d656c6f636b60881b60448201526064016103f3565b6000548110156104ba5760405162461bcd60e51b8152602060048201526024808201527f4e6577206d6178537570706c79206d757374206265203e3d20746f74616c537560448201526370706c7960e01b60648201526084016103f3565b600555565b60006104cc3384846105ab565b9392505050565b6004546001600160a01b0316331461051f5760405162461bcd60e51b815260206004820152600f60248201526e4f6e6c79206d7354696d656c6f636b60881b60448201526064016103f3565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b6003546001600160a01b031633146105895760405162461bcd60e51b815260206004820152600b60248201526a27b7363c9036b4b73a32b960a91b60448201526064016103f3565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166000908152600160205260408120805483919083906105d590849061084f565b90915550506001600160a01b03808416600081815260016020526040908190208054860190555190918616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906106309086815260200190565b60405180910390a35060019392505050565b6000600554826000546106559190610866565b11156106985760405162461bcd60e51b815260206004820152601260248201527145786365656473206d617820737570706c7960701b60448201526064016103f3565b816000808282546106a99190610866565b90915550506001600160a01b0383166000818152600160209081526040808320805487019055518581527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101610321565b600060208083528351808285015260005b818110156107285785810183015185820160400152820161070c565b8181111561073a576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b038116811461076757600080fd5b919050565b6000806040838503121561077f57600080fd5b61078883610750565b946020939093013593505050565b6000806000606084860312156107ab57600080fd5b6107b484610750565b92506107c260208501610750565b9150604084013590509250925092565b6000602082840312156107e457600080fd5b5035919050565b6000602082840312156107fd57600080fd5b6104cc82610750565b6000806040838503121561081957600080fd5b61082283610750565b915061083060208401610750565b90509250929050565b634e487b7160e01b600052601160045260246000fd5b60008282101561086157610861610839565b500390565b6000821982111561087957610879610839565b50019056fea264697066735822122040019e66009b9902791001f3037935f7ca78f81d6e32cbf55c97ff70a842c84564736f6c634300080d0033