Skip to content

Commit

Permalink
Merge branch 'ethereum:master' into master
Browse files Browse the repository at this point in the history
  • Loading branch information
nconsigny authored Feb 21, 2025
2 parents 46a8177 + 5179971 commit 450b767
Show file tree
Hide file tree
Showing 9 changed files with 516 additions and 1 deletion.
3 changes: 2 additions & 1 deletion .github/ACDbot/meeting_topic_mapping.json
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,8 @@
"discourse_topic_id": 22896,
"start_time": "2025-02-27T14:00:00Z",
"duration": 90,
"issue_title": "Execution Layer Meeting 206",
"issue_number": 1306,
"issue_title": "All Core Devs - Execution (ACDE) #206, February 27, 2025",
"Youtube_upload_processed": false,
"transcript_processed": false,
"upload_attempt_count": 0,
Expand Down
49 changes: 49 additions & 0 deletions Breakout-Room-Meetings/ETH-Simulate/EthSimulate-pm.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
# Eth_Simulate Meeting

## Purpose
This meeting is for the discussion of eth_simulateV1 implementation and potential eth_simulateV2 implementations. It focuses on discussing and prioritizing ideas for the next version of eth_simulate (eth_simulateV2). The goal is to refine the proposed features, evaluate their feasibility, and align on a roadmap for implementation. The team will also discuss technical challenges, potential improvements, and how these features can enhance the functionality and usability of eth_simulate.

## Breakout Room Meetings

