github hashgraph/hedera-json-rpc-relay v0.1.0

latest releases: v0.63.2, v0.63.1, v0.63.0...
2 years ago

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
  • Implement eth_getTransactionByHash #18
  • CI/CD pipeline to run e2e tests #17
  • Fix/missing-env-values #33
  • Feature/Verify eth_call #25
  • Feature/eth_getTransactionReceipt #24
  • Feature/eth_getBalance #22
  • Feature/Implement eth_getCode #21
  • Implement eth_getCode #19
  • Verify eth_call implementation #12
  • Env variable for private key & account for local contract call #11
  • Verify eth_getBalance implementation + unit tests #9
  • Verify eth_getTransactionReceipt implementation + unit tests #8
  • Implement block related queries #7
  • Verify the implementation of eth_sendRawTransaction for contract call #6
  • Implement web3_clientVersion #5
  • Implement eth_accounts #4
  • Implement eth_chainId #3
  • Feature/static methods #2
  • Feature/Foundation setup #1

Bug Fixes

  • Update block hex to be 8 bytes in length (release 0.1) #157
  • Add cost call to avoid insufficient fee issue #108
  • Token transfers failing with INSUFFICIENT_TX_FEE #107
  • Cannot pull container image #101
  • Fix blocks transactions and r and s signatures assignments #98
  • Fix getContractResultsByAddressAndTimestamp error on null r and s sigs #97
  • getBlock by HexString number gets incorrectly routed #96
  • Fix regression on hex block numbers #95

Documentation

  • Update README with basic open source repo sections #44
  • Update documentation and reference to use relay term #40

Contributors

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

Don't miss a new hedera-json-rpc-relay release

NewReleases is sending notifications on new releases.