// SPDX-License-Identifier: MIT
/*
PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP55PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP5Y5PPPPPPPPPPPPPPPPPPPPJ~^?PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
PPPPPP5PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPY~::!YPPPPPPPPPPPPPPPPPJ^...JPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP7^...:?5PPPPPPPPPPPPPPJ~..7!^5PPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP5~::7!:.!YPPPPP555YYYY?J^ :5Y.?PPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPJ~:^YP7:.!?J?77777??JJ?J7~~5J:~PPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
PPPPPP55PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP7~^:?B5~ ~GY7JY555555PGPYJ?7!!^5PPPPPPPPPPPPPPPPPPPPPPPPPPPPP
PPPPPP5PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP~!!.~PB7^JYJYY5Y5YJ7!?5GPY~.~7^JPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
PPPPP555555PPPPPPPP55555555555PPPPPPPPP~7?^^~?YJJYYYYYYJJY!..7JYY7^!P57YPPPPPPPPPPPPPPPPPPPPPPPPPPPP
PPPP555555555555555555555PPPPPPPPPPPPPP7?J?!~7JY5YYYYJ!?5GPY!!?777!!JY!!5555PPPPPPPPPPPPPPPPPPPPPPPP
PPP55555555555555555555555PPPPPPPPPPPPPY~YY?J555555YY77J5Y?J7!!!!^^::~7?YYYY5PPPPPPPPPPPPPPPPPPPPPPP
PP5555555555555555555555555PP55555PPPPPY.7YJGP5Y?!~^:::^~~~:::~~^. .!5#B###YJ555PPPPPPPPPPPPPPPPPPPP
PP5555555555555555555555555555555555PPP~.7?5J~:. ..... .:::...:7PGBBB77555PPPPPPPPPPPPPPPPPPPP
PPP55555555555555555555555555555555PPPY ~??J^... ..... ..:::::..:!YGGPP!7P55PPPPPPPPPPPPPPPPPPPP
PP555555555555555555555555555555555PPP? ?JJ7::.... ........::^^^^^~!J5P5?^?P55PPPPPPPPPPPPPPPPPPPPP
PP555555555555555555555555555555555PPP?.Y5Y7::::.........::~JY?777!!!~~^:.:5P5PPPPPPPPPPPPPPPPPPPPPP
PPP55555555555555555555555555555555PPPJ.JGPY~::::::::....::^~!!!!!!!!~^:. ~PPPPPPPPPPPPPPPPPPPPPPPPP
PPPP555555555555555555555555555555PPPP5:7PBG57^:::::::^^^^~~77???7!~^:. !P5PPPPPPPPPPPPPPPPPPPPPPP
PPP55555555555555555555555555555555PPY!?JJPBBG5?^.........::^^^::.... ?P5PPPPPPPPPPPPPPPPPPPPPPP
PPP55555555555555555555555555PPPPPPPPY~7PGGPGBBBPJ!:. ........ . .YPPPPPPPPPPPPPPPPPPPPPPPPP
PP5555555555555555555555555PPPPPPPPP57~7?YGBGGGGBBGPJ!^. ... .~!5PPPPPPPPPPPPPPPPPPPPPPPP
PP55555555555555555555555555P555PPPY::?JJJJ55GBBGGGGGGPYJ7^. .. .~!^?PPPPPPPPPPPPPPPPPPPPPPPP
PPP55555555555555555555555555555PP5:.7Y555YY?YY5PGGGGGPPP5YJ!^:. .^~^^~!PPPPPPPPPPPPPPPPPPPPPPPP
PPP5555555555555555555555555555PPPY :?JY55PP55JJJJJJYY5PPPPYJJ??7!~~~~^:.^~!PPPPPPPPPPPPPPPPPPPPPPPP
PPP555555555555555555PP555PPP555PPJ :JYYYYY55PP5YJ??777!!!!!7?7!~~^::. :~~^YPPPPPPPPPPPPPPPPPPPPPPP
PPP55555555555P55PPPPPPPPPPPP55PPPJ .?5YYJJJJJY5PP5Y?7!!!~~~^^:. .:^~~^:!PPPPPPPPPPPPPPPPPPPPPPP
PPP5555555555555PPPPPPPPPPPPPPP5J77!:7Y55YYJJ????JYY55YJ7!~~~~~~~^^::^~~~^^.:5PPPPPPPPPPPPPPPPPPPPPP
PPP555555PPPPPPPPPPPPPPPPPPPPJ~:~JGG77JJY55YJJ?7!!!~~~!7????77!~~~~!~~^!!~. .YPPPPPPPPPPPPPPPPPPPPPP
PPPPPPP55PPPPPPPPPPPPPPPPPPJ^ :75GBBPJ???JYY5YJ7!~^^::....::^~!77777!~!7^. .YPPPPPPPPPPPPPPPPPPPPPP
PPPPPPPP55PPPP555PPPPPPPP5~ .!J5PPGBB5J????JJYYYJ7~::... :~~~~~~^: .JPPPPPPPPPPPPPPPPPPPPPP
PPPPPPPP5555555PPPPPPPPP?. ^7YY5PPGBBB5JJ??????JYYY?~:... .!^~~~^~~^.. ^5PPPPPPPPPPPPPPPPPPPPP
PPPPPPPPPP55555PPPPPPPP7 ^?YY55PPGBBBGYYJJ?777777?JYJ!^... :J!~~~~~~~^. JPPPPPPPPPPPPPPPPPPPPP
PPPPPPP5555555PPPPPPPP7 ~?YYYY5PPGBBBBP55J??7!!!~!!!7???!^... .~YY7!!~~~. ?PPPPPPPPPPPPPPPPPPPPP
PPPPPP55555555PPPPPPP? ~JY555Y55PGGBBBB55YJ?7!!~~~^^^^^^~~^^:....:!77!!^. .YPPPPPPPPPPPPPPPPPPPPP
PPPPP5555555555P55PPY. ^?Y55YY555PGGBBBBP55YJ7!!~^^^::::........ . 7PPPPPPPPPPPPPPPPPPPPPP
PPPP5555555555555PP5^ :7Y55555555PGGBBBB5555Y?!~~^^::::.. .. ..?PPPPPPPPPPPPPPPPPPPPPPP
PPP555555555PPPPPPPJ :?YPPP5555PPGGBBBBG555YYJ7!~^^:::. .^!7??7!: .^~~YP55PPPPPPPPPPPPPPPPPPPPP
PPP55555555555PPPPP~ 75PPPPPPPPPGGGBBB#G555YYJ?!~~^^:..!JJ?7!!!!!. .~7~.?P555PPPPPPPPPPPPPPPPPPPPP
PPP555555555555PPPJ.~5PGGGGGGGGGGGGBBB#P555YJ?7!~~^^::?Y7~~^:::::: .~?!:.^PP5PPPPPPPPPPPPPPPPPPPPPPP
PPPPP555555555PPY~:75GGGGGGGGGGGGGBBBB#P55YYJ?!~~^^:^?J!~^:::... .~??~:. ?P5P5PPPPPPPPPPPPPPPPPPPPPP
PPP5555555555PP7.~YGBBBBBBBBBBBBBBBBBBB555YJ?7~~^^::!J!^^::.... ^JJ7^::.:5P555PPPPPPPPPPPPPPPPPPPPPP
PP555555555PPP! ^7JJYPGB#BBBBBBBBBBBB#B55YYJ?7!^^^:.!J~^:::.. !YJ~^^::.?P5555PPPPPPPPPPPPPPPPPPPPPP
PPPPPPPPPPPPP7 ~??7!~^~75##BBBBBBBBBB#B55YYJJ7!~^^::^J~^::...^?5J!^^::.:5P555PPPPPPPPPPPP555555PPPPP
PPPPPPPPPPPP5:~JJJJ??!~::!P#######B###B55YYYJ?!~^::::?!^::^!J55Y?~^^::.~P55555555555PPPPP55555555PPP
PPP5PPPPPPPPY:?YYYYJJ?7!~^^P##BB#B##BB#G55YYJ?7!~~^^:!J7?YPPP55Y7!~^^^:?PPPPPPPPPPPPPPPPPP5555555PPP
PPPPPPPPPPPP555PPPPP55555555PPPPPPPPPPPPPPPPP555555555PPPPPPPPP555555555PPPPPPPPPPPPPPPPPPPPPPPPPPPP
PPPPPPPPPPPPPPP555PPPPPPPPPP555555555555PPPPPPPPPPPPPPPP5PPPPPPPPPPPPPPP55555555PPPPPPPPPPPPPPPPPPPP
//
███████ █████ █████ ██████ ██████ █████
███░░░░░███ ░░███ ░░███ ░░██████ ██████ ░░███
███ ░░███ ░███ ░███ ░███░█████░███ ░███
░███ ░███ ░███████████ ░███░░███ ░███ ░███
░███ ░███ ░███░░░░░███ ░███ ░░░ ░███ ░███
░░███ ███ ░███ ░███ ░███ ░███ ░███
░░░███████░ █████ █████ █████ █████ █████
░░░░░░░ ░░░░░ ░░░░░ ░░░░░ ░░░░░ ░░░░░
//
// BARK DIFFERENT!
// The top dog that rewards true loyalty.
//
// https://linktr.ee/ohmi
//
*/
pragma solidity ^0.4.23;
contract ERC20Basic {
function totalSupply() public view returns (uint256);
function balanceOf(address who) public view returns (uint256);
function transfer(address to, uint256 value) public returns (bool);
event Transfer(address indexed from, address indexed to, uint256 value);
}
library SafeMath {
function mul(uint256 a, uint256 b) internal pure returns (uint256 c) {
if (a == 0) {
return 0;
}
c = a * b;
assert(c / a == b);
return c;
}
function div(uint256 a, uint256 b) internal pure returns (uint256) {
// assert(b > 0); // Solidity automatically throws when dividing by 0
// uint256 c = a / b;
// assert(a == b * c + a % b); // There is no case in which this doesn't hold
return a / b;
}
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
assert(b <= a);
return a - b;
}
function add(uint256 a, uint256 b) internal pure returns (uint256 c) {
c = a + b;
assert(c >= a);
return c;
}
}
contract BasicToken is ERC20Basic {
using SafeMath for uint256;
mapping(address => uint256) balances;
uint256 totalSupply_;
function totalSupply() public view returns (uint256) {
return totalSupply_;
}
function transfer(address _to, uint256 _value) public returns (bool) {
require(_to != address(0));
require(_value <= balances[msg.sender]);
balances[msg.sender] = balances[msg.sender].sub(_value);
balances[_to] = balances[_to].add(_value);
emit Transfer(msg.sender, _to, _value);
return true;
}
function balanceOf(address _owner) public view returns (uint256) {
return balances[_owner];
}
}
contract ERC20 is ERC20Basic {
function allowance(address owner, address spender)
public view returns (uint256);
function transferFrom(address from, address to, uint256 value)
public returns (bool);
function approve(address spender, uint256 value) public returns (bool);
event Approval(
address indexed owner,
address indexed spender,
uint256 value
);
}
contract StandardToken is ERC20, BasicToken {
mapping (address => mapping (address => uint256)) internal allowed;
function transferFrom(
address _from,
address _to,
uint256 _value
)
public
returns (bool)
{
require(_to != address(0));
require(_value <= balances[_from]);
require(_value <= allowed[_from][msg.sender]);
balances[_from] = balances[_from].sub(_value);
balances[_to] = balances[_to].add(_value);
allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value);
emit Transfer(_from, _to, _value);
return true;
}
function approve(address _spender, uint256 _value) public returns (bool) {
allowed[msg.sender][_spender] = _value;
emit Approval(msg.sender, _spender, _value);
return true;
}
function allowance(
address _owner,
address _spender
)
public
view
returns (uint256)
{
return allowed[_owner][_spender];
}
function increaseApproval(
address _spender,
uint _addedValue
)
public
returns (bool)
{
allowed[msg.sender][_spender] = (
allowed[msg.sender][_spender].add(_addedValue));
emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
return true;
}
function decreaseApproval(
address _spender,
uint _subtractedValue
)
public
returns (bool)
{
uint oldValue = allowed[msg.sender][_spender];
if (_subtractedValue > oldValue) {
allowed[msg.sender][_spender] = 0;
} else {
allowed[msg.sender][_spender] = oldValue.sub(_subtractedValue);
}
emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
return true;
}
}
contract OHMI is StandardToken {
string public constant name = "OHMI"; // solium-disable-line uppercase
string public constant symbol = "OHMI"; // solium-disable-line uppercase
uint8 public constant decimals = 18; // solium-disable-line uppercase
uint256 public constant INITIAL_SUPPLY = 100000000 * (10 ** uint256(decimals));
constructor() public {
totalSupply_ = INITIAL_SUPPLY;
balances[msg.sender] = INITIAL_SUPPLY;
emit Transfer(0x0, msg.sender, INITIAL_SUPPLY);
}
}
{
"compilationTarget": {
"OHMI.sol": "OHMI"
},
"evmVersion": "byzantium",
"libraries": {},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
}
[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"INITIAL_SUPPLY","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_subtractedValue","type":"uint256"}],"name":"decreaseApproval","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_addedValue","type":"uint256"}],"name":"increaseApproval","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"}]