Skip to content

Commit 770562a

Browse files
committed
Merge remote-tracking branch 'origin/master' into nicka/oz-audit-fixes-oeth-withdrawal-queue
2 parents 59df7d0 + fa077cd commit 770562a

File tree

8 files changed

+249
-15
lines changed

8 files changed

+249
-15
lines changed
Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
@startuml
2+
3+
title "Current Curve Incentives Flows"
4+
5+
actor "Treasury" as treasury <<Origin>>
6+
participant "Vote Maket" as vm
7+
participant "Rewards" as cr <<Curve>>
8+
participant "Gauge" as cg <<Curve>>
9+
participant "Pool" as cp <<Convex>>
10+
participant "AMO Strategy" as strat <<Origin>>
11+
participant "Harvester" as harv <<Origin>>
12+
participant "Swapper" as swap <<Origin>>
13+
participant "Dripper" as drip <<Origin>>
14+
participant "OETH Vault" as vault <<Origin>>
15+
actor "Voters" as voters
16+
actor "Staked DAO" as sd
17+
actor "Convex" as cvx
18+
19+
treasury -> vm: $19.3k OGN
20+
note left : bribe
21+
vm -> voters: $17k OGN
22+
note left: claim
23+
24+
vm -> sd : 1.7k OGN
25+
note left: 10% fee
26+
27+
voters -> treasury: $5k OGN
28+
note right: treasury portion
29+
30+
cr -> cg : $22.6k CRV
31+
note left: rewards
32+
33+
cg -> cp : $22.6k CRV
34+
note left: rewards
35+
36+
cp -> cvx : $3.955 CRV
37+
note left: 17.5% fee
38+
39+
cp -> strat: $16.8k CRV
40+
note left: collect
41+
42+
strat -> harv: $16.8k CRV
43+
note left: harvest
44+
harv -> swap: $16.8k CRV
45+
note left: swap
46+
swap -> harv: $16.8k WETH
47+
harv -> drip: $16.8k WETH
48+
drip -> vault: $16.8k WETH
49+
note left: stream over 7 days
50+
51+
' title "Directly fund the Dripper"
52+
53+
' actor "Treasury" as treasury <<Origin>>
54+
' participant "Rewards" as cr <<Curve>>
55+
' participant "Gauge" as cg <<Curve>>
56+
' participant "Pool" as cp <<Convex>>
57+
' participant "AMO Strategy" as strat <<Origin>>
58+
' participant "Harvester" as harv <<Origin>>
59+
' participant "Swapper" as swap <<Origin>>
60+
' participant "Dripper" as drip <<Origin>>
61+
' participant "OETH Vault" as vault <<Origin>>
62+
' actor "Convex" as cvx
63+
64+
' treasury -> drip: $19.3k WETH
65+
66+
' cr -> cg : $5.5k CRV
67+
' note left: Curve rewards from\nTreasury's locked CVX
68+
69+
' cg -> cp : $5.5k CRV
70+
' note left: rewards
71+
72+
' cp -> cvx : $0.96k CRV
73+
' note left: 17.5% fee
74+
75+
' cp -> strat: $4.5k CRV
76+
' note left: collect
77+
78+
' strat -> harv: $4.5k CRV
79+
' note left: harvest
80+
' harv -> swap: $4.5k CRV
81+
' note left: swap
82+
' swap -> harv: $4.5k WETH
83+
' harv -> drip: $4.5k WETH
84+
' drip -> vault: $4.5k WETH
85+
' note left: stream over 7 days
86+
87+
@enduml
66.6 KB
Loading
133 KB
Loading
Lines changed: 126 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,126 @@
1+
@startuml
2+
3+
title "SuperOETH Flow of Value"
4+
5+
actor "User" as user
6+
7+
box Base
8+
participant "Strategist" as strategist <<Origin>> #DeepSkyBlue
9+
participant "Zapper" as zap <<Origin>> #DeepSkyBlue
10+
participant "Super OETH\nVault" as vault <<Origin>> #DeepSkyBlue
11+
participant "Bridged WOETH\nStrategy" as woethStrat <<Origin>> #DeepSkyBlue
12+
13+
participant "Bridged\nWrapped ETH" as weth <<WETH>>
14+
participant "Harvester" as harv <<Origin>> #DeepSkyBlue
15+
participant "Dripper" as drip <<Origin>> #DeepSkyBlue
16+
17+
participant "SuperOETH /\nWETH" as aeroPool <<Aerodrome>>
18+
end box
19+
20+
box Mainnet
21+
participant "Strategist" as mainStrategist <<Origin>> #DeepSkyBlue
22+
participant "OETH\nVault" as mainVault <<Origin>> #DeepSkyBlue
23+
participant "Wrapper OETH" as woeth <<Origin>><<OWETH>> #DeepSkyBlue
24+
end box
25+
26+
' Deposit ETH via Zapper
27+
group User deposit ETH [> 10 OETH]
28+
user -> zap : ETH
29+
note left : ETH in user tx
30+
31+
zap -> weth : ETH
32+
note left : swap ETH for WETH
33+
weth o-> zap : WETH
34+
35+
' vault o-> strategist : SuperOETH
36+
' note left : 20% performance\nfee from rebase
37+
38+
zap -> vault : WETH
39+
note left : mint SuperOETH
40+
41+
vault o-> user : SuperOETH
42+
note right : SuperOETH matches ETH
43+
end
44+
45+
' Mint
46+
group User mint
47+
' vault o-> strategist : OETH
48+
' note left : 20% performance\nfee from rebase
49+
50+
user -> vault : WETH
51+
note left : mint SuperOETH
52+
vault o-> user : SuperOETH
53+
note right : SuperOETH matches WETH
54+
end
55+
56+
' Redeem
57+
group User redeem SuperOETH
58+
' vault o-> strategist : SuperOETH
59+
' note left : 20% performance\nfee from rebase
60+
61+
user -x vault : SuperOETH
62+
note left : burn User's SuperOETH
63+
64+
vault -> user : WETH
65+
' note right : 0.1% fee applied to redeemed assets.\nThis adds to the yield in the next rebase.
66+
end
67+
68+
' Withdraw
69+
group User withdrawal of SuperOETH
70+
' vault o-> strategist : SuperOETH
71+
' note left : 20% performance\nfee from rebase
72+
73+
user -x vault : SuperOETH
74+
note left : user requests withdrawal
75+
76+
... 10 minute minimum ...
77+
78+
vault -> user : WETH
79+
note left : user claims WETH
80+
end
81+
82+
83+
group Strategist moves WETH to Mainnet
84+
85+
strategist -> mainStrategist : WETH
86+
note left : Bridge WETH to Mainnet
87+
88+
mainStrategist -> mainVault : WETH
89+
note left : mint OETH using WETH
90+
mainVault o-> mainStrategist : OETH
91+
92+
mainStrategist -> woeth : OETH
93+
note left : deposit OETH into Wrapper
94+
woeth o-> mainStrategist : WOETH
95+
96+
mainStrategist -> strategist : WOETH
97+
note left : bridge WOETH to\nBase using CCIP
98+
99+
strategist -> woethStrat : WOETH
100+
note left : deposit bridged WOETH
101+
woethStrat o-> strategist : SuperOETH
102+
103+
alt redeem from vault
104+
strategist ->x vault : SuperOETH
105+
note left : redeem
106+
vault -> strategist : WETH
107+
else swap using Aero pool
108+
strategist -> aeroPool : SuperOETH
109+
note left : swap SuperOETH for WETH\nusing Aerodrome Pool
110+
aeroPool -> strategist : WETH
111+
end
112+
end
113+
114+
' Collect and Rebase
115+
group Collect and Rebase
116+
117+
drip -> vault : WETH
118+
note left : stream harvested WETH\nto Vault over 14 days
119+
120+
group Rebase [increase in underlying assets]
121+
vault o-> vault : SuperOETH
122+
note left : 100% of value\nto SuperOETH holders
123+
end
124+
end
125+
126+
@enduml
47.8 KB
Loading
20.5 KB
Loading
2.73 KB
Loading

