diff --git a/README.md b/README.md index f1d4452..3af50f9 100644 --- a/README.md +++ b/README.md @@ -33,12 +33,12 @@ The system consists of two core contracts which are designed to be deployed into ```mermaid flowchart TD - A[Uniswap Governance] -->| + A[Uniswap Governance] -->|" Can set fees on specific pools - fa:fa-ban Can not collect fees - fa:fa-ban Can not transfer ownership - | A1[V3FactoryOwner]:::new + Can not collect fees + Can not transfer ownership + "| A1[V3FactoryOwner]:::new A1 --> B["`Uniswap V3 Factory`"] B --> C[(Pool 1)] B --> D[(Pool 2)] @@ -46,16 +46,16 @@ flowchart TD style E fill:transparent,stroke:transparent,stroke-width:4px classDef new stroke:#F7F,padding:10px,stroke-width:3px,line-height:3.5,font-weight:bold B --> F[(Pool N)] - B ..-> |
Collect fees on fee-enabled pools via
V3FactoryOwner.claimFees
|A1 - A1 ..-> |
Rewards immediately deposited into UniStaker|GG[UniStaker]:::new - G((UNI holders)) --> | -
Delegate and stake UNI to + B ..-> |"
Collect fees on fee-enabled pools via
V3FactoryOwner.claimFees
"|A1 + A1 ..-> |"
Rewards immediately deposited into UniStaker
"|GG[UniStaker]:::new + G((UNI holders)) --> |" +
Delegate and stake UNI to earn rewards from fee-enabled pools
- |GG + "|GG G ---> |Vote on governance proposals|A - M((MEV searcher)) <..-> |
Collect fees by sending WETH - to be used as rewards|A1 + M((MEV searcher)) <..-> |"
Collect fees by sending WETH + to be used as rewards
"|A1 ``` ### `V3FactoryOwner` @@ -72,18 +72,20 @@ The mechanics of the [`UniStaker`](src/UniStaker.sol) contract are heavily inspi ```mermaid flowchart LR - A[UniStaker] --> |Hold deposit tokens and - delegate on behalf of depositor|SurrogateFork - SurrogateFork --> |Yes|Surrogate[Surrogate contract for delegate - (Holds stake deposits, delegates to delegate address)] - SurrogateFork --> |No, deploy new surrogate|Surrogate - A1((UNI holder)) --> |Stake UNI - Withdraw UNI|A - A .-> |Earns rewards|B((Beneficiary - (original holder or - other address))) - SurrogateFork{{Was a surrogate contract previously - deployed for this delegate?}} + + A[UniStaker] --> |"Hold deposit tokens and + delegate on behalf of depositor"|SurrogateFork + SurrogateFork --> |Yes|Surrogate["Surrogate contract for delegate + (Holds stake deposits, delegates + to delegate address)"] + SurrogateFork --> |"No, deploy new surrogate"|Surrogate + A1((UNI holder)) --> |"Stake UNI + Withdraw UNI"|A + A .-> |Earns rewards|B(("Beneficiary + (original holder or + other address)")) + SurrogateFork{{"Was a surrogate contract previously + deployed for this delegate?"}} ``` The UniStaker contract diverges from `StakingRewards.sol` in several ways: