-
Notifications
You must be signed in to change notification settings - Fork 370
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'ethereum:master' into master
- Loading branch information
Showing
9 changed files
with
516 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 | | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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. |
Oops, something went wrong.