4 releases (breaking)

0.4.0 Jun 29, 2023
0.3.0 Jun 29, 2023
0.2.5 May 1, 2023
0.1.0 Mar 30, 2023

#7 in #rosetta

Download history 6/week @ 2024-01-04 7/week @ 2024-01-11 6/week @ 2024-01-18 2/week @ 2024-01-25 1/week @ 2024-02-01 6/week @ 2024-02-08 25/week @ 2024-02-15 25/week @ 2024-02-22 68/week @ 2024-02-29 40/week @ 2024-03-07 39/week @ 2024-03-14 29/week @ 2024-03-21 50/week @ 2024-03-28 35/week @ 2024-04-04 20/week @ 2024-04-11 20/week @ 2024-04-18

127 downloads per month
Used in 10 crates (4 directly)

MIT license

10KB
177 lines

Rosetta SDK Documentation

The Rosetta is a set of tools for blockchain integration, it's goal is make blockchain integration simpler, faster, and more reliable. This repo provides a framework for Analog’s chronicles — special nodes hosted by time node operators — to simplify their interactions with Analog-connected chains in a manner compliant with the Analog Network’s protocol.

Repository structure

This repo contains the following modules:

  • rosetta-core. Provides traits and definitions shared by the server and client crates.
  • rosetta-server. This is a generic implementation of the Rosetta Server. The Rosetta Server is a standalone server that a connector on any Analog-supported chain can connect to and listen to the port specified in the settings.
  • rosetta-client. This is a standard client that interacts with the Rosetta Server.
  • rosetta-types. It contains the request and response structs used by the client and server. It is initially autogenerated using the openapi-generator.
  • rosetta-crypto. It has cryptographic primitives used by the rosetta-client.
  • rosetta-wallet. This is a command line interface (CLI) built with the rosetta-client.
  • rosetta-cli. This is a CLI built with the rosetta-client.
  • rosetta-docker. This is a generic Rosetta Server testing infrastructure.
  • chains. These are chain-specific client/server components.

Getting started

To get started with the Rosetta SDK, ensure you have following dependencies installed:

Build

$ cargo build -p rosetta-client

Lint

$ cargo +nightly fmt --all -- --check
$ cargo clippy --locked --workspace --examples --tests --all-features -- \
  -Dwarnings \
  -Dclippy::unwrap_used \
  -Dclippy::expect_used \
  -Dclippy::nursery \
  -Dclippy::pedantic \
  -Aclippy::module_name_repetitions
$ dprint check
$ cargo deny check

Run unit tests

$ cargo test --workspace --all-features \
  --exclude rosetta-testing-arbitrum \
  --exclude rosetta-server-astar \
  --exclude rosetta-server-ethereum \
  --exclude rosetta-server-polkadot \
  --exclude rosetta-client

Run integration tests

# Pull docker images
./scripts/pull_nodes.sh

# Run tests
$ cargo test \
  -p rosetta-server-astar \
  -p rosetta-server-ethereum \
  -p rosetta-server-polkadot \
  -p rosetta-client

Run arbitrum integration tests

# Setup arbitrum local testnet
git clone -b release --depth=1 --no-tags --recurse-submodules https://github.com/ManojJiSharma/nitro-testnode.git
cd nitro-testnode
./test-node.bash --detach
cd ..

# Run tests
cargo test --locked -p rosetta-testing-arbitrum

Contributing

You can contribute to this repo in a number of ways, including:

Dependencies

~10MB
~210K SLoC