Architecture

High-Level Diagram

erDiagram CARDANO-NODE ||--o{ CARDANO-WALLET : sends-blocks-and-receives-txs CARDANO-NODE ||--o{ CARDANO-DB-SYNC : sends-blocks CARDANO-NODE ||--o{ CARDANO-SUBMIT-API : receives-txs CARDANO-DB-SYNC ||--|| POSTGRESQL : dumps-into POSTGRESQL ||--|| CARDANO-GRAPHQL : is-queried

Components

cardano-node

The core cardano-node, which participates in the Cardano network, and maintains the state of the Cardano blockchain ledger.

Supported environments: Linux (64-bits), MacOS (64-bits), Windows (64-bits), Docker

cardano-wallet

cardano-wallet An HTTP REST API is recommended for 3rd party wallets and small exchanges who do not want to manage UTxOs for transactions themselves. Use it to send and receive payments from hierarchical deterministic wallets on the Cardano blockchain via HTTP REST or a command-line interface.

Supported environments: Linux (64-bits), MacOS (64-bits), Windows (64-bits), Docker

cardano-db-sync

This application stores blockchain data fetched from cardano-node in a PostgreSQL database to enable higher-level interfaces for blockchain exploration. It powers cardano-graphql.

Supported environments: Linux (64-bits), MacOS (64-bits), Docker

cardano-graphql

A GraphQL API for Cardano, which also serves as the backend of Cardano Explorer.

Supported environments: Linux (64-bits), MacOS (64-bits), Docker

cardano-submit-api

A small HTTP API for submitting transactions to a local cardano-node.

The transaction must be fully signed and CBOR-encoded. This could be done by cardano-cli, for example.

cardano-rest

cardano-rest is DEPRECATED. The explorer-api and submit-api will cease to function at the time of Alonzo hard-fork.

The following tools replace cardano-rest:

Users with an existing integration to cardano-rest are encouraged to look at the Migration-Guide.

Choosing the right component

graph TD QMakeTx{Do you need to
make transactions?} QManageUTxO{Do you want to
implement your own wallet?} QAlreadyIntegrated{Do you already have
an integration with
cardano-sl?} GraphQL{cardano-graphql} Rest{cardano-rest} SDK{SDK} Wallet{cardano-wallet} QMakeTx-->|yes| QManageUTxO QMakeTx-->|no| QAlreadyIntegrated QAlreadyIntegrated-->|yes| Rest QAlreadyIntegrated-->|no| GraphQL QManageUTxO-->|yes| SDK QManageUTxO-->|no| Wallet

Notes

See also input-output-hk/adrestia.