---
# System prepended metadata

title: Optimistic Transfers with Rollup

---

# 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[]
```

