The Ethereum Classic Labs Core (ECLC) team recently created the OpenRPC Specification, aiming to improve all blockchain dapp development. The specification emulates OpenAPI, the successful and widely adopted specification for REST APIs. By starting this initiative, developers will be able to save time from hand-writing code and will have better inter-organizational communication by removing guesswork on which services and capabilities are supported. This isn’t just for ETC or ETH, this is a specification that could improve all blockchain development.
The OpenRPC Specification defines a standard, programming language-agnostic interface description for JSON-RPC 2.0 APIs, which allows both humans and computers to discover and understand the capabilities of a service without requiring access to source code, additional documentation, or inspection of network traffic. When properly defined via OpenRPC, a consumer can understand and interact with the remote service with a minimal amount of implementation logic. Similar to what interface descriptions have done for lower-level programming, the OpenRPC Specification removes guesswork in calling a service.
Although this was created by ECLC, the ramifications and it’s impact should be felt across all blockchain dApp development.
This Twitter post sums it up best:
Sure, we all love the idea of building things without having someone in charge of everything. The benefit of these systems is a new version of freedom we are all still wrapping our heads around, but the drawbacks have been felt in building. The tools and protocols developers are using are not standardized, and this leads to inevitable complications when trying to organize globe-spanning ecosystems that are supposed to eventually work without any human intervention.
Photo by Paul Green on Unsplash
JSON-RPC is the defacto data exchange protocol that blockchain clients and servers use to communicate. Although most modern frameworks depend on RESTful API’s, “RPC is more suitable due to its it being simple, fast, and communication channel agnostic.” says ECLC developer Shane Jonas
In the case of Ethereum, most developers use Web3, a javascript wrapper for JSON-RPC. The benefit this provides is a very fast and user friendly interface for developers new to blockchain to get started without too much background in RPC. This can be great for addressing a wide audience, but it leads to slower development time and can even starts to create a plethora of mismatched updates and libraries.
Google’s API Design Guide defines Networked APIs as:
Application Programming Interfaces that operate across a network of computers. They communicate using network protocols including HTTP, and are frequently produced by different organizations than the ones that consume them.
As we continue building, different organizations will get out of sync. This is an issue for interacting with systems outside of your own, and inevitably this will become an obstacle towards our collective goal to build decentralized systems that can cooperate with one another. By creating canonical definitions for RPC (which is used by virtually every blockchain), ECLC has created something that the entire ecosystem needed.
Photo by Ilya Pavlov on Unsplash
This isn’t a new, novel idea. OpenAPI, the specification most used for REST APIs, has been widely applauded and now supported by the Linux Foundation (including Google), a testament to the importance of having these kind of globally agreed upon protocols.
The OpenAPI Specification wasn’t the first API description format, but so far it has been the most widely used. Before we had API description formats, people hand-wrote the code for their APIs. Then they hand-wrote descriptions of those APIs and handed those to people who wanted to use the APIs, who then hand-wrote code to call the APIs. All of that hand-writing led to a lot of variation and error. As a formal description format, OpenAPI is giving us a great way to communicate about APIs and to have fewer errors and more successes in our API-based systems — Tim Burks
The OpenRPC Specification is built on the same philosophies and methods as OpenAPI
There’s more than just a specification….
The Roadmap laid out by the ECLC team shows that this was just the first step in building a better JSON-RPC framework.
JSON RPC Schema ~Q1 — Q2 2019: Create ECLIP for automated JSON Schema generation from Classic-Geth and Multi-Geth. This will reduce operational costs related to libraries. This improvement would make the DApp development environment more efficient by removing the need for RPC APIs such as Web3 or Emerald JS.
open-rpc/spec_The OPEN-RPC Specification Repository. Contribute to open-rpc/spec development by creating an account on GitHub._github.com
Home — OpenAPI Initiative_© 2019 OpenAPI Initiative. Copyright © 2016 The Linux Foundation®. All rights reserved. The Linux Foundation has…_www.openapis.org
shanejonas/awesome-json-rpc_Curated list of JSON-RPC resources. Contribute to shanejonas/awesome-json-rpc development by creating an account on…_github.com
asyncapi/asyncapi_The AsyncAPI specification allows you to create machine-readable definitions of your asynchronous APIs. …_github.com
twitchtv/twirp_A simple RPC framework with protobuf service definitions — twitchtv/twirp_github.com
GraphQL: A query language for APIs._GraphQL provides a complete description of the data in your API, gives clients the power to ask for exactly what they…_graphql.org
REST vs JSON-RPC?_I’m trying to chose between REST and JSON-RPC for developing an API for a web application. Which one is easier to use…_stackoverflow.com
You can read our Full Roadmap and Introduction here
Ethereum Classic Labs’s mission is to accelerate development of the Ethereum Classic community & ecosystem. This will be accomplished by providing a suite of products for Ethereum Classic development and supporting Ethereum Classic based projects with access to start-up expertise and funding. Our team of engineers have been contributing to the Ethereum Classic project for years, and are at the forefront of Ethereum Classic development. With a long history in mentoring startups and our cutting-edge core development team, we are proud to be building the future of the Ethereum Classic blockchain.
Interested in getting more involved with ETC? We’re focused on accelerating the development of Ethereum Classic and need your help! Reach out to us to see how you can get more involved today!
Our team links: Github, Medium, Twitter
Come chat with us on Discord
Apply for the ETC Labs Accelerator Now!
ETC Labs is holding their second cohort accelerator in San Francisco this summer! Applications are open until May 1st. Learn more at https://etclabs.org