Incentive Locker
Overview
The IncentiveLocker holds the incentives paid out by the IP and connects to various ActionVerifiers to set up markets and validate claim requests before paying out incentives
Creating an Incentive Campaign
Creating an Incentive Campaign is done by first choosing an ActionVerifier, the smart contract module that you want to determine user reward payouts, and an actionParams value, which is arbitrary data which is used as initialization params for the ActionVerifier. ActionParams can take any format and are defined by the ActionVerifier. Next call the createIncentiveCampaign function, with the incentive token or points addresses, and the amounts of each reward to be distributed over the campaign.
Managing Co-IPs
The IP who creates an Incentive Campaign can opt to whitelist other addresses to add incentives to the campaign.
Note: Incentives Added by Co-IPs can only be removed by the primary IP
Note: Incentives Added by Co-IPs are subject to the same multipliers that the primary IP fills on the multiplier orderbook. If the Co-IP does not wish for this behavior, they should opt to create their own incentive campaign. Once incentives are added as a Co-IP, they belong to the primary IP to distribute or remove.
Managing Additional Incentives
Increasing incentive amounts, as well as adding new incentive tokens or points programs, can be done by the primary IP, or by any Co-IP which has been whitelisted by the primary IP to do so.
Decreasing incentive amounts, and returning them to an address, can only be done by the primary IP, so if a Co-IP wishes for their funds to be refunded they must request the primary IP to do so.
Increasing or decreasing incentives calls a hook in the Action Verifier. Certain Action Verifiers may disable adding or removing incentives in certain scenarios. For example, in the UMA Merkle Chef Action Verifier
Claiming Incentives
Before paying out rewards from an incentive campaign, the Incentive Locker calls the processClaim function on the ActionVerifier. This processClaim function is responsible for validating the claimant's request and determining the amount of incentives they are owed. Arbitrary ClaimParams are passed to the ActionVerifier when calling processClaim, which
Fees
Different modules can be connected to each campaign on the IncentiveLocker to achieve different fee structures. Campaigns default to whatever the current default module is set to, but can be updated by a permissioned address in the Incentive Locker.
Last updated