Conversation
AND between address lists is the default, matching eth_getLogs topic composition. Explicit union remains for single paginated results across both address sets; unknown mode values are invalid params.
Author
|
Could a maintainer approve the pending fork workflows (Test, Spellcheck and test deployment) on this draft? They are currently waiting for approval. The draft remains open for discussion; approving the checks would let us validate the proposal files independently of agreement on the behavioral recommendations. |
This branch has not been deployed
This file contains hidden or 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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Proposal
Follow-up to #890: propose the nine Parity
trace_*methods and their call-frame,stateDiffandvmTraceoutput schemas. This draft gives client teams a concrete contract to review; the choices below remain proposals, not agreed conformance requirements.Start with
src/trace/methods.yaml,src/schemas/trace.yamlanddocs-api/docs/trace-profile.md. Most of the remaining diff is generated method documentation. Recursive VM traces also require schema-generation and documentation-rendering support; that tooling overlaps #855 and should be consolidated before merge.Client impact and progress
trace-interop contains reproducible cases, pinned observations and proposed changes, with links into client sources:
Independent reporting fixes are tracked here. The reports describe their pinned builds; a submitted or merged patch does not automatically update those observations or imply support for the wider proposal. An experimental Geth implementation is evaluated separately, without claiming upstream support.
Review requested
trace_gettree paths and object-or-null results; AND betweentrace_filteraddress lists; signed transaction execution validation; and precompile-frame inclusion. The decision ledger links the alternatives, rationale and evidence. Compatibility and migration need agreement alongside the behavior..iofixtures, then establish the generator/Hive integration. No newtrace_*.iofixtures or upstream Geth generator support are included yet; any CI exception needs explicit maintainer agreement.Please comment on the specific requirements that affect your client. The working group is available for coordination; decisions and rationale should remain in public review.
Schema and tooling fixes
The VM resource now keeps its primitive definitions inside its own
$idscope. Context-specific frame constraints require mined localization, reserve null transaction identity for block/filter rewards, and exclude localization and rewards from simulation/replay frames. Transaction-specific lookups exclude rewards. Unsigned calls reject conflicting legacy and dynamic fee fields.The compatibility review now allows standard
eth_callfields and ignores unknown call-object fields; null address filters mean unrestricted. Unknown selected blocks propose-32001, distinct from missing transactions (null) and pruned state (4444). Integertrace_getpaths explicitly return-32602; callers convert output path integers to hex quantities. H29 distinguishes explicit CALL/CALLCODE value from inherited DELEGATECALL value and labels the latter a compatibility choice.Review corrections and validation include independent pruning eligibility, explicit partial assessment, schema-driven input checks, and crossed-value precompile fixtures. The regenerated reports include 150 new responses from pinned native/Geth builds and pruning controls, while retaining earlier observations unchanged.
Generated trace documentation now retains array result types, shared CALL/CREATE fields, required localization, and success/failure descriptions. A versioned patch to the locked OpenRPC renderer also restores the required
trace_callManyCallsparameter, its ordered tuple positions and per-tuple length constraint. The patch is applied bynpm ci; a nonempty funding-then-spending example illustrates the input structure. The watch pipeline refreshes the display projection after rebuilding the spec; startup and release hooks preserve an already prepared spec.The new nonempty tuple tests also exposed a checker defect: generated OpenRPC types changed JSON Schema
itemsduring reserialization.specchecknow preserves schema JSON. Validating every array element then exposed two existingeth_simulateV1fixtures whose error messages conflicted with schema patterns. Those patterns were removed to match the existing contract that messages are suggestions; error codes remain enforced and both error branches require code/message.Validation
make build,make test(speccheck),go test ./...andgo vet ./...pass with Go 1.26.1.make lintcompletes with 117 warnings.H13 requires selected-state execution validation, including nonce, balance and sender-code rules with the EIP-7702 exception. This intentionally tightens legacy simulation without imposing local pool-admission policies; valid EVM halts still return traces. The proposed -32003 rejection code needs separate agreement. A fresh 560-response study distinguishes real execution from empty or malformed responses and demonstrates CREATE using the state nonce in Erigon/Nethermind. It also records the unchanged strict gist and Erigon feedback timing without assuming which revision was read.
The contract review keeps self-identifying replay envelopes, explicit failed-frame data and a genesis-to-latest filter default as intentional improvements over the legacy API. It clarifies net state changes, actual VM memory writes, frame-local outcomes and pre/post-commit response failures. Retention cannot silently narrow a filter range; unavailable history and resource limits must be explicit.
Failed CREATE results now reject successful creation addresses or deployed code. Two regression vectors fail before the change and pass afterward through referenced schemas, expanded schemas and speccheck; Go tests/vet, speccheck examples, all five documentation tests and the documentation production build pass. The linter remains at 117 warnings. No new client execution captures are claimed for these clarifications.