Skip to content

Releases: hashgraph/hedera-json-rpc-relay

v0.3.0

13 Jul 17:17
ba3131c
Compare
Choose a tag to compare

v0.3.0 brings large transaction, improved in relay prechecks and expanded acceptance tests with ERC 20 coverage.
The release continues on the goal to provide strong foundational functionality for the relay and make initial steps towards optimal features.

The eth_sendRawTransaction endpoint now supports large transactions (usually seen with contract deplyment) that exceed the Hedera transaction size support.

The eth_feeHistory endpoint was updated to use the mirror node APIs more completely, this moves away from the static logic initially provided.

Multiple prechecks (chainId, balance, gas) were added to reduce the latency between a users submission of transactions that would not make it to consensus and their reported status, this also reduces the load on the network and thus operator expense.

Initial updates were made to increase response schema compliance with the eth execution apis schema.

Logging and metrics have seen continued improvements with an attempt to increase log readbility and capture operator balance changes over time across transactions and queries.

Multiple deployment related changes were added to increase Helm deployment and configuration support.

A large push was also made to increase test coverage by the additon of service node mocking integration tests and a suite of ERC20 acceptance tests.

Enhancements

  • Bump version to 0.3.0 #335
  • Bump 0.3.0-rc3 #330
  • Bump 0.3.0-rc2 #326
  • Bump 0.3.0-rc1 #307
  • Implement gasLimit Precheck #304
  • Helm chart chain id fix #299
  • Improve logging, metrics and error handling #297
  • Add balance precheck to eth_sendRawtransaction #293
  • Add acceptance test support for eth_getLogs #292
  • Add gas precheck to eth_sendRawTransaction #291
  • eth_call acceptance tests #290
  • ChainId precheck #288
  • DApp tests not working on public networks #286
  • Implement eth_sendRawTransaction for large Ethereum TXs #281
  • Extend/change the erc20.spec.ts to tokens.spec.ts to include HTS tokens #280
  • Update feeHistory exchangeRate logic to use MirrorNode #278
  • Expand DApp SDK client to support non local envs #275
  • DApp example tests should support non local SDK envs #274
  • Add retry logic to MirrorNodeClient calls #271
  • Freezes after tx.wait() or contract.deployed() #269
  • Fix block root properties default hash formats #263
  • Add eth_feeHistory and eth_gasPrice acceptance tests #257
  • Add eth_feeHistory and eth_gasPrice acceptance tests #255
  • Add support for empty ENV variables on deployment #254
  • Deployment selector env and secrets improvements #252
  • Deployment selector env and secrets #249
  • Bump v0.3.0-SNAPSHOT #248
  • Bump v0.3.0-SNAPSHOT #247
  • Add erc20.spec.test #241
  • Add erc20.spec.test #231
  • Enhance assertions of blocks and transaction #230
  • Add an eth_call acceptance test #218
  • Implement gasLimit Precheck #215
  • Add retry logic to mirrorNodeClient calls #203
  • Add acceptance test support for getLogs #140
  • Add balance precheck to eth_sendRawtransaction #130
  • Add chain_id precheck to eth_sendRawTransaction #129
  • Add gasLimit precheck to eth_sendRawTransaction #128
  • Deploy Testnet relay instance using Helm #115
  • Explore ECDSA onboarding UX flow #111
  • Deploy previewnet relay instance using Helm #110
  • Deploy Integration relay instance using Helm #109
  • Update feeHistory exchangeRate logic to use MirrorNode #85
  • Implement eth_sendRawTransaction for large Ethereum TXns #15

Bug Fixes

  • Update balance precheck to handle large values #329
  • Balance prechecks failing when balance uses exponent #327
  • Update eth_getLogs to utilize index across block transactions (0.3) #325
  • Add lerna to dependency to support complete docker build and release (0.3) #323
  • Helm deployments don't handle integer CHAIN_ID values #300
  • Ensure transactionHash and blockHash are hash32 #294
  • eth_getLogs transactionHash + blockHash not hash32 #289
  • DApp tests not working on public networks #285
  • Remove/modify retry logic for MirrorNodeClient calls #284
  • 268 fix get logs #270
  • invalid eth_getLogs response, required property transactionHash is missing #268
  • Improve MirrorNodeClient 500 handling #262
  • MirrorNode Response logic doesn't handle missing status code #261
  • Fix nonce zerohexbytes regression #260
  • Block schema violations #256
  • Return gasPrice as baseFeePerGas on blocks route #251
  • Return gasPrice as baseFeePerGas on getBlocks route #250
  • Investigate why ethers tx submission does not work #227
  • invalid block nonce #149

