Configure the campaign
Fill in the campaign details:
- Title: public campaign name
- Token: BCH or a CashToken (requires the 32-byte
tokenCategoryhex) - Total amount: full pool to distribute
- Amount per claim: how much each wallet receives per claim
- Max claims per address: defaults to 1
- Start / End dates: optional claim window
- KYC restricted: enable to require a recipient whitelist
Generate merkle tree (KYC only)
If KYC is enabled, upload a CSV with
address,amount rows. The app calls POST /api/airdrops/:id/generate-merkle and stores merkle data in backend campaign state for eligibility checks during claim build.Fund the contract
Click Fund. The app calls
GET /api/airdrops/:id/funding-info to build the funding wcTransaction. Sign in your wallet.Confirm funding
After your wallet broadcasts, the app calls
POST /api/airdrops/:id/confirm-funding. Once the on-chain output is verified, the campaign status changes to ACTIVE.Airdrop Lifecycle
COMPLETED when all tokens are claimed. It moves to CANCELLED when the creator cancels and withdraws remaining funds.
Current KYC enforcement is handled by backend claim validation (merkle proof checks before tx build), not by a merkle root field enforced inside
AirdropCovenant bytecode.
