Skip to content

Commit

Permalink
Initial commit
Browse files Browse the repository at this point in the history
  • Loading branch information
Sonikanuganti committed Feb 9, 2023
0 parents commit 6238032
Showing 1 changed file with 1 addition and 0 deletions.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# airdrop-sample

1 comment on commit 6238032

@Sonikanuganti
Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

// SPDX-License-Identifier: MIT

// File: @openzeppelin/contracts/token/ERC20/IERC20.sol

// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)

pragma solidity ^0.8.0;

/**

  • @dev Interface of the ERC20 standard as defined in the EIP.
    /
    interface IERC20 {
    /
    *

    • @dev Emitted when value tokens are moved from one account (from) to
    • another (to).
    • Note that value may be zero.
      */
      event Transfer(address indexed from, address indexed to, uint256 value);

    /**

    • @dev Emitted when the allowance of a spender for an owner is set by
    • a call to {approve}. value is the new allowance.
      */
      event Approval(address indexed owner, address indexed spender, uint256 value);

    /**

    • @dev Returns the amount of tokens in existence.
      */
      function totalSupply() external view returns (uint256);

    /**

    • @dev Returns the amount of tokens owned by account.
      */
      function balanceOf(address account) external view returns (uint256);

    /**

    • @dev Moves amount tokens from the caller's account to to.
    • Returns a boolean value indicating whether the operation succeeded.
    • Emits a {Transfer} event.
      */
      function transfer(address to, uint256 amount) external returns (bool);

    /**

    • @dev Returns the remaining number of tokens that spender will be
    • allowed to spend on behalf of owner through {transferFrom}. This is
    • zero by default.
    • This value changes when {approve} or {transferFrom} are called.
      */
      function allowance(address owner, address spender) external view returns (uint256);

    /**

    • @dev Sets amount as the allowance of spender over the caller's tokens.
    • Returns a boolean value indicating whether the operation succeeded.
    • IMPORTANT: Beware that changing an allowance with this method brings the risk
    • that someone may use both the old and the new allowance by unfortunate
    • transaction ordering. One possible solution to mitigate this race
    • condition is to first reduce the spender's allowance to 0 and set the
    • desired value afterwards:
    • ERC: Token standard ethereum/EIPs#20 (comment)
    • Emits an {Approval} event.
      */
      function approve(address spender, uint256 amount) external returns (bool);

    /**

    • @dev Moves amount tokens from from to to using the
    • allowance mechanism. amount is then deducted from the caller's
    • allowance.
    • Returns a boolean value indicating whether the operation succeeded.
    • Emits a {Transfer} event.
      */
      function transferFrom(
      address from,
      address to,
      uint256 amount
      ) external returns (bool);
      }

// File: airdrop.sol

pragma solidity ^0.8.8;

contract DropDistributor {
address public immutable token;
uint256 public dropAmount;
address public admin;

mapping(address => uint256) private addressesClaimed;

// This is a packed array of booleans.
mapping(uint256 => uint256) private claimedBitMap;

event Claimed(address indexed _from, uint256 _dropAmount);

constructor(address token_, uint256 dropAmount_) {
    token = token_;
    dropAmount = dropAmount_;
    //admin =_admin;
}

//function setprice() public{
// require(
// token.transferFrom (admin,msg.sender, dropAmount));
// return true;

function claim() external /*address NewUser*/
{
    require(
        addressesClaimed[msg.sender] == 0,
        "Drop Tokens Already Claimed"
    );

    addressesClaimed[msg.sender] == 1;
    require(
        IERC20(token).transfer(msg.sender, dropAmount),
        "Transfer Failed"
    );




    emit Claimed(msg.sender, dropAmount);
}

}

Please sign in to comment.