The following changes have been proposed to enhance the use of polymorphism within the strategies:
QVImpactStreamStrategy Inheritance:
Curent State: QVImpactStreamStrategy currently inherits from BaseStrategy and doesnt follow the same design as the rest QV strategies, leading into duplicate code and more complexity.
Proposal: RefactorQVImpactStreamStrategy to inherit QVBaseStrategy.
Abstract DonationVotingStrategy:
Current State: The DonationVoting category lacks a clear abstract base strategy, leading to potential code duplication and inconsistent implementation across various DonationVoting strategies.
Proposal:
Introduce an abstract DonationVotingBaseStrategy to serve as a template for other DonationVoting contracts, standardizing recipient handling and allocation procedures.
Refactor DonationVotingStrategy into DonationVotingSimpleStrategy, which inherits from DonationVotingBaseStrategy.
Refactor DonationVotingMerkleDistributionBaseStrategy to also inherit from DonationVotingBaseStrategy.
Strategies Structure
Current State
Currently, the project's strategies are scattered across different folders, including /strategies and /strategies/_poc. This arrangement can lead to difficulties in locating specific strategies and maintaining a cohesive structure.
Proposed Organization
To enhance clarity and organization, we propose grouping strategies into distinct folders based on their functionalities:
Current Inheritance Structure
Proposed Changes
The following changes have been proposed to enhance the use of polymorphism within the strategies:
QVImpactStreamStrategy
currently inherits fromBaseStrategy
and doesnt follow the same design as the rest QV strategies, leading into duplicate code and more complexity.QVImpactStreamStrategy
to inheritQVBaseStrategy
.Abstract DonationVotingStrategy:
DonationVotingBaseStrategy
to serve as a template for other DonationVoting contracts, standardizing recipient handling and allocation procedures.DonationVotingStrategy
intoDonationVotingSimpleStrategy
, which inherits fromDonationVotingBaseStrategy
.DonationVotingMerkleDistributionBaseStrategy
to also inherit fromDonationVotingBaseStrategy
.Strategies Structure
Current State
Currently, the project's strategies are scattered across different folders, including
/strategies
and/strategies/_poc
. This arrangement can lead to difficulties in locating specific strategies and maintaining a cohesive structure.Proposed Organization
To enhance clarity and organization, we propose grouping strategies into distinct folders based on their functionalities:
RFP Strategies (Request for Proposal)
QV Strategies (Quadratic Voting)
DonationVoting
MicroGrants
Standalone Strategies
Removal of _poc ?
We can remove the _poc folder entirely and make sure we specify into the spec/readme that the strategies are not audited.