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
+
+ 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?}}
+ other address)"))
+ SurrogateFork{{"Was a surrogate contract previously
+ deployed for this delegate?"}}
```
The UniStaker contract diverges from `StakingRewards.sol` in several ways: