Skip to content

Commit c22cc3f

Browse files
committed
rename skill
1 parent 90c156f commit c22cc3f

16 files changed

Lines changed: 32 additions & 28 deletions
Lines changed: 32 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
name: obol-ovm
2+
name: deploy-obol-ovm
33
description: |
44
Manage Obol Validator Manager (OVM) smart contracts on Ethereum. Use this skill for any OVM operation: querying contract state, deploying new OVMs, managing roles (grant/revoke), distributing funds, setting beneficiaries or reward recipients, and requesting validator withdrawals. Trigger this skill whenever the user mentions OVM, Obol Validator Manager, validator management, distributed validators, or wants to interact with OVM contracts on mainnet/hoodi/sepolia.
55
---
@@ -8,6 +8,8 @@ description: |
88

99
This skill provides scripts and knowledge to manage OVM contracts on Ethereum. OVM contracts manage distributed validators — handling ETH deposits, withdrawals (EIP-7002), consolidations (EIP-7251), and fund distribution to principal and reward recipients.
1010

11+
OVM is the **current-generation** Obol smart-contract family and the default choice for new deployments. For legacy deployments using the older OptimisticWithdrawalRecipient (OWR) + 0xSplits pattern, see the `deploy-obol-splits-legacy` skill instead.
12+
1113
## Prerequisites
1214

1315
- **Foundry (`cast`)** must be installed and on PATH
@@ -30,35 +32,35 @@ For write operations, always confirm with the user that `PRIVATE_KEY` is set. Ne
3032

3133
## Scripts
3234

33-
All scripts are in `.claude/skills/obol-ovm/scripts/`. Every script accepts an optional network argument (defaults to `mainnet`). Supported networks: `mainnet`, `hoodi`, `sepolia`.
35+
All scripts are in `.claude/skills/deploy-obol-ovm/scripts/`. Every script accepts an optional network argument (defaults to `mainnet`). Supported networks: `mainnet`, `hoodi`, `sepolia`.
3436

3537
Override the default RPC by setting `RPC_URL` env var.
3638

3739
### Verify an Address is an OVM
3840

3941
Before performing write operations on an address, verify it was deployed by the factory:
4042
```bash
41-
.claude/skills/obol-ovm/scripts/check-is-ovm.sh <address> [network]
43+
.claude/skills/deploy-obol-ovm/scripts/check-is-ovm.sh <address> [network]
4244
```
4345
Queries `CreateObolValidatorManager` event logs from the factory. Exits 0 if the address is an OVM, exits 1 if not. Run this before grant-roles, revoke-roles, distribute, set-beneficiary, set-reward-recipient, or withdraw to catch mistakes early.
4446

4547
### Read Operations (no key needed)
4648

4749
**Query OVM state:**
4850
```bash
49-
.claude/skills/obol-ovm/scripts/query-ovm.sh <ovm_address> [network]
51+
.claude/skills/deploy-obol-ovm/scripts/query-ovm.sh <ovm_address> [network]
5052
```
5153
Returns owner, principal/reward recipients, threshold, balances, version.
5254

5355
**Query roles for an address:**
5456
```bash
55-
.claude/skills/obol-ovm/scripts/query-roles.sh <ovm_address> <target_address> [network]
57+
.claude/skills/deploy-obol-ovm/scripts/query-roles.sh <ovm_address> <target_address> [network]
5658
```
5759
Returns the decoded role bitmask showing which roles the target has.
5860

5961
**Query EIP-7002/7251 system contract fees:**
6062
```bash
61-
.claude/skills/obol-ovm/scripts/query-fees.sh [network]
63+
.claude/skills/deploy-obol-ovm/scripts/query-fees.sh [network]
6264
```
6365
Returns current withdrawal fee (EIP-7002) and consolidation fee (EIP-7251) in wei. Useful before calling withdraw or consolidate to know how much ETH to send.
6466

@@ -76,65 +78,65 @@ Each write script checks that `PRIVATE_KEY` is set, prints what it's about to do
7678

7779
**Deploy a new OVM:**
7880
```bash
79-
.claude/skills/obol-ovm/scripts/deploy-ovm.sh <owner> <beneficiary> <reward_recipient> [threshold_gwei] [network]
81+
.claude/skills/deploy-obol-ovm/scripts/deploy-ovm.sh <owner> <beneficiary> <reward_recipient> [threshold_gwei] [network]
8082
```
8183
Default threshold is 16 gwei. Deploys via the network's factory contract.
8284

