Skip to content

input-output-hk/acropolis

Repository files navigation

Acropolis

Acropolis is a project to create a kit of micro-service parts, written in Rust, which allows flexible construction of clients, services and APIs for the Cardano ecosystem.

Acropolis is based on the Caryatid framework, which in turn uses a message bus such as RabbitMQ to communicate between micro-services.

graph TB

  subgraph Microservice A
    Module1(Module 1)
    Module2(Module 2)
    Caryatid1(Caryatid Framework)

    Module1 <--> Caryatid1
    Module2 <--> Caryatid1
  end

  subgraph Microservice B
    Module3(Module 3)

    Caryatid2(Caryatid Framework)

    Module3 <--> Caryatid2

  end

  RabbitMQ([RabbitMQ Message Bus])
  style RabbitMQ fill:#eff

  Caryatid1 <--> RabbitMQ
  Caryatid2 <--> RabbitMQ
Loading

Modules

This project is in an experimental phase at the moment, and the module structure is highly subject to change:

graph LR

   UpstreamChainFetcher(Upstream Chain Fetcher)
   GenesisBootstrapper(Genesis Bootstrapper)
   MithrilSnapshotFetcher(Mithril Snapshot Fetcher)
   BlockUnpacker(Block Unpacker)
   TxUnpacker(Transaction Unpacker)
   UTXOState(UTXO State)
   SPOState(SPO State)
   DRepState(DRep State)
   GovernanceState(Governance State)
   StakeDeltaFilter(Stake Delta Filter)
   EpochsState(EpochsState)
   AccountsState(Accounts State)

   UpstreamChainFetcher --> BlockUnpacker
   MithrilSnapshotFetcher --> BlockUnpacker
   BlockUnpacker --> TxUnpacker
   GenesisBootstrapper --> UTXOState
   TxUnpacker --> UTXOState
   TxUnpacker --> EpochsState
   TxUnpacker --> AccountsState
   TxUnpacker --> SPOState
   TxUnpacker --> DRepState
   TxUnpacker --> GovernanceState
   UTXOState --> StakeDeltaFilter
   StakeDeltaFilter --> AccountsState
   UpstreamChainFetcher --> EpochsState
   MithrilSnapshotFetcher --> EpochsState
   EpochsState --> AccountsState
   SPOState --> AccountsState
   DRepState --> GovernanceState
   GovernanceState --> AccountsState
Loading

Messages

The messages passed between modules are defined in a single global enum in the Messages crate.

Processes

There is currently only one process, for testing:

  • Omnibus - includes all the above modules for testing, by default using the internal message bus only

About

Acropolis microservice architecture & components in Rust

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages