First simulate the script outside of the zkVM to quickly reject in case of error, before trying to generate a zk-proof for it.
- Pros: We can quickly notify users about erratic scripts so they don't have to wait minutes before getting an error result.
- Cons: We lose provable error messages. We currently expose error messages from the zkVM, so proof verifiers can trust these error messages, and react accordingly depending on error types (they might tolerate some errors etc...).
First simulate the script outside of the zkVM to quickly reject in case of error, before trying to generate a zk-proof for it.