Awesome
Cardano Rosetta
A multi-platform implementation of Rosetta for Cardano, targeting the version defined in the OpenApi schema. Skip to run if wishing to use a pre-built image from the Docker Hub repository.
Build
Build from anywhere, optionally specifying a network name other than mainnet
as a
build argument, and accessing cached build layers to reduce the initialization time. You can also
build with local source by replacing the GitHub link with .
Supported Architectures
linux/amd64
linux/arm64
DOCKER_BUILDKIT=1 \
docker build \
--build-arg BUILDKIT_INLINE_CACHE=1 \
--cache-from=inputoutput/cardano-rosetta:master \
-t inputoutput/cardano-rosetta:2.1.0 \
https://github.com/input-output-hk/cardano-rosetta.git#2.1.0
</details>
<details>
<summary>preprod</summary>
DOCKER_BUILDKIT=1 \
docker build \
--build-arg BUILDKIT_INLINE_CACHE=1 \
--build-arg NETWORK=preprod \
--cache-from=inputoutput/cardano-rosetta:master \
-t inputoutput/cardano-rosetta:2.1.0-preprod \
https://github.com/input-output-hk/cardano-rosetta.git#2.1.0
</details>
<details>
<summary>preview</summary>
DOCKER_BUILDKIT=1 \
docker build \
--build-arg BUILDKIT_INLINE_CACHE=1 \
--build-arg NETWORK=preview \
--cache-from=inputoutput/cardano-rosetta:master \
-t inputoutput/cardano-rosetta:2.1.0-preview \
https://github.com/input-output-hk/cardano-rosetta.git#2.1.0
</details>
Run
Run the locally or pre-built images and mount a single volume into the standard storage
location, map the server port to the host, and allocate a suitably-sized /dev/shm
. See the
complete Docker run reference for full control.
docker run \
--name cardano-rosetta \
-p 8080:8080 \
-v cardano-rosetta:/data \
--shm-size=2g \
inputoutput/cardano-rosetta:2.1.0
</details>
<details>
<summary>preprod</summary>
docker run \
--name cardano-rosetta-preprod \
-p 8081:8080 \
-v cardano-rosetta-preprod:/data \
--shm-size=2g \
inputoutput/cardano-rosetta:2.1.0-preprod
</details>
<details>
<summary>preview</summary>
docker run \
--name cardano-rosetta-preview \
-p 8081:8080 \
-v cardano-rosetta-preview:/data \
--shm-size=2g \
inputoutput/cardano-rosetta:2.1.0-preview
</details>
:information_source: A trusted DB snapshot can be used to speed up the initial sync, however
the internal instance of cardano-node
must be synced past the snapshot point for it to be
applied. This can be achieved by observing logs emitted from cardano-node
indicating it's
close to the network tip, before then following the instructions in the Upgrading section.
Configuration
Set ENVs for optional runtime configuration
-e MODE=offline
MODE
See Rosetta docs for information on modes
online
- defaultoffline
DEFAULT_RELATIVE_TTL
Specify the TTL without needing to access an online method. Default: 1000
LOGGER_MIN_SEVERITY
trace
debug
info
- defaultwarn
error
fatal
PAGE_SIZE
Default: 25
Upgrading
As per the release notes, you may be required to refresh the state managed by
cardano-db-sync
. This can be achieved without requiring a network re-sync using one of the two
following approached:
1. Apply a Trusted cardano-db-sync
Snapshot
Run the build command with the addition of an argument providing a version and network-specific
link, sourced from the cardano-db-sync
release notes.
For example:
Build
<details open> <summary>mainnet</summary>DOCKER_BUILDKIT=1 \
docker build \
--build-arg BUILDKIT_INLINE_CACHE=1 \
--build-arg SNAPSHOT_URL=https://update-cardano-mainnet.iohk.io/cardano-db-sync/13/db-sync-snapshot-schema-13-block-7960123-x86_64.tgz \
--cache-from=inputoutput/cardano-rosetta:master \
-t inputoutput/cardano-rosetta:2.1.0-apply-snapshot \
https://github.com/input-output-hk/cardano-rosetta.git#2.1.0
</details>
Run
<details open> <summary>mainnet</summary>docker run \
--name cardano-rosetta \
-p 8080:8080 \
-v cardano-rosetta:/data \
--shm-size=2g \
inputoutput/cardano-rosetta:2.1.0-apply-snapshot
</details>
:information_source: Build a new image as per the standard build instructions if you need to recreate the container, otherwise the data will be dropped and restored again.
:information_source: The snapshot will only be applied if cardano-node
is synced past the
snapshot point, since the benefit of using it would be eliminated given cardano-db-sync
rolls back
to genesis under these conditions. For best results, ensure the node is close to the network tip
prior to upgrading.
2. Re-sync From Genesis
A trustless approach to rebuild the DB, by syncing from genesis at the cost of an extended sync duration:
docker stop cardano-rosetta && \
docker rm cardano-rosetta && \
docker run --rm -v cardano-rosetta:/data ubuntu rm -rf /data/postgresql /data/db-sync
... then start a container as per usual. Sync progress will be logged by the new container.
Documentation
Link | Audience |
---|---|
Construction API Documentation | Users of the Cardano Rosetta Construction API |
Data API Documentation | Users of the Cardano Rosetta Data API |
Cardano Rosetta Docs | Cardano Rosetta specific documentation |
Developer | Core or external developers of cardano-rosetta-server |
Maintainer | Solution maintainer |
QA | Quality Assurance Engineers |