ERC-20
Overview
Max Total Supply
169,190.267653311896029334 lsMKR
Holders
1
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
LockstakeMkr
Compiler Version
v0.8.21+commit.d9974bed
Optimization Enabled:
Yes with 200 runs
Other Settings:
paris EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: AGPL-3.0-or-later /// LockstakeMkr.sol -- LockstakeMkr token // Copyright (C) 2017, 2018, 2019 dbrock, rain, mrchico // Copyright (C) 2023 Dai Foundation // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Affero General Public License for more details. // // You should have received a copy of the GNU Affero General Public License // along with this program. If not, see <https://www.gnu.org/licenses/>. pragma solidity ^0.8.21; contract LockstakeMkr { mapping (address => uint256) public wards; // --- ERC20 Data --- string public constant name = "LockstakeMkr"; string public constant symbol = "lsMKR"; string public constant version = "1"; uint8 public constant decimals = 18; uint256 public totalSupply; mapping (address => uint256) public balanceOf; mapping (address => mapping (address => uint256)) public allowance; // --- Events --- event Rely(address indexed usr); event Deny(address indexed usr); event Approval(address indexed owner, address indexed spender, uint256 value); event Transfer(address indexed from, address indexed to, uint256 value); modifier auth { require(wards[msg.sender] == 1, "LockstakeMkr/not-authorized"); _; } constructor() { wards[msg.sender] = 1; emit Rely(msg.sender); } // --- Administration --- function rely(address usr) external auth { wards[usr] = 1; emit Rely(usr); } function deny(address usr) external auth { wards[usr] = 0; emit Deny(usr); } // --- ERC20 Mutations --- function transfer(address to, uint256 value) external returns (bool) { require(to != address(0) && to != address(this), "LockstakeMkr/invalid-address"); uint256 balance = balanceOf[msg.sender]; require(balance >= value, "LockstakeMkr/insufficient-balance"); unchecked { balanceOf[msg.sender] = balance - value; balanceOf[to] += value; // note: we don't need an overflow check here b/c sum of all balances == totalSupply } emit Transfer(msg.sender, to, value); return true; } function transferFrom(address from, address to, uint256 value) external returns (bool) { require(to != address(0) && to != address(this), "LockstakeMkr/invalid-address"); uint256 balance = balanceOf[from]; require(balance >= value, "LockstakeMkr/insufficient-balance"); if (from != msg.sender) { uint256 allowed = allowance[from][msg.sender]; if (allowed != type(uint256).max) { require(allowed >= value, "LockstakeMkr/insufficient-allowance"); unchecked { allowance[from][msg.sender] = allowed - value; } } } unchecked { balanceOf[from] = balance - value; balanceOf[to] += value; // note: we don't need an overflow check here b/c sum of all balances == totalSupply } 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; } // --- Mint/Burn --- function mint(address to, uint256 value) external auth { require(to != address(0) && to != address(this), "LockstakeMkr/invalid-address"); unchecked { balanceOf[to] = balanceOf[to] + value; // note: we don't need an overflow check here b/c balanceOf[to] <= totalSupply and there is an overflow check below } totalSupply = totalSupply + value; emit Transfer(address(0), to, value); } function burn(address from, uint256 value) external { uint256 balance = balanceOf[from]; require(balance >= value, "LockstakeMkr/insufficient-balance"); if (from != msg.sender) { uint256 allowed = allowance[from][msg.sender]; if (allowed != type(uint256).max) { require(allowed >= value, "LockstakeMkr/insufficient-allowance"); unchecked { allowance[from][msg.sender] = allowed - value; } } } unchecked { balanceOf[from] = balance - value; // note: we don't need overflow checks b/c require(balance >= value) and balance <= totalSupply totalSupply = totalSupply - value; } emit Transfer(from, address(0), value); } }
{ "remappings": [ "dss-interfaces/=lib/token-tests/lib/dss-test/lib/dss-interfaces/src/", "dss-test/=lib/token-tests/lib/dss-test/src/", "forge-std/=lib/token-tests/lib/dss-test/lib/forge-std/src/", "token-tests/=lib/token-tests/src/" ], "optimizer": { "enabled": true, "runs": 200 }, "metadata": { "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "evmVersion": "paris", "viaIR": false, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"usr","type":"address"}],"name":"Deny","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"usr","type":"address"}],"name":"Rely","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"usr","type":"address"}],"name":"deny","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"usr","type":"address"}],"name":"rely","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"wards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b503360008181526020819052604080822060019055517fdd0e34038ac38b2a1ce960229778ac48a8719bc900b6c4f8d0475c6e8b385a609190a2610aa2806100596000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806365fae35e116100975780639dc29fac116100665780639dc29fac14610241578063a9059cbb14610254578063bf353dbb14610267578063dd62ed3e1461028757600080fd5b806365fae35e146101d757806370a08231146101ea57806395d89b411461020a5780639c52a7f11461022e57600080fd5b806323b872dd116100d357806323b872dd14610175578063313ce5671461018857806340c10f19146101a257806354fd4d50146101b757600080fd5b806306fdde03146100fa578063095ea7b31461013b57806318160ddd1461015e575b600080fd5b6101256040518060400160405280600c81526020016b2637b1b5b9ba30b5b2a6b5b960a11b81525081565b6040516101329190610814565b60405180910390f35b61014e61014936600461087e565b6102b2565b6040519015158152602001610132565b61016760015481565b604051908152602001610132565b61014e6101833660046108a8565b61031f565b610190601281565b60405160ff9091168152602001610132565b6101b56101b036600461087e565b610489565b005b610125604051806040016040528060018152602001603160f81b81525081565b6101b56101e53660046108e4565b610557565b6101676101f83660046108e4565b60026020526000908152604090205481565b610125604051806040016040528060058152602001643639a6a5a960d91b81525081565b6101b561023c3660046108e4565b6105cb565b6101b561024f36600461087e565b61063e565b61014e61026236600461087e565b61074d565b6101676102753660046108e4565b60006020819052908152604090205481565b610167610295366004610906565b600360209081526000928352604080842090915290825290205481565b3360008181526003602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061030d9086815260200190565b60405180910390a35060015b92915050565b60006001600160a01b0383161580159061034257506001600160a01b0383163014155b6103675760405162461bcd60e51b815260040161035e90610939565b60405180910390fd5b6001600160a01b038416600090815260026020526040902054828110156103a05760405162461bcd60e51b815260040161035e90610970565b6001600160a01b0385163314610428576001600160a01b0385166000908152600360209081526040808320338452909152902054600019811461042657838110156103fd5760405162461bcd60e51b815260040161035e906109b1565b6001600160a01b0386166000908152600360209081526040808320338452909152902084820390555b505b6001600160a01b038086166000818152600260205260408082208786039055928716808252908390208054870190559151600080516020610a4d833981519152906104769087815260200190565b60405180910390a3506001949350505050565b336000908152602081905260409020546001146104b85760405162461bcd60e51b815260040161035e906109f4565b6001600160a01b038216158015906104d957506001600160a01b0382163014155b6104f55760405162461bcd60e51b815260040161035e90610939565b6001600160a01b0382166000908152600260205260409020805482019055600154610521908290610a2b565b6001556040518181526001600160a01b03831690600090600080516020610a4d8339815191529060200160405180910390a35050565b336000908152602081905260409020546001146105865760405162461bcd60e51b815260040161035e906109f4565b6001600160a01b03811660008181526020819052604080822060019055517fdd0e34038ac38b2a1ce960229778ac48a8719bc900b6c4f8d0475c6e8b385a609190a250565b336000908152602081905260409020546001146105fa5760405162461bcd60e51b815260040161035e906109f4565b6001600160a01b038116600081815260208190526040808220829055517f184450df2e323acec0ed3b5c7531b81f9b4cdef7914dfd4c0a4317416bb5251b9190a250565b6001600160a01b038216600090815260026020526040902054818110156106775760405162461bcd60e51b815260040161035e90610970565b6001600160a01b03831633146106ff576001600160a01b038316600090815260036020908152604080832033845290915290205460001981146106fd57828110156106d45760405162461bcd60e51b815260040161035e906109b1565b6001600160a01b0384166000908152600360209081526040808320338452909152902083820390555b505b6001600160a01b0383166000818152600260209081526040808320868603905560018054879003905551858152919291600080516020610a4d833981519152910160405180910390a3505050565b60006001600160a01b0383161580159061077057506001600160a01b0383163014155b61078c5760405162461bcd60e51b815260040161035e90610939565b33600090815260026020526040902054828110156107bc5760405162461bcd60e51b815260040161035e90610970565b33600081815260026020908152604080832087860390556001600160a01b0388168084529281902080548801905551868152919291600080516020610a4d833981519152910160405180910390a35060019392505050565b600060208083528351808285015260005b8181101561084157858101830151858201604001528201610825565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461087957600080fd5b919050565b6000806040838503121561089157600080fd5b61089a83610862565b946020939093013593505050565b6000806000606084860312156108bd57600080fd5b6108c684610862565b92506108d460208501610862565b9150604084013590509250925092565b6000602082840312156108f657600080fd5b6108ff82610862565b9392505050565b6000806040838503121561091957600080fd5b61092283610862565b915061093060208401610862565b90509250929050565b6020808252601c908201527f4c6f636b7374616b654d6b722f696e76616c69642d6164647265737300000000604082015260600190565b60208082526021908201527f4c6f636b7374616b654d6b722f696e73756666696369656e742d62616c616e636040820152606560f81b606082015260800190565b60208082526023908201527f4c6f636b7374616b654d6b722f696e73756666696369656e742d616c6c6f77616040820152626e636560e81b606082015260800190565b6020808252601b908201527f4c6f636b7374616b654d6b722f6e6f742d617574686f72697a65640000000000604082015260600190565b8082018082111561031957634e487b7160e01b600052601160045260246000fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212207985787676cd700741f3f08c1bf99875d2f49886047d0d681d0851d8aa066d4064736f6c63430008150033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100f55760003560e01c806365fae35e116100975780639dc29fac116100665780639dc29fac14610241578063a9059cbb14610254578063bf353dbb14610267578063dd62ed3e1461028757600080fd5b806365fae35e146101d757806370a08231146101ea57806395d89b411461020a5780639c52a7f11461022e57600080fd5b806323b872dd116100d357806323b872dd14610175578063313ce5671461018857806340c10f19146101a257806354fd4d50146101b757600080fd5b806306fdde03146100fa578063095ea7b31461013b57806318160ddd1461015e575b600080fd5b6101256040518060400160405280600c81526020016b2637b1b5b9ba30b5b2a6b5b960a11b81525081565b6040516101329190610814565b60405180910390f35b61014e61014936600461087e565b6102b2565b6040519015158152602001610132565b61016760015481565b604051908152602001610132565b61014e6101833660046108a8565b61031f565b610190601281565b60405160ff9091168152602001610132565b6101b56101b036600461087e565b610489565b005b610125604051806040016040528060018152602001603160f81b81525081565b6101b56101e53660046108e4565b610557565b6101676101f83660046108e4565b60026020526000908152604090205481565b610125604051806040016040528060058152602001643639a6a5a960d91b81525081565b6101b561023c3660046108e4565b6105cb565b6101b561024f36600461087e565b61063e565b61014e61026236600461087e565b61074d565b6101676102753660046108e4565b60006020819052908152604090205481565b610167610295366004610906565b600360209081526000928352604080842090915290825290205481565b3360008181526003602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061030d9086815260200190565b60405180910390a35060015b92915050565b60006001600160a01b0383161580159061034257506001600160a01b0383163014155b6103675760405162461bcd60e51b815260040161035e90610939565b60405180910390fd5b6001600160a01b038416600090815260026020526040902054828110156103a05760405162461bcd60e51b815260040161035e90610970565b6001600160a01b0385163314610428576001600160a01b0385166000908152600360209081526040808320338452909152902054600019811461042657838110156103fd5760405162461bcd60e51b815260040161035e906109b1565b6001600160a01b0386166000908152600360209081526040808320338452909152902084820390555b505b6001600160a01b038086166000818152600260205260408082208786039055928716808252908390208054870190559151600080516020610a4d833981519152906104769087815260200190565b60405180910390a3506001949350505050565b336000908152602081905260409020546001146104b85760405162461bcd60e51b815260040161035e906109f4565b6001600160a01b038216158015906104d957506001600160a01b0382163014155b6104f55760405162461bcd60e51b815260040161035e90610939565b6001600160a01b0382166000908152600260205260409020805482019055600154610521908290610a2b565b6001556040518181526001600160a01b03831690600090600080516020610a4d8339815191529060200160405180910390a35050565b336000908152602081905260409020546001146105865760405162461bcd60e51b815260040161035e906109f4565b6001600160a01b03811660008181526020819052604080822060019055517fdd0e34038ac38b2a1ce960229778ac48a8719bc900b6c4f8d0475c6e8b385a609190a250565b336000908152602081905260409020546001146105fa5760405162461bcd60e51b815260040161035e906109f4565b6001600160a01b038116600081815260208190526040808220829055517f184450df2e323acec0ed3b5c7531b81f9b4cdef7914dfd4c0a4317416bb5251b9190a250565b6001600160a01b038216600090815260026020526040902054818110156106775760405162461bcd60e51b815260040161035e90610970565b6001600160a01b03831633146106ff576001600160a01b038316600090815260036020908152604080832033845290915290205460001981146106fd57828110156106d45760405162461bcd60e51b815260040161035e906109b1565b6001600160a01b0384166000908152600360209081526040808320338452909152902083820390555b505b6001600160a01b0383166000818152600260209081526040808320868603905560018054879003905551858152919291600080516020610a4d833981519152910160405180910390a3505050565b60006001600160a01b0383161580159061077057506001600160a01b0383163014155b61078c5760405162461bcd60e51b815260040161035e90610939565b33600090815260026020526040902054828110156107bc5760405162461bcd60e51b815260040161035e90610970565b33600081815260026020908152604080832087860390556001600160a01b0388168084529281902080548801905551868152919291600080516020610a4d833981519152910160405180910390a35060019392505050565b600060208083528351808285015260005b8181101561084157858101830151858201604001528201610825565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461087957600080fd5b919050565b6000806040838503121561089157600080fd5b61089a83610862565b946020939093013593505050565b6000806000606084860312156108bd57600080fd5b6108c684610862565b92506108d460208501610862565b9150604084013590509250925092565b6000602082840312156108f657600080fd5b6108ff82610862565b9392505050565b6000806040838503121561091957600080fd5b61092283610862565b915061093060208401610862565b90509250929050565b6020808252601c908201527f4c6f636b7374616b654d6b722f696e76616c69642d6164647265737300000000604082015260600190565b60208082526021908201527f4c6f636b7374616b654d6b722f696e73756666696369656e742d62616c616e636040820152606560f81b606082015260800190565b60208082526023908201527f4c6f636b7374616b654d6b722f696e73756666696369656e742d616c6c6f77616040820152626e636560e81b606082015260800190565b6020808252601b908201527f4c6f636b7374616b654d6b722f6e6f742d617574686f72697a65640000000000604082015260600190565b8082018082111561031957634e487b7160e01b600052601160045260246000fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212207985787676cd700741f3f08c1bf99875d2f49886047d0d681d0851d8aa066d4064736f6c63430008150033
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.