| # | Date | Agenda | Recording | Notes |
| -- | --| -- | -- | -- |
| 38 |February 17, 2025| [Agenda](https://github.com/ethereum/pm/issues/1293) | [Recording](https://www.youtube.com/watch?v=Yer5Rue4M5s) | [Notes](https://github.com/ethereum/pm/issues/1293#issuecomment-2664759485) |
| 37 |February 10, 2025| [Agenda](https://github.com/ethereum/pm/issues/1278) | [Recording](https://youtu.be/YgU7S01PUZc?si=_Vj0Aa8YKnYXJq1C) | [Notes]([./Meeting%2063.md](https://github.com/ethereum/pm/issues/1278#issuecomment-2650875573)) |
| 36 |February 03, 2025| [Agenda](https://github.com/ethereum/pm/issues/1273) | [Recording](https://youtu.be/i2JBDF_MBVU?si=zBjWUwY4F_WfLzrw) | [Notes]([./Meeting%2063.md](https://github.com/ethereum/pm/issues/1273#issuecomment-2631171565)) |
| 35 |January 27, 2025| [Agenda](https://github.com/ethereum/pm/issues/1248) | N/A | [Notes]([./Meeting%2063.md](https://github.com/ethereum/pm/issues/1248#issuecomment-2615709046)) |
| 34 |January 13, 2025| [Agenda](https://github.com/ethereum/pm/issues/1241) | [Recording](https://youtu.be/HKjT5O74lx4?si=j6qTuDzHlZxxVA9x) | [Notes]([./Meeting%2063.md](https://github.com/ethereum/pm/issues/1241#issuecomment-2590226750)) |
| 33 |January 06, 2025| N/A | [Recording](https://youtu.be/OpybdKZ4Ft8?si=dCBReLxqE5n85C_j) | [Notes](https://hackmd.io/QmTl38cVRteyG24a27VB8Q) |
| 32 |December 30, 2024| N/A | [Recording](https://youtu.be/-1GHixe7iLo?si=Ud7cf_qnWJDMQKIF) | N/A |
| 31 |December 23, 2024| N/A | [Recording](https://youtu.be/u3XDtboT5HI?si=GQPtb37uAQB7FYxW) | N/A |
| 30 |December 16, 2024| N/A | [Recording](https://youtu.be/jeJJkXEP0lI?si=lMiu_CiqFFLGfIMF) | N/A |
| 29 |December 09, 2024| N/A | [Recording](https://youtu.be/wsZQfdWrCec?si=HiyD_NLOI0WXPo5K) | N/A |
| 28 |December 02, 2024| N/A | [Recording](https://youtu.be/qzKvckuf6IU?si=22xGaQE8aem3lT1T) | N/A |
| 27 |November 25, 2024| N/A | [Recording](https://youtu.be/ihBB7qyTER8?si=54Kpxk2-X-77zLtF) | N/A |
| 26 |September 30, 2024| N/A | [Recording](https://youtu.be/Dlrrr_-AVBg?si=M4xQcVtmyOOMN7gc) | N/A |
| 25 |September 23, 2024| N/A | [Recording](https://youtu.be/Y5fSw77h7Vo?si=YECm6eN5xRwvgwLl) | N/A |
| 24 |September 09, 2024| N/A | [Recording](https://youtu.be/Z2nIOUEUJYs?si=HHYzNjQjzkYoXaoj) | N/A |
| 23 |August 26, 2024| N/A | [Recording](https://youtu.be/0J-T7M65Ba4?si=T4pZMi6v-fGWYUx6) | N/A |
| 22 |August 19, 2024| N/A | [Recording](https://www.youtube.com/watch?v=h0Q_ZgO1Sk4&t=29s) | N/A |
| 21 |August 12, 2024| N/A | [Recording](https://www.youtube.com/watch?v=z8pwY5bIWM0) | N/A |
| 20 |August 05, 2024| N/A | [Recording](https://www.youtube.com/watch?v=y2I-cQvuvKk&t=83s) | N/A |
| 19 |July 29, 2024| N/A | [Recording](https://www.youtube.com/watch?v=rGuW3F32BPM) | N/A |
| 18 |July 22, 2024| N/A | [Recording](https://www.youtube.com/watch?v=haTEV9vWizM&t=27s) | N/A |
| 17 |July 15, 2024| N/A | [Recording](https://www.youtube.com/watch?v=8gqCJagYvA0&t=52s) | N/A |
| 16 |July 08, 2024| N/A | [Recording](https://www.youtube.com/watch?v=3BVuXm3rBp0&t=50s) | N/A |
| 15 |June 17, 2024| N/A | [Recording](https://www.youtube.com/watch?v=hhkekW60mpk&t=19s) | N/A |
| 14 |June 10, 2024| N/A | [Recording](https://www.youtube.com/watch?v=fqX_66c1XIg&t=13s) | N/A |
| 13 |June 03, 2024| N/A | [Recording](https://www.youtube.com/watch?v=aFF8nmI5ytE&t=18s) | N/A |
| 12 |May 27, 2024| N/A | [Recording](https://www.youtube.com/watch?v=mCVNuzoHEYk) | N/A |
| 11 |May 20, 2024| N/A | [Recording](https://www.youtube.com/watch?v=7wGzih4ypr8&t=18s) | N/A |
| 10 |May 13, 2024| N/A | [Recording](https://www.youtube.com/watch?v=62HFmRwyBHA&t=24s) | N/A |
| 09 |May 06, 2024| N/A | [Recording](https://www.youtube.com/watch?v=NquF9IfhLlM&t=271s) | N/A |
| 08 |April 29, 2024| N/A | [Recording](https://www.youtube.com/watch?v=0c8fDlhKO4Q&t=17s) | N/A |
| 07 |April 22, 2024| N/A | [Recording](https://www.youtube.com/watch?v=MyINXuELmO0&t=13s) | N/A |
| 06 |April 15, 2024| N/A | [Recording](https://www.youtube.com/watch?v=uhtoBvufvNs&t=12s) | N/A |
| 05 |April 08, 2024| N/A | [Recording](https://www.youtube.com/watch?v=2E10m2zpojM&t=7s) | N/A |
| 04 |March 25, 2024| N/A | [Recording](https://www.youtube.com/watch?v=8uXmfXv4jvs&t=75s) | N/A |
| 03 |March 18, 2024| N/A | [Recording](https://www.youtube.com/watch?v=1neJY8bbEoA&t=9s) | N/A |
| 02 |March 04, 2024| N/A | [Recording](https://www.youtube.com/watch?v=LUS9Hky_0OI&t=27s) | N/A |
| 01 |February 26, 2024| N/A | [Recording](https://www.youtube.com/watch?v=XtubgsWxAI8&t=212s) | N/A |


56 changes: 56 additions & 0 deletions Breakout-Room-Meetings/ETH-Simulate/Meeting 33.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
## Eth_Simulate Meeting Meeting 33

Note: This file is copied from [here](https://hackmd.io/QmTl38cVRteyG24a27VB8Q)

### Meeting Info

- Agenda: ethereum#
- Date & Time: January 06, 2025, 12:00 UTC
- Recording: [here](https://youtu.be/OpybdKZ4Ft8?si=dCBReLxqE5n85C_j)
## Notes
### Summary
## Ideas for eth_simulateV2

List of suggested ideas for the possible next version of `eth_simulate`:

## Contract Creation Events
Emit an event when a contract is created. Currently, it is impossible to see if a transaction creates a contract, except when the transaction creates only one contract using the standard method.

## Multi Gas Calculation
Currently, if you override `ecrecover`, it consumes more gas than it should. We could make it consume the correct amount as `ecrecover` normally would, but then adjust it to account for the correct gas amounts against the global gas limit of the call.

## Stack Traces
When execution fails, all you get is the error being thrown. It would be highly useful to have access to a full stack trace.

## Full Tracing
Enable full tracing support for all transactions.

## Phantom Blocks
Currently, you cannot create blocks far in the future. Phantom blocks would allow for the creation of future blocks while padding the missing blocks with a "phantom blocks" concept.

## Witness Creation
Enable witness generation for `eth_simulate` results to allow receivers to verify the correctness of the results.

## Dynamic Timestamp and Block Number Increment
Currently, to create future blocks and timestamps that depend on the head, you must query the head and then quickly make an `eth_simulate` call with the correct values. It would be useful to allow timestamps and block numbers to be defined dynamically, such as:
- `timestamp: latest + 10`
- `block number: latest + 10`
This would eliminate the need to query the latest block manually and avoid race conditions due to block number changes.

## Gas Simulations
For each transaction:

```json
{
"gasLimit": number | null | "estimate"
}
```
or
```
{ gasLimit: number | null, estimatePlease: true }
(what to do what both are defined?)
include the transaction with the estimated gas limit to block
## Remove `size` from return value
```
97 changes: 97 additions & 0 deletions Breakout-Room-Meetings/ETH-Simulate/Meeting 34.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
## Eth_Simulate Meeting Meeting 34

Note: This file is copied from [here](https://github.com/ethereum/pm/issues/1241#issuecomment-2590226750)

### Meeting Info

- Agenda: [ethereum#1241](https://github.com/ethereum/pm/issues/1241#issue-2772946504)
- Date & Time: January 13, 2025, 12:00 UTC
- Recording: [here](https://youtu.be/HKjT5O74lx4?si=j6qTuDzHlZxxVA9x)
## Notes
### Summary
## Agreed Action Items and Implementation Decisions

## Tracing Enhancements
- Add new tracing methods and derive specifications from implementations.
- Specify the outer trace object structure while treating block traces as a black box.
- Align `eth_simulate` implementation across all clients.

## Transaction and Block Tracing Strategies
- Explore adding a `trace_simulate` method for debugging transactions.
- Propose tracing both transactions and blocks, capturing state roots between transactions.
- Support client-specific tracing methods.
- Consider creating separate namespaces for Geth and Parity traces to improve organization.
- Potentially add client-specific namespaces for enhanced tracing methods.

## `eth_simulate` Parameter Extensions
- Propose adding an optional RLP return parameter to `eth_simulate` for v2 documentation.
- Suggest including a hidden parameter to return RLP data alongside the standard JSON response.

## Test Suite and Reliability Challenges
- Investigate issues with duplicate blocks caused by total difficulty pegged to zero.
- Reduced failing test cases from **83** to **72**; duplicate block issues remain a significant challenge.
- Regular updates to the Hive test suite; participants are encouraged to report any discrepancies.
- Observed non-deterministic test failures likely linked to race conditions or shared state issues.

## Debugging Consensus Differences

### Methods to Obtain RLPs
- Use `debug_getBadBlocks`: Temporary RLP dumps saved to disk.
- Automatic dumps for RLP receipts and traces in cases of potential consensus issues.
- Access traces via archive nodes.

### RLP Sharing
Exchange block and transaction RLPs between clients to identify discrepancies during consensus differences. Current practices include:
- Retrieving temporary or on-disk RLP dumps with `debug_getBadBlocks`.
- Auto-dumping receipts and traces for potential issues.
- Accessing traces from archive nodes.

## Challenges with `eth_simulate`
- RLPs and traces aren't easily retrieved for `eth_simulate` calls since they are transient.

### Suggestions:
- Add a hidden parameter to `eth_simulate` to return RLPs.
- Introduce a new method like `eth_simulateTrace` for detailed analysis.

## Tracing Approaches
- Clients like Geth and Parity offer tracing configurations that could include debug and parity namespaces.
- Heavier options may suit debugging since they are not gas-accounted and require more memory.

## Hive Tests and Non-Deterministic Failures

### Potential Issues
- Race conditions or shared states during parallel test runs.
- Non-deterministic failures, especially with `eth_simulate` calls.

### Challenges
- Debugging Hive tests is complicated due to the transient nature of simulation calls and limitations in output retrieval.

### Proposed Solutions:
- Add hidden or optional parameters to `eth_simulate` to return RLPs directly.
- Enhance RPC output or adapt Hive tests for direct access.
- Modify client configurations to enable auto-dumping traces during specific test executions.

## Cross-Client Consistency
- While most clients (Erigon, Besu, etc.) support parity-like traces, Geth does not, leading to inconsistencies in tooling and debugging workflows.
- Ensuring parity in debugging outputs across clients can streamline comparisons and troubleshooting.

## Implementation Recommendations

### For Debugging Enhancements
- Add a separate, heavy trace method in the `debug` namespace, distinct from `eth_simulate`, to avoid production interference.
- Ensure compatibility with existing client tracing standards for tools like block explorers.

### For Persistent Debugging Output
- Allow configuration for logging RLPs or traces to permanent locations instead of temp files for easier retrieval and analysis.

### Short-Term
- Add parameters to `eth_simulate` to optionally return RLP or trace data.
- Implement temporary programmatic tracing to capture simulation-specific traces.

### Long-Term
- Develop a uniform method for tracing and debugging, potentially adopting shared standards across clients.
- Address shared state or race condition issues in tests and simulations to improve consistency and reliability.

## Communication
- Share findings and insights with team members like Rohit and Sina to foster collaborative debugging.
- Document procedures for enabling and utilizing new debugging features to facilitate broader adoption.
54 changes: 54 additions & 0 deletions Breakout-Room-Meetings/ETH-Simulate/Meeting 35.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
## Eth_Simulate Meeting Meeting 35

Note: This file is copied from [here](https://github.com/ethereum/pm/issues/1248#issuecomment-2615709046)

### Meeting Info

- Agenda: [ethereum#1248](https://github.com/ethereum/pm/issues/1248#issue-2788186304)
- Date & Time: January 27, 2025, 12:00 UTC

## Notes
### Summary
## Prototype and Development Progress

## Estimate Gas Prototype
- Plan to start working on the Estimate Gas prototype soon.
- Progress on the tracing simulation prototype, discussed in a previous meeting, has stalled due to unforeseen circumstances.
- NetherMind had committed to developing this prototype but has not yet completed it.

## Hive Test
- The team is still working on getting the Hive test operational.
- No significant progress has been made on simulation strategies, and no decisions have been finalized yet.

## Feedback Challenges with Node Providers
- Expressed concern with node providers who provide feedback only after development is complete, rather than during the process.
- This has led to inefficiencies and rework.
- The team hopes for more proactive engagement from node providers in the future.

## Meeting Frequency Discussion
- The team discussed whether to switch from weekly to bi-weekly meetings.
- Some members supported bi-weekly meetings to save time.
- Others preferred weekly meetings to maintain a tight feedback loop, especially as prototyping and development efforts ramp up.
- **Decision:** The team will keep weekly meetings for now, with the option to revisit the decision later.

## ETH Simulate v2 (or ETH Estimate Simulate)
- The team acknowledged that ongoing meetings are necessary due to plans for ETH Simulate v2 (or a similar feature).
- However, the current meetings often feel lengthy without significant progress being made.
- This week’s meeting concluded with no major updates or breakthroughs.

## Action Items

### Meeting Frequency
- Continue with weekly meetings for now, with the possibility of switching to bi-weekly meetings in the future if circumstances allow.

### Prototype Development
- Continue tracking progress on the Estimate Gas and tracing simulation prototypes.
- Focus on completing the Hive test and finalizing simulation strategies.

### Node Provider Engagement
- Aim to improve communication with node providers to ensure feedback is provided during the development process rather than after.

### Next Steps
- Reassess meeting frequency if progress slows or workloads change.
- Continue development efforts on the Estimate Gas prototype and Hive test.
- Address feedback challenges with node providers to streamline development processes.
37 changes: 37 additions & 0 deletions Breakout-Room-Meetings/ETH-Simulate/Meeting 36.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
## Eth_Simulate Meeting Meeting 36

Note: This file is copied from [here](https://github.com/ethereum/pm/issues/1273#issuecomment-2631171565)

### Meeting Info

- Agenda: [ethereum#1273](https://github.com/ethereum/pm/issues/1273)
- Date & Time: February 03, 2025, 12:00 UTC
- Recording: [here](https://youtu.be/i2JBDF_MBVU?si=zBjWUwY4F_WfLzrw)
## Notes
### Summary
## Intern Tracing Refactoring Project

- The tracing component is being prototyped by Nethermind with assistance from their intern.
- The task primarily involves refactoring to get tracers working.
- Progress is on track, and the intern is expected to complete the refactoring by the end of the current week.
- The project is well-defined and serves as a suitable internship task, focusing on modular and reusable design.

## Hash Implementation and Testing

- The Besu implementation is progressing, with the majority of Hive tests passing. However, around 15-16 tests are still failing.
- A discrepancy in hash values compared to Geth has been identified. Initial investigations suggest that passing the parent hash to the next block resolves the mismatch.
- A patch will be shared for further review to address the hash matching issues.
- Besu also plans to test against Nethermind. Nethermind tests are already running for cross-client hash comparison.
- There are ongoing investigations into differences in block size definitions between implementations.

## Other Updates

- Sina has not yet reviewed the tracing component due to other commitments, including work on gas estimation.
- Rohit reported no updates due to other commitments.

## Next Steps

- Complete tracing refactoring by Nethermind intern.
- Investigate and resolve hash discrepancies between Besu, Geth, and Nethermind implementations.
- Share and review patches to address hash and block size issues.
- Conduct cross-client testing with Hive for further validation.
Loading

0 comments on commit 450b767

Please sign in to comment.