A vital feature of all Power Index pools is using underlying tokens for voting and staking across various DeFi protocols to receive rewards.
We distinguish the following types of protocols (and their tokens) by the method of voting and receiving rewards:
protocols that do not require the transfer of tokens to a special contract for voting and receiving rewards (e.g., COMP, UNI);
protocols that require the transfer of tokens to a special smart contract for voting and receiving rewards (e.g., YFI, MKR);
protocols that allow voting without transferring tokens to a special smart contract but make it possible to lock tokens in the contract and receive additional rewards (e.g., AAVE, SUSHI).
For "Type 1" we use "Direct voting scheme". In this case,
Power Pool Governance calls the
callVotingByPool(), which calls the
For "Type 2" and "Type 3" we use "Wrapper scheme". In this case,
PowerIndexPoolController.sol wraps the underlying token to
WrappedPiErc20.sol and transfers
WrappedPiErc20.sol tokens to the pool.
WrappedPiErc20.sol contract stakes the underlying tokens into the corresponding protocol contract (e.g., Aave Safety Module, Sushibar, etc.).