Skip to main content
Claimdrop Contract V2 distributes tokens to a list of addresses using batch uploaded allocations (rather than Merkle proofs), and introduces an authorized wallet (allowlist) model for admin actions.
This page is adapted from the legacy GitBook source: _tmp_gitbook/mantra-smart-contracts/claimdrop_contract_v2.md.

Features

  • Batch upload allocations (only before campaign starts)
  • Lump sum and/or linear vesting distribution (both can be used simultaneously)
  • One campaign per contract
  • Owner-only campaign creation
  • Anyone can top up campaign by sending funds (via BankMsg)
  • Owner can close campaign at any time before it ends (refunds remaining tokens)
  • Single claim entry per address
  • Address replacement and removal in allocation registry
  • Blacklist addresses (cannot claim)
  • Authorized wallet management (allowlist)
  • Partial claims supported

How it works

  • Each contract hosts a single campaign.
  • The owner (and authorized wallets) can perform admin actions like creating/closing campaigns, managing allocations, and blacklisting.
  • The owner is the only actor that can manage the allowlist itself.

Instantiate (example)

If you create a campaign during instantiation, the total_reward must be provided with the instantiation transaction.

ExecuteMsg (high-level)

  • ManageCampaign (create / close)
  • Claim
  • AddAllocations
  • ReplaceAddress
  • RemoveAddress
  • BlacklistAddress
  • ManageAuthorizedWallets
  • UpdateOwnership (cw_ownable)

Claim (example)

AddAllocations (example)

QueryMsg (high-level)

  • Campaign
  • Rewards
  • Claimed
  • Allocations
  • IsBlacklisted
  • IsAuthorized
  • AuthorizedWallets
  • Ownership (cw_ownable)

Deployments

See:
  • resources/contracts/mainnet
  • resources/contracts/testnet