Skip to main content

rosetta-sdk-go

rosetta-sdk-go generates a Golang server and client package for the Rosetta Data API using the OpenAPI 3.0 Rosetta API Spec. To get started with the SDK, we recommend taking a look at the rosetta-cli repository, which provides extensive usage examples.

Packages

rosetta-sdk-go contains a lot of additional functionality that Coinbase built to make interacting with Rosetta Data API implementations easier. If you have ideas for other packages, please open an issue!

Types

Types contains all generated Rosetta Data API types.

Client

Client is the standard generated client for the Rosetta Data API. The fetcher package builds on the low-level client to provide automatic retries and multi-threaded block fetching.

Server

Server makes implementation of the Rosetta Data API as easy as implementing an interface. All boilerplate code to validate and route requests is provided out-of-the-box.

Fetcher

Simplified and validated communication with any Rosetta server

Asserter

Asserter is used by the server and fetcher packages to validate that requests and responses, respectively, are well-formed.

Parser

Parser provides a collection of helpers to make block parsing easier. The parser can calculate all balance changes in a block, group related operations, and match an operation description with an operation in a transaction.

Syncer

Syncer is a blockchain-agnostic tool used to serially sync blocks from a Rosetta Data API implementation (automatically handles re-orgs). For example, you could use the syncer to build a block explorer for any blockchain and not need to write any of your own logic to fetch blocks from a Rosetta Data API implementation. The syncer is not tightly coupled to a storage backend or block-handling logic so it is possible for any developer to bring their own database for syncing and write their own logic to handle synced blocks.

Reconciler

Reconciler is used (often in conjunction with syncer) to compare the balance computed exclusively from transaction operations with the balance returned by a Data API implementation at various heights (erroring if the "computed" and "live" balance differ).

Keys

Keys provides an implementation of cryptographic operations for Rosetta-supported curves.

SDKs in Other Languages

Currently, we support the Golang SDK.

🚧 If you build an SDK for a different language while implementing the Rosetta APIs, please reach out to rosetta@coinbase.com so that we can feature it in the rosetta-ecosystem repository.

Was this helpful?