# Session Logic and Timing Challenges

### Problem Statement

Session logic in multiplayer games often requires **timeouts and delays** for gameplay mechanics. For example, in a turn-based game, a round should resolve automatically after 30 seconds. In centralized applications, this is handled using threads that trigger timeouts. However, in a decentralized network, where session logic runs in parallel across multiple nodes, timing discrepancies arise due to:

* **Diverging states across nodes** when state-changing events arrive close to a timeout trigger.
* **Lack of a global synchronized clock**, making event ordering inconsistent.

A robust mechanism is needed to **ensure deterministic execution** of logic across all nodes while maintaining decentralization.

***

### Proposed Solution

In the decentralized network design, a **central coordinating actor**, called the **Coordinator**, organizes the network and acts as the primary point of interaction for clients.

***

### **Coordinator Responsibilities**

* Ensures timely responses to client requests.
* Triggers timeouts and propagates messages through a **ring topology**.
* Works with **Witness nodes**, which confirm events via double validation.

***

### **Ring-Based Request Propagation**

* Each request is sent through a **ring structure** to ensure redundancy and robustness.
* Witness nodes validate requests by ensuring they arrive from **both directions** before committing them.
* Similar to consensus protocols in distributed systems, this method ensures agreement across nodes.

***

### **Coordinator Selection and Timeouts**

* The **initial Coordinator** is randomly selected but will later be based on a **trust score** for reliability.
* The Coordinator is responsible for triggering all timeouts.
* Witness nodes **do not** trigger timeouts independently; they rely on timeout messages from the Coordinator.

***

### **Handling Conflicts and State Synchronization**

If a session logic timeout occurs, the network follows this process:

1. **Coordinator triggers a timeout** and propagates a message to all Witness nodes.
2. **Clients may send state-changing requests** that should cancel the timeout.
3. **Witness nodes apply a double confirmation** mechanism to ensure a valid timeout decision:
   * If a conflicting request is detected, the timeout is **canceled**.
   * Otherwise, the timeout is **executed**, and its result is added to the session proof.
4. **Coordinator drops any late-arriving conflicting requests** to prevent state inconsistency.

Witness nodes ensure that incorrect requests are filtered out:

* If a request arrives **after a timeout is triggered**, the Witness drops it.
* A redundant mechanism ensures incorrect requests **do not receive validation** from the ring topology.