contracts/docs/plantuml/oethProcesses.puml

Lines changed: 36 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,16 @@ actor "Anyone" as sender
99
actor "Block\nBuilder\n(MEV)" as mev
1010
actor "Registrator\n(Relayer)" as reg <<Origin>>
1111
actor "Admin\n(5/8 Safe)" as admin <<Origin>>
12-
actor "Strategist\n(2/9 Safe)" as strategist <<Origin>>
12+
actor "Strategist\n(2/8 Safe)" as strategist <<Origin>>
1313
actor "Governor\n(Timelock)" as gov <<Origin>>
1414
actor "Treasury" as treasury <<Origin>>
1515
participant "API" as api <<P2P>>
1616
actor "Operators" as ssvOp <<SSV>>
1717

1818
box "Execution Chain"
1919
participant "Harvester" as harv <<Origin>>
20+
participant "Dripper" as drip <<Origin>>
21+
participant "Vault" as vault <<Origin>>
2022
participant "Native\nStaking SSV\nStrategy" as nativeStrat <<Origin>>
2123
participant "Fee\nAccumulator" as feeAccum <<Origin>>
2224
participant "SSV Network" as ssvNet <<SSV>>
@@ -173,7 +175,7 @@ end group
173175

174176
group Registrator deposits more SSV to SSV cluster
175177

