/*
* Author : Christopher D.
*/
pragma solidity 0.5.17;
library SafeMath {
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
return sub(a, b, "SafeMath: subtraction overflow");
}
function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b <= a, errorMessage);
uint256 c = a - b;
return c;
}
}
interface IERC20 {
function mint(address account, uint amount) external;
}
contract DONDIAirdrop {
using SafeMath for uint256;
mapping(address => uint256) public supplies;
IERC20 public dondi = IERC20(0x45Ed25A237B6AB95cE69aF7555CF8D7A2FfEE67c); //need replace
address public gov;
event Airdropped(address indexed user_, uint256 value_);
constructor()
public
{
gov = msg.sender;
}
modifier onlyGov()
{
require(msg.sender == gov, "require gov!");
_;
}
function setAirdropSupply(address pool, uint256 initSupply)
external
onlyGov
{
supplies[pool] = initSupply;
}
function transferOwnership(address owner)
external
onlyGov
{
gov = owner;
}
function getRemainAirdrop(address pool)
external
view
returns (uint256)
{
return supplies[pool];
}
function airdrop(uint256 value)
external
{
require(supplies[msg.sender] > 0, "Unable to call!");
require(value > 0, "Unable to airdrop 0!");
require(supplies[msg.sender] >= value, "Unable to airdrop!");
dondi.mint(msg.sender, value);
supplies[msg.sender] = supplies[msg.sender].sub(value);
emit Airdropped(msg.sender, value);
}
function airdropAll()
external
{
uint256 value = supplies[msg.sender];
require(value > 0, "Unable to call!");
dondi.mint(msg.sender, value);
supplies[msg.sender] = 0;
emit Airdropped(msg.sender, value);
}
}
{
"compilationTarget": {
"DONDIAirdrop.sol": "DONDIAirdrop"
},
"evmVersion": "istanbul",
"libraries": {},
"optimizer": {
"enabled": true,
"runs": 200
},
"remappings": []
}
[{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user_","type":"address"},{"indexed":false,"internalType":"uint256","name":"value_","type":"uint256"}],"name":"Airdropped","type":"event"},{"constant":false,"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"airdrop","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"airdropAll","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"dondi","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getRemainAirdrop","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"gov","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"initSupply","type":"uint256"}],"name":"setAirdropSupply","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"supplies","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]