8385
**Grant roles:**
8486
```bash
85-
.claude/skills/obol-ovm/scripts/grant-roles.sh <ovm_address> <target_address> <roles_value> [network]
87+
.claude/skills/deploy-obol-ovm/scripts/grant-roles.sh <ovm_address> <target_address> <roles_value> [network]
8688
```
8789

8890
**Revoke roles:**
8991
```bash
90-
.claude/skills/obol-ovm/scripts/revoke-roles.sh <ovm_address> <target_address> <roles_value> [network]
92+
.claude/skills/deploy-obol-ovm/scripts/revoke-roles.sh <ovm_address> <target_address> <roles_value> [network]
9193
```
9294

9395
**Distribute funds:**
9496
```bash
95-
.claude/skills/obol-ovm/scripts/distribute-funds.sh <ovm_address> [network]
97+
.claude/skills/deploy-obol-ovm/scripts/distribute-funds.sh <ovm_address> [network]
9698
```
9799
Anyone can call this — no special role required.
98100

99101
**Set beneficiary:**
100102
```bash
101-
.claude/skills/obol-ovm/scripts/set-beneficiary.sh <ovm_address> <new_beneficiary> [network]
103+
.claude/skills/deploy-obol-ovm/scripts/set-beneficiary.sh <ovm_address> <new_beneficiary> [network]
102104
```
103105
Requires SET_BENEFICIARY_ROLE (4).
104106

105107
**Set reward recipient:**
106108
```bash
107-
.claude/skills/obol-ovm/scripts/set-reward-recipient.sh <ovm_address> <new_reward_recipient> [network]
109+
.claude/skills/deploy-obol-ovm/scripts/set-reward-recipient.sh <ovm_address> <new_reward_recipient> [network]
108110
```
109111
Requires SET_REWARD_ROLE (16).
110112

111113
**Request validator withdrawal (EIP-7002):**
112114
```bash
113-
.claude/skills/obol-ovm/scripts/withdraw.sh <ovm_address> <pubkeys_csv> <amounts_csv> <max_fee_wei> <excess_fee_recipient> [network]
115+
.claude/skills/deploy-obol-ovm/scripts/withdraw.sh <ovm_address> <pubkeys_csv> <amounts_csv> <max_fee_wei> <excess_fee_recipient> [network]
114116
```
115117
Requires WITHDRAWAL_ROLE (1). Sends ETH = max_fee * num_validators for fees.
116118

117119
**Consolidate validators (EIP-7251):**
118120
```bash
119-
.claude/skills/obol-ovm/scripts/consolidate.sh <ovm_address> <source_pubkey> <dest_pubkey> <max_fee_wei> <excess_fee_recipient> [network]
121+
.claude/skills/deploy-obol-ovm/scripts/consolidate.sh <ovm_address> <source_pubkey> <dest_pubkey> <max_fee_wei> <excess_fee_recipient> [network]
120122
```
121123
Requires CONSOLIDATION_ROLE (2). Consolidates stake from source validator into destination. Sends max_fee as ETH. Query current fees with `query-fees.sh` first.
122124

123125
**Deposit for validator(s):**
124126
```bash
125-
.claude/skills/obol-ovm/scripts/deposit.sh <ovm_address> <deposit_json_path> [network]
127+
.claude/skills/deploy-obol-ovm/scripts/deposit.sh <ovm_address> <deposit_json_path> [network]
126128
```
127129
Requires DEPOSIT_ROLE (32). Reads a deposit data JSON file (standard format from deposit CLI) and executes deposits via `forge script`. Each deposit sends 32 ETH.
128130

129131
**Set principal stake amount:**
130132
```bash
131-
.claude/skills/obol-ovm/scripts/set-principal-stake.sh <ovm_address> <new_amount_wei> [network]
133+
.claude/skills/deploy-obol-ovm/scripts/set-principal-stake.sh <ovm_address> <new_amount_wei> [network]
132134
```
133135
Requires owner. Sets `amountOfPrincipalStake` which controls how much of distributed funds goes to the principal recipient. Queries and prints current value before changing.
134136

135137
**Sweep pull balance:**
136138
```bash
137-
.claude/skills/obol-ovm/scripts/sweep.sh <ovm_address> <beneficiary> <amount_wei> [network]
139+
.claude/skills/deploy-obol-ovm/scripts/sweep.sh <ovm_address> <beneficiary> <amount_wei> [network]
138140
```
139141
Extracts funds from `pullBalances[principalRecipient]`. Pass `0x0000000000000000000000000000000000000000` as beneficiary to sweep to principal recipient (anyone can call). Pass a custom address to sweep there (owner only). Amount=0 sweeps all.
140142

@@ -156,11 +158,13 @@ Example: grant WITHDRAWAL + DEPOSIT = pass `33` as the roles value.
156158

157159
## Factory Addresses
158160

159-
| Network | Factory Address |
160-
|---------|----------------|
161-
| mainnet | `0x2c26B5A373294CaccBd3DE817D9B7C6aea7De584` |
162-
| hoodi | `0x5754C8665B7e7BF15E83fCdF6d9636684B782b12` |
163-
| sepolia | `0xF32F8B563d8369d40C45D5d667C2B26937F2A3d3` |
161+
| Network | Factory Address | Deploy Block |
162+
|---------|----------------|--------------|
163+
| mainnet | `0x2c26B5A373294CaccBd3DE817D9B7C6aea7De584` | 23919948 |
164+
| hoodi | `0x5754C8665B7e7BF15E83fCdF6d9636684B782b12` | 1735335 |
165+
| sepolia | `0xF32F8B563d8369d40C45D5d667C2B26937F2A3d3` | 9159573 |
166+
167+
Deploy blocks are the starting point for `cast logs` when enumerating OVMs (see "Listing OVMs on a network" below).
164168

165169
## Default RPCs
166170

@@ -184,16 +188,16 @@ When `distributeFunds()` is called:
184188
### Deploy and configure a new OVM
185189
```
186190
1. User sets PRIVATE_KEY env var
187-
2. Deploy: .claude/skills/obol-ovm/scripts/deploy-ovm.sh <owner> <beneficiary> <reward> 16 hoodi
191+
2. Deploy: .claude/skills/deploy-obol-ovm/scripts/deploy-ovm.sh <owner> <beneficiary> <reward> 16 hoodi
188192
3. Query tx receipt to get the new OVM address from logs
189-
4. Grant roles: .claude/skills/obol-ovm/scripts/grant-roles.sh <new_ovm> <operator_addr> 33 hoodi
190-
5. Verify: .claude/skills/obol-ovm/scripts/query-roles.sh <new_ovm> <operator_addr> hoodi
193+
4. Grant roles: .claude/skills/deploy-obol-ovm/scripts/grant-roles.sh <new_ovm> <operator_addr> 33 hoodi
194+
5. Verify: .claude/skills/deploy-obol-ovm/scripts/query-roles.sh <new_ovm> <operator_addr> hoodi
191195
```
192196

193197
### Check OVM state and distribute
194198
```
195-
1. Query: .claude/skills/obol-ovm/scripts/query-ovm.sh <ovm_address> mainnet
196-
2. If balance > 0, distribute: .claude/skills/obol-ovm/scripts/distribute-funds.sh <ovm_address> mainnet
199+
1. Query: .claude/skills/deploy-obol-ovm/scripts/query-ovm.sh <ovm_address> mainnet
200+
2. If balance > 0, distribute: .claude/skills/deploy-obol-ovm/scripts/distribute-funds.sh <ovm_address> mainnet
197201
```
198202

199203
### Listing OVMs on a network
@@ -204,7 +208,7 @@ cast logs --from-block <deploy_block> --to-block latest \
204208
"CreateObolValidatorManager(address indexed,address indexed,address,address,uint64)" \
205209
--rpc-url <rpc>
206210
```
207-
Deploy blocks: mainnet=23919948, hoodi=1735335, sepolia=9159573.
211+
Deploy blocks are listed in the Factory Addresses table above.
208212

209213
## RPC Retry Rule
210214

File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.

.claude/skills/obol-ovm/scripts/distribute-funds.sh renamed to .claude/skills/deploy-obol-ovm/scripts/distribute-funds.sh

File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.

0 commit comments

Comments
 (0)