176-
treasury -> ssv : transfer(\nto\namount)
178+
strategist -> ssv : transfer(\nto\namount)
177179
activate ssv
178180
note right : transfer SSV tokens\nfrom Treasury\nto Native Staking Strategy
179181
return
@@ -195,7 +197,7 @@ cluster data:
195197
end note
196198
end group
197199

198-
reg -> nativeStrat : depositSSV(\noperatorIds,\namount,\ncluster)
200+
strategist -> nativeStrat : depositSSV(\noperatorIds,\namount,\ncluster)
199201
activate nativeStrat
200202
nativeStrat -> ssvNet : deposit(\nclusterOwner,\noperatorIds,\namount,\ncluster)
201203
activate ssvNet
@@ -263,6 +265,18 @@ note over nativeStrat : Native Staking Strategy's\nWETH balance does not change
263265

264266
end group
265267

268+
group Execution Rewards
269+
270+
mev -> feeAccum : ETH
271+
note right : MEV rewards
272+
273+
sender -> nativeStrat : ETH
274+
note right : tx priority fees
275+
276+
note over nativeStrat : Native Staking Strategy's WETH balance\ndoes not change from either
277+
278+
end group
279+
266280
group Registrator does accounting of consensus rewards and validator withdrawals
267281

268282
reg -> nativeStrat : doAccounting()
@@ -292,18 +306,6 @@ return accounting valid flag
292306

293307
end group
294308

295-
group Execution Rewards
296-
297-
mev -> feeAccum : ETH
298-
note right : MEV rewards
299-
300-
sender -> nativeStrat : ETH
301-
note right : tx priority fees
302-
303-
note over nativeStrat : Native Staking Strategy's WETH balance\ndoes not change from either
304-
305-
end group
306-
307309
group Harvester collects ETH rewards
308310

309311
sender -> harv : harvestAndSwap(\nstrtaegy)
@@ -336,6 +338,25 @@ return
336338

337339
end group
338340

341+
group Collect and rebase
342+
343+
sender -> drip : collectAndRebase()
344+
activate drip
345+
346+
drip -> weth : transfer(\nvault,\nstreamed ETH)
347+
note left : Stream ETH from last collect to now
348+
activate weth
349+
note over drip : Recalculate 7 day drip rate\nbased on WETH balance
350+
return
351+
352+
drip -> vault : rebase()
353+
activate vault
354+
return
355+
356+
return
357+
358+
end group
359+
339360
group Strategist pauses Native Staking Strategy
340361

341362
strategist -> nativeStrat : pause()

0 commit comments

Comments
 (0)