---
# System prepended metadata

title: 2023-11 Demo Instructions

---

# Demo Instructions

## Setup

- install rust and circom
- install nvm with node version 20.8.0
- clone demo-simple-app repo: https://github.com/NebraZKP/demo-simple-app
- Run the demo setup script: `./scripts/demo_setup.sh`
- `. scripts/shell_setup.sh`  (required for each new terminal)
- `saturn local ethkeygen`  to generate an address
- `cat example_user.keyfile | jq -r .address` to display your address
- fund the address from the faucet: https://sepoliafaucet.com/

## Things to show:

### Saturn contract in etherscan

https://sepolia.etherscan.io/address/0xBab1A1D7A717fa2E6A6aA7b595A6C6ed26E76cdd

### Check saturn state:

```console
$ saturn stats
```

### Explain simple app.  Check simple app state:

```console
$ simple-app get-state
```

### Test the full pipeline

The following command:
- generates a proof
- submits it to Saturn
- waits for it to appear in an aggregated proof
- runs the simple app logic that uses the proof

```console
$ simple-app submit-once
```

### While proof is being aggregated

Send a bunch of other proofs in the background (to trigger an outer batch).
Open a background terminal, and re-source `. /scripts/shell_setup.sh`

```console
$ simple-app submit -n 31 [--submit-rate <tx/second>]
```

- Show the `submit-once` tx in etherscan.
- Open the Saturn contract in Etherscan.
  - Show and explain the "Submit Proof" and "Verify Saturn Proof" txs

### After `submit-once` has run

(Note this can take a while, especially if there is a backlog of transactions).

- Refresh Saturn contract in Etherscan
- Find and open latest "Verify Saturn Proof" tx
- Click "More details" -> "Decode Input Data".  Your proofId should be in the list.