Cardano Rosetta
An 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 .
mainnet
DOCKER_BUILDKIT=1 \
docker build \
--build-arg BUILDKIT_INLINE_CACHE=1 \
--cache-from=inputoutput/cardano-rosetta:master \
-t inputoutput/cardano-rosetta:2.0.0 \
https://github.com/input-output-hk/cardano-rosetta.git#2.0.0
preprod
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.0.0-preprod \
https://github.com/input-output-hk/cardano-rosetta.git#2.0.0
preview
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.0.0-preview \
https://github.com/input-output-hk/cardano-rosetta.git#2.0.0
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.
mainnet
docker run \
--name cardano-rosetta \
-p 8080:8080 \
-v cardano-rosetta:/data \
--shm-size=2g \
inputoutput/cardano-rosetta:2.0.0
preprod
docker run \
--name cardano-rosetta-preprod \
-p 8081:8080 \
-v cardano-rosetta-preprod:/data \
--shm-size=2g \
inputoutput/cardano-rosetta:2.0.0-preprod
preview
docker run \
--name cardano-rosetta-preview \
-p 8081:8080 \
-v cardano-rosetta-preview:/data \
--shm-size=2g \
inputoutput/cardano-rosetta:2.0.0-preview
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:
cardano-db-sync
Snapshot
1. Apply a Trusted 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
mainnet
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.0.0-apply-snapshot \
https://github.com/input-output-hk/cardano-rosetta.git#2.0.0
Run
mainnet
docker run \
--name cardano-rosetta \
-p 8080:8080 \
-v cardano-rosetta:/data \
--shm-size=2g \
inputoutput/cardano-rosetta:2.0.0-apply-snapshot
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 |