Skip to main content

Manage FlareDrops

FlareDrops are a series of 36 monthly drops totalling 24.2 billion FLR can be claimed by active Flare community members who have wrapped their Flare tokens. This guide explains how to manage FlareDrop functionality in applications.

Understanding Personal Delegation Accounts (PDAs).

Differences between PDAs and regular accounts:

  • A PDA cannot have another PDA of its own.
  • PDA addresses cannot participate in governance directly, but their owners can transfer all their votes to another address (their main account or someone else's).
  • A PDA automatically converts any FLR tokens transferred to it to wrapped Flare tokens (WFLR), which are more useful for functions such as delegation.
  • Only the owner of the main account can transfer funds from the PDA and only to the main account.
  • When an executor is configured, it will claim rewards both from the main account and the PDA, and send them to the PDA.
Understanding the Registered Claim Process.

Registration allows accounts to list themselves onchain as registered executors and post their service fees. This simplifies the process for both users and executors: users can easily find a suitable executor, and executors benefit from automatic fee transfers when user rewards are claimed. Users pay a fee to set an executor for claiming their rewards, which are then claimed automatically without user intervention. All agreements with a registered executor occur onchain.

Here is how the registered claiming process works, with applications performing these actions on behalf of executors and users:

  1. Executors who want to be publicly available to users register as executors by paying a registration fee, which is then burned.
  2. Registered executors post their fees for claiming rewards.
  3. Users with accrued rewards who want an executor to claim on their behalf can choose from the list of registered executors.
  4. Users pay a setup fee to enable a registered executor to claim their rewards, and this fee is sent to the executor.
  5. Executors claim rewards for one or more users, with their fees automatically deducted from the claimed rewards.
  6. Executors notify users offchain if they discontinue providing this service.

Throughout the process:

  • Users and executors can view reports on which addresses executors are claiming for and which executors are registered.
  • Registered executors can change their fees or unregister, while users can change the registered executor claiming on their behalf or disable automatic claiming.

Contracts

Working with the FlareDrop requires interacting with these contracts:

Basic Claiming

The claim method on DistributionToDelegators allows claiming the FlareDrop one account at a time. It transfers the FlareDrop rewards accrued by account _rewardOwner during the specified _month to the specified _recipient. _wrap controls whether the reward is transferred in native FLR tokens or wrapped in WFLR tokens. You can use getCurrentMonth() to find out the current month (starting at 0), or getClaimableMonths() to get the interval of months which are currently available for claiming.

function claim(
address _rewardOwner,
address _recipient,
uint256 _month,
bool _wrap
) external returns(
uint256 _rewardAmount
);
note

Use getClaimableAmount() or getClaimableAmountOf() to find out if a given address has pending rewards on any given month.

The claim() function returns the amount of claimed rewards. Two modes of operation are supported:

  • Self-Claiming: When msg.sender matches _rewardOwner

    Here, the caller is claiming its own rewards, and the _recipient can be any address.

  • Claiming on behalf of another account: When msg.sender does not match _rewardOwner

    Here, the caller must be a claim executor, claiming on behalf of _rewardOwner. If _msg.sender is not in the authorized list of executors for _rewardOwner, the call will revert. Authorized executors must be set beforehand by _rewardOwner using setClaimExecutors(). The _recipient must either be _rewardOwner, its PDA, or any of the authorized recipients previously set by _rewardOwner using the setAllowedClaimRecipients() on ClaimSetupManager. The call will revert otherwise.

Batched Claiming

The autoClaim() method allows claiming the FlareDrop for an arbitrary amount of accounts in a single call, with convenient default values. It claims the rewards accrued by all the accounts in the _rewardOwners array during the specified _month. If an account does not have an enabled PDA, the rewards are sent to the same account. However, if an account does have an enabled PDA, the rewards are sent to the PDA account. Any rewards accrued by the PDA account are also claimed and sent to the PDA. Rewards claimed with this method are always wrapped.

function autoClaim(
address[] calldata _rewardOwners,
uint256 _month
) external;

If the executor is a registered executor with a nonzero fee, the fee is automatically deducted from each claimed reward and sent to the executor account (unwrapped). If rewards are claimed for both an address and its PDA, the fee is deducted only once.

The call reverts if:

  • msg.sender is not in the authorized list of executors for any of the _rewardOwners.
  • The total claimed rewards for any of the _rewardOwners is not high enough to cover the executor's fee.