Full Changelog: v0.2.0...v0.3.0

Contributors

We'd like to thank all the contributors who worked on this release!

v0.3.0-rc3

13 Jul 16:31
75a794c
Compare
Choose a tag to compare
v0.3.0-rc3 Pre-release
Pre-release

What's Changed

Full Changelog: v0.3.0-rc2...v0.3.0-rc3

v0.3.0-rc2

13 Jul 16:30
3461308
Compare
Choose a tag to compare
v0.3.0-rc2 Pre-release
Pre-release

Full Changelog: v0.3.0-rc1...v0.3.0-rc2

v0.3.0-rc1

13 Jul 16:27
ffbbfc1
Compare
Choose a tag to compare
v0.3.0-rc1 Pre-release
Pre-release

Full Changelog: v0.2.0...v0.3.0-rc1

v0.2.0

29 Jun 18:47
dd24d7e
Compare
Choose a tag to compare

This release brings greater stability to the relay with an increase in api response details, testing and deployment features.

A large push was made to replace partial implementations with complete logic. Fallback consensus node calls were replaced with Mirror Node calls where possible. Specifically the relay now calls the Mirror Node api/v1/network/fees for gas related information. Precheck capability was also added to help verify nonce correctness of calls.

Testing capability was substantially increased with the addition of many E2E acceptance tests for the relay. Additionally, testing support for a new DApp example was added to give greater confidence of contract interactions that utilize common developer tools. The DApp also serves as an example reference for core scenarios that ETH developers would code against such as wallet connection, HBAR/token transfer and contract state viewing and changing calls. Postman call tests using the newman CLI were also added for versatility.

Metrics were expanded to include more information around client (consensus node and mirror node) calls, as well as support for expense tracking of the relay account.

Deployment enhancement were added to support greater Helm and kubernetes support. Configurations are now picked up by deployments.

Enhancements

  • Bump v0.2.0rc3 #276
  • Bump v0.2.0-rc2 #266
  • Bring over chart deployment advancement from 0.3.0-SNAPSHOT to 0.2 #264
  • Bump v0.2.0-rc1 #246
  • Bump v0.2.0-rc1 #245
  • Improve acceptance tests run against remote instances #244
  • Acceptance tests remote run have missing context logic #243
  • Handle Mirror Node network fee errors #240
  • getFeeWeibars failing on mirror node network/fees 500 #239
  • Add transactionhash to receipt logs #235
  • eth_getTransactionReceipt go-ethereum compatibility #226
  • Acceptance tests different references - getCode, getBalance, getTransactionCount #225
  • Update logic to point acceptance tests to remote relay #224
  • Updated acceptance test configurations to point to remote deployment #223
  • Add additional eth_getBlockByNumber acceptance tests #222
  • Add additional eth_getBlockByHash acceptance tests #221
  • Add eth_ getTransactionByHash acceptance tests #220
  • Update eth_getTransactionReceipt to verify return schema #219
  • Add eth_blockNumber acceptance test #217
  • Improve client logs and capture client metrics #214
  • Automate DApp integration tests #212
  • Refactor acceptance tests structure #211
  • Improve acceptance tests code structure #210
  • Improve transfer-only gas estimate #208
  • Add metrics to capture node interactions #206
  • Improve release git action flow #205
  • Improve release git action logic #204
  • Bump release to 0.1.0 #202
  • Acceptance Test instructions are under Postman in README #195
  • Acceptance tests for eth_getTransactionReceipt #192
  • Feat: Add more unsupported acceptance tests #191
  • Ignore vscode and devcontainer tracking #190
  • Refactor: Remove unused properties #189
  • Improve startup logs #187
  • Startup logs should inform correct setup #186
  • Refactor Acceptance tests to use ethers.provider #183
  • Add reusable DApp example #180
  • Cache eth_feeHistory inner value #175
  • Cache eth_feeHistory call #174
  • 154 document token transfer #173
  • Signed transaction generator #172
  • Expand acceptance test to query external nodes #170
  • ENhance acceptance tests to run against deployed environments #169
  • 049 hbar transfer demo docs #168
  • Improve eth_estimateGas cached value logic #166
  • Add transaction generation support in acceptance tests #164
  • Document Relay Token Transfer Flow using a wallet #154
  • Bump version to 0.2.0-SNAPSHOT #147
  • Bump main to 0.2.0-SNAPSHOT #146
  • Acceptance tests - eth_getBalance, eth_getTransactionCount #139
  • Update gas calculation in eth method #136
  • Enhance Acceptance Tests with different Account references #135
  • Add acceptance test support for eth_sendRawTransaction using an EIP 155 transaction #134
  • Improve duplicate transaction management #133
  • Add a reusable DApp example for demo and manual tests #126
  • Add acceptance test support for eth_getBalance #125
  • Add acceptance test support for eth_getTransactionCount #124
  • Add acceptance test support for eth_getTransactionReceipt #123
  • Automate the wallet integration testing #121
  • Update gas calculation in eth method #118
  • Improve duplicate transaction management #112
  • Document HBAR transfer Relay interaction steps to a markdown file #49

