Warning! Contract bytecode has been changed and doesn't match the verified one. Therefore, interaction with this smart contract may be risky.
- Contract name:
- TWAPToken
- Optimization enabled
- false
- Compiler version
- v0.8.28+commit.7893614a
- EVM Version
- Verified at
- 2026-02-25T20:24:31.403518Z
Constructor Arguments
00000000000000000000000000000000000000000000d3c21bcecceda1000000
Arg [0] (uint256) : 1000000000000000000000000
contracts/dss/TWAPToken.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract TWAPToken {
string public constant name = "TWAP";
string public constant symbol = "TWAP";
uint8 public constant decimals = 18;
uint public totalSupply;
mapping(address => uint) public balanceOf;
mapping(address => mapping(address => uint)) public allowance;
// Auth system (DSS style)
mapping(address => uint) public wards;
function rely(address usr) external auth { wards[usr] = 1; emit Rely(usr); }
function deny(address usr) external auth { wards[usr] = 0; emit Deny(usr); }
modifier auth() {
require(wards[msg.sender] == 1, "TWAPToken: not authorized");
_;
}
event Transfer(address indexed from, address indexed to, uint value);
event Approval(address indexed owner, address indexed spender, uint value);
event Rely(address indexed usr);
event Deny(address indexed usr);
event Mint(address indexed to, uint amount);
constructor(uint _initialSupply) {
wards[msg.sender] = 1;
_mint(msg.sender, _initialSupply);
}
// Mint function restricted to authorized contracts (The Oracle)
function mint(address to, uint amount) external auth {
_mint(to, amount);
}
function _mint(address to, uint amount) internal {
totalSupply += amount;
balanceOf[to] += amount;
emit Transfer(address(0), to, amount);
}
function transfer(address to, uint256 value) external returns (bool) {
require(to != address(0), "ERC20: transfer to the zero address");
require(balanceOf[msg.sender] >= value, "ERC20: transfer amount exceeds balance");
balanceOf[msg.sender] -= value;
balanceOf[to] += value;
emit Transfer(msg.sender, to, value);
return true;
}
function transferFrom(address from, address to, uint256 value) external returns (bool) {
require(from != address(0), "ERC20: transfer from the zero address");
require(to != address(0), "ERC20: transfer to the zero address");
require(balanceOf[from] >= value, "ERC20: transfer amount exceeds balance");
require(allowance[from][msg.sender] >= value, "ERC20: insufficient allowance");
balanceOf[from] -= value;
balanceOf[to] += value;
allowance[from][msg.sender] -= value;
emit Transfer(from, to, value);
return true;
}
function approve(address spender, uint256 value) external returns (bool) {
allowance[msg.sender][spender] = value;
emit Approval(msg.sender, spender, value);
return true;
}
}
Compiler Settings
{"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"],"":["ast"]}},"optimizer":{"runs":200,"enabled":true},"libraries":{},"evmVersion":"paris"}
Contract ABI
[{"type":"constructor","stateMutability":"nonpayable","inputs":[{"type":"uint256","name":"_initialSupply","internalType":"uint256"}]},{"type":"event","name":"Approval","inputs":[{"type":"address","name":"owner","internalType":"address","indexed":true},{"type":"address","name":"spender","internalType":"address","indexed":true},{"type":"uint256","name":"value","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"Deny","inputs":[{"type":"address","name":"usr","internalType":"address","indexed":true}],"anonymous":false},{"type":"event","name":"Mint","inputs":[{"type":"address","name":"to","internalType":"address","indexed":true},{"type":"uint256","name":"amount","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"Rely","inputs":[{"type":"address","name":"usr","internalType":"address","indexed":true}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"type":"address","name":"from","internalType":"address","indexed":true},{"type":"address","name":"to","internalType":"address","indexed":true},{"type":"uint256","name":"value","internalType":"uint256","indexed":false}],"anonymous":false},{"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":"nonpayable","outputs":[],"name":"deny","inputs":[{"type":"address","name":"usr","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"mint","inputs":[{"type":"address","name":"to","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"name","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"rely","inputs":[{"type":"address","name":"usr","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":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"wards","inputs":[{"type":"address","name":"","internalType":"address"}]}]
Contract Creation Code
0x608060405234801561001057600080fd5b50604051610ad3380380610ad383398101604081905261002f916100da565b3360008181526003602052604090206001905561004c9082610052565b5061011a565b8060008082825461006391906100f3565b90915550506001600160a01b038216600090815260016020526040812080548392906100909084906100f3565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000602082840312156100ec57600080fd5b5051919050565b8082018082111561011457634e487b7160e01b600052601160045260246000fd5b92915050565b6109aa806101296000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806365fae35e1161008c5780639c52a7f1116100665780639c52a7f1146101bc578063a9059cbb146101cf578063bf353dbb146101e2578063dd62ed3e1461020257600080fd5b806365fae35e1461018957806370a082311461019c57806395d89b41146100d457600080fd5b806306fdde03146100d4578063095ea7b31461010d57806318160ddd1461013057806323b872dd14610147578063313ce5671461015a57806340c10f1914610174575b600080fd5b6100f7604051806040016040528060048152602001630545741560e41b81525081565b6040516101049190610752565b60405180910390f35b61012061011b3660046107bc565b61022d565b6040519015158152602001610104565b61013960005481565b604051908152602001610104565b6101206101553660046107e6565b61029a565b610162601281565b60405160ff9091168152602001610104565b6101876101823660046107bc565b6104c1565b005b610187610197366004610823565b6104fe565b6101396101aa366004610823565b60016020526000908152604090205481565b6101876101ca366004610823565b610572565b6101206101dd3660046107bc565b6105e5565b6101396101f0366004610823565b60036020526000908152604090205481565b610139610210366004610845565b600260209081526000928352604080842090915290825290205481565b3360008181526002602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906102889086815260200190565b60405180910390a35060015b92915050565b60006001600160a01b0384166103055760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084015b60405180910390fd5b6001600160a01b03831661032b5760405162461bcd60e51b81526004016102fc90610878565b6001600160a01b0384166000908152600160205260409020548211156103635760405162461bcd60e51b81526004016102fc906108bb565b6001600160a01b03841660009081526002602090815260408083203384529091529020548211156103d65760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016102fc565b6001600160a01b038416600090815260016020526040812080548492906103fe908490610917565b90915550506001600160a01b0383166000908152600160205260408120805484929061042b90849061092a565b90915550506001600160a01b038416600090815260026020908152604080832033845290915281208054849290610463908490610917565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516104af91815260200190565b60405180910390a35060019392505050565b336000908152600360205260409020546001146104f05760405162461bcd60e51b81526004016102fc9061093d565b6104fa82826106ca565b5050565b3360009081526003602052604090205460011461052d5760405162461bcd60e51b81526004016102fc9061093d565b6001600160a01b03811660008181526003602052604080822060019055517fdd0e34038ac38b2a1ce960229778ac48a8719bc900b6c4f8d0475c6e8b385a609190a250565b336000908152600360205260409020546001146105a15760405162461bcd60e51b81526004016102fc9061093d565b6001600160a01b038116600081815260036020526040808220829055517f184450df2e323acec0ed3b5c7531b81f9b4cdef7914dfd4c0a4317416bb5251b9190a250565b60006001600160a01b03831661060d5760405162461bcd60e51b81526004016102fc90610878565b3360009081526001602052604090205482111561063c5760405162461bcd60e51b81526004016102fc906108bb565b336000908152600160205260408120805484929061065b908490610917565b90915550506001600160a01b0383166000908152600160205260408120805484929061068890849061092a565b90915550506040518281526001600160a01b0384169033907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610288565b806000808282546106db919061092a565b90915550506001600160a01b0382166000908152600160205260408120805483929061070890849061092a565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b602081526000825180602084015260005b818110156107805760208186018101516040868401015201610763565b506000604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b03811681146107b757600080fd5b919050565b600080604083850312156107cf57600080fd5b6107d8836107a0565b946020939093013593505050565b6000806000606084860312156107fb57600080fd5b610804846107a0565b9250610812602085016107a0565b929592945050506040919091013590565b60006020828403121561083557600080fd5b61083e826107a0565b9392505050565b6000806040838503121561085857600080fd5b610861836107a0565b915061086f602084016107a0565b90509250929050565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526026908201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604082015265616c616e636560d01b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b8181038181111561029457610294610901565b8082018082111561029457610294610901565b60208082526019908201527f54574150546f6b656e3a206e6f7420617574686f72697a65640000000000000060408201526060019056fea264697066735822122075c8133cf6e38bd19307f9d7b4f45533518c6eac43c24e8149ae6a40669886c864736f6c634300081c003300000000000000000000000000000000000000000000d3c21bcecceda1000000
Deployed ByteCode
0x608060405234801561001057600080fd5b50600436106100cf5760003560e01c806365fae35e1161008c5780639c52a7f1116100665780639c52a7f1146101bc578063a9059cbb146101cf578063bf353dbb146101e2578063dd62ed3e1461020257600080fd5b806365fae35e1461018957806370a082311461019c57806395d89b41146100d457600080fd5b806306fdde03146100d4578063095ea7b31461010d57806318160ddd1461013057806323b872dd14610147578063313ce5671461015a57806340c10f1914610174575b600080fd5b6100f7604051806040016040528060048152602001630545741560e41b81525081565b6040516101049190610752565b60405180910390f35b61012061011b3660046107bc565b61022d565b6040519015158152602001610104565b61013960005481565b604051908152602001610104565b6101206101553660046107e6565b61029a565b610162601281565b60405160ff9091168152602001610104565b6101876101823660046107bc565b6104c1565b005b610187610197366004610823565b6104fe565b6101396101aa366004610823565b60016020526000908152604090205481565b6101876101ca366004610823565b610572565b6101206101dd3660046107bc565b6105e5565b6101396101f0366004610823565b60036020526000908152604090205481565b610139610210366004610845565b600260209081526000928352604080842090915290825290205481565b3360008181526002602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906102889086815260200190565b60405180910390a35060015b92915050565b60006001600160a01b0384166103055760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084015b60405180910390fd5b6001600160a01b03831661032b5760405162461bcd60e51b81526004016102fc90610878565b6001600160a01b0384166000908152600160205260409020548211156103635760405162461bcd60e51b81526004016102fc906108bb565b6001600160a01b03841660009081526002602090815260408083203384529091529020548211156103d65760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016102fc565b6001600160a01b038416600090815260016020526040812080548492906103fe908490610917565b90915550506001600160a01b0383166000908152600160205260408120805484929061042b90849061092a565b90915550506001600160a01b038416600090815260026020908152604080832033845290915281208054849290610463908490610917565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516104af91815260200190565b60405180910390a35060019392505050565b336000908152600360205260409020546001146104f05760405162461bcd60e51b81526004016102fc9061093d565b6104fa82826106ca565b5050565b3360009081526003602052604090205460011461052d5760405162461bcd60e51b81526004016102fc9061093d565b6001600160a01b03811660008181526003602052604080822060019055517fdd0e34038ac38b2a1ce960229778ac48a8719bc900b6c4f8d0475c6e8b385a609190a250565b336000908152600360205260409020546001146105a15760405162461bcd60e51b81526004016102fc9061093d565b6001600160a01b038116600081815260036020526040808220829055517f184450df2e323acec0ed3b5c7531b81f9b4cdef7914dfd4c0a4317416bb5251b9190a250565b60006001600160a01b03831661060d5760405162461bcd60e51b81526004016102fc90610878565b3360009081526001602052604090205482111561063c5760405162461bcd60e51b81526004016102fc906108bb565b336000908152600160205260408120805484929061065b908490610917565b90915550506001600160a01b0383166000908152600160205260408120805484929061068890849061092a565b90915550506040518281526001600160a01b0384169033907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610288565b806000808282546106db919061092a565b90915550506001600160a01b0382166000908152600160205260408120805483929061070890849061092a565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b602081526000825180602084015260005b818110156107805760208186018101516040868401015201610763565b506000604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b03811681146107b757600080fd5b919050565b600080604083850312156107cf57600080fd5b6107d8836107a0565b946020939093013593505050565b6000806000606084860312156107fb57600080fd5b610804846107a0565b9250610812602085016107a0565b929592945050506040919091013590565b60006020828403121561083557600080fd5b61083e826107a0565b9392505050565b6000806040838503121561085857600080fd5b610861836107a0565b915061086f602084016107a0565b90509250929050565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526026908201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604082015265616c616e636560d01b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b8181038181111561029457610294610901565b8082018082111561029457610294610901565b60208082526019908201527f54574150546f6b656e3a206e6f7420617574686f72697a65640000000000000060408201526060019056fea264697066735822122075c8133cf6e38bd19307f9d7b4f45533518c6eac43c24e8149ae6a40669886c864736f6c634300081c0033