Skip to content

Commit 1c7f55f

Browse files
anadi2311aly-obol
andauthored
add page for claiming ETH rewards (#496)
* add page for claiming ETH rewards * replace link and flow images * Hide gov menu (#497) * max feedback * Update obol-splits.mdx --------- Co-authored-by: aly <[email protected]>
1 parent b0918af commit 1c7f55f

File tree

8 files changed

+73
-2
lines changed

8 files changed

+73
-2
lines changed

docs/learn/intro/obol-splits.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ Two key goals of validator reward management are:
1818

1919
Without access to the consensus layer state in the EVM to check a validator's status or balance, and due to the incoming ether being from an irregular state transition, neither of these requirements are easily satisfiable.
2020

21-
The following sections outline different contracts that can be composed to form a solution for one or both goals.
21+
The following sections outline different contracts that can be composed to form a solution for one or both goals. The same contracts are being leveraged to enable claiming rewards via launchpad (read more about it [**here**](run/running/claim-rewards.mdx)).
2222

2323
## Withdrawal Recipients
2424

docs/run/running/claim-rewards.mdx

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
---
2+
sidebar_position: 5
3+
description: Claim rewards from splitter contracts using Launchpad
4+
---
5+
6+
import Tabs from '@theme/Tabs';
7+
import TabItem from '@theme/TabItem';
8+
9+
# Claim Rewards
10+
11+
## Introduction
12+
13+
For every epoch, active validators earn ETH rewards from both the consensus layer and the execution layer. The consensus layer rewards are derived from validator duties such as attestation, proposals, and sync committees. These rewards are accumulated in the validator’s withdrawal address. Execution rewards, which are earned from MEV and transaction priority tips, are accumulated in the fee recipient address.
14+
15+
The method for claiming rewards depends on the Cluster's withdrawal configuration, whether it's an [**OWR**](learn/intro/obol-splits.mdx#optimistic-withdrawal-recipient) or an [**Exitable Withdrawal Configuration**](learn/intro/obol-splits.mdx#exitable-withdrawal-recipient) . The table below outlines the latest details on how and where to claim rewards.
16+
17+
## Claim Status
18+
19+
| **Withdrawal Configuration** | **Subcategory Description** | **Is supported on Launchpad?** | **Where to claim?** |
20+
| --- | --- | --- | --- |
21+
| 1. Claim principal + rewards without splits - Exit and get rewards  | To claim principal or rewards without splits, users currently have to exit the validator. || Cluster details page in the Operator Dashboard. For example, [here](https://holesky.launchpad.obol.org/cluster/details/?lockHash=0x42833298f3c767b866615814dd9f86ce35ed2f89bf3d397d5f353a0ad5a38013). |
22+
| 2. Splits only rewards using OWR - ETH | For all clusters with ETH rewards. || Cluster details page in the Operator Dashboard. For example, [here](https://holesky.launchpad.obol.org/cluster/details/?lockHash=0x42833298f3c767b866615814dd9f86ce35ed2f89bf3d397d5f353a0ad5a38013). |
23+
| 3. Split principal + rewards - ETH | For clusters configured to split both principal and rewards. || Operators currently need to use the UI provided by Splits.org. For example, a [Lido Split](https://app.splits.org/accounts/0x845aF36663a9908D9E46101e3CC658FbCEB783a8/?chainId=1). |
24+
| 4. Splits non-ETH rewards using any withdrawal config - wstETH or weETH | For Lido and EtherFi clusters earning rewards in protocol-specific tokens. | In Progress ➡️ | Operators currently need to use the UI provided by Splits.org. For example, a [Lido Split](https://app.splits.org/accounts/0x845aF36663a9908D9E46101e3CC658FbCEB783a8/?chainId=1). |
25+
| 5. Lido CSM rewards - wstETH | For all Lido CSM clusters earning wstETH rewards. | In Progress ➡️ | Similar to row number 3, use the Splits UI. More details can be found at the bottom of [this page](https://docs.obol.org/run/integrations/lido-csm). |
26+
27+
## Claim Flow
28+
29+
To understand how claims via Launchpad work, it is highly recommended to first understand how splits work. More details are available [**here**](/learn/intro/obol-splits.mdx). The flowchart below summarizes how an operator and a non-operator can interact with split contracts to facilitate claims:
30+
31+
![ClaimFlow](/img/ClaimFlow.png)
32+
33+
1. All validator rewards are accumulated in the validator's withdrawal address, which is a split wallet.
34+
2. Claims can be triggered in two ways:
35+
1. **From addresses in the Splitter**: Splitter addresses will see a `Claim All` button. When the first address (e.g., address A) executes `Claim All`, it triggers a multi-call transaction to distribute rewards from all the split wallets associated with a cluster into the Split Main. The Split Main then sends address A’s proportion of the rewards (based on the split configuration at the time of cluster creation). All of this is executed with a single click for the first address.
36+
2. **From addresses not in the Splitter**: Non-splitter addresses will see a `Distribute All` button instead of `Claim All`. These addresses cannot claim rewards directly but can distribute rewards to the Split Main (subsidizing transaction fees for others). Operators can then claim rewards later by visiting the same cluster details page.
37+
3. Internally, after clicking `Claim All` or `Distribute All`, the split wallet sends the funds to the Split Main contract.
38+
4. The Split Main then sends proportional rewards to **address A**, completing steps 2a, 3, and 4 with a single click.
39+
5. Other addresses (e.g., B, C, D) can later click on `Claim All` to receive their share of the rewards.
40+
41+
## Launchpad Edge Cases
42+
43+
We are constantly improving the user experience. Below are some edge cases to avoid confusion:
44+
45+
### Case 1: The `Claimable` column doesn’t match the amount next to the `Claim All` button.
46+
47+
![ClaimCase1](/img/ClaimCase1.png)
48+
49+
![ClaimCase1Validators](/img/ClaimCase1Validators.png)
50+
51+
In this scenario, someone else (a splitter or non-splitter address) has already distributed rewards to the Split Main (e.g., 0.12 ETH). However, your validators (4 in this case) have earned an additional 0.2 ETH in rewards. Your total effective claimable balance is 0.032 ETH, which you can claim using the `Claim All` button.
52+
53+
:::info
54+
Your total effective claimable amount will always be displayed next to the `Claim All` button.
55+
:::
56+
57+
### Case 2: You don’t see a `Claim All` button but instead see `Distribute All`.
58+
59+
![ClaimCase2](/img/ClaimCase2.png)
60+
61+
This happens because the connected address is not listed in the split configuration. You may have used a different operator address from the one in the splitter configuration. You can:
62+
- Distribute all rewards using the connected address for all operators and claim using your address in the splitter configuration.
63+
- Switch to the splitter address and claim directly.
64+
65+
Note: It costs the same gas to distribute rewards for one address as it does for all addresses.
66+
67+
### Case 3: You just created a new cluster with no active validators or rewards, but it shows a `Claim All` amount.
68+
69+
![ClaimCase3](/img/ClaimCase3.png)
70+
71+
The amount shown here is from a previous case and is now sitting in the Split Main, ready to be claimed. Unfortunately, it is not possible to associate the Split Main balance of an address with a specific cluster. If you are part of multiple clusters, your Split Main balance will appear next to all `Claim All` buttons, regardless of the cluster. We are working on a fix to avoid this confusion.

docs/run/running/monitoring.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ When alerts are triggered, they are routed to contact points according notificat
4545
![AlertsContactPoint](/img/AlertsContactPoint.png)
4646

4747
3. Give a descriptive name to the alert. Create a channel in Discord and copy its `webhook url`. Once done, click `Save contact point` to finish.
48-
4. When the alerts are fired, it will send without filling in the variables for cluster detail. For example, `cluster_hash` variable is missing here `cluster_hash = {{.cluster_hash}}`. This is done to save disk space. To find the details, use `docker compose -f docker-compose.yml -f compose-debug.yml up`. More description [here](https://docs.obol.tech/docs/advanced/adv-docker-configs).
48+
4. When the alerts are fired, it will send without filling in the variables for cluster detail. For example, `cluster_hash` variable is missing here `cluster_hash = {{.cluster_hash}}`. This is done to save disk space. To find the details, use `docker compose -f docker-compose.yml -f compose-debug.yml up`. More description [**here**](/adv/advanced/adv-docker-configs.md) .
4949

5050
## Best Practices for Monitoring Charon Nodes & Cluster
5151

static/img/ClaimCase1.png

60.4 KB
Loading
53 KB
Loading

static/img/ClaimCase2.png

99.6 KB
Loading

static/img/ClaimCase3.png

136 KB
Loading

static/img/ClaimFlow.png

770 KB
Loading

0 commit comments

Comments
 (0)