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