Meeting Summary:
The ROPC call focused on reviewing multiple PRs and discussing execution API specifications. The team reviewed PR 791 regarding JSON-RPC error handling, with Felix expressing that the error code should be allowed by default since it’s a standard JSON-RPC error that can occur in any method. They discussed removing uncle methods from the spec since this information is no longer stored in current archive nodes. Sina presented PR 797 about event parameter specification, noting that OpenRPC 1.4 now supports notifications and has proper Go bindings, resolving previous implementation issues. The team reviewed PR 762 regarding debug trace standardization, which has received extensive feedback and is now merged in Geth with updates from other clients, though there are ongoing discussions about handling large memory outputs and whether to truncate leading zeros. They examined PR 790 regarding config methods, which Felix approved for merging since it replaces an earlier PR with properly generated .io files. The team also discussed a comprehensive list of missing methods from the spec that are implemented in 3-4 clients, deciding to present this to the ACDE for feedback before proceeding with standardization efforts. Zcstarr demonstrated the new documentation versioning system with features including version dropdowns, release notes, and method tagging. The conversation ended with Stavros raising Nethermind-specific issues regarding error code standardization that would be discussed further in the next session.
Click to expand detailed summary
The team discussed PR791, which was submitted by Mercy to clarify JSON RPC error handling. Sina explained that the error is standard across JSON RPC methods, and Felix questioned why the PR was necessary since standard errors should be allowed without explicit specification. The group debated whether to proceed with the PR as a clarification or continue the discussion on Discord, with Stavros suggesting they follow the agenda and discuss the issue further in the appropriate channel.
The team discussed a PR that adds a generic error code for invalid input parameters, with Felix and Stavros expressing concerns about merging it as it seems redundant since JSON-RPC already defines this error code. Felix agreed to merge the PR but suggested calling it differently, while Stavros emphasized the underlying issue is that all five test cases are failing on the same place and need different error codes for different scenarios. The discussion then shifted to another PR related to style improvements that was originally proposed by clients.
The team discussed removing uncle methods from the execution-apis, with Chase explaining that this information is not stored in current nodes and has limited practical use. Felix agreed to merge the PR since there are no test setups available to properly exercise these methods. The group then moved on to discuss Sina’s PR 797 regarding event parameter specification, where Sina explained that the current implementation uses an enum approach due to limitations in the OpenRPC standard.
The team discussed issues with OpenRPC specification versions, particularly regarding parameter bundling and conditional parameters. zcstarr explained that OpenRPC 1.4 includes proper versioning and go bindings, with packages now located in spec-types rather than the meta schema, making it the preferred version despite some transpiler issues with Python and Rust. The discussion concluded with Felix suggesting they should upgrade to the newer specification version before proceeding with PR 797, and Mercy agreeing to create a PR for the upgrade.
The team discussed PR 762, which has been reviewed and merged in Geth with updates from other clients including Besu. Chase noted that while the PR appears ready to merge, there might be some high failures that would need attention after merging. The main outstanding issue involves whether to truncate zeros in memory and storage outputs, with concerns about the impact on large trace outputs (up to 600 gig). Felix acknowledged this as a known limitation of the current interface, suggesting that streaming implementations are inconsistent across clients and that the API might need redesign in the long term, though this issue is separate from the current PR.
Felix expressed a desire to review the large PR himself before merging it, despite the extensive feedback and approvals from multiple people including clients. The discussion centered around handling leading zeros in memory traces, with Chase noting this was an ongoing issue that only became more visible after the standard was created. Sina proposed a backwards-compatible solution involving a new config variable to address memory bloat concerns, though the team acknowledged this might be 1-2 months away due to current bandwidth constraints. The conversation ended with Mercy suggesting they move on to PR 790 next.
Felix confirmed that the new PR is a replacement for an earlier one and approved it for merging, as it addresses issues with .io file generation. Mercy discussed the next steps regarding missing methods from the spec and sought feedback on how to handle them, particularly focusing on methods implemented by multiple clients but not yet standardized. Chase emphasized the importance of focusing on methods that should be part of the execution specs and suggested not documenting every method supported by clients.
The team discussed several Ethereum API specification topics, focusing on method standardization and implementation across clients. Felix explained that most legacy methods like ETH send transaction would not be added to the spec, while they decided to remove the encoded payload output from the fill transaction method after discussing security concerns raised by Stavros from Nethermind’s side. The group reviewed a documentation versioning system presented by zcstarr, which allows browsing different API versions and release notes. Stavros and Sina raised concerns about error code standardization across clients, with Sina suggesting that test cases should accept multiple valid error codes rather than requiring exact matches. The team agreed to discuss the error code standardization issues more thoroughly in the next meeting, including specific Nethermind implementation concerns that were identified.
Next Steps:
- Felix: Merge PR791 (JSON-RPC error code clarification).
- Felix: Merge PR788 (removing uncle methods).
- Felix: Close PR445 (Light Client related PR).
- Mercy: Create a PR to upgrade the OpenRPC specification version to 1.4 to unblock PR797.
- sina: Drop the link to the OpenRPC GitHub issue about conditional parameter bundling in the chat/Discord.
- Felix: Review PR762 (debug tracer standardization) and provide feedback before merging.
- Felix: Merge PR790 (eth_getConfig method).
- Felix: Update the ETH fill transaction proposal PR to remove the signed/encoded output, making it only about filling in transaction defaults.
- Mercy: Bring the list of methods missing from the spec (but implemented in 3-4 clients) to ACDE for broader community feedback.
- Mercy: Create a PR for
debug_executionWitness method specification, as it is implemented in all clients.
- zcstarr: Submit the documentation versioning PR (with version dropdown, “next” label, release notes, and method tagging) by end of the week.
- Stavros: Add the Nethermind RPC spec/hive test discrepancy issue to the next call’s agenda (link already shared in chat).
- sina: Investigate changing hive test cases to accept multiple error codes for scenarios where clients may fail at different validation points and return different error codes.
- Mercy: Add the Nethermind hive test discrepancy issue (points 2-17) to the next call agenda for detailed discussion.
Recording Access: