Strategies
Recipients

Recipients

Recipients are people or groups who can receive funding in a pool. Recipients will need to register with the pool using the Allo.sol registerRecipient() function which will pass the data to the pool strategy to determine eligibility.

Recipient Registration

The details of who is eligible to be a recipient and how they are registered will be determined in the pool strategy, and therefore are highly customizable. Each strategy must contain a registerRecipient function for Allo.sol to call, but additional functions can be created depending on the strategy needs.

It is important to carefully design how the recipient process will work. Some key things to think through when designing recipient eligibility are:

  • What data is needed to determine recipient eligibility and identify the recipient?

  • What are the eligibility requirements, and how will it be determined that they are being met or not?

  • What does the registration process look like?

The examples in the next section show a few different ways of designing the recipient eligibility process.

Recipient Examples

Donation Voting (opens in a new tab)

  • Recipients must provide an address where they can receive funds.
  • If a recipient is registered on the Allo registry, they may choose to use their anchorId as their recipientId.
  • The pool manager can choose to require recipients to be registered on Allo or to have the recipients complete a questionnaire when they register.
  • registerRecipient is used by prospective recipients to submit an application during the application window.
  • If the application meets the eligibility requirements, it will be given a pending status. Otherwise, the application is reverted.
  • The pool manager will manually accept pending applications into the round.
  • Recipients can only register once

Proportional Payout (opens in a new tab)

  • registerRecipient is used only by the pool manager to add or remove recipients.
  • registerRecipient requires 3 parameters: an address to act as a recipientId, offchaing metadata for the project, and a boolean that denotes whether the recipient is being added or removed.

Wrapped Voting (opens in a new tab)

  • Recipients are eligible if they create an NFT using the protocol's factory contract.
  • Recipients do not need to apply. They are added to the pool the first time their NFT is voted for.
  • Recipients are represented by the address of the NFT that was voted for.