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 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:1.6.1 \
https://github.com/input-output-hk/cardano-rosetta.git#1.6.1
testnet
DOCKER_BUILDKIT=1 \
docker build \
--build-arg BUILDKIT_INLINE_CACHE=1 \
--build-arg NETWORK=testnet \
--cache-from=inputoutput/cardano-rosetta:master \
-t inputoutput/cardano-rosetta:1.6.1-testnet \
https://github.com/input-output-hk/cardano-rosetta.git#1.6.1
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:1.6.1
testnet
docker run \
--name cardano-rosetta-testnet \
-p 8081:8080 \
-v cardano-rosetta-testnet:/data \
--shm-size=2g \
inputoutput/cardano-rosetta:1.6.1-testnet
ℹ️ 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.
Set ENVs for optional runtime configuration
-e MODE=offline
See Rosetta docs for information on modes
online
- defaultoffline
Specify the TTL without needing to access an online method. Default: 1000
trace
debug
info
- defaultwarn
error
fatal
Default: 25
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:
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:
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/12/db-sync-snapshot-schema-12-block-6590499-x86_64.tgz \
--cache-from=inputoutput/cardano-rosetta:master \
-t inputoutput/cardano-rosetta:1.6.1-apply-snapshot \
https://github.com/input-output-hk/cardano-rosetta.git#1.6.1
testnet
DOCKER_BUILDKIT=1 \
docker build \
--build-arg BUILDKIT_INLINE_CACHE=1 \
--build-arg NETWORK=testnet \
--build-arg SNAPSHOT_URL=https://updates-cardano-testnet.s3.amazonaws.com/cardano-db-sync/12/db-sync-snapshot-schema-12-block-3147999-x86_64.tgz \
--cache-from=inputoutput/cardano-rosetta:master \
-t inputoutput/cardano-rosetta:1.6.1-testnet-apply-snapshot \
https://github.com/input-output-hk/cardano-rosetta.git#1.6.1
mainnet
docker run \
--name cardano-rosetta \
-p 8080:8080 \
-v cardano-rosetta:/data \
--shm-size=2g \
inputoutput/cardano-rosetta:1.6.1-apply-snapshot
testnet
docker run \
--name cardano-rosetta-testnet \
-p 8081:8080 \
-v cardano-rosetta-testnet:/data \
--shm-size=2g \
inputoutput/cardano-rosetta:1.6.1-testnet-apply-snapshot
ℹ️ 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.
ℹ️ 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.
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.
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 |