Releases: hashgraph/hedera-json-rpc-relay
v0.3.0
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
totokens.spec.ts
to includeHTS
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
andtransaction
#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
What's Changed
- Update balance precheck to handle large values by @Nana-EC in #329
- Bump 0.3.0-rc3 by @Nana-EC in #330
Full Changelog: v0.3.0-rc2...v0.3.0-rc3
v0.3.0-rc2
Full Changelog: v0.3.0-rc1...v0.3.0-rc2
v0.3.0-rc1
Full Changelog: v0.2.0...v0.3.0-rc1
v0.2.0
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...
v0.2.0-rc3
Bump v0.2.0rc3 (#276) Signed-off-by: Nana-EC <[email protected]>
v0.2.0-rc2
Bump v0.2.0-rc2 (#266) Signed-off-by: Nana-EC <[email protected]>
v0.2.0-rc1
Bump v0.2.0-rc1 (#246) Signed-off-by: Nana-EC <[email protected]>
v0.1.0
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...
v0.1.0-rc4
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]