## Background and goal
Today, in Web3, if you plan to develop a application can share the state or track the session before it get settled on layer 1 with zero-knowledge proof, your options is very constrained, most of rollups or layer2 does't provide you a end to end solution to achieve the goal. Becuase of the missing of the infrastrauctre, to create more type of applications is also difficult. Our goal is to provide a state service and new programming model to help developers to achieve the goal.
## Introduction
Introduce our solution, use state service as cache of merkle tree for app to keep states shared by different users before update DA
## Design
```mermaid
%%{init: {"flowchart": {"htmlLabels": false}} }%%
flowchart LR
App <--> Node["ZKC Node"]
State["ZKC state sercie"]
Node --> State
State --> DA
State --> Prover["zkWasm prover network"]
Node --> Settlement
Node <--> Prover
```
Here, we present you a solution using zkc state service to realize a fully stateful off-chain appliations model. The idea behind it is to use zkc state service to store the merkle tree for each application before the result being stored in DA.
### How does each component works with others
### The role ZKC state sercice
### Implementation of ZKC service in detail
##
## Using ZKC to develop fully statful provable dApps
### Programming model
By using ZKC SDK and infra, there are two types of application can be developed,
1. Pure client side execution application
2. Client + Node side execution
The programming model for each has slide differences, but they are very alike those widely used in Web2 word.
1. MVC model
2. Servless alike
### Examples
## Challeges
## Conclusion
---
https://www.cryptologie.net/article/607/zero-knowledge-proofs-in-stateful-applications/
https://cryptologie.net/article/604/the-zk-update-conflict-issue-in-multi-user-applications/
https://arxiv.org/pdf/2001.04592.pdf