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