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.
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.
- 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.