Skip to content

input-output-hk/acropolis

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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)
   EpochActivityCounter(Epoch Activity Counter)
   AccountsState(Accounts State)

   UpstreamChainFetcher --> BlockUnpacker
   MithrilSnapshotFetcher --> BlockUnpacker
   BlockUnpacker --> TxUnpacker
   GenesisBootstrapper --> UTXOState
   TxUnpacker --> UTXOState
   TxUnpacker --> EpochActivityCounter
   TxUnpacker --> AccountsState
   TxUnpacker --> SPOState
   TxUnpacker --> DRepState
   TxUnpacker --> GovernanceState
   UTXOState --> StakeDeltaFilter
   StakeDeltaFilter --> AccountsState
   UpstreamChainFetcher --> EpochActivityCounter
   MithrilSnapshotFetcher --> EpochActivityCounter
   EpochActivityCounter --> 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