# Optimistic Transfers with Rollup
[TOC]
## Deposits
>[name=Vaibhav] Should deposit work like we did [here](https://github.com/rollupnc/RollupNC#deposits) ?
## Transfers
Contract stores list of blocks which are defined as stated below.
```json=
Block ={
StateRoot string,
NumberOfTxs number
}
Blocks = []Block
```
StateRoot here basically is list of txs.
>[name=Vaibhav] Do we want to have instant confirmations of inclusion from the aggregator?
## Withdraws
User submits proof of inclusion in the latest confirmed state root. A new state root is created with user account removed on-chain. After challenge period withdraw is confirmed.
>[name=Vaibhav] Since withdraw is happening completely on-chain can we omit challenge period for it?
## Challenge
> See questions section below
## Fees
> Do we want to have a fee model in place for POC or should we skip ?
## State tree height
> How big can the tree be? What is it limited by?
## Questions
1. How do I prove inclusion of an invalid tx in the latest block?
## Data Models
### Transaction
```js
stateRoot: string
senderSlotIndex: number
recipientSlotIndex: number
tokenType: number
amount: number
signature: string
```
### Block
```js
blockNumber: number
transaction: Transactions[]
```