pragma solidity ^0.6.0;
import "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/release-v3.1.0/contracts/access/Ownable.sol";
import "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/release-v3.1.0/contracts/token/ERC20/IERC20.sol";
contract SingDaoAirdrop is Ownable {
IERC20 sdaoToken = IERC20(0x993864E43Caa7F7F12953AD6fEb1d1Ca635B875F);
mapping (address => bool) public whitelistedMap;
event Whitelisted(address indexed account, bool isWhitelisted);
function whitelisted(address _address)
public
view
returns (bool)
{
return whitelistedMap[_address];
}
function addAddress(address _address)
public
onlyOwner
{
require(whitelistedMap[_address] != true);
whitelistedMap[_address] = true;
emit Whitelisted(_address, true);
}
function getSDaoBalance() public view returns(uint256 balance){
uint256 balanceSDao = sdaoToken.balanceOf(address(this));
return balanceSDao;
}
function addAddresses(address[] memory _addresses)
public
onlyOwner
{
for(uint256 i = 0; i < _addresses.length; i ++) {
address user = _addresses[i] ;
addAddress(user);
}
}
function removeAddresspub(address _address)
public
onlyOwner
{
require(whitelistedMap[_address] != false);
whitelistedMap[_address] = false;
emit Whitelisted(_address, false);
}
function removeAddress(address _address)
internal
{
require(whitelistedMap[_address] != false);
whitelistedMap[_address] = false;
emit Whitelisted(_address, false);
}
function claimdrop(uint256 reward) public {
sdaoToken.approve(address(this),reward);
require(whitelisted(msg.sender),'Claim not allowed, address not whitelisted');
require(getSDaoBalance() > reward,'Not enough tokens left to distribute reward');
sdaoToken.transfer(msg.sender, reward);
removeAddress(msg.sender);
}
function withdrawETHAndAnyTokens(address addresse) external onlyOwner {
msg.sender.send(address(this).balance);
IERC20 sdaoToken = IERC20(addresse);
uint256 currentTokenBalance = sdaoToken.balanceOf(address(this));
sdaoToken.transfer(msg.sender, currentTokenBalance);
}
}
{
"compilationTarget": {
"contracts/SingDaoAirdrop.sol": "SingDaoAirdrop"
},
"evmVersion": "istanbul",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
}
[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isWhitelisted","type":"bool"}],"name":"Whitelisted","type":"event"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"addAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addresses","type":"address[]"}],"name":"addAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"reward","type":"uint256"}],"name":"claimdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getSDaoBalance","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"removeAddresspub","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"whitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"whitelistedMap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addresse","type":"address"}],"name":"withdrawETHAndAnyTokens","outputs":[],"stateMutability":"nonpayable","type":"function"}]