Microservices¶
The official node is a group of services communicating through RabbitMQ
(AMQP). Docker Compose runs them on one host, persists service data under the
selected BASEDIR, and enables optional capabilities through
profiles.
| Service | Purpose | Required | Profiles | Host port by default |
|---|---|---|---|---|
| Chain | Validate blocks and maintain chain state | Yes | — | None |
| Block Store | Store blocks and receipts | Yes | — | None |
| P2P | Peer discovery, synchronization, and gossip | Yes | — | 8888 |
| Mempool | Hold pending transactions | Yes | — | None |
| RabbitMQ | Internal message transport | Yes | — | 5672, management 15672, both loopback |
| JSON-RPC | HTTP JSON-RPC gateway | No | jsonrpc, api, all |
8080, loopback |
| gRPC | Protobuf/gRPC gateway | No | grpc, api, all |
50051, loopback |
| REST | REST and Swagger interface backed by JSON-RPC | No | rest, api, all |
3000, loopback |
| Transaction Store | Transaction index | No | transaction_store, api, all |
None |
| Contract Meta Store | Contract ABI metadata | No | contract_meta_store, api, all |
None |
| Account History | Per-account history index | No | account_history, api, all |
None |
| Block Producer | Build and sign blocks | No | block_producer, all |
None |
Data and failure boundaries¶
Core and index services own separate directories below BASEDIR. This matters
for capacity planning, backup classes, and deciding whether to restore,
reindex, or resync one service.
Do not expose RabbitMQ to connect services across an untrusted network. The official single-host deployment expects internal service communication and loopback host bindings. Multi-host service placement requires a separate authenticated and encrypted transport design that is outside this quick-start scope.
For internal architecture details, see Microservices architecture. For operator decisions, continue to Configuration and Security.