Requirements are an important aspect of Genesis Pools, allowing protocols to set specific criteria for staking positions and staking users' profiles. By default, Genesis Pools only accept compatible spZKLABs, which are staking positions from a wrapped LP. However, protocols can set additional requirements to accurately target specific positions or users.
One common requirement is the amount of staked positions. Only positions with at least the required amount can be deposited into the Genesis Pool. The unit taken into account for the amount will be the one of the position's LP.
Another requirement is locks. Protocols can require specific lock settings on staked positions to validate their deposit. For example, a duration requirement may stipulate that the staked position should have a total lock duration of at least x days, while an end time requirement may require that the staked position be locked until at least a specific date.
Protocols can also set up a whitelist to authorize only specific addresses to interact with their Genesis Pools. This mechanism can be used to reward loyal users, distribute targeted compensation, or replace an airdrop.
In cases where the native Genesis contracts do not have specific requirements needed by a protocol, custom requirement contracts can be plugged in. This allows projects to set very specific requirements for staking positions and users, ensuring that only qualified participants can interact with the Genesis Pool.