Skip to content

docs: Update OpenRPC JSON#4935

Open
swirlds-automation wants to merge 1 commit intomainfrom
update-openrpc-20260217121104
Open

docs: Update OpenRPC JSON#4935
swirlds-automation wants to merge 1 commit intomainfrom
update-openrpc-20260217121104

Conversation

@swirlds-automation
Copy link
Contributor

OpenRPC JSON Update

This PR updates the OpenRPC JSON specification with the latest changes from Ethereum JSON-RPC specification.

Comparison Report


Methods present in the original document but missing from the modified document:

┌─────────┬────────────────────────────────────────────┬───────────────────┐
│ (index) │ missingMethod                              │ status            │
├─────────┼────────────────────────────────────────────┼───────────────────┤
│ 0       │ 'debug_getRawBlock'                        │ 'not implemented' │
│ 1       │ 'debug_getRawHeader'                       │ 'not implemented' │
│ 2       │ 'debug_getRawReceipts'                     │ 'not implemented' │
│ 3       │ 'debug_getRawTransaction'                  │ 'not implemented' │
│ 4       │ 'engine_exchangeCapabilities'              │ 'unsupported'     │
│ 5       │ 'engine_exchangeTransitionConfigurationV1' │ 'unsupported'     │
│ 6       │ 'engine_forkchoiceUpdatedV1'               │ 'unsupported'     │
│ 7       │ 'engine_forkchoiceUpdatedV2'               │ 'unsupported'     │
│ 8       │ 'engine_forkchoiceUpdatedV3'               │ 'unsupported'     │
│ 9       │ 'engine_getPayloadBodiesByHashV1'          │ 'unsupported'     │
│ 10      │ 'engine_getPayloadBodiesByRangeV1'         │ 'unsupported'     │
│ 11      │ 'engine_getPayloadV1'                      │ 'unsupported'     │
│ 12      │ 'engine_getPayloadV2'                      │ 'unsupported'     │
│ 13      │ 'engine_getPayloadV3'                      │ 'unsupported'     │
│ 14      │ 'engine_getPayloadV4'                      │ 'unsupported'     │
│ 15      │ 'engine_newPayloadV1'                      │ 'unsupported'     │
│ 16      │ 'engine_newPayloadV2'                      │ 'unsupported'     │
│ 17      │ 'engine_newPayloadV3'                      │ 'unsupported'     │
│ 18      │ 'engine_newPayloadV4'                      │ 'unsupported'     │
└─────────┴────────────────────────────────────────────┴───────────────────┘

Status explanation:
- (discarded): Methods that have been intentionally removed
- (not implemented): Methods that have not been implemented yet

Methods with differences between documents:

┌─────────┬───────────────────────────────────────────┬─────────────────────────────────────────────────────────────────────────────────┐
│ (index) │ method                                    │ valueDiscrepancies                                                              │
├─────────┼───────────────────────────────────────────┼─────────────────────────────────────────────────────────────────────────────────┤
│ 0       │ 'debug_getBadBlocks'                      │ 'result (3 diffs), summary'                                                     │
│ 1       │ 'eth_accounts'                            │ 'result.schema.title, result.schema.items'                                      │
│ 2       │ 'eth_blobBaseFee'                         │ 'summary, result'                                                               │
│ 3       │ 'eth_call'                                │ 'summary, params.1.schema.$ref, params.0.schema.$ref'                           │
│ 4       │ 'eth_coinbase'                            │ 'summary, result'                                                               │
│ 5       │ 'eth_createAccessList'                    │ 'summary, params, params, result'                                               │
│ 6       │ 'eth_estimateGas'                         │ 'params.0.schema.$ref'                                                          │
│ 7       │ 'eth_feeHistory'                          │ 'result.schema (6 diffs), summary, description'                                 │
│ 8       │ 'eth_gasPrice'                            │ 'summary'                                                                       │
│ 9       │ 'eth_getBalance'                          │ 'params.1.required, params.1.schema.$ref'                                       │
│ 10      │ 'eth_getBlockByHash'                      │ 'result.schema.oneOf'                                                           │
│ 11      │ 'eth_getBlockByNumber'                    │ 'result.schema.oneOf'                                                           │
│ 12      │ 'eth_getBlockTransactionCountByHash'      │ 'result.name, result.schema.oneOf'                                              │
│ 13      │ 'eth_getBlockTransactionCountByNumber'    │ 'result.name, result.schema.oneOf'                                              │
│ 14      │ 'eth_getCode'                             │ 'params.1.required, params.1.schema.$ref'                                       │
│ 15      │ 'eth_getFilterChanges'                    │ 'summary, params.0.name, params.0.schema.$ref, result.name, result.schema.$ref' │
│ 16      │ 'eth_getFilterLogs'                       │ 'params.0.name, params.0.schema.$ref, result.name'                              │
│ 17      │ 'eth_getLogs'                             │ 'summary'                                                                       │
│ 18      │ 'eth_getProof'                            │ 'summary, params, params, params, result'                                       │
│ 19      │ 'eth_getStorageAt'                        │ 'params (3 diffs), summary, result.name, result.schema.$ref'                    │
│ 20      │ 'eth_getTransactionByBlockHashAndIndex'   │ 'result.schema.oneOf'                                                           │
│ 21      │ 'eth_getTransactionByBlockNumberAndIndex' │ 'result.schema.oneOf'                                                           │
│ 22      │ 'eth_getTransactionByHash'                │ 'result.schema.oneOf'                                                           │
│ 23      │ 'eth_getTransactionCount'                 │ 'params.1.required, params.1.schema.$ref'                                       │
│ 24      │ 'eth_getTransactionReceipt'               │ 'result.name, result.schema.oneOf'                                              │
│ 25      │ 'eth_getUncleCountByBlockHash'            │ 'result.name, result.schema.oneOf'                                              │
│ 26      │ 'eth_getUncleCountByBlockNumber'          │ 'result.name, result.schema.oneOf'                                              │
│ 27      │ 'eth_maxPriorityFeePerGas'                │ 'result (3 diffs), summary'                                                     │
│ 28      │ 'eth_newBlockFilter'                      │ 'summary, result.name, result.schema.$ref'                                      │
│ 29      │ 'eth_newFilter'                           │ 'params.0.name, params.0.schema.$ref, result.name, result.schema.$ref'          │
│ 30      │ 'eth_newPendingTransactionFilter'         │ 'summary, result'                                                               │
│ 31      │ 'eth_sendRawTransaction'                  │ 'summary'                                                                       │
│ 32      │ 'eth_sendTransaction'                     │ 'summary, params, result'                                                       │
│ 33      │ 'eth_sign'                                │ 'summary, params, params, result'                                               │
│ 34      │ 'eth_signTransaction'                     │ 'summary, params, result'                                                       │
│ 35      │ 'eth_syncing'                             │ 'summary, result.schema.$ref'                                                   │
│ 36      │ 'eth_uninstallFilter'                     │ 'params.0.name, params.0.schema.$ref, result.name'                              │
└─────────┴───────────────────────────────────────────┴─────────────────────────────────────────────────────────────────────────────────┘

