feat(evm): add force inclusion command#2888
Conversation
Co-authored-by: Marko <marko@baricevic.me>
|
The latest Buf updates on your PR. Results from workflow CI / buf-check (pull_request).
|
|
Claude finished @julienrbrt's task —— View job Comprehensive Code Review - Force Inclusion Command FeatureI've completed a thorough review of this PR implementing the force inclusion command for EVM applications. Overall, this is a well-structured implementation with good test coverage. Below are my findings organized by category. 1. Code Quality & Architecture ⭐Strengths
IssuesCritical: Typo in Error MessageLocation: return fmt.Errorf("forced inclusionnamespace cannot be empty")Issue: Missing space between "inclusion" and "namespace" Moderate: Magic Number in StartUp TimingLocation: case <-time.After(100 * time.Millisecond):
return nilIssue: The 100ms wait is a magic number without explanation. This appears to be a startup check, but there's no guarantee the server actually started successfully.
Minor: Inconsistent Context UsageLocation: ctx, cancel := context.WithTimeout(context.Background(), 60*time.Second)Issue: Creates a new context from 2. Error Handling & Resilience
|
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #2888 +/- ##
==========================================
+ Coverage 65.59% 65.65% +0.06%
==========================================
Files 86 87 +1
Lines 7906 7926 +20
==========================================
+ Hits 5186 5204 +18
- Misses 2155 2156 +1
- Partials 565 566 +1
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
| } | ||
|
|
||
| // NewForceInclusionServer creates a new force inclusion server | ||
| func NewForceInclusionServer( |
There was a problem hiding this comment.
i dont fully follow the need for the server, can we send it without the server? I could be misunderstanding the flow
There was a problem hiding this comment.
oh i missed the docs, now i got it.
There was a problem hiding this comment.
That server is the RPC endpoint you can use to submit txs.
It basically wraps ethereum rpc but overrides eth_sendRawTransaction to post to DA instead of exec client mempool
There was a problem hiding this comment.
i think this should a standalone binary not embedded in a operating node.
There was a problem hiding this comment.
This is more annoying as you'd need to configure the da client twice (for submitting to da).
I do agree that I see no sane public node operator enabling this and subsidizing the DA submission cost.
However, for people running themselves their private full node, this has the advantage to be all in one.
Happy to split it in another standalone server if you want, but we'll need to add config and such there too.
There was a problem hiding this comment.
we can keep as is, if a user needs something else we can modify
* main: refactor(sequencers): persist prepended batch (#2907) feat(evm): add force inclusion command (#2888) feat: DA client, remove interface part 1: copy subset of types needed for the client using blob rpc. (#2905) feat: forced inclusion (#2797) fix: fix and cleanup metrics (sequencers + block) (#2904) build(deps): Bump mdast-util-to-hast from 13.2.0 to 13.2.1 in /docs in the npm_and_yarn group across 1 directory (#2900) refactor(block): centralize timeout in client (#2903) build(deps): Bump the all-go group across 2 directories with 3 updates (#2898) chore: bump default timeout (#2902) fix: revert default db (#2897) refactor: remove obsolete // +build tag (#2899) fix:da visualiser namespace (#2895)
Add force inclusion command for evm app.
Similar to evstack/ev-abci#295
Blocked on #2797