# Tutorials

- [Tutorial 1: Front-Running](https://zokyo-auditing-tutorials.gitbook.io/zokyo-tutorials/tutorials/tutorial-1-front-running.md): Author of tutorial series: Omar Inuwa https://twitter.com/OmarInuwa1
- [Prerequisites](https://zokyo-auditing-tutorials.gitbook.io/zokyo-tutorials/tutorials/tutorial-1-front-running/prerequisites.md)
- [Understanding Front-Running](https://zokyo-auditing-tutorials.gitbook.io/zokyo-tutorials/tutorials/tutorial-1-front-running/understanding-front-running.md)
- [Examples](https://zokyo-auditing-tutorials.gitbook.io/zokyo-tutorials/tutorials/tutorial-1-front-running/examples.md)
- [Mitigation Steps](https://zokyo-auditing-tutorials.gitbook.io/zokyo-tutorials/tutorials/tutorial-1-front-running/mitigation-steps.md)
- [Resource Bank to more front running examples](https://zokyo-auditing-tutorials.gitbook.io/zokyo-tutorials/tutorials/tutorial-1-front-running/resource-bank-to-more-front-running-examples.md): This page is a open resource where any examples of front running found in bug bounties, audit reports or live attacks are to be added here.
- [Front-Running Conclusion](https://zokyo-auditing-tutorials.gitbook.io/zokyo-tutorials/tutorials/tutorial-1-front-running/front-running-conclusion.md)
- [Tutorial 2: Unsafe Casting](https://zokyo-auditing-tutorials.gitbook.io/zokyo-tutorials/tutorials/tutorial-2-unsafe-casting.md): Author: Omar Inuwa
- [Prerequisites](https://zokyo-auditing-tutorials.gitbook.io/zokyo-tutorials/tutorials/tutorial-2-unsafe-casting/prerequisites.md)
- [Understanding Casting](https://zokyo-auditing-tutorials.gitbook.io/zokyo-tutorials/tutorials/tutorial-2-unsafe-casting/understanding-casting.md)
- [Examples](https://zokyo-auditing-tutorials.gitbook.io/zokyo-tutorials/tutorials/tutorial-2-unsafe-casting/examples.md)
- [Unsafe Casting Conclusion](https://zokyo-auditing-tutorials.gitbook.io/zokyo-tutorials/tutorials/tutorial-2-unsafe-casting/unsafe-casting-conclusion.md)
- [Tutorial 3: Approvals and Safe Approvals](https://zokyo-auditing-tutorials.gitbook.io/zokyo-tutorials/tutorials/tutorial-3-approvals-and-safe-approvals.md)
- [Prerequisites](https://zokyo-auditing-tutorials.gitbook.io/zokyo-tutorials/tutorials/tutorial-3-approvals-and-safe-approvals/prerequisites.md)
- [Understanding Approvals](https://zokyo-auditing-tutorials.gitbook.io/zokyo-tutorials/tutorials/tutorial-3-approvals-and-safe-approvals/understanding-approvals.md)
- [Vulnerability Examples](https://zokyo-auditing-tutorials.gitbook.io/zokyo-tutorials/tutorials/tutorial-3-approvals-and-safe-approvals/vulnerability-examples.md)
- [ERC20 Approval Reset Requirement](https://zokyo-auditing-tutorials.gitbook.io/zokyo-tutorials/tutorials/tutorial-3-approvals-and-safe-approvals/vulnerability-examples/erc20-approval-reset-requirement.md)
- [Ignoring Return Values from ERC20 approve() Function: Potential Miscount of Successful Approvals](https://zokyo-auditing-tutorials.gitbook.io/zokyo-tutorials/tutorials/tutorial-3-approvals-and-safe-approvals/vulnerability-examples/ignoring-return-values-from-erc20-approve-function-potential-miscount-of-successful-approvals.md)
- [Improper use of Open Zeppelins safeApprove() for Non-zero Allowance Increments](https://zokyo-auditing-tutorials.gitbook.io/zokyo-tutorials/tutorials/tutorial-3-approvals-and-safe-approvals/vulnerability-examples/improper-use-of-open-zeppelins-safeapprove-for-non-zero-allowance-increments.md)
- [Omitted Approval for Contract Interactions Within a Protocol](https://zokyo-auditing-tutorials.gitbook.io/zokyo-tutorials/tutorials/tutorial-3-approvals-and-safe-approvals/vulnerability-examples/omitted-approval-for-contract-interactions-within-a-protocol.md)
- [Failing to Reset Token Approvals in Case of Failed Transactions or other actions](https://zokyo-auditing-tutorials.gitbook.io/zokyo-tutorials/tutorials/tutorial-3-approvals-and-safe-approvals/vulnerability-examples/failing-to-reset-token-approvals-in-case-of-failed-transactions-or-other-actions.md): Watch out for try-catch patterns where a transaction could fail but the code continues meaning that any approvals made before the try-catch block remains
- [Miscellaneous](https://zokyo-auditing-tutorials.gitbook.io/zokyo-tutorials/tutorials/tutorial-3-approvals-and-safe-approvals/vulnerability-examples/miscellaneous.md)
- [ERC20 Approve Race Condition Vulnerability](https://zokyo-auditing-tutorials.gitbook.io/zokyo-tutorials/tutorials/tutorial-3-approvals-and-safe-approvals/vulnerability-examples/erc20-approve-race-condition-vulnerability.md)
- [Spot the Vulnerability](https://zokyo-auditing-tutorials.gitbook.io/zokyo-tutorials/tutorials/tutorial-3-approvals-and-safe-approvals/spot-the-vulnerability.md)
- [Approvals and Safe Approvals Conclusion](https://zokyo-auditing-tutorials.gitbook.io/zokyo-tutorials/tutorials/tutorial-3-approvals-and-safe-approvals/approvals-and-safe-approvals-conclusion.md)
- [Tutorial 4: Block.chainid, DOMAIN\_SEPARATOR and EIP-2612 permit](https://zokyo-auditing-tutorials.gitbook.io/zokyo-tutorials/tutorials/tutorial-4-block.chainid-domain_separator-and-eip-2612-permit.md): This vulnerability is prevalent in cross-chain protocols
- [Prerequisites](https://zokyo-auditing-tutorials.gitbook.io/zokyo-tutorials/tutorials/tutorial-4-block.chainid-domain_separator-and-eip-2612-permit/prerequisites.md)
- [Understanding Block.chainid and DOMAIN\_SEPARATOR](https://zokyo-auditing-tutorials.gitbook.io/zokyo-tutorials/tutorials/tutorial-4-block.chainid-domain_separator-and-eip-2612-permit/understanding-block.chainid-and-domain_separator.md)
- [Examples](https://zokyo-auditing-tutorials.gitbook.io/zokyo-tutorials/tutorials/tutorial-4-block.chainid-domain_separator-and-eip-2612-permit/examples.md)
- [General Mitigation Steps](https://zokyo-auditing-tutorials.gitbook.io/zokyo-tutorials/tutorials/tutorial-4-block.chainid-domain_separator-and-eip-2612-permit/general-mitigation-steps.md)
- [Tutorial 4 Conclusion](https://zokyo-auditing-tutorials.gitbook.io/zokyo-tutorials/tutorials/tutorial-4-block.chainid-domain_separator-and-eip-2612-permit/tutorial-4-conclusion.md)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://zokyo-auditing-tutorials.gitbook.io/zokyo-tutorials/tutorials.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
