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 stores the transaction envelope while the transaction is being mined.
  • Smart Contract-Registry stores the contract ABI, bytecode, and deployed bytecode.
  • Chain-Registry stores chain configurations including the chain URL, chain name, listener configuration, and block information.

Infrastructure services

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