Skip to content

input-output-hk/acropolis

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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 modules are very basic and naive:

  • Mini-protocols - implementation of the Node-to-Node (N2N) client-side (initiator) protocol, allowing chain synchronisation and block fetching
  • Block Unpacker - unpacks received blocks into individual transactions
  • Tx Unpacker - parses transactions and generates UTXO changes
  • Ledger State - watches UTXO changes and maintains a basic in-memory ledger state
graph LR

   Miniprotocols
   BlockUnpacker(Block Unpacker)
   TxUnpacker(Transaction Unpacker)
   LedgerState(LedgerState)

   Miniprotocols --> BlockUnpacker
   BlockUnpacker --> TxUnpacker
   TxUnpacker --> LedgerState
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 external message bus to allow diagnostics

About

Acropolis microservice architecture & components in Rust

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages