Harmony RPC Provider Proposal

Name of Project

Harmony RPC Provider

Application type

Grant

Proposal overview

Since ethers.js is the de facto standard for interacting with different blockchains, having a dedicated provider for a blockchain becomes an enormous advantage for developer adoption.

The idea of this project is to create a JSON RPC provider that can be easily plugged in with JsonRpcProvider. This will incentivize the adoption of the Harmony chain for Ethereum developers that are already familiar with it.

Team Bio

Our team has been contributing with different projects in blockchain for a few years, building APIs, SDKs and developer tools. Our goal is to continue to drive the crypto space forward by investing intellectual capital into projects, participating actively to help shape the ecosystems we believe in.

Jose Ramirez

Software Developer with 9 years’ experience in frontend / backend development. He considers himself a “perennial student”, and I stay in touch with the latest technologies. He is very passionate about decentralized finance and blockchain technologies. He built reliable software infrastructure with Node.js, Typescript and React. More recently working with Dapps using libraries like ethers.js, web3.js, and polkadot{.js}.

Brian Zuker

He is a passionate software engineer with 8 years of experience who loves challenges and learning new things. Worked closely with the Product and Design teams to develop new use cases for customers. Worked with technologies such as Node, React, OpenLayers, Python, RabbitMQ, Docker, Kubernetes, MongoDB

Ana Riera

Software Developer with 3 years’ in developing software solutions for individuals and small businesses. She is currently developing web applications in Node.js/Express to the backend side, MongoDB as a DBMS, and using Vue.js for the frontend side. She is a proactive, responsible, willing, and dedicated person, who seeks to acquire new knowledge and face the challenges that arise.

Project details

We aim to build a JSON RPC provider that can be used with the ethers.js library. Currently, the Harmony blockchain has GitHub - harmony-one/sdk: Javascript SDK of Harmony protocol., but this is not compatible with ethers.js providers. The idea is to create a wrapper over Harmony’s JSON-RPC API API - Harmony that can facilitate the use of Harmony with ethers.js while leveraging the existing packages.

This package will have support for Node.js and browser (Including the ESM module) with these features:

  1. A HarmonyProvider interface to connect to the official RPCs.
  2. The ability to create a default Provider connected to networkish which may be a chain name (i.e. “harmony-mainnet” or “harmony-testnet”) or chain ID. This will create a FallbackProvider backed by all popular Third-Party Harmony RPCs.
  3. A full suite of unit tests that can guarantee the compatibility of this package with ethers.js and Harmony blockchain.
  4. Integration tests with Harmony testnet to verify the correct functionality of this provider.
  5. Written in TypeScript, with type definitions.
  6. Based on Harmony’s JSON RPC API and methods.

NOTE: This package will have interfaces to make it easy to extend the HarmonyProvider and add new integrations.

All the features added to this package will be open source with an MIT License.

Timeline

We expect it to take 8-9 weeks to deliver a RC (Release Candidate) version of the package. This will include the following:

  1. A HarmonyProvider with unit/integration tests and documentation about how to use it. (1 week)
  2. An implementation of the FallbackProvider for HarmonyProvider with unit/integration tests and documentation about how to use it. (4 week)
  3. An implementation of a PocketProvider for Harmony, to be used as a possible fallback in the FallbackProvider (3 week)
  4. A pipeline with CircleCi to run the unit/integration tests with multiple versions of Node.js and Javascript. (3 week)
  5. A Coverage report Generate the coverage report with https://coveralls.io/ (2 days)

Ecosystem fit

Since we are looking to make an impact in making Crypto and Web3 generally adopted, we decided that we want to commit and help Harmony become widespread and used. Right now the usability of RPCs on Harmony is lower than other leading blockchains like ethereum, according to our research @ethersproject/providers has around 415,000 downloads weekly comparing to @harmony-js/core with only around 3000 downloads, we can see there’s room for improvement, our goal is to change this situation.

Our target audience are developers that are used to using ethers.js and want an easy (and familiar) way to interact with the Harmony blockchain. This project is the starting point for developers, coming from other ecosystems like Ethereum or Polygon, and it aims to improve Dapps development on Harmony.

Proposal ask

Our proposal is to have the Harmony RPC Provider ready in 8-9 weeks after approval. For the current project, our ask is 70,000 USD worth of ONE tokens. This would cover development and CI (CircleCI and coveralls) costs.

Milestones & Deliverables

Milestone 1:

Implementation of HarmonyProvider with unit/integration tests and documentation

  • Estimated duration: 4 weeks
  • Cost: 22,000 USD
Number Deliverable Specification
0.a Documentation We will add documentation, and create a tutorial on how to import and customize the Harmony providers.
0.b Testing Guide We will add unit tests to cover all basic logic and integration test with Harmony Providers
1.a Harmony Provider We will implement reusable Harmony RPC provider interface

Milestone 2:

Implementation of the FallbackProvider for HarmonyProvider with unit/integration tests and documentation

  • Estimated duration: 2 week
  • Cost: 22,000 USD
Number Deliverable Specification
0.a Documentation We will update previous documentation based on the new features.
0.b Testing Guide Update tests according to new features.
1.a Add support for Harmony providear with the fallback provider interface. We will add support for Other Providers
1.b Create a PocketProvider for Harmony, to be used by the FallbackProvider We will support for Pocket in Harmony, similar to: ethers.js/pocket-provider.ts at master · ethers-io/ethers.js · GitHub

Milestone 3:

Pipeline with CircleCi and Coverage

  • Estimated duration: 2 week
  • Cost: 16,000 US
Number Deliverable Specification
0.a Documentation We will update previous documentation based on the new features.
0.b Testing Guide Update tests according to new features.
2.a Circle CI Add a pipeline for run the unit and integration tests with multiple version of Node.js and Javascript
2.b Coverage Generate the coverage report with https://coveralls.io/
3.b Pre-release Publish a release candidate version for beta testing.

Milestone 4:

Release - We will provide inline documentation and examples of usage.

  • Estimated duration: 1 week
  • Cost: 10,000 USD
Number Deliverable Specification
0.a Documentation We will update previous documentation based on the new features.
0.b Testing Guide Update tests according to fixed bugs
1.a License Add a MIT License
1.b Fixes Fix reporter bugs from pre-release.
3.b Release Publish a release version ready for use in production

Success measurement

The number of developers or dapps using the provider to interact with Harmony blockchain. We plan to integrate other RPC providers as they start to support the Harmony blockchain.

This can be tracked based on Github stars + general adoption.

Past work

We have successfully created a similar provider for other blockchains, such as Near, and we believe helping developer adoption is crucial for the continued success of an ecosystem.

External links

Github Twitter Linkedin

1 Like

We have sufficient RPC providers in the pipeline, with several major partnerships either already launched or are in the process of launching. This is also a really high scalability with experiences in Cloud Operations initiative, rather than a setup with CI/CD

We love this energy from the team, and I’d really urge you to continue this discussion with the RPC DAO on Discord at Harmony RPC DAO

For those reasons, we will not be able to move forward with this bounty proposal.