Bug Fixes

  • Fix getLogs mapping to retrieve unique execution logs (2.0) #273
  • Add logic to clear metric from registry before create #229
  • eth.spec.ts fails when creating already existent metric #228
  • Acceptance tests failing on docker timeout #200
  • Fix acceptance test timeout issue #199
  • Workaround for varying eth_getBalance acceptance test result on primary account #198
  • eth_getBalance acceptance test failures for primary account #197
  • Fix transactionsRoot return value in case of empty transactions array #185
  • docker service does not start, lerna missing? #181
  • eth_getBlockByNumber expected transactions, none returned (or incorrect transactionsRoot) #179
  • Fix latency metric capture logic #177
  • Metrics for latency of calls should not be counter label [#176](https://github.com...
Read more

v0.2.0-rc3

27 Jun 21:35
709b595
Compare
Choose a tag to compare
v0.2.0-rc3 Pre-release
Pre-release
Bump v0.2.0rc3 (#276)

Signed-off-by: Nana-EC <[email protected]>

v0.2.0-rc2

23 Jun 21:19
d5a7739
Compare
Choose a tag to compare
v0.2.0-rc2 Pre-release
Pre-release
Bump v0.2.0-rc2 (#266)

Signed-off-by: Nana-EC <[email protected]>

v0.2.0-rc1

23 Jun 21:17
2294a03
Compare
Choose a tag to compare
v0.2.0-rc1 Pre-release
Pre-release
Bump v0.2.0-rc1 (#246)

Signed-off-by: Nana-EC <[email protected]>

v0.1.0

14 Jun 15:42
438e1ca
Compare
Choose a tag to compare

This marks the first hedera-json-rpc-relay release and with it brings a wealth of EVM smart contract capabilities. The repository is now fully open source and accepting community contributions.

HIP-482 sees its implementation with the goal of providing an API gateway that improves the Ethereum developer onboarding experience by utilizing the EthereumTransaction type and logic captured in HIP-410. The relay takes the raw transactions and interfaces with the Hedera consensus and mirror nodes to provide a seamless experience as if they were the EVM. Developers will now be able to interact with their smart contracts on the Hedera network as they did on the Ethereum network using the Ethereum JSON-RPC API standard.

The following Ethereum JSON-RPC API endpoints were implemented with a variation of default, partial and complete logic to enable multiple development flows and interactions

JSON-RPC APIs

Network

  • eth_chainId
  • eth_gasPrice
  • eth_feeHistory

Account

  • eth_getBalance
  • eth_getTransactionCount

Contract

  • eth_getCode
  • eth_call
  • eth_estimateGas

Block

These response entities of the following methods map to RecordFile entities on the Hedera network.

  • eth_blockNumber
  • eth_getBlockByHash
  • eth_getBlockByNumber
  • eth_getBlockTransactionCountByHash
  • eth_getBlockTransactionCountByNumber

Transaction

The response entities of the following methods map to ContractResult entities execution details on the Hedera network.

  • eth_getTransactionByBlockHashAndIndex
  • eth_getTransactionByBlockNumberAndIndex
  • eth_getTransactionByHash
  • eth_getTransactionReceipt
  • eth_sendRawTransaction

CI/CD and Documentation

Efforts were made to improve the CI/CD flow with the addition of end-to-end acceptance tests which can be run locally and in Github actions to improve stability. Docker images are now automatically published on every change to the main branch and tagged release. A new Helm chart was also added to support declarative deployment to Kubernetes clusters.

Documentation was improved to give greater context to the relay as well as how to configure, run and test it.

Monitoring and logging improvements increase visibility and tracking of user requests.

Enhancements

  • Add gas cache logic to release 0.1 #182
  • Remove org path from artifact build command #158
  • Add artifact build and upload to 0.1 release branch #148
  • Bump release to 0.1.0-rc1 #145
  • Bump version to 0.1.0-rc1 #144
  • add postman tests #143
  • Improve server logging and metrics #132
  • Improve server logging and metrics #131
  • Acceptance test CICD #120
  • Add relay acceptance tests #119
  • fix issue returning transaction hash when submission passed precheck #106
  • Pulled over all the helm-chart componenets plus included the README.m… #105
  • eth_getLogs #103
  • Bring getBlockBy... into execution-api schema compliance #100
  • Block returned from eth_getBlockBy... does not conform to schema #99
  • Implement eth_getWork and add route handlers for unsupported methods #94
  • Add prometheus support and health endpoints #93
  • Support block tags on getBlock endpoints #92
  • Support block tags in 5 APIs #91
  • Add Prometheus monitoring support #88
  • Add liveness and readiness endpoint to relay #87
  • Add support for eth_getTransactionByHash with mocked data #84
  • eth_getTransactionReceiptByHash #83
  • Chain ID and FeeHistory Tweaks #82
  • Update getBlockByHash and getBlockByNumber to populate transactions #81
  • Add support for getBlockBy, getBlockTransactionCountBy and getTransactionByBlock endpoints #80
  • Clarify development purpose of docker compose #79
  • Updated README to highlight development purposes of docker-compose #78
  • Add rpc call test suite for simple testing #77
  • Add rpc endpoint acceptance tests #76
  • Return Ethereum Hash for sendRawTransaction that do not fail precheck #75
  • Implement eth_blockNumber #74
  • Add MirrorNode Client to make calls to real Mirror Node #73
  • Add a MirrorNode Client Stub #72
  • metamask properly estimating gas #71
  • Update docker compose to point to ghcr main tagged image #69
  • Docker compose image should reference main image #68
  • Add github action to publish main tagged docker image #67
  • Deploy docker image for main branch #66
  • Dummy up eth_feehistory enabling previewnet demo #64
  • Add simple Helm chart to support deployment #61
  • Deploy relay to integration environment #60
  • Implement all non supported endpoints #56
  • Implement eth_getWork #55
  • Implement eth_getTransactionByBlockNumberAndIndex #54
  • Implement eth_getTransactionByBlockHashAndIndex #53
  • Implement eth_getBlockTransactionCountByNumber #51
  • Implement eth_getBlockTransactionCountByHash #50
  • Add code coverage for relay and server packages #48
  • Add docker image and container support #47
  • Update README w Support, Contributing and License #46
  • Add docker container and deployment support #45
  • Add Repo Code Coverage #43
  • Add License headers to all code files #42
  • Replace bridge and hashio references with relay #41
  • Add Apache License 2.0 file #39
  • Add deployment instructions to readme #38
  • Add license headers to code files #37
  • Add License file #36
  • Eth tx integration #35
  • Implement eth_getBlockTransactionCountByNumber #32
  • Implement eth_getBlockTransactionCountByHash #31
  • Implement eth_getBlockByNumber #30
  • Implement eth_getBlockByHash #29
  • Implement eth_blockNumber #28
  • Implement eth_getLogs #20
  • Implemen...
Read more

v0.1.0-rc4

09 Jun 20:45
fd6c6c7
Compare
Choose a tag to compare
v0.1.0-rc4 Pre-release
Pre-release

Add gas cache logic to release 0.1 (#182)

Release 0.1 is missing cache logic for gas calls.

  • Add cache for feeHistory
  • Add cache for gasPrice

Signed-off-by: Nana-EC [email protected]