Airdrop

The airdrop module manages the permissioned distribution of ERC-20 tokens using an on-chain contract. The main contract, InceptionAirdrop.sol, handles eligibility verification, claiming, and tracking of distributed amounts.

The module includes its own ERC-20 mock tokens for testing purposes and supports upgradable deployments via OpenZeppelin proxies.

Components

1. InceptionAirdrop.sol

  • Core contract for processing token claims.

  • Likely includes a Merkle proof-based eligibility verification system or an internal mapping of claimable balances.

  • Handles validation, token transfers, and claimed state tracking.

2. IInceptionAirdrop.sol

  • Interface defining the functions exposed by the main airdrop contract.

  • Enables integration with other contracts or frontend applications.

3. MockErc20Token.sol / Token.sol

  • Simple ERC-20 implementations used for testing.

  • These are not production contracts.

4. Hardhat Setup

  • Hardhat config (hardhat.config.ts) and scripts automate deployment.

  • Uses .env_example for environment configuration.

5. Deployment Metadata

  • .openzeppelin/mainnet.json tracks upgradeable deployment data.

Flow Overview

  1. A Merkle root or claim mapping is initialized with eligible addresses and claimable amounts.

  2. A user calls the claim() function, passing the required proof (if applicable).

  3. The contract validates eligibility and transfers the corresponding ERC-20 amount.

  4. The contract marks the user as claimed to prevent re-claims.

Smart Contract Highlights

Contract

Role

InceptionAirdrop.sol

Airdrop logic and eligibility checks

IInceptionAirdrop.sol

Interface for external interaction

MockErc20Token.sol, Token.sol

Mock tokens used in test environment

Notes

  • Intended for token distributions controlled by Inception (e.g., Totem airdrops).

  • Implementation details (e.g., Merkle root vs mapping) can be confirmed by inspecting the contract directly.

  • Tests and scripts are provided but require environment setup via .env.


Last updated