Welcome
Rosetta is an open-source specification and set of tools that makes integrating with blockchains simpler, faster, and more reliable.
Origins
Writing reliable blockchain integrations is complicated and time-consuming. The process requires careful analysis of the unique aspects of each blockchain and extensive communication with its developers to understand the best strategies to deploy nodes, recognize deposits, construct transactions, etc. Even a minor misunderstanding can lead to downtime, or even worse, loss of funds. Not to mention, the integration must be modified and tested each time a blockchain team releases new software.
Instead of spending time working on their blockchain, project developers spend countless hours answering similar support questions for each platform integrating their blockchain. With their questions answered, each integrating platform then writes similar code to interface with the blockchain instead of spending their engineering resources working on unique products and applications.
Coinbase initially developed Rosetta as the middleware used to integrate blockchains into its platform securely and painlessly. We decided to open source the entire project in the hopes it can ease development and integration time for both developers and crypto platforms alike.
Principles
The Rosetta APIs make a set of explicit design choices to enable simpler, faster, and more reliable blockchain integrations. We highly recommend reading about the design principles to familiarize yourself with these choices prior to building with Rosetta.
Start Building
The Rosetta API is made up of 2 core components, the Data API and the Construction API. Together, these APIs allow for anyone to read and write to blockchains in a standard format over a standard communication protocol. The specifications for these APIs can be found in the rosetta-specifications repository.
If you are a blockchain team interested in implementing these APIs, please check out the API sections linked above for clear expectations of any “finished implementations”.
Developers looking to build on top of these APIs should take a look at the rosetta-sdk-go and rosetta-cli for some code examples of how to do so.
Automated Testing
Automated testing is the key to a reliable and robust ecosystem of standard users. We have implemented a testing suite for Data API implementations and are currently developing a similar tool for Construction API implementations. After developing an implementation, we encourage you to run this validation tooling against your code to check for any issues.
If something manual should be automated or you have ideas for additional tests, please open an issue.
Community
If you have any questions about Rosetta or want to share something cool that you made, visit our Discourse!