Blocks / module / rewards
Composite weight
v1Combine several weight sources into one multiplier.
One of the rails: a block you deploy as your own copy in one transaction, with the fee and caps shown first.
What it does
composite-weight v1: combine weight sources
A weight plugin for `staking-vault` that combines up to four other plugins:
| mode | result | |---|---| | 0 MAX | the best single reading ("diamond hands **or** questers") | | 1 SUM_BONUSES | 1.00x + every source's bonus over 1.00x | | 2 PRODUCT | the readings multiplied together |
Each source reading is clamped to [1.00x, 5.00x]. The combined result is clamped to [1.00x, `clampBps`], and the vault's own ceiling still applies.
- Each source is read with its own 32k gas budget (4 × 32k fits inside the vault's 150k plugin budget). A source that reverts, returns garbage or runs out of gas counts as 1.00x. `multiplierBpsOf` never reverts. - `_onInit` stores source addresses only and never calls them. In a recipe they may be predicted siblings. - `refresh(vault, ids)` forwards to a vault's permissionless `syncMany`.
**Roles:** the owner can only pause `refresh` and hand over ownership. **Locked:** `sources`, `mode`, `clampBps`. **Value flows / fee lanes:** none.
What if…
- **…one source breaks?** It counts as 1.00x and the others still count. - **…two sources both give a bonus?** MAX takes the best, SUM_BONUSES adds them, PRODUCT multiplies them. All are capped. - **…my multiplier went up but my share did not?** The vault adopts it on sync. Refresh, and it applies from then on.
Risks in plain English
- Sources, mode and ceiling are fixed at deploy.
- A source that breaks counts as 1.00x, never more.
- PRODUCT compounds quickly; the ceiling (and the vault's own ceiling) is what bounds it.
What if…
- What if one source stops working?
- It is read with its own gas budget and counts as 1.00x; the others still count.
- What if two sources both give a bonus?
- MAX takes the best one, SUM_BONUSES adds them, PRODUCT multiplies them. All are capped by the ceiling.
- What if my multiplier went up but my share did not?
- The vault adopts new multipliers when it is synced. Use refresh (or the vault's sync) and it applies from then on.
Fees
No protocol fee on this module.
Evidence
- Form check
- Verified against the evidence hash
- Implementation
- 0xd9c1eA604151aFdeAfaA5058A407F2321B5F96da
- Code hash
- 0x6a823a043fadf56e895bf9d48bb9d8aafd92dd9ae5c1a8bd54e6414a03258f07
- Evidence bundle
- 0xfc485e093d3d75f960a3013f030aeabf9c5200a4d507f12641d6db214f4a31bc
Settings you choose at deploy
- Weight sourcesUp to 4 weight plugins (duration, task, ...). Can never change.Locked forever
- How to combineLocked forever
- Highest combined multiplierLocked forever