Execution Cycle

EXM has various processes that take place in order for your write operations to be processed and stored in Arweave. These processes are part of an execution cycle that ensures the efficiency of our cache layer and synchrony with Arweave as well as the overall performance of your applications.
EXM is stateful. The state of the application is backed by eventual consistency.
For more information about EXM and its eventual consistency, click here.

Process Overview

Sending a Write Operation

When sending a write operation, you need to be aware they are not processed immediately. Instead, they are added to a queue of batches of transactions that gets fetched by "the processor".
When sending a write operation, an optimistic state is returned. Read about it here.

The Processor

Each application has a totally independent processor as they contain their own set of resources. The processor is responsible for fetching the batches of transactions related to the application and updating the cache layer as well as making sure the information is inside Arweave.
This process takes place totally asynchronous from the moment a write operation is sent which is why an optimistic result is given when sending such transaction.
The processor is designed in a way that it can failover. This is why there are not guarantees as to:
  • How many times a transaction will be processed before it reaches finality.
  • When the transaction will reach finality.
Such points could be issues when using APIs like EXM.getDate or EXM.deterministicFetch as they could be called multiple times before the state of your application actually reaches finality in the chain history of Arweave. Make sure to use these and other APIs keeping in mind the nature of eventual consistency.