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