账户
0xe0...2d09
0xe0...2d09

0xe0...2d09

$500
此合同的源代码已经过验证!
合同元数据
编译器
0.6.12+commit.27d51765
语言
Solidity
合同源代码
文件 1 的 4:Context.sol
合同源代码
文件 2 的 4:IERC20.sol
合同源代码
文件 3 的 4:Ownable.sol
合同源代码
文件 4 的 4:SingDaoAirdrop.sol
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": []
}
ABI
[{"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"}]