Orchestrate architecture

Orchestrate implements a microservices architecture composed of APIs & workers. Workers communicate using a publish-subscribe pattern with Apache Kafka as a message broker. All messages are standardized using protobuf and grpc.

The abstraction of components, communicating between microservices through a central message broker, and a defined protocol for message exchanges, makes Orchestrate highly maintainable, loosely coupled with other services, and easy to test.

Orchestrate High Level Architecture

Orchestrate workers

  • Tx-Crafter crafts transaction payloads. Crafting transaction payloads includes setting the gas price and gas limit of the transaction, and requesting faucet crediting.
  • Tx-Signer signs transactions.
  • Tx-Sender sends transactions to the blockchain and stores the transaction envelope.
  • Tx-Listener listens for transaction receipts and loads the transaction envelope.

Internal Orchestrate APIs

  • Envelope Store API stores the transaction envelope while the transaction is being mined.
  • Contract Registry API stores the contract ABI, bytecode, and deployed bytecode.
  • Chain Registry API stores chain configurations including the chain URL, chain name, listener configuration, and block information.

Infrastructure services

  • Kafka message broker service enables communication between workers following a publish-subscribe pattern.
  • Redis database service is used as distributed cache to store nonce values.
  • Postgres database service is used by the envelope store to store transaction execution contexts.
  • HashiCorp Vault for key management.