Skip to content
Merged
Show file tree
Hide file tree
Changes from 113 commits
Commits
Show all changes
117 commits
Select commit Hold shift + click to select a range
89eccaa
feat: add ev-deployer CLI for genesis contract allocation
randygrok Mar 13, 2026
0c8f54e
test: add bytecode verification tests for ev-deployer contracts
randygrok Mar 13, 2026
2ba2b80
docs: add ev-deployer README with config and usage guide
randygrok Mar 13, 2026
a540858
fix(ci): serialize bytecode verification tests to avoid solc race con…
randygrok Mar 13, 2026
b9e2670
style: apply cargo fmt to ev-deployer
randygrok Mar 13, 2026
18ed817
ci(ev-deployer): split workflow into separate bytecode and unit test …
randygrok Mar 13, 2026
f7d0e71
style: fix fmt and clippy lint errors in ev-deployer
randygrok Mar 16, 2026
46ea9a6
feat(ev-deployer): add MerkleTreeHook contract with immutable bytecod…
randygrok Mar 18, 2026
e5f4eb9
Merge branch 'main' into ev-deployer-part1-core
randygrok Mar 18, 2026
be1b241
Merge remote-tracking branch 'origin/main' into ev-deployer-part1-core
randygrok Mar 19, 2026
7e19222
ci(ev-deployer): add e2e genesis test to CI workflow
randygrok Mar 19, 2026
e9fa70e
Merge remote-tracking branch 'origin/ev-deployer-part1-core' into ev-…
randygrok Mar 19, 2026
946026d
ci(ev-deployer): install soldeer deps before bytecode verification
randygrok Mar 19, 2026
9dd5011
test(ev-deployer): add MerkleTreeHook verification to e2e genesis test
randygrok Mar 19, 2026
217be0c
fix(ev-deployer): escape brackets in doc comments to fix rustdoc
randygrok Mar 19, 2026
67151c3
feat(ev-deployer): add Permit2 contract support
randygrok Mar 19, 2026
56548ec
docs(ev-deployer): add comment explaining canonical Permit2 address
randygrok Mar 19, 2026
fa8a428
merge: resolve e2e test conflicts with ev-deployer-merkle-tree-hook
randygrok Mar 19, 2026
bfa5a23
style(ev-deployer): fix fmt, clippy and rustdoc warnings in permit2
randygrok Mar 19, 2026
4da01ea
feat(ev-deployer): add Mailbox, NoopIsm, and ProtocolFee genesis cont…
randygrok Mar 19, 2026
3faa629
fix(ev-deployer): regenerate Mailbox and ProtocolFee bytecodes from c…
randygrok Mar 19, 2026
eb413d1
merge: resolve conflicts with ev-deployer-merkle-tree-hook (mailbox, …
jgimeno Mar 19, 2026
aeffc0d
fix(ev-deployer): address PR review feedback
jgimeno Mar 19, 2026
a2d194e
merge(ev-deployer): integrate ev-deployer-part1-core duplicate addres…
jgimeno Mar 19, 2026
1ecc93c
feat: integrate ev-deployer into ev-dev for genesis contract deployment
jgimeno Mar 19, 2026
911e217
docs(ev-dev): add genesis contract deployment usage to README
jgimeno Mar 19, 2026
ebd4365
feat(ev-dev): add interactive TUI dashboard with --tui flag
jgimeno Mar 19, 2026
e0c3330
feat(ev-dev): add real-time balance polling to TUI dashboard
randygrok Mar 20, 2026
8a3a4f3
fix(ev-dev): replace redundant match with direct let binding
randygrok Mar 23, 2026
fa99c4f
feat(ev-dev): add block selection and transaction detail overlay to TUI
randygrok Mar 24, 2026
86b92d7
merge: resolve conflicts with ev-deployer-part4-ev-dev-integration
randygrok Mar 24, 2026
b68f7f7
style(ev-dev): fix rustfmt formatting in TUI module
randygrok Mar 24, 2026
5030259
fix(ev-dev): use map_or_else to satisfy clippy or_fun_call lint
randygrok Mar 24, 2026
e8a39f8
refactor(ev-deployer): remove FeeVault contract from part 1
randygrok Mar 24, 2026
089ef22
refactor(ev-deployer): remove AdminProxy contract from part 1
randygrok Mar 24, 2026
6b85563
Revert "refactor(ev-deployer): remove AdminProxy contract from part 1"
randygrok Mar 24, 2026
93b3eaa
fix(ev-deployer): make [contracts] section optional in config
randygrok Mar 24, 2026
70111fd
feat(ev-deployer): add init command to generate starter config
randygrok Mar 24, 2026
fa0e71f
fix(ev-deployer): clean up command ordering and stale fee_vault refer…
randygrok Mar 24, 2026
1acd3c8
docs(ev-deployer): document init command in README
randygrok Mar 24, 2026
cb838e8
merge(ev-deployer): integrate ev-deployer-part1-core keeping all cont…
randygrok Mar 24, 2026
ee68354
fix(ev-deployer): remove extra blank lines from merge to pass rustfmt
randygrok Mar 24, 2026
ef5ac9e
docs(ev-deployer): document all supported contracts in README and ini…
randygrok Mar 24, 2026
65bbf9e
fix(ev-deployer): normalize alloc keys for collision detection
randygrok Mar 24, 2026
08c9eb4
style(ev-deployer): fix fmt and clippy lint in genesis.rs
randygrok Mar 25, 2026
46b75bf
Merge remote-tracking branch 'origin/ev-deployer-part1-core' into ev-…
randygrok Mar 25, 2026
e365cfe
merge: resolve e2e test conflict with ev-deployer-merkle-tree-hook (p…
randygrok Mar 25, 2026
7f9e238
docs(ev-deployer): add Permit2 to init template and README
randygrok Mar 25, 2026
f1ad84c
merge: resolve ContractsConfig visibility/derive conflict with ev-dep…
randygrok Mar 25, 2026
b1e5ae3
fix(ev-deployer): use case-insensitive grep in e2e genesis address ch…
randygrok Mar 25, 2026
6371c11
Merge remote-tracking branch 'origin/ev-deployer-part3-permit2' into …
randygrok Mar 25, 2026
739b3e0
Merge remote-tracking branch 'origin/ev-deployer-part4-ev-dev-integra…
randygrok Mar 25, 2026
5d2be71
refactor(ev-deployer): remove Hyperlane contracts, keep only AdminPro…
randygrok Mar 27, 2026
c32b633
merge: integrate main into ev-deployer-part3-permit2
randygrok Mar 27, 2026
502a131
merge: integrate ev-deployer-part3-permit2 Hyperlane contract removal
randygrok Mar 27, 2026
04beb6b
refactor(contracts): remove Hyperlane dependency from FeeVault
randygrok Mar 27, 2026
c6e679b
style(contracts): fix forge fmt formatting
randygrok Mar 27, 2026
cae3723
docs: clarify FeeVault is optional, document when to use it vs plain …
randygrok Mar 27, 2026
2af627e
merge: integrate ev-deployer-part3-permit2 FeeVault refactor and docs
randygrok Mar 27, 2026
21a7989
Merge remote-tracking branch 'origin/ev-deployer-part4-ev-dev-integra…
randygrok Mar 27, 2026
4653ccc
fix(ev-deployer): validate permit2 zero-address and duplicate deploy …
randygrok Mar 30, 2026
221aa28
style(ev-deployer): remove unnecessary #[allow(dead_code)] from confi…
randygrok Mar 30, 2026
877c66b
chore(ev-deployer): add permit2 config tests and update contracts skill
randygrok Mar 30, 2026
588a46a
style(ev-deployer): fix rustfmt formatting in config.rs
randygrok Mar 30, 2026
8e8bf8c
docs(ev-deployer): use full canonical Permit2 address in config refer…
randygrok Mar 30, 2026
6070a3b
refactor(ev-deployer): make address optional in contract configs
randygrok Mar 30, 2026
3c74168
feat(ev-deployer): add initcode constants for live deployment
randygrok Mar 30, 2026
1f7e2cc
feat(ev-deployer): add CREATE2 address computation module
randygrok Mar 30, 2026
826c10d
feat(ev-deployer): add deploy state file with immutability checks
randygrok Mar 30, 2026
f9054b7
feat(ev-deployer): add ChainDeployer trait and LiveDeployer
randygrok Mar 30, 2026
2b90e82
feat(ev-deployer): add deploy pipeline with mock-tested flow
randygrok Mar 30, 2026
0c67446
feat(ev-deployer): wire up deploy subcommand in CLI
randygrok Mar 30, 2026
308ac0e
docs(ev-deployer): update init template for deploy mode
randygrok Mar 30, 2026
cbdaaa2
style(ev-deployer): fix rustfmt formatting
randygrok Mar 30, 2026
58dd78a
chore: update Cargo.lock for ev-deployer deploy dependencies
randygrok Mar 30, 2026
868bd3a
fix(ev-deployer): address clippy lints and nightly rustfmt imports
randygrok Mar 30, 2026
77c098b
fix(ev-deployer): remove AdminProxy from deploy pipeline
randygrok Mar 30, 2026
922af60
fix(ev-deployer): use atomic writes for deploy state file
randygrok Mar 30, 2026
c15313a
merge: integrate ev-deployer-part3a deploy pipeline and CREATE2 support
randygrok Mar 31, 2026
5f950fb
Merge remote-tracking branch 'origin/ev-deployer-part4-ev-dev-integra…
randygrok Mar 31, 2026
bb35228
feat(ev-deployer): add CLI flags to init command
randygrok Mar 31, 2026
48a4d39
feat(ev-deployer): add template builder with parameterized tests
randygrok Mar 31, 2026
9771899
feat(ev-deployer): wire parameterized init into CLI
randygrok Mar 31, 2026
9c2fcb6
docs(ev-deployer): rewrite README as comprehensive user guide
randygrok Mar 31, 2026
27be728
merge: integrate ev-deployer-part3a parameterized init and README
randygrok Mar 31, 2026
d2bd5a6
Merge remote-tracking branch 'origin/ev-deployer-part4-ev-dev-integra…
randygrok Mar 31, 2026
71afcec
fix(ev-deployer): address clippy lints and rustfmt in init module
randygrok Mar 31, 2026
e01e053
merge: integrate ev-deployer-part3a clippy and rustfmt fixes
randygrok Mar 31, 2026
3be382b
fix(ev-deployer): resolve clippy warnings for Eq, Debug, and missing …
randygrok Mar 31, 2026
36829a9
fix(ev-deployer): resolve remaining clippy and rustfmt warnings
randygrok Mar 31, 2026
f353150
style(ev-deployer): fix clippy warnings and missing docs
randygrok Mar 31, 2026
7449b21
merge: integrate ev-deployer-part4 clippy and rustfmt fixes
randygrok Mar 31, 2026
a0d9906
feat(ev-dev): include deterministic deployer in devnet genesis
randygrok Mar 31, 2026
2b9485c
feat(ev-deployer): add deterministic deployer as genesis contract
randygrok Mar 31, 2026
74da873
merge: integrate origin/ev-deployer-part3a deterministic deployer sup…
randygrok Mar 31, 2026
4e00b8a
fix(ev-deployer): restrict immutables visibility to pub(crate)
randygrok Mar 31, 2026
28e24c9
Merge branch 'ev-deployer-part4-ev-dev-integration' of github.com-ran…
randygrok Mar 31, 2026
304f60a
feat(ev-deployer): use canonical Uniswap salt for Permit2 CREATE2 deploy
randygrok Apr 1, 2026
01815ea
refactor(ev-deployer): split init into genesis and deploy subcommands
randygrok Apr 2, 2026
9ed902f
fix(ev-deployer): remove deterministic deployer from deploy init temp…
randygrok Apr 2, 2026
160fd22
docs: update ev-deployer and ev-dev READMEs for init subcommands
randygrok Apr 2, 2026
d2624bf
refactor(ev-dev): rename --deploy-config to --genesis-config
randygrok Apr 2, 2026
0c324a2
style(ev-deployer): apply rustfmt to deterministic deployer
randygrok Apr 2, 2026
802d748
Merge remote-tracking branch 'origin/ev-deployer-part3a' into ev-depl…
randygrok Apr 2, 2026
37945c5
Merge remote-tracking branch 'origin/ev-deployer-part4-ev-dev-integra…
randygrok Apr 7, 2026
1adf1b4
style(ev-deployer): apply rustfmt to init.rs
randygrok Apr 7, 2026
adf04f4
Merge branch 'main' into ev-deployer-part3-permit2
randygrok Apr 8, 2026
b3f746d
Merge remote-tracking branch 'origin/main' into ev-deployer-part3-per…
randygrok Apr 13, 2026
17bd295
docs: clarify callFee is zero-fee safe in FeeVault doc
randygrok Apr 13, 2026
a3beb2b
Merge branch 'ev-deployer-part3-permit2' into chipped-walker
randygrok Apr 14, 2026
35cee5f
fix(ev-deployer): make deterministic_deployer::build a const fn
randygrok Apr 14, 2026
0e0db76
Merge remote-tracking branch 'origin/ev-deployer-part3a' into ev-depl…
randygrok Apr 14, 2026
22e2d5d
Merge remote-tracking branch 'origin/ev-deployer-part4-ev-dev-integra…
randygrok Apr 14, 2026
772ebe2
bump reth 2.2 (#236)
tac0turtle May 12, 2026
39b292a
chore(deps): bump tokio from 1.51.1 to 1.52.3 (#226)
dependabot[bot] May 12, 2026
429fdfa
merge: integrate ev-dev part5 TUI with main
randygrok May 12, 2026
c3f1a32
fix(ev-dev): make next_panel and scroll_up const fn to satisfy clippy
randygrok May 19, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 9 additions & 4 deletions .claude/skills/contracts.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
description: This skill should be used when the user asks about "ev-reth contracts", "FeeVault", "AdminProxy", "fee bridging to Celestia", "Hyperlane integration", "Foundry deployment scripts", "genesis allocations", or wants to understand how base fees are redirected and bridged.
description: This skill should be used when the user asks about "ev-reth contracts", "FeeVault", "AdminProxy", "Permit2", "fee distribution", "Foundry deployment scripts", "genesis allocations", or wants to understand how base fees are redirected and distributed.
---

# Contracts Onboarding
Expand All @@ -9,13 +9,15 @@ description: This skill should be used when the user asks about "ev-reth contrac
The contracts live in `contracts/` and use Foundry for development. There are two main contracts:

1. **AdminProxy** (`src/AdminProxy.sol`) - Bootstrap contract for admin addresses at genesis
2. **FeeVault** (`src/FeeVault.sol`) - Collects base fees, bridges to Celestia via Hyperlane (cross-chain messaging protocol)
2. **FeeVault** (`src/FeeVault.sol`) - Collects base fees and distributes them between configured recipients
3. **Permit2** (`lib/permit2`) - Uniswap's canonical token approval manager, deployed at genesis via `ev-deployer` (no Foundry deploy script — bytecode is embedded in Rust)

## Key Files

### Contract Sources
- `contracts/src/AdminProxy.sol` - Transparent proxy pattern for admin control
- `contracts/src/FeeVault.sol` - Fee collection and bridging logic
- `contracts/src/FeeVault.sol` - Fee collection and distribution logic
- `contracts/lib/permit2` - Uniswap Permit2 submodule (bytecode used by ev-deployer)

### Deployment Scripts
- `contracts/script/DeployFeeVault.s.sol` - FeeVault deployment with CREATE2
Expand All @@ -34,9 +36,12 @@ The AdminProxy contract provides a bootstrap mechanism for setting admin address
### FeeVault
The FeeVault serves as the destination for redirected base fees (instead of burning them). Key responsibilities:
- Receive base fees from block production
- Bridge accumulated fees to Celestia via Hyperlane
- Distribute accumulated fees between configured recipients
- Manage withdrawal permissions

### Permit2
Uniswap's canonical token approval manager deployed at genesis. Unlike AdminProxy and FeeVault, Permit2 has no Foundry deploy script — its bytecode is embedded directly in the Rust `ev-deployer` (`bin/ev-deployer/src/contracts/permit2.rs`), which patches EIP-712 immutables (chain ID, domain separator) at genesis time.

## Connection to Rust Code

The contracts integrate with ev-reth through:
Expand Down
3 changes: 3 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
[submodule "contracts/lib/forge-std"]
path = contracts/lib/forge-std
url = https://github.com/foundry-rs/forge-std
[submodule "contracts/lib/permit2"]
path = contracts/lib/permit2
url = https://github.com/Uniswap/permit2
Loading
Loading