# PFLYFlywheelActivationAirdrop Review Notes This is a scoped internal review note, not a formal third-party audit. ## Purpose `PFLYFlywheelActivationAirdrop` combines: - `1,050,000 pFLY` for pMINT holders - `630,000 pFLY` for pDAI holders The base Merkle allocation is `1,680,000 pFLY`. If the activation bonus pool is fully enabled, the contract can pay up to `3,360,000 pFLY`, capped at `200%` of each wallet's original allocation. ## Mainnet Token Pins On PulseChain mainnet, the constructor rejects the wrong holder tokens: - pMINT: `0xFf640cBd35A618Df1348D861B5e47f7eaB05b422` - pDAI: `0x6B175474E89094C44Da98b954EedeAC495271d0F` This protects against deploying the holder-drop contract with the wrong pDAI route. ## Security Controls - Merkle proofs prevent users from claiming allocations outside the published snapshot. - Leaf encoding includes source ID, wallet, snapshot balance, and allocation. - pMINT and pDAI sources have independent allocation caps. - Wallet-only claim pays exactly `100%` and blocks activation bonuses. - Activation claim starts at `25%` and can unlock up to `200%`. - Double initialization is blocked per wallet per source. - `ReentrancyGuard`, `Pausable`, and `Ownable` are used. - Generic token recovery cannot recover pFLY. - pFLY recovery only allows excess above the protected max payout. - Expired remaining pFLY splits `50%` burn and `50%` staking reserve. - LP activation pairs must contain pFLY and the exact expected partner token. - Optional LP factory validation can require the configured pair to be the PulseX factory pair. - LP activation requires verified pFLY backing above `minimumActivationPflyBps`. ## Abuse Notes Unknown multi-wallet ownership cannot be solved on-chain. The contract prevents double claims for the same wallet and source. Known linked-wallet handling belongs in the public snapshot cluster files before the Merkle root is generated. LP and farm activation verify current on-chain LP ownership or farm balance at activation time. Users can later withdraw LP from the farm because the farm intentionally preserves LP-provider exit safety. Treat the activation bonus as an adoption incentive, not as a permanent LP lock guarantee. ## Gas Notes - Merkle verification is `O(log n)` by proof length. - The contract avoids storing Merkle leaves and stores only initialized claim state. - Activation checks read external staking, pair, and farm state only when the user requests a bonus path. - Hardhat optimizer is enabled with `runs: 200`; compiled bytecode is below the contract-size limit. ## Required Mainnet Proofs Before public mainnet hype: - Deployed pFLY token address - pFLY/pDAI LP add transaction and LP burn proof - pFLY/pMINT LP add transaction and LP burn proof - Staking V3 funding transaction - Recycle farm funding transaction - pDAI Stability Drip funding transaction, if advertised - Activation airdrop deployed address and funding transaction - Combined activation snapshot JSON - pMINT and pDAI excluded-wallet lists - Public Sybil cluster files - pDAI pioneers wallet and plan - Marketing/growth wallet and plan - External audit status