# 通信プロトコルのシーケンス図
###### tags: `Yellow paper` `通信プロトコル`
## ユーザとオペレーター間通信
### Transfer
```mermaid
sequenceDiagram
actor T as Transactor
participant O as Operator
participant P as Prover
participant L as L1 Contract
autonumber
T ->> T : zkp(verifyuserStateValue)
T ->> T : zkp(verifySignedTx)
T ->> O : transfer(zkp, tx)
O ->> O : verify(zkp)
O ->> O : aggregate tx
O ->> O : state change
P ->> O : get zkp input
O ->> P : zkp input
P ->> O: zkp(state)
O ->> L : commit block
```
### Update User State Diff
```mermaid
sequenceDiagram
actor T as Transactor
participant O as Operator
participant P as Prover
participant L as L1 Contract
autonumber
T ->> T : zkp(verifyUpdateStateDiff)
T ->> O : updateUserStateDiff(zkp, newUserMerkleRoot)
O ->> O : verify(zkp)
O ->> O : aggregate tx
O ->> O : state change
P ->> O : get zkp input
O ->> P : zkp input
P ->> O: zkp(state)
O ->> L : commit block
```
### Exit(normarl mode)
```mermaid
sequenceDiagram
actor T as Transactor
participant O as Operator
participant P as Prover
participant L as L1 Contract
autonumber
T -> T : zkp(proveUserStateChange)
T ->> O : exit(zkp)
O ->> O : verify(zkp)
O ->> O : aggregate tx
O ->> O : state change
P ->> O : get zkp input
O ->> P : zkp input
P ->> O: zkp(state)
O ->> L : commit block
L ->> T : transfer assets
```
## ユーザーとL1ブロックチェーン間通信
### Exit(freeze mode)
```mermaid
sequenceDiagram
actor T as Transactor
participant L as L1 Contract
autonumber
L ->> L : freeze mode
T ->> T : zkp(proveUserStateChange)
T ->> T : zkp(proveNoUpdateUserState)
T ->> L : exit(zkp)
L ->> T : transfer assets
```