Explanation:
- valueDiscrepancies: Fields that exist in both documents but have different values
- Entries with format "path (N diffs)" indicate N differences within that path

@codecov
Copy link

codecov bot commented Feb 17, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.

@@            Coverage Diff             @@
##             main    #4935      +/-   ##
==========================================
- Coverage   95.77%   95.06%   -0.71%     
==========================================
  Files         143      143              
  Lines       23770    23770              
  Branches     1856     1811      -45     
==========================================
- Hits        22765    22597     -168     
- Misses        980     1148     +168     
  Partials       25       25              
Flag Coverage Δ
config-service 98.63% <ø> (ø)
relay 92.30% <ø> (ø)
server ?
ws-server ?

Flags with carried forward coverage won't be shown. Click here to find out more.
see 16 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@github-actions
Copy link

Test Results

0 tests   - 8   0 ✅  - 7   0s ⏱️ - 1m 45s
0 suites  - 8   0 💤 ±0 
0 files    - 1   0 ❌  - 1 

Results for commit 0115dee. ± Comparison against base commit d74b61d.

@jasuwienas
Copy link
Contributor

jasuwienas commented Feb 19, 2026

TBD - decissions to be made right now.

  1. How to state what is the format of arrays that are always empty. Should we keep:
  • expected forat simplified and title updated (for example "Empty accounts" instead of "Accounts")? (maybe we should have clear convention on how to approach it, for example always start with default descirpiotn like "Accounts" but append additional text- "Accounts - always empty"
  • only simplified format (no items , definition, just pattern: "^\[\s*\]$" or even ^\[]$ ?
  • only title updated
  • store this remark in another field?

Applies for: Accoutns,

eth_getUncleCountByBlockHash and
    "name": "eth_getUncleCountByBlockNumber result",
   "oneOf": [
           {
             "$ref": "#/components/schemas/notFound"
           },
           {
             "title": "Uncle count",
             "$ref": "#/components/schemas/uint"
           }
         ]
  1. Objects renamed / redefined. Should we use GenericTransaction or TransactionWithSender ? We are creating our own data structures while, very similar ones are already defined in the initial file. For example GenericTransaction is the same as TransactionWithSender (even has from field), even though it is defined by chain of dependencies. And.. TransactionUnsigned is used only as parent for TransactionWithSender (never used, anywhere else). TransactionUnsigned is on eof Transaction1559Unsigned or TransactionLegacyUnsigned which AGAIN are used ONLY as parents in these definitions. WHy don't we just flatten it as it is in the standard eth file?
  2. Why do we enforce users in eth_call to send block param if we allow it to be null. I think we can switch it to non-required? Same for gasPrice. Btw when we query for them we allow hashes as well, so we can use proposed change from BlockNumberOrTag to BlockNumberOrTagOrHash

In eth_feeHistory we have:

  title: normalized ratio
  type: number
  minimum: 0
  maximum: 1

We replaced it with:

"title": "floating point number",
"type": "number",
"pattern": "^([0-9].[0-9]*|0)$"

Which means essentialy the same, why don't we just keep the default one?
5. eth_feeHistory : "additionalProperties": false
Why don't we check if no additional param was send and update our json rpc to reflect it as well?

  1. in default file we have term wei used, which we replace with weibar. Is it needed ?
  2. Do we need additional custom notes like
          "title": "hex encoded unsigned integer",

on balance field? uint type is already correctly explaining what the content of the field is...
8. using uint256 instead of uint
9. descirpiton changes "Storage slot" -> "Position" (I think we should use the ones used by default in eth), Value -> Value from storage (of course its from storage, method is called getStorageAt..)
Uncle count -> eth_getUncleCountByBlockNumber result (Yes, it is result from that method, why write our own descripiton, when default one is better I guess?)

Filter Identifier -> FIlter ID
10. Casing Receipt Information -> Receipt information

(Will be included / discussed in PR)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

Comments