Collection of JSON-RPC APIs provided by Ethereum 1.0 clients

Overview

Ethereum JSON-RPC Specification

View the spec

The Ethereum JSON-RPC is a collection of methods that all clients implement. This interface allows downstream tooling and infrastructure to treat different Ethereum clients as swappable modules.

Contributing

The specification is written in OpenRPC.

Comments
  • Engine API: proposal for authentication

    Engine API: proposal for authentication

    This is an RFC for authenticated JSON rpc API

    Authentication

    The engine JSON-RPC interface, exposed by EL and consumed by CL, needs to be authenticated. The authentication scheme chosen for thus purpose is JWT.

    The type of attacks that this authentication scheme attempts to protect against are the following:

    • RPC port exposed towards the internet, allowing attackers to exchange messages with EL engine api.
    • RPC port exposed towards the browser, allowing malicious webpages to submit messages to the EL engine api.

    The authentication scheme is not designed to

    • Prevent attackers with capability to read ('sniff') network traffic from reading the traffic,
    • Prevent attackers with capability to read ('sniff') network traffic from performing replay-attacks of earlier messages.

    Authentication is performed as follows:

    • For HTTP dialogue, each jsonrpc request is individually authenticated by supplying JWT token in the HTTP header.
    • For a WebSocket dialogue, only the initial handshake is authenticated, after which the message dialogue proceeds without further use of JWT.
    • For inproc, a.k.a raw ipc communication, no authentication is required, under the assumption that a process able to access ipc channels for the process, which usually means local file access, is already sufficiently permissioned that further authentication requirements do not add security.

    JWT specifications

    • The EL MUST support the at least the following alg HMAC + SHA256 (HS256)
    • The EL MUST reject the alg none.

    The HMAC algorithm means that symmetric encryption is used, thus several CL's will be able to use the same key, and, from an authentication perspective be able to impersonate each other. From a deployment perspective, it means that an EL does not need to be provisioned with individual keys for each caller.

    Key distribution

    The EL and CL clients MUST accept a cli/config parameter: jwt-secret, a 256 bit key, to be used for verifying/generating jwt tokens. If such a parameter is not given, the client SHOULD generate such a token, valid for the duration of the execution, and show the token in the output, which the user can then use to provision the counterpart client with.

    opened by holiman 33
  • JSON-RPC: Add finalized and safe blocks

    JSON-RPC: Add finalized and safe blocks

    Adds finalized value to the block tags enum.

    Pre-Merge response

    There are three options:

    • Refer to a block that is likely to stay in the PoW canonical chain forever, i.e. a block which is e.g. 128 blocks behind the head
    • Respond with error
    • Respond with genesis block

    I am slightly inclined towards the third option. It gives users a graceful option to check whether the Merge has happened or not, i.e. checking if finalized.number > earliest.number.

    Whatever option we choose it needs to be specified somewhere. Probably in the description field to this enum.

    Safe block

    Another couple of values that are considered for addition to this enum is safe and unsafe. It worth noting that if these values and the corresponding functionality will be added after the Merge then unsafe tag will be used as an alias to the latest to avoid backwards incompatibility.

    Description

    I've been playing with the way of adding a "description" field to this enum in the openrpc playground. To be honest, it looks ugly as it seems there is no way to describe each value separately and there is also no way to include line breaks into the description. So, whenever we will have to utilize description it will be a sequence of sentences without breaks.

    cc @timbeiko @lightclient @djrtwo @MicahZoltu @MariusVanDerWijden

    opened by mkalinin 23
  • [RFC] Engine API: Add block value in response to engine_getPayload

    [RFC] Engine API: Add block value in response to engine_getPayload

    Currently the CL is blind to the value of the locally built block and therefore, if configured with a builder, will always propose the remotely built block.

    In order to allow the CL to intelligently decide between using the local or remote block, the EL could provide the value of its block in its response to engine_getPayload. The EL can be free to determine the value of its block as it sees fit (summing tx fees, checking feeRecipient balance pre/post execution, etc..).

    The change will help to ensure validators propose the highest paying block in general, but more importantly will increase the cost of censorship by builders.

    opened by allboxes 18
  • Fix ambiguous spec defintion

    Fix ambiguous spec defintion

    There has been a misunderstanding from the Nimbus team. Without specifying which client SHOULD generate the jwt token, it could be assumed that it's up to the CL client also. This modification request would suggest that only the EL client should generate the jwt token, not the CL client.

    Link to discussion. (Nimbus discord)

    opened by barnabasbusa 12
  • Standardize `debug` namespace

    Standardize `debug` namespace

    Clients currently support an assortment of debug-like RPCs and commands. In an effort to simplify debugging chain disagreements and have more reusable debugging tooling across clients, I propose we standardize five basic JSON-RPC methods.

    • debug_getRawHeader(hashOrNumber) -> bytes -- gets header RLP.
    • debug_getRawBlock(hashOrNumber) -> bytes -- gets block RLP.
    • debug_getRawTransaction(hash) -> bytes -- gets EIP-2718 encoded tx.
    • debug_getRawReceipts(hashOrNumber) -> []bytes -- gets array of EIP-2718 encoded receipts.
    • debug_getBadBlocks -> []BadBlock -- gets recent invalid blocks seen by the client.
    • ~debug_setHead(number) -> null -- overrides the client and resets the head to a certain block number.~

    edit: seems like the general consensus is to not expose setHead under debug.

    Geth currently supports all of these (although the interfaces are slightly different at the moment). I see other clients support some of the methods.

    I'd like to know:

    1. Is this is a good minimal set of debug methods to standardize (open to add/removing methods as needed)?
    2. How long would it take for clients to implement each of these if there were integration tests for them in hive?
    A-spec 
    opened by lightclient 11
  • Engine API: add getPayloadBodies method

    Engine API: add getPayloadBodies method

    Proposal

    • Adds engine_getPayloadBodies method to the Engine API
    • Given the block_hash values the method returns ExecutionPayloadBody objects which consist of transactions list of the corresponding payloads
    • The logic of the new method maps on the logic of existing GetBlockBodies message in ETH protocol -- this is the crux of this proposal

    Concerns

    The main concern is that retrieval of the bodies by hashes doesn't allow for utilizing linearity of block data as if the request was made by block numbers. Utilizing the linearity property opens up an opportunity for more optimal way of accessing this information, especially it makes sense for the finalized part of the blockchain.

    See https://github.com/ethereum/execution-apis/issues/137 and discussion thread for more details

    Implementations

    A-engine 
    opened by mkalinin 10
  • Add engine_getPayloadV2 with locally built block value

    Add engine_getPayloadV2 with locally built block value

    This is an initial draft for versioning engine_getPayload to support the EL client's estimate of the value of the block.

    This allows the CL to compare the value of locally built blocks to remotely build blocks received from relays/builders.

    https://github.com/ethereum/execution-apis/issues/307

    This PR is pending consensus on the optimal path to handle changes to the execution API.

    Comments and/or improvements are welcome.

    opened by allboxes 8
  • Clarify the difference between SYNCING and ACCEPTED

    Clarify the difference between SYNCING and ACCEPTED

    The spec does not adequately explain the difference between SYNCING and ACCEPTED for non-canonical branches.

    For a block for a non-canonical branch to be ACCEPTED, it must be a "well-formed" chain of known ancestors. Such a block with unknown ancestors cannot be ACCEPTED and must instead be signaled as SYNCING.

    The purpose of ACCEPTED is to signal that there is in fact a well-formed chain but it has not yet been executed. ACCEPTED is not intended to also be for non-canonical branches missing requisite data.

    opened by djrtwo 8
  • JSON RPC OpenRPC Spec

    JSON RPC OpenRPC Spec

    This specification uses EIP 1474, splits up the spec into a more manageable multi-file format, and I've begun incorporating the yellow paper where applicable.

    This is the initial commit, and changes are expected. Particularly as they pertain to including edgecases as an md in each endpoints description. This will be accomplished by storing each edgecase in the same format as the methods themselves but in an "edgecases" folder.

    the current structure allows for more easy reuse of components / schemas with method specific descriptions and requirements and it more clearly separates schemas from components from methods which are all different levels. This separation is necessary due to the way that OpenRPC parses the json.

    You may notice that I use external references to internal entries in the json (i.e. ./File.json#/item instead of #/item). This is just a work around for a weird bug I ran into where internally referenced items would try to resolve relative to the externally imported component (i.e. file2 imports File.json#/item and then #/item is not in file2 so it errors).

    you can see the built specification here

    The goal here was maximum maintainability by keeping relevant info where it's most useful and never repeating things. I'd like to get rid of the components in the future fit this reason but they already to be a key part of the openrpc. Nevertheless I've done my best here to keep things as clean as possible. There are some ways to clean it up still. But I think it's fine for now. But what do you think?

    opened by alita-moore 8
  • Make explicit that the child of LVH is INVALID

    Make explicit that the child of LVH is INVALID

    Make explicit that when returning INVALID from payload validation, the child of the latestValidHash in the invalid payload branch, is indeed INVALID, allowing thus the consumer to prune any block in this branch starting from said child.

    A-engine 
    opened by potuz 6
  • Engine API: add validAncestorHash to engine_executePayload

    Engine API: add validAncestorHash to engine_executePayload

    NOTE: Currently based on #83 and pointed to that PR as the base. Trying to keep the diff legible while continuing to be able to work. Will rebase and point this PR to main once #83 is merged

    INVALID is insufficient to parse the validity of ancestor blocks that previously returned SYNCING. As per discussions at interop, add validAncestorHash in the return value to point to the latest (by block number) valid ancestor to the payload that is being processed. In the event of INVALID, this can thus invalidate an arbitrary number of blocks in the chain starting with the payload.

    Did discuss this with @holiman to ensure that this is feasible in geth.

    Additionally:

    • Provide guidance on how long to try to resolve a payload's dependencies before responding with SYNCING -- SLOTS_PER_SECOND / 30 (0.4s)
    • Do not make PoW vs PoS an exceptional case wrt SYNCING return value. Enforcing finding of dependencies of blocks with PoW ancestors rather than returning SYNCING could result in deadlocks.
    opened by djrtwo 6
  • Engine API: initial draft of EIP-6110 spec

    Engine API: initial draft of EIP-6110 spec

    Introduces Engine API specification of EIP-6110.

    Note: Methods and structures modified by the EIP are versioned as V6110, while structures that are added by the EIP are versioned as V1. This is done to avoid potential clashes when several experimental features and hard forks are modifying the same structures and methods.

    opened by mkalinin 0
  • Engine API: deprecate exchangeTransitionConfiguration

    Engine API: deprecate exchangeTransitionConfiguration

    An alternative to https://github.com/ethereum/execution-apis/pull/320. This PR deprecates engine_exchangeTransitionConfiguration by marking the method as deprecated rather than making a change into its specification.

    There are two ways to deprecate the call on Mainnet:

    1. As a part of Capella/Shanghai deployment process. Shanghai compliant EL clients don't expect this call to be made (may be entirely removed) and Capella compliant CL clients stop making this call. There could be a hiccup in this process when a user upgrades one layer but leave the other one not upgraded yet and start seeing worrisome messages in logs.
    2. In an uncoordinated fashion. CL keeps calling this method but adds a check that this method does exist, and if EL responds with this method doesn't exist message CL doesn't make any noise in logs. This allows for EL to remove the method support, and once every EL client removes it then CL is free to do the same.

    The first option looks simpler to me but I am fine either way.

    opened by mkalinin 0
  • Engine API: a bunch of cleanups

    Engine API: a bunch of cleanups

    This PR proposes the following cleanups to the Shanghai part of the spec:

    • Sets timeouts whenever missed
    • Makes validation of terminal PoW block conditions optional, so, client devs may remove it if they want
    • Requires EL clients to stop using INVALID_BLOCK_HASH status and supplant it with INVALID, see https://github.com/ethereum/execution-apis/issues/270 for details (should be a one liner, if not let's debate)

    If EL client implementations use the same piece of code for both V1 and V2 the latter two changes may become a problem as they seem to be backwards incompatible with V1. Though, practically it isn't that true as the transition has happened quite long time ago and having no TTD validation should not break anything except for Hive tests (though we should probably remove transition tests from Hive). All CL clients handle status: INVALID, latestValidHash: null in the same way as status: INVALID_BLOCK_HASH, latestValidHash: null, replacing the latter with the former must not change anything.

    opened by mkalinin 0
  • Engine API: unify failure mode for mismatched structure versions

    Engine API: unify failure mode for mismatched structure versions

    Unifies return value for the case when the wrong data structure version is used in V2 method calls in a way that client software MUST return -32602: Invalid params error.

    The idea behind this change is to make a future proof unification to this type of failure, and also get rid of abusing INVALID payload status and discrepancy between two methods in handling the same type of error that exists in the current version of the spec.

    Note: We may introduce a new custom error type to be returned in the response. I just thought we might not need it but not opposed to it in general.

    opened by mkalinin 0
  • How to handle reorg'ed blob txs

    How to handle reorg'ed blob txs

    When reorg happens, CL or EL clients take the reorg'ed objects (i.e. txs, attestations, exits... etc) and put them on the new canonical chain, so they are not lost. EL client handles txs reorging, but by itself, it's not sufficient to handle blob txs, because the blobs are not included within the blocks. EL clients may need more visibility to see all the blobs, such as flash bots inclusion. To satisfy this, CL needs to support EL. Here are a few options with tradeoffs:

    1. CL pushes blobs to EL on every newPayload call.

    2. CL pushes reorg'ed blobs hashes to EL on every forkchoiceUpdated call. EL can request them via p2p

    1 and 2 are less ideal from our perspective. It couples EL and CL in ways we aren't comfortable with and in deeper ways than we had envisioned. CL clients will be required to make decisions about execution and deal with extra complexity. 1 also increases the latency, which delays state transition. It's probably best not to couple this resolution closing with engine API. Instead, the CL client could optionally call sendRawTransaction for reorg'ed blob txs, and the blob users could do the same too. It's also probably safe to assume blob users are more sophisticated, and they can also monitor blob txs status and resubmit in the event of reorg. Here is option 3

    1. CL optionally can call sendRawTransaction on reorg'ed blob tx
    opened by terencechain 1
Releases(v1.0.0-beta.1)
  • v1.0.0-beta.1(Aug 22, 2022)

    v1.0.0-beta.1 is a pre-release of the Execution APIs.

    The is a jam-packed release for execution-apis. First there were several clarifications to the engine methods in preparation for the mainnet merge. The eth namespace spec was converted to YAML for readability and many corrections were made. Some existing functionality was added to the spec scope and some was removed. The debug namespace was officially added. Tests for eth and debug now live in the /tests folder. @s1na has defined the GraphQL interface for eth-style methods. Finally, the documentation has been improved substantially. There is now a guide for making changes to the JSON-RPC. PTAL if you want to understand better how to contribute to this repository.

    Now that there is some test coverage and confidence in correctness is building, we're moving out of alpha and into beta. Note that this designation is only due to the instability expected in the eth namespace. The engine namespace should be considered stable and ready for mainnet use.

    eth Namespace

    • Add GraphQL schema by @s1na in https://github.com/ethereum/execution-apis/pull/199
    • JSON-RPC: Add finalized and safe blocks by @mkalinin in https://github.com/ethereum/execution-apis/pull/200
    • graphql: add raw fields to block and tx by @s1na in https://github.com/ethereum/execution-apis/pull/220
    • add BlockNumberOrTag to eth_call, eth_estimateGas by @ryanio in https://github.com/ethereum/execution-apis/pull/129
    • add eth_feeHistory summary, description by @MintyAtmosphere in https://github.com/ethereum/execution-apis/pull/128
    • Change BlockNumber to BlockTags for existing APIs by @shemnon in https://github.com/ethereum/execution-apis/pull/228
    • log.transactionHash is required by @rafaelkallis in https://github.com/ethereum/execution-apis/pull/240
    • oneOf fails to match when block txs is empty by @lightclient in https://github.com/ethereum/execution-apis/pull/243
    • Block nonce is 8 bytes by @shemnon in https://github.com/ethereum/execution-apis/pull/229
    • Convert spec to yaml by @lightclient in https://github.com/ethereum/execution-apis/pull/246
    • Add some initial test cases + CI validation by @lightclient in https://github.com/ethereum/execution-apis/pull/249
    • Make td optional field on block by @lightclient in https://github.com/ethereum/execution-apis/pull/251
    • Update tests so that they return chainId as part of EIP-155 txs by @lightclient in https://github.com/ethereum/execution-apis/pull/255
    • Add eth_getProof spec by @lightclient in https://github.com/ethereum/execution-apis/pull/260
    • Remove eth_protocolVersion by @lightclient in https://github.com/ethereum/execution-apis/pull/264
    • Use generic tx for eth_sign + eth_sendtransaction and add from field by @lightclient in https://github.com/ethereum/execution-apis/pull/290
    • Specify a placeholder TTD by @paulhauner in https://github.com/ethereum/execution-apis/pull/285

    debug Namespace

    • Standardize debug namespace by @lightclient in https://github.com/ethereum/execution-apis/pull/247

    engine Namespace

    • Auth spec shouldn't specify which methods are provided over it by @lightclient in https://github.com/ethereum/execution-apis/pull/196
    • Engine API: respond with error if payload attributes are invalid by @mkalinin in https://github.com/ethereum/execution-apis/pull/211
    • engine timeouts (redux) by @djrtwo in https://github.com/ethereum/execution-apis/pull/216
    • Engine API: adjust error codes with JSON-RPC 2.0 spec by @mkalinin in https://github.com/ethereum/execution-apis/pull/214
    • Engine API: return error if forkchoice state is inconsistent by @mkalinin in https://github.com/ethereum/execution-apis/pull/213
    • Engine API: remove unauth port and refer to auth spec by @mkalinin in https://github.com/ethereum/execution-apis/pull/219
    • Clarify the difference between SYNCING and ACCEPTED by @djrtwo in https://github.com/ethereum/execution-apis/pull/215
    • Engine API: replace INVALID_TERMINAL_BLOCK with INVALID + lvh=0x00..00 by @mkalinin in https://github.com/ethereum/execution-apis/pull/217
    • Engine API: a few clarifications by @mkalinin in https://github.com/ethereum/execution-apis/pull/226
    • Make td optional field on block by @lightclient in https://github.com/ethereum/execution-apis/pull/251
    • require JWT keys to be exactly 32 bytes by @tersec in https://github.com/ethereum/execution-apis/pull/242
    • Engine API: narrow down fcU skip conditions by @mkalinin in https://github.com/ethereum/execution-apis/pull/244
    • Engine API: recommend to retry the call after timeout by @mkalinin in https://github.com/ethereum/execution-apis/pull/253
    • Increase JWT issued-at window to 60s by @dapplion in https://github.com/ethereum/execution-apis/pull/256

    New Contributors

    • @ralexstokes made their first contribution in https://github.com/ethereum/execution-apis/pull/192
    • @s1na made their first contribution in https://github.com/ethereum/execution-apis/pull/199
    • @rootulp made their first contribution in https://github.com/ethereum/execution-apis/pull/181
    • @jonasbn made their first contribution in https://github.com/ethereum/execution-apis/pull/151
    • @shemnon made their first contribution in https://github.com/ethereum/execution-apis/pull/228
    • @rafaelkallis made their first contribution in https://github.com/ethereum/execution-apis/pull/240
    • @tersec made their first contribution in https://github.com/ethereum/execution-apis/pull/242
    • @potuz made their first contribution in https://github.com/ethereum/execution-apis/pull/254
    • @dapplion made their first contribution in https://github.com/ethereum/execution-apis/pull/256

    Full Changelog: https://github.com/ethereum/execution-apis/compare/v1.0.0-alpha.8...v1.0.0-beta.1

    Source code(tar.gz)
    Source code(zip)
  • v1.0.0-alpha.9(May 19, 2022)

    v1.0.0-alpha.9 is a pre-release of the Execution API.

    In this release, the eth namespace saw some minor changes. The engine namespace was further refined, particularly with respect to edge cases. A new API specification was added to the repository in this release: the GraphQL spec! @s1na added this spec in #199. GraphQL is a great addition; it allows developers to make very fine-grain requests against execution clients.

    eth

    • Add BlockNumberOrTag to eth_call, eth_estimateGas https://github.com/ethereum/execution-apis/pull/129
    • Add eth_feeHistory summary, description https://github.com/ethereum/execution-apis/pull/128

    engine

    • Remove references to the interop spec https://github.com/ethereum/execution-apis/pull/192
    • Auth spec shouldn't specify which methods are provided over it https://github.com/ethereum/execution-apis/pull/196
    • Get rid of eth1.0 leftovers https://github.com/ethereum/execution-apis/pull/198
    • Respond with error if payload attributes are invalid https://github.com/ethereum/execution-apis/pull/211
    • Engine timeouts (redux) https://github.com/ethereum/execution-apis/pull/216
    • Adjust error codes with JSON-RPC 2.0 spec https://github.com/ethereum/execution-apis/pull/214
    • Return error if forkchoice state is inconsistent https://github.com/ethereum/execution-apis/pull/213
    • Remove unauth port and refer to auth spec https://github.com/ethereum/execution-apis/pull/219
    • Add finalized and safe blocks https://github.com/ethereum/execution-apis/pull/200
    • Clarify the difference between SYNCING and ACCEPTED https://github.com/ethereum/execution-apis/pull/215
    • Replace INVALID_TERMINAL_BLOCK with INVALID + lvh=0x00..00 https://github.com/ethereum/execution-apis/pull/217
    • A few clarifications https://github.com/ethereum/execution-apis/pull/226

    graphql

    • Add GraphQL schema by @s1na in https://github.com/ethereum/execution-apis/pull/199
    • graphql: add raw fields to block https://github.com/ethereum/execution-apis/pull/220
    • README: add graphql section https://github.com/ethereum/execution-apis/pull/221

    Miscellaneous

    • Fix grammar in README by @rootulp in https://github.com/ethereum/execution-apis/pull/181
    • Bumped spellcheck GitHub action to version 0.20.0 by @jonasbn in https://github.com/ethereum/execution-apis/pull/151

    New Contributors

    Thank you and welcome to our new contributors! 🙂

    • @ralexstokes made their first contribution in https://github.com/ethereum/execution-apis/pull/192
    • @s1na made their first contribution in https://github.com/ethereum/execution-apis/pull/199
    • @rootulp made their first contribution in https://github.com/ethereum/execution-apis/pull/181
    • @jonasbn made their first contribution in https://github.com/ethereum/execution-apis/pull/151

    Full Changelog: https://github.com/ethereum/execution-apis/compare/v1.0.0-alpha.8...v1.0.0-alpha.9

    Source code(tar.gz)
    Source code(zip)
  • v1.0.0-alpha.8(Mar 10, 2022)

    v1.0.0-alpha.8 is a pre-release of the Execution API.

    eth namespace

    • Add eth_chainId method #193
    • Update CI dependencies #194

    engine namespace

    • Expose a subset of the eth namespace over the engine #183
    • Add QoS for transition config endpoint #189
    • Clarify terminalBlockNumber field in config ping #179

    Full engine specification here.

    Source code(tar.gz)
    Source code(zip)
  • v1.0.0-alpha.7(Feb 23, 2022)

    v1.0.0-alpha.7 is a pre-release of the Execution API.

    eth Namespace

    No updates in this release.

    engine Namespace

    • Add engine_exchangeTransitionConfigurationV1 #172
    • Authentication for engine api #167
    • Fix forkchoiceUpdated INVALID response #173
    • Clarify validationError usage #175
    • Rename random to prevRandao #180

    --

    Full engine specification here.

    Source code(tar.gz)
    Source code(zip)
  • v1.0.0-alpha.6(Jan 28, 2022)

    v1.0.0-alpha.6 is a pre-release of the Execution API.

    eth Namespace

    • New assembled output refs-openrpc.json allows external projects to easily reference spec objects #156
    • Improve definition of log filter topic #169 Thank you @shanejonas and @fjl for your eth API contributions.

    engine Namespace

    • Stop ordering messages via the JSON-RPC id field and instead rely on the order the messages are received #148
    • Fix missed merge => bellatrix renameing #161
    • Extend semantics of executePayload and forkchoiceUpdated methods #165
    • Replace terminal block error with INVALID_TERMINAL_BLOCK status #170

    Thank you @mkalinin, @djrtwo, @holiman, and @MariusVanDerWijden for your work and feedback on the engine API changes.

    --

    Full engine specification here.

    Source code(tar.gz)
    Source code(zip)
  • v1.0.0-alpha.5(Nov 30, 2021)

    v1.0.0-alpha.5 is a pre-release of the Execution API.

    eth Namespace

    • Add missing properties to ReceiptInfo schema #126
    • Fix eth_submitWork parameters, allow 0x0 uint

    engine Namespace

    • Rename coinbase to feeRecipient in ExecutionPayloadV1 #130
    • Rename feeRecipient to suggestedFeeRecipient in PayloadAttributesV1 #130
    • Rename receiptRoot to receiptsRoot in ExecutionPayloadV1 #140
    • Respond with error code -32002 if terminal block doesn't satisfy terminal block conditions #132
    • Serve HTTP and WS over same 8550 port #134
    • Refine message ordering behavior #133
    • Rename message to validationError in engine_executePayloadV1 response #135
    • Some typos fixed #111 --

    Full specification here.

    Source code(tar.gz)
    Source code(zip)
  • v1.0.0-alpha.4(Nov 5, 2021)

    v1.0.0-alpha.4 is a pre-release of the Execution API.

    eth Namespace

    • Fixed misspelled method getStorageAt #107

    engine Namespace

    This replaces "Installation Lap" as the new target for the November Merge sprint.

    • Refines forkchoiceUpdated so that EL calculates and returns payloadId to CL #109

    --

    Full specification here.

    Source code(tar.gz)
    Source code(zip)
  • v1.0.0-alpha.3(Nov 2, 2021)

    v1.0.0-alpha.3 is a pre-release of the Execution API.

    eth Namespace

    No changes were made in this release.

    engine Namespace

    There were many changes to the engine API based on feedback from the Amphora event. This release is intended to be a stable target for clients planning to participate in the November merge sprint.

    • Created a mainnet target for the engine API based on the interop version #81
    • Removed engine_consensusValidated in accordance with it's removal from EIP-3675 #82
    • Removed engine_preparePayload and instead combined the functionality as an extension of engine_forkchoiceUpdated via an additional parameter #83
    • Added validAncestorHash to engine_executePayload return data #84
    • Renumbered error codes to use more standard JSON-RPC codes #85
    • Made a note of advanced usage of the API #86
    • Enforced strict message ordering #89
    • Added safeBlockHash to engine_forkchoiceUpdated #93
    • Implemented method-level versioning #94
    • Required clients to also expose the eth namespace on the same port as the engine namespace #97
    • Versioned payloadId computation and specified collision-resistant calculation #104

    Please note that there is an open discussion regarding how EL should respond when CL request a massive reorg that will cause it revert to syncing status.

    Thank you @djrtwo, @mkalinin, @holiman, @protolambda, and others for their contributions on this release!

    --

    Full specification here.

    Source code(tar.gz)
    Source code(zip)
  • v1.0.0-alpha.2(Oct 1, 2021)

    Release

    v1.0.0-alpha.2 is a breaking update to the engine method preparePayload. Previously the method returned a QUANTITY value. Now it returns an object with one field payloadId, which is a QUANTITY.

    See #77 for the discussion around the change.

    --

    Full specification here.

    Source code(tar.gz)
    Source code(zip)
  • v1.0.0-alpha.1(Sep 24, 2021)

    Release

    v1.0.0-alpha.1 is the first pre-release of the Execution API.

    eth Namespace

    The eth specification is a full rewrite, under CC0, of ETC Labs' JSON-RPC specification. It aims to be the canonical source for the standard eth methods implemented in execution clients. The specification is still under active development and testing against clients, so its correctness is not guaranteed.

    Many people contributed to this work in significant ways, so a few shout outs are due:

    • @shanejonas, @BelfordZ, et al. for developing the Open RPC standard
    • @tkstanczak and @shanejonas for pushing for more rigorous definitions of the API
    • @shanejonas for being available to help with questions regarding Open RPC and the JSON Schema standard, and for reviewing much of the work that went into the rewrite
    • @alita-moore and @dockboss for their efforts over the past few months to document the edge cases in the API

    engine Namespace

    The initial engine methods for the Merge Interop has been specified in #74 by @mkalinin. It introduces the following methods:

    engine_executePayload
    engine_preparePayload
    engine_getPayload
    engine_consensusValidated
    engine_forkchoiceUpdated
    

    Full specification here.

    --

    Αυτό είναι μόνο η αρχή.

    Source code(tar.gz)
    Source code(zip)
Owner
null
my ethereum RPC node setup & notes

UBUNTU RPC (scaffold-rpc) sudo add-apt-repository -y ppa:ethereum/ethereum sudo apt-get update sudo apt-get install ethereum = created geth script = g

Austin Griffith 10 Jul 4, 2022
Your Ethereum control panel. Interact with smart contracts on Ethereum.

etherfunk Your Ethereum control panel. Interact with smart contracts on Ethereum. ?? https://etherfunk.io ?? Devleopment First, run the development se

Tom Quirk 23 Sep 24, 2022
JCS (JSON Canonicalization Scheme), JSON digests, and JSON Merkle hashes

JSON Hash This package contains the following JSON utilties for Deno: digest.ts provides cryptographic hash digests of JSON trees. It guarantee that d

Hong Minhee (洪 民憙) 13 Sep 2, 2022
Package fetcher is a bot messenger which gather npm packages by uploading either a json file (package.json) or a picture representing package.json. To continue...

package-fetcher Ce projet contient un boilerplate pour un bot messenger et l'executable Windows ngrok qui va permettre de créer un tunnel https pour c

AILI Fida Aliotti Christino 2 Mar 29, 2022
A microservice for calling ethereum APIs.

Ether Goblin A microservice for calling ethereum APIs. Features RESTFul APIs for the Ethereum Blockchain and its ecosystem Microservice Run in Docker

null 8 Nov 15, 2022
At BlackBox Vision we use heavily React Admin to build internal systems for our clients.

?? RA Firebase Starter ?? At BlackBox Vision we use heavily React Admin to build internal systems for our clients. Also, we rely on firebase a lot for

BlackBox Vision 2 Jun 7, 2022
To keep online organized data and be able to add listeners in certain paths by socket.io and http clients

The purpose of this project is to create a state machine server to keep organized data and be able to add listeners with socket.io in specific paths and in addition to providing a possible form of messages between socket.io clients.

Manga 3 Mar 19, 2022
A tool for generating solana web3 clients from anchor IDLs.

anchor-client-gen Generate typescript solana web3 clients from anchor IDLs. Installation # npm $ npm install --global anchor-client-gen # yarn $ yarn

Krešimir Klas 97 Dec 17, 2022
This is a website for solving IT issues and providing IT solutions as answers to submitted tickets from clients. It is a project from Software Interns Team in Safecotech Internship Program 2022.

CONNECT IT-Solutions Table of Contents Built With Getting Started Description Documentation Commit History Screenshots Contributors Built With : Node

null 4 Sep 24, 2022
A small utility server to exchange data and messages between clients. Comes complete with E2E public key encryption

Zenotta Intercom A small utility server to exchange arbitrary data between clients. Comes complete with E2E public key encryption Official documentati

Zenotta AG 7 Oct 2, 2022
It is a tours website for showing the information about all the tours of this company and making the clients able to book them.

NATOURS APP Table of Contents Deployed Website Built With Getting Started Description Documentation Screenshots Deployed Website : NOTE: Heroku is pla

null 3 Sep 24, 2022
Master Collection NFT. Mints NFTs on Ethereum containing unique combination of titles for fun.

Master NFT Collection Master NFT Collection is an NFT minting platform that mints NFTs that contain a unique combination of snazzy titles just for fun

MJ LEE 2 Mar 22, 2022
A comprehensive collection of useful tools developed with the help of Ethers.js to interact with the Ethereum Blockchain to develop great DeFi apps as quickly and easily as possible.

hudi-packages-ethersfactory How to install Installing with npm For more information on using npm check out the docs here. npm i @humandataincome/ether

HUDI 6 Mar 30, 2022
A Node.js client & server implementation of the WAMP-like RPC-over-websocket system defined in the OCPP-J protcols.

OCPP-RPC A client & server implementation of the WAMP-like RPC-over-websocket system defined in the OCPP-J protcols (e.g. OCPP1.6J and OCPP2.0.1J). Re

Mikuso 14 Dec 30, 2022
Run RPC over a MessagePort object from a Worker thread (or WebWorker)

thread-rpc Run RPC over a MessagePort object from a Worker thread (or WebWorker) npm install thread-rpc Usage First in the parent thread const Thread

Mathias Buus 9 May 31, 2022
RPC-like client, contract, and server implementation for a pure REST API

ts-rest RPC-like client and server helpers for a magical end to end typed experience Introduction ts-rest provides an RPC-like client side interface o

tREST 215 Dec 30, 2022
⚡🚀 Call multiple view functions, from multiple Smart Contracts, in a single RPC query!

ethers-multicall ⚡ ?? Call multiple view functions, from multiple Smart Contracts, in a single RPC query! Querying an RPC endpoint can be very costly

Morpho Labs 20 Dec 30, 2022
an open-source package to make it easy and simple to work with RabbitMQ's RPC ( Remote Procedure Call )

RabbitMQ Easy RPC (Remote Procedure Call ) The Node.js's RabbitMQ Easy RPC Library rabbitmq-easy-RPC is an easy to use npm package for rabbitMQ's RPC

Ali Amjad 4 Sep 22, 2022
A MITM cache between RPCs and a a dAPP. Useful to allow for better performance on a public RPC node

better-cosmos-rpcs A cheaper way to allow for public RPCs as a service WITHOUT scaling issues. No need to rate limit either. How it is done: User GET

Reece Williams 3 Nov 19, 2022