Skip to content

docs: classify JSON-RPC behavior changes as application-facing breaking changes #270

Description

@mssystem1

Summary

BREAKING_CHANGES.md currently categorizes breaking changes primarily in terms of node-operator concerns such as CLI flags, configuration defaults, and serialized/log output.

However, some node configuration changes also alter externally observable JSON-RPC behavior for applications.

A concrete example is the v0.7.2 reduction of the default RPC gas cap from 50,000,000 to 30,000,000.

After upgrading a node with otherwise unchanged configuration, an application can observe previously successful eth_call or eth_estimateGas requests begin failing.

This is therefore not only a node-operator configuration change. It is also an application compatibility change.

Current Behavior

The v0.7.2 breaking-change entry documents:

  • old --rpc.gascap default: 50000000
  • new --rpc.gascap default: 30000000

and explains that calls requiring more than 30M gas will now fail.

However, the breaking-change taxonomy does not provide a distinct category for changes to externally visible JSON-RPC behavior.

As a result, dApp developers, SDK maintainers, infrastructure providers, and RPC consumers may not realize that a node upgrade can change application behavior even when the JSON-RPC API itself has not changed.

Expected Behavior

Application-facing RPC compatibility changes should be explicitly classified in BREAKING_CHANGES.md.

For example:

[RPC] -- JSON-RPC semantics, limits, defaults, or externally observable behavior changed.

The v0.7.2 entry could then be represented as both:

[Config] default --rpc.gascap changed from 50M to 30M.
[RPC] eth_call and eth_estimateGas requests requiring >30M gas may now fail.

Why This Matters

RPC behavior is effectively part of Arc’s developer-facing interface.

Changes to:

  • gas caps
  • request limits
  • transaction validation
  • WebSocket subscription limits
  • simulation behavior
  • error responses

can break applications even though no Solidity contract or JSON-RPC method signature changed.

Treating these solely as operator configuration changes makes it harder for application developers to determine whether an Arc upgrade can affect their software.

Suggested Fix

Add an application-facing breaking-change category to BREAKING_CHANGES.md, for example:

  • [RPC] -- JSON-RPC semantics, limits, defaults, validation, or error behavior changed.

Consider also adding:

  • [App] -- externally observable behavior changed in a way that may require dApp or SDK changes.

Then annotate applicable historical entries, especially the v0.7.x RPC changes.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions