{"version":1,"pages":[{"id":"RS8oeFdvalka9sq1x0gT","title":"Zokyo Auditing Tutorials","pathname":"/zokyo-tutorials","siteSpaceId":"sitesp_qsJ5X","emoji":"1f510","description":""},{"id":"CiSnXu3QL5zv8OQhGGYD","title":"Tutorial 1: Front-Running","pathname":"/zokyo-tutorials/tutorials/tutorial-1-front-running","siteSpaceId":"sitesp_qsJ5X","emoji":"1f3c3","description":"Author of tutorial series: Omar Inuwa https://twitter.com/OmarInuwa1","breadcrumbs":[{"label":"Tutorials","emoji":"1f4da"}]},{"id":"3Dh7nGT1M6w4rIkHvHI7","title":"Prerequisites","pathname":"/zokyo-tutorials/tutorials/tutorial-1-front-running/prerequisites","siteSpaceId":"sitesp_qsJ5X","emoji":"1f680","description":"","breadcrumbs":[{"label":"Tutorials","emoji":"1f4da"},{"label":"Tutorial 1: Front-Running","emoji":"1f3c3"}]},{"id":"3vr9SG1gsp3R8aDahzi7","title":"Understanding Front-Running","pathname":"/zokyo-tutorials/tutorials/tutorial-1-front-running/understanding-front-running","siteSpaceId":"sitesp_qsJ5X","emoji":"1f4d8","description":"","breadcrumbs":[{"label":"Tutorials","emoji":"1f4da"},{"label":"Tutorial 1: Front-Running","emoji":"1f3c3"}]},{"id":"tYlDi5f18JGGUhcJsT1t","title":"Examples","pathname":"/zokyo-tutorials/tutorials/tutorial-1-front-running/examples","siteSpaceId":"sitesp_qsJ5X","emoji":"1f453","description":"","breadcrumbs":[{"label":"Tutorials","emoji":"1f4da"},{"label":"Tutorial 1: Front-Running","emoji":"1f3c3"}]},{"id":"KjBC0UXUYEfBg0AfpOLB","title":"Mitigation Steps","pathname":"/zokyo-tutorials/tutorials/tutorial-1-front-running/mitigation-steps","siteSpaceId":"sitesp_qsJ5X","emoji":"2692","description":"","breadcrumbs":[{"label":"Tutorials","emoji":"1f4da"},{"label":"Tutorial 1: Front-Running","emoji":"1f3c3"}]},{"id":"8D7Pw5mDneVeu1MhzJ5g","title":"Resource Bank to more front running examples","pathname":"/zokyo-tutorials/tutorials/tutorial-1-front-running/resource-bank-to-more-front-running-examples","siteSpaceId":"sitesp_qsJ5X","emoji":"1f3e6","description":"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.","breadcrumbs":[{"label":"Tutorials","emoji":"1f4da"},{"label":"Tutorial 1: Front-Running","emoji":"1f3c3"}]},{"id":"2rkfIlCTDiMekbX0rOye","title":"Front-Running Conclusion","pathname":"/zokyo-tutorials/tutorials/tutorial-1-front-running/front-running-conclusion","siteSpaceId":"sitesp_qsJ5X","emoji":"1f91d","description":"","breadcrumbs":[{"label":"Tutorials","emoji":"1f4da"},{"label":"Tutorial 1: Front-Running","emoji":"1f3c3"}]},{"id":"jKjkR4gJxd0aICy7c3hX","title":"Tutorial 2: Unsafe Casting","pathname":"/zokyo-tutorials/tutorials/tutorial-2-unsafe-casting","siteSpaceId":"sitesp_qsJ5X","emoji":"1f9f1","description":"Author: Omar Inuwa","breadcrumbs":[{"label":"Tutorials","emoji":"1f4da"}]},{"id":"iSJtnzUZHvUAelmd71gp","title":"Prerequisites","pathname":"/zokyo-tutorials/tutorials/tutorial-2-unsafe-casting/prerequisites","siteSpaceId":"sitesp_qsJ5X","emoji":"1f680","description":"","breadcrumbs":[{"label":"Tutorials","emoji":"1f4da"},{"label":"Tutorial 2: Unsafe Casting","emoji":"1f9f1"}]},{"id":"7K0cGSthRYLIzqBgYOrE","title":"Understanding Casting","pathname":"/zokyo-tutorials/tutorials/tutorial-2-unsafe-casting/understanding-casting","siteSpaceId":"sitesp_qsJ5X","emoji":"1f4d8","description":"","breadcrumbs":[{"label":"Tutorials","emoji":"1f4da"},{"label":"Tutorial 2: Unsafe Casting","emoji":"1f9f1"}]},{"id":"lEtCOVIx6c5OZRHFPa9Y","title":"Examples","pathname":"/zokyo-tutorials/tutorials/tutorial-2-unsafe-casting/examples","siteSpaceId":"sitesp_qsJ5X","emoji":"1f453","description":"","breadcrumbs":[{"label":"Tutorials","emoji":"1f4da"},{"label":"Tutorial 2: Unsafe Casting","emoji":"1f9f1"}]},{"id":"UCsSxgeT77hKHBfUOufr","title":"Unsafe Casting Conclusion","pathname":"/zokyo-tutorials/tutorials/tutorial-2-unsafe-casting/unsafe-casting-conclusion","siteSpaceId":"sitesp_qsJ5X","emoji":"1f91d","description":"","breadcrumbs":[{"label":"Tutorials","emoji":"1f4da"},{"label":"Tutorial 2: Unsafe Casting","emoji":"1f9f1"}]},{"id":"bRBOBkg7uhD5SfHdk4Ah","title":"Tutorial 3: Approvals and Safe Approvals","pathname":"/zokyo-tutorials/tutorials/tutorial-3-approvals-and-safe-approvals","siteSpaceId":"sitesp_qsJ5X","emoji":"1f44d","description":"","breadcrumbs":[{"label":"Tutorials","emoji":"1f4da"}]},{"id":"EPEJ82qsCMOADGHODJii","title":"Prerequisites","pathname":"/zokyo-tutorials/tutorials/tutorial-3-approvals-and-safe-approvals/prerequisites","siteSpaceId":"sitesp_qsJ5X","emoji":"1f680","description":"","breadcrumbs":[{"label":"Tutorials","emoji":"1f4da"},{"label":"Tutorial 3: Approvals and Safe Approvals","emoji":"1f44d"}]},{"id":"pM7kOYabVPWV21nQLcoS","title":"Understanding Approvals","pathname":"/zokyo-tutorials/tutorials/tutorial-3-approvals-and-safe-approvals/understanding-approvals","siteSpaceId":"sitesp_qsJ5X","emoji":"1f4d8","description":"","breadcrumbs":[{"label":"Tutorials","emoji":"1f4da"},{"label":"Tutorial 3: Approvals and Safe Approvals","emoji":"1f44d"}]},{"id":"QjKucYdiAs8KhidPtZM4","title":"Vulnerability Examples","pathname":"/zokyo-tutorials/tutorials/tutorial-3-approvals-and-safe-approvals/vulnerability-examples","siteSpaceId":"sitesp_qsJ5X","emoji":"1f453","description":"","breadcrumbs":[{"label":"Tutorials","emoji":"1f4da"},{"label":"Tutorial 3: Approvals and Safe Approvals","emoji":"1f44d"}]},{"id":"0SQs5exVWxlkCoisKDt5","title":"ERC20 Approval Reset Requirement","pathname":"/zokyo-tutorials/tutorials/tutorial-3-approvals-and-safe-approvals/vulnerability-examples/erc20-approval-reset-requirement","siteSpaceId":"sitesp_qsJ5X","emoji":"1f501","description":"","breadcrumbs":[{"label":"Tutorials","emoji":"1f4da"},{"label":"Tutorial 3: Approvals and Safe Approvals","emoji":"1f44d"},{"label":"Vulnerability Examples","emoji":"1f453"}]},{"id":"JSNjkgaYI4ucW6sfCGPO","title":"Ignoring Return Values from ERC20 approve() Function: Potential Miscount of Successful Approvals","pathname":"/zokyo-tutorials/tutorials/tutorial-3-approvals-and-safe-approvals/vulnerability-examples/ignoring-return-values-from-erc20-approve-function-potential-miscount-of-successful-approvals","siteSpaceId":"sitesp_qsJ5X","emoji":"1f634","description":"","breadcrumbs":[{"label":"Tutorials","emoji":"1f4da"},{"label":"Tutorial 3: Approvals and Safe Approvals","emoji":"1f44d"},{"label":"Vulnerability Examples","emoji":"1f453"}]},{"id":"97yy8Wn22WaQLxo0iygz","title":"Improper use of Open Zeppelins safeApprove() for Non-zero Allowance Increments","pathname":"/zokyo-tutorials/tutorials/tutorial-3-approvals-and-safe-approvals/vulnerability-examples/improper-use-of-open-zeppelins-safeapprove-for-non-zero-allowance-increments","siteSpaceId":"sitesp_qsJ5X","emoji":"1f6ab","description":"","breadcrumbs":[{"label":"Tutorials","emoji":"1f4da"},{"label":"Tutorial 3: Approvals and Safe Approvals","emoji":"1f44d"},{"label":"Vulnerability Examples","emoji":"1f453"}]},{"id":"jjiANQ6ujTkYxx3lj2wL","title":"Omitted Approval for Contract Interactions Within a Protocol","pathname":"/zokyo-tutorials/tutorials/tutorial-3-approvals-and-safe-approvals/vulnerability-examples/omitted-approval-for-contract-interactions-within-a-protocol","siteSpaceId":"sitesp_qsJ5X","emoji":"1f97e","description":"","breadcrumbs":[{"label":"Tutorials","emoji":"1f4da"},{"label":"Tutorial 3: Approvals and Safe Approvals","emoji":"1f44d"},{"label":"Vulnerability Examples","emoji":"1f453"}]},{"id":"wni4xypCRdc2qOeGxlOm","title":"Failing to Reset Token Approvals in Case of Failed Transactions or other actions","pathname":"/zokyo-tutorials/tutorials/tutorial-3-approvals-and-safe-approvals/vulnerability-examples/failing-to-reset-token-approvals-in-case-of-failed-transactions-or-other-actions","siteSpaceId":"sitesp_qsJ5X","emoji":"1f926-2642","description":"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","breadcrumbs":[{"label":"Tutorials","emoji":"1f4da"},{"label":"Tutorial 3: Approvals and Safe Approvals","emoji":"1f44d"},{"label":"Vulnerability Examples","emoji":"1f453"}]},{"id":"Ol4gIbBUl98uDW0Ttvav","title":"Miscellaneous","pathname":"/zokyo-tutorials/tutorials/tutorial-3-approvals-and-safe-approvals/vulnerability-examples/miscellaneous","siteSpaceId":"sitesp_qsJ5X","emoji":"1f4ad","description":"","breadcrumbs":[{"label":"Tutorials","emoji":"1f4da"},{"label":"Tutorial 3: Approvals and Safe Approvals","emoji":"1f44d"},{"label":"Vulnerability Examples","emoji":"1f453"}]},{"id":"KLAIkYjQSk17hdVqkpie","title":"ERC20 Approve Race Condition Vulnerability","pathname":"/zokyo-tutorials/tutorials/tutorial-3-approvals-and-safe-approvals/vulnerability-examples/erc20-approve-race-condition-vulnerability","siteSpaceId":"sitesp_qsJ5X","breadcrumbs":[{"label":"Tutorials","emoji":"1f4da"},{"label":"Tutorial 3: Approvals and Safe Approvals","emoji":"1f44d"},{"label":"Vulnerability Examples","emoji":"1f453"}]},{"id":"KxqiiRoK9YxQpClUxwv7","title":"Spot the Vulnerability","pathname":"/zokyo-tutorials/tutorials/tutorial-3-approvals-and-safe-approvals/spot-the-vulnerability","siteSpaceId":"sitesp_qsJ5X","emoji":"2692","description":"","breadcrumbs":[{"label":"Tutorials","emoji":"1f4da"},{"label":"Tutorial 3: Approvals and Safe Approvals","emoji":"1f44d"}]},{"id":"WJuHWvRCrFOtqOHwtn61","title":"Approvals and Safe Approvals Conclusion","pathname":"/zokyo-tutorials/tutorials/tutorial-3-approvals-and-safe-approvals/approvals-and-safe-approvals-conclusion","siteSpaceId":"sitesp_qsJ5X","emoji":"1f91d","description":"","breadcrumbs":[{"label":"Tutorials","emoji":"1f4da"},{"label":"Tutorial 3: Approvals and Safe Approvals","emoji":"1f44d"}]},{"id":"ju0wI4dix8sJ6Zgyu6SL","title":"Tutorial 4: Block.chainid, DOMAIN_SEPARATOR and EIP-2612 permit","pathname":"/zokyo-tutorials/tutorials/tutorial-4-block.chainid-domain_separator-and-eip-2612-permit","siteSpaceId":"sitesp_qsJ5X","emoji":"26d3","description":"This vulnerability is prevalent in cross-chain protocols","breadcrumbs":[{"label":"Tutorials","emoji":"1f4da"}]},{"id":"KZ7UQZLtwT70Ox4kMXZE","title":"Prerequisites","pathname":"/zokyo-tutorials/tutorials/tutorial-4-block.chainid-domain_separator-and-eip-2612-permit/prerequisites","siteSpaceId":"sitesp_qsJ5X","emoji":"1f680","description":"","breadcrumbs":[{"label":"Tutorials","emoji":"1f4da"},{"label":"Tutorial 4: Block.chainid, DOMAIN_SEPARATOR and EIP-2612 permit","emoji":"26d3"}]},{"id":"NtRyPzoWN6KBtm662uru","title":"Understanding Block.chainid and DOMAIN_SEPARATOR","pathname":"/zokyo-tutorials/tutorials/tutorial-4-block.chainid-domain_separator-and-eip-2612-permit/understanding-block.chainid-and-domain_separator","siteSpaceId":"sitesp_qsJ5X","emoji":"1f4d8","description":"","breadcrumbs":[{"label":"Tutorials","emoji":"1f4da"},{"label":"Tutorial 4: Block.chainid, DOMAIN_SEPARATOR and EIP-2612 permit","emoji":"26d3"}]},{"id":"SNkZdTzfHk4kuyU3c7EU","title":"Examples","pathname":"/zokyo-tutorials/tutorials/tutorial-4-block.chainid-domain_separator-and-eip-2612-permit/examples","siteSpaceId":"sitesp_qsJ5X","emoji":"1f453","description":"","breadcrumbs":[{"label":"Tutorials","emoji":"1f4da"},{"label":"Tutorial 4: Block.chainid, DOMAIN_SEPARATOR and EIP-2612 permit","emoji":"26d3"}]},{"id":"KibuXACqOlxJk0ri85dP","title":"General Mitigation Steps","pathname":"/zokyo-tutorials/tutorials/tutorial-4-block.chainid-domain_separator-and-eip-2612-permit/general-mitigation-steps","siteSpaceId":"sitesp_qsJ5X","emoji":"2692","description":"","breadcrumbs":[{"label":"Tutorials","emoji":"1f4da"},{"label":"Tutorial 4: Block.chainid, DOMAIN_SEPARATOR and EIP-2612 permit","emoji":"26d3"}]},{"id":"W0Gt1L0IWF80m2kbVFjJ","title":"Tutorial 4 Conclusion","pathname":"/zokyo-tutorials/tutorials/tutorial-4-block.chainid-domain_separator-and-eip-2612-permit/tutorial-4-conclusion","siteSpaceId":"sitesp_qsJ5X","emoji":"1f91d","description":"","breadcrumbs":[{"label":"Tutorials","emoji":"1f4da"},{"label":"Tutorial 4: Block.chainid, DOMAIN_SEPARATOR and EIP-2612 permit","emoji":"26d3"}]},{"id":"Gn2tGR0pQq1zR6w55FnC","title":"Tutorial 5: Fee-On-Transfer Tokens","pathname":"/zokyo-tutorials/tutorial-5-fee-on-transfer-tokens","siteSpaceId":"sitesp_qsJ5X","emoji":"1f4b0","description":"Prevalence in DEX Contracts"},{"id":"QO4e2GyDiAyWq7lEcEpU","title":"Prerequisites","pathname":"/zokyo-tutorials/tutorial-5-fee-on-transfer-tokens/prerequisites","siteSpaceId":"sitesp_qsJ5X","emoji":"1f680","description":"","breadcrumbs":[{"label":"Tutorial 5: Fee-On-Transfer Tokens","emoji":"1f4b0"}]},{"id":"TBVQVrUikYDd4cHLa9nv","title":"Understanding Fee-On-Transfer","pathname":"/zokyo-tutorials/tutorial-5-fee-on-transfer-tokens/understanding-fee-on-transfer","siteSpaceId":"sitesp_qsJ5X","emoji":"1f4d8","description":"","breadcrumbs":[{"label":"Tutorial 5: Fee-On-Transfer Tokens","emoji":"1f4b0"}]},{"id":"ieBcRkMbE49fU1d1IktX","title":"Examples","pathname":"/zokyo-tutorials/tutorial-5-fee-on-transfer-tokens/examples","siteSpaceId":"sitesp_qsJ5X","emoji":"1f453","description":"","breadcrumbs":[{"label":"Tutorial 5: Fee-On-Transfer Tokens","emoji":"1f4b0"}]},{"id":"ZOCfaIUgPE8TuxGyTJsr","title":"Links to more fee-on-transfer vulnerability examples","pathname":"/zokyo-tutorials/tutorial-5-fee-on-transfer-tokens/links-to-more-fee-on-transfer-vulnerability-examples","siteSpaceId":"sitesp_qsJ5X","emoji":"1f4d8","description":"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.","breadcrumbs":[{"label":"Tutorial 5: Fee-On-Transfer Tokens","emoji":"1f4b0"}]},{"id":"8XlFqwnzDYdEASoImzDB","title":"Fee-On-Transfer Tokens: Conclusion","pathname":"/zokyo-tutorials/tutorial-5-fee-on-transfer-tokens/fee-on-transfer-tokens-conclusion","siteSpaceId":"sitesp_qsJ5X","emoji":"1f91d","description":"","breadcrumbs":[{"label":"Tutorial 5: Fee-On-Transfer Tokens","emoji":"1f4b0"}]},{"id":"5Q5cRMnHzDGLKfr90yZX","title":"Tutorial 6: Merkle Trees","pathname":"/zokyo-tutorials/tutorial-6-merkle-trees","siteSpaceId":"sitesp_qsJ5X","emoji":"1f334"},{"id":"RT0UYV0khXSKEyggfaYC","title":"Prerequisites","pathname":"/zokyo-tutorials/tutorial-6-merkle-trees/prerequisites","siteSpaceId":"sitesp_qsJ5X","emoji":"1f680","breadcrumbs":[{"label":"Tutorial 6: Merkle Trees","emoji":"1f334"}]},{"id":"Ve5XN70weZoknF9ata2H","title":"Understanding Merkle Trees","pathname":"/zokyo-tutorials/tutorial-6-merkle-trees/understanding-merkle-trees","siteSpaceId":"sitesp_qsJ5X","emoji":"1f4d8","breadcrumbs":[{"label":"Tutorial 6: Merkle Trees","emoji":"1f334"}]},{"id":"QxV6S6mJVccoMKFa21X1","title":"Verification within a Merkle Tree:","pathname":"/zokyo-tutorials/tutorial-6-merkle-trees/verification-within-a-merkle-tree","siteSpaceId":"sitesp_qsJ5X","emoji":"1f50e","breadcrumbs":[{"label":"Tutorial 6: Merkle Trees","emoji":"1f334"}]},{"id":"0hrNhIFekEvwweofBp84","title":"Merkle Proofs Within Smart Contracts","pathname":"/zokyo-tutorials/tutorial-6-merkle-trees/merkle-proofs-within-smart-contracts","siteSpaceId":"sitesp_qsJ5X","emoji":"1f4dc","breadcrumbs":[{"label":"Tutorial 6: Merkle Trees","emoji":"1f334"}]},{"id":"OncTORHjZ9eNZgkiRnrV","title":"Merkle Proof Solidity Implementation","pathname":"/zokyo-tutorials/tutorial-6-merkle-trees/merkle-proof-solidity-implementation","siteSpaceId":"sitesp_qsJ5X","emoji":"1f58b","breadcrumbs":[{"label":"Tutorial 6: Merkle Trees","emoji":"1f334"}]},{"id":"1Vfg4fh7oiIoouwukINE","title":"Vulnerabilities When Using Merkle Trees","pathname":"/zokyo-tutorials/tutorial-6-merkle-trees/vulnerabilities-when-using-merkle-trees","siteSpaceId":"sitesp_qsJ5X","emoji":"1f6d1","breadcrumbs":[{"label":"Tutorial 6: Merkle Trees","emoji":"1f334"}]},{"id":"GmrP65ePJ17BfRT9Hlgn","title":"Example Vulnerabilities","pathname":"/zokyo-tutorials/tutorial-6-merkle-trees/example-vulnerabilities","siteSpaceId":"sitesp_qsJ5X","emoji":"1f480","breadcrumbs":[{"label":"Tutorial 6: Merkle Trees","emoji":"1f334"}]},{"id":"K4wwjyNp0lK790ia3Dbd","title":"Exercise","pathname":"/zokyo-tutorials/tutorial-6-merkle-trees/exercise","siteSpaceId":"sitesp_qsJ5X","emoji":"1f9e0","breadcrumbs":[{"label":"Tutorial 6: Merkle Trees","emoji":"1f334"}]},{"id":"PAyje1wWxIzIBwdothsq","title":"Merkle Trees Conclusion","pathname":"/zokyo-tutorials/tutorial-6-merkle-trees/merkle-trees-conclusion","siteSpaceId":"sitesp_qsJ5X","emoji":"1f91d","breadcrumbs":[{"label":"Tutorial 6: Merkle Trees","emoji":"1f334"}]},{"id":"q2EHEvzj9Q4LPWnjyop6","title":"Tutorial 7: Merkle-Patricia Trees","pathname":"/zokyo-tutorials/tutorial-7-merkle-patricia-trees","siteSpaceId":"sitesp_qsJ5X","emoji":"1f333"},{"id":"LAtpFx9c91mdv2htjUbY","title":"Prerequisites","pathname":"/zokyo-tutorials/tutorial-7-merkle-patricia-trees/prerequisites","siteSpaceId":"sitesp_qsJ5X","emoji":"1f680","breadcrumbs":[{"label":"Tutorial 7: Merkle-Patricia Trees","emoji":"1f333"}]},{"id":"0ebyZWBdMQtNWjzDFnmm","title":"Understanding Merkle-Patricia Trees","pathname":"/zokyo-tutorials/tutorial-7-merkle-patricia-trees/understanding-merkle-patricia-trees","siteSpaceId":"sitesp_qsJ5X","emoji":"1f4d8","breadcrumbs":[{"label":"Tutorial 7: Merkle-Patricia Trees","emoji":"1f333"}]},{"id":"0mXxo54w47qzV0RcMlMo","title":"Understanding Merkle-Patrica Trees pt.2","pathname":"/zokyo-tutorials/tutorial-7-merkle-patricia-trees/understanding-merkle-patrica-trees-pt.2","siteSpaceId":"sitesp_qsJ5X","emoji":"1f4d5","breadcrumbs":[{"label":"Tutorial 7: Merkle-Patricia Trees","emoji":"1f333"}]},{"id":"rKbge2Q439xsdGcwtobr","title":"Verification within a Merkle-Patricia Tree","pathname":"/zokyo-tutorials/tutorial-7-merkle-patricia-trees/verification-within-a-merkle-patricia-tree","siteSpaceId":"sitesp_qsJ5X","emoji":"1f50e","breadcrumbs":[{"label":"Tutorial 7: Merkle-Patricia Trees","emoji":"1f333"}]},{"id":"gZMRhsDIqjjSL6iD9plj","title":"Vulnerabilities When Using Merkle-Patricia Trees","pathname":"/zokyo-tutorials/tutorial-7-merkle-patricia-trees/vulnerabilities-when-using-merkle-patricia-trees","siteSpaceId":"sitesp_qsJ5X","emoji":"1f6d1","breadcrumbs":[{"label":"Tutorial 7: Merkle-Patricia Trees","emoji":"1f333"}]},{"id":"RyLOdzHsNst5bldypSWx","title":"Example Vulnerability","pathname":"/zokyo-tutorials/tutorial-7-merkle-patricia-trees/example-vulnerability","siteSpaceId":"sitesp_qsJ5X","emoji":"1f480","breadcrumbs":[{"label":"Tutorial 7: Merkle-Patricia Trees","emoji":"1f333"}]},{"id":"QqmlDWo1SNSzIq4m4crB","title":"Merkle-Patricia Trees: Conclusion","pathname":"/zokyo-tutorials/tutorial-7-merkle-patricia-trees/merkle-patricia-trees-conclusion","siteSpaceId":"sitesp_qsJ5X","emoji":"1f91d","breadcrumbs":[{"label":"Tutorial 7: Merkle-Patricia Trees","emoji":"1f333"}]},{"id":"2a8eohDjsSRZgfM0GYdr","title":"Tutorial 8: Reentrancy","pathname":"/zokyo-tutorials/tutorial-8-reentrancy","siteSpaceId":"sitesp_qsJ5X","emoji":"1f501"},{"id":"tHXHnY8dKW15qjiDJfsy","title":"Prerequisites","pathname":"/zokyo-tutorials/tutorial-8-reentrancy/prerequisites","siteSpaceId":"sitesp_qsJ5X","emoji":"1f680","breadcrumbs":[{"label":"Tutorial 8: Reentrancy","emoji":"1f501"}]},{"id":"6G7X1buNZrV48bDozIyw","title":"Understanding Reentrancy","pathname":"/zokyo-tutorials/tutorial-8-reentrancy/understanding-reentrancy","siteSpaceId":"sitesp_qsJ5X","emoji":"1f4d8","breadcrumbs":[{"label":"Tutorial 8: Reentrancy","emoji":"1f501"}]},{"id":"mZbF1A7CnCbYAtVfYc8u","title":"Mitigation","pathname":"/zokyo-tutorials/tutorial-8-reentrancy/mitigation","siteSpaceId":"sitesp_qsJ5X","emoji":"2692","breadcrumbs":[{"label":"Tutorial 8: Reentrancy","emoji":"1f501"}]},{"id":"sk01thfn3HS0olI1yP3V","title":"The DAO Hack: An In-depth Examination","pathname":"/zokyo-tutorials/tutorial-8-reentrancy/the-dao-hack-an-in-depth-examination","siteSpaceId":"sitesp_qsJ5X","emoji":"1f480","breadcrumbs":[{"label":"Tutorial 8: Reentrancy","emoji":"1f501"}]},{"id":"q8vwMF8ZICQZTsfz0L1O","title":"Examples","pathname":"/zokyo-tutorials/tutorial-8-reentrancy/examples","siteSpaceId":"sitesp_qsJ5X","emoji":"1f453","breadcrumbs":[{"label":"Tutorial 8: Reentrancy","emoji":"1f501"}]},{"id":"fSl7mNaxd1U45OTzzf69","title":"Resource Bank To More Reentrancy Examples","pathname":"/zokyo-tutorials/tutorial-8-reentrancy/resource-bank-to-more-reentrancy-examples","siteSpaceId":"sitesp_qsJ5X","emoji":"1f3e6","description":"This page is a open resource where any examples of reentrancy found in bug bounties, audit reports or live attacks are to be added here","breadcrumbs":[{"label":"Tutorial 8: Reentrancy","emoji":"1f501"}]},{"id":"zjtulrhyX21lQIdOBdbX","title":"Conclusion: Reflecting on the Reentrancy Vulnerability","pathname":"/zokyo-tutorials/tutorial-8-reentrancy/conclusion-reflecting-on-the-reentrancy-vulnerability","siteSpaceId":"sitesp_qsJ5X","emoji":"1f91d","breadcrumbs":[{"label":"Tutorial 8: Reentrancy","emoji":"1f501"}]},{"id":"VJe2wl040ffCAlvDTjlc","title":"Tutorial 9: Read-Only Reentrancy","pathname":"/zokyo-tutorials/tutorial-9-read-only-reentrancy","siteSpaceId":"sitesp_qsJ5X","emoji":"1f502"},{"id":"LI1LUNLW9XWB6nl71svZ","title":"Prerequisites","pathname":"/zokyo-tutorials/tutorial-9-read-only-reentrancy/prerequisites","siteSpaceId":"sitesp_qsJ5X","emoji":"1f680","breadcrumbs":[{"label":"Tutorial 9: Read-Only Reentrancy","emoji":"1f502"}]},{"id":"mS9ebZxYYEVBf4bdcysF","title":"Understanding Read-Only Reentrancy","pathname":"/zokyo-tutorials/tutorial-9-read-only-reentrancy/understanding-read-only-reentrancy","siteSpaceId":"sitesp_qsJ5X","emoji":"1f4d8","breadcrumbs":[{"label":"Tutorial 9: Read-Only Reentrancy","emoji":"1f502"}]},{"id":"KzRB9JsGcY9y6nmiiiyj","title":"Mitigating Read-Only Reentrancy","pathname":"/zokyo-tutorials/tutorial-9-read-only-reentrancy/mitigating-read-only-reentrancy","siteSpaceId":"sitesp_qsJ5X","emoji":"1f528","breadcrumbs":[{"label":"Tutorial 9: Read-Only Reentrancy","emoji":"1f502"}]},{"id":"fIYvjPz1jf2ZeZbXUmPR","title":"Real World Examples","pathname":"/zokyo-tutorials/tutorial-9-read-only-reentrancy/real-world-examples","siteSpaceId":"sitesp_qsJ5X","emoji":"1f453","breadcrumbs":[{"label":"Tutorial 9: Read-Only Reentrancy","emoji":"1f502"}]},{"id":"FbThCMUa1w751OPuUBqU","title":"Resource Bank To More Reentrancy Examples","pathname":"/zokyo-tutorials/tutorial-9-read-only-reentrancy/resource-bank-to-more-reentrancy-examples","siteSpaceId":"sitesp_qsJ5X","emoji":"1f3e6","description":"This page is a open resource where any examples of read-only reentrancy found in bug bounties, audit reports or live attacks are to be added here","breadcrumbs":[{"label":"Tutorial 9: Read-Only Reentrancy","emoji":"1f502"}]},{"id":"QyZgSu2V6Xw9G2DiL34l","title":"Read-Only Reentrancy: Conclusion","pathname":"/zokyo-tutorials/tutorial-9-read-only-reentrancy/read-only-reentrancy-conclusion","siteSpaceId":"sitesp_qsJ5X","emoji":"1f91d","breadcrumbs":[{"label":"Tutorial 9: Read-Only Reentrancy","emoji":"1f502"}]},{"id":"7PEaMqIeABWMzTqj7zLX","title":"Tutorial 10: ERC20 transfer() and safeTransfer()","pathname":"/zokyo-tutorials/tutorial-10-erc20-transfer-and-safetransfer","siteSpaceId":"sitesp_qsJ5X","emoji":"1f686","description":"This vulnerability is prevalent in DEX's and Pools"},{"id":"6KPkCtW1VjLordZayqPt","title":"Prerequisites","pathname":"/zokyo-tutorials/tutorial-10-erc20-transfer-and-safetransfer/prerequisites","siteSpaceId":"sitesp_qsJ5X","emoji":"1f680","description":"","breadcrumbs":[{"label":"Tutorial 10: ERC20 transfer() and safeTransfer()","emoji":"1f686"}]},{"id":"TyTbeqDXzelFhd0N1LNw","title":"Understanding ERC20 transfer() and safeTransfer()","pathname":"/zokyo-tutorials/tutorial-10-erc20-transfer-and-safetransfer/understanding-erc20-transfer-and-safetransfer","siteSpaceId":"sitesp_qsJ5X","emoji":"1f4d8","breadcrumbs":[{"label":"Tutorial 10: ERC20 transfer() and safeTransfer()","emoji":"1f686"}]},{"id":"jupM7gJl5v7nfaM1Fa5F","title":"Examples","pathname":"/zokyo-tutorials/tutorial-10-erc20-transfer-and-safetransfer/examples","siteSpaceId":"sitesp_qsJ5X","emoji":"1f453","breadcrumbs":[{"label":"Tutorial 10: ERC20 transfer() and safeTransfer()","emoji":"1f686"}]},{"id":"VB733IZ6B3oq9Nvo2jCq","title":"Conclusion","pathname":"/zokyo-tutorials/tutorial-10-erc20-transfer-and-safetransfer/conclusion","siteSpaceId":"sitesp_qsJ5X","emoji":"1f91d","breadcrumbs":[{"label":"Tutorial 10: ERC20 transfer() and safeTransfer()","emoji":"1f686"}]},{"id":"Jx7FgZqeWNJxZWFN3MrU","title":"Tutorial 11: Low level .call(), .transfer() and .send()","pathname":"/zokyo-tutorials/tutorial-11-low-level-.call-.transfer-and-.send","siteSpaceId":"sitesp_qsJ5X","emoji":"1f4de","description":""},{"id":"qaMT9EphKtRTAFgZxSzq","title":"Prerequisites","pathname":"/zokyo-tutorials/tutorial-11-low-level-.call-.transfer-and-.send/prerequisites","siteSpaceId":"sitesp_qsJ5X","emoji":"1f680","breadcrumbs":[{"label":"Tutorial 11: Low level .call(), .transfer() and .send()","emoji":"1f4de"}]},{"id":"zgLIwaxv1RVzYfsYJMJB","title":"Understanding .call, .transfer, and .send","pathname":"/zokyo-tutorials/tutorial-11-low-level-.call-.transfer-and-.send/understanding-.call-.transfer-and-.send","siteSpaceId":"sitesp_qsJ5X","emoji":"1f4d8","breadcrumbs":[{"label":"Tutorial 11: Low level .call(), .transfer() and .send()","emoji":"1f4de"}]},{"id":"VJdkOLkRXAYWZ4IiG47W","title":"Understanding the Vulnerabilities of .transfer and .send","pathname":"/zokyo-tutorials/tutorial-11-low-level-.call-.transfer-and-.send/understanding-the-vulnerabilities-of-.transfer-and-.send","siteSpaceId":"sitesp_qsJ5X","emoji":"1f6d1","breadcrumbs":[{"label":"Tutorial 11: Low level .call(), .transfer() and .send()","emoji":"1f4de"}]},{"id":"eDJe8zuewlFQPhueXQsL","title":"Examples","pathname":"/zokyo-tutorials/tutorial-11-low-level-.call-.transfer-and-.send/examples","siteSpaceId":"sitesp_qsJ5X","emoji":"1f453","breadcrumbs":[{"label":"Tutorial 11: Low level .call(), .transfer() and .send()","emoji":"1f4de"}]},{"id":"Kb5utdQ2pkqSLXE6K3BF","title":"Low level .call(), .transfer() and .send() conclusion","pathname":"/zokyo-tutorials/tutorial-11-low-level-.call-.transfer-and-.send/low-level-.call-.transfer-and-.send-conclusion","siteSpaceId":"sitesp_qsJ5X","emoji":"1f91d","breadcrumbs":[{"label":"Tutorial 11: Low level .call(), .transfer() and .send()","emoji":"1f4de"}]},{"id":"lAb72K5lx6OWB3Wr9RJO","title":"Tutorial 12: Delegatecall Vulnerabilities in Precompiled Contracts","pathname":"/zokyo-tutorials/tutorial-12-delegatecall-vulnerabilities-in-precompiled-contracts","siteSpaceId":"sitesp_qsJ5X","emoji":"260e"},{"id":"J43thmlZ3hvVDlP5yMlg","title":"Prerequisites","pathname":"/zokyo-tutorials/tutorial-12-delegatecall-vulnerabilities-in-precompiled-contracts/prerequisites","siteSpaceId":"sitesp_qsJ5X","emoji":"1f680","breadcrumbs":[{"label":"Tutorial 12: Delegatecall Vulnerabilities in Precompiled Contracts","emoji":"260e"}]},{"id":"Cw2BHlHTl5mVKjRIHanA","title":"Understanding Delegatecall","pathname":"/zokyo-tutorials/tutorial-12-delegatecall-vulnerabilities-in-precompiled-contracts/understanding-delegatecall","siteSpaceId":"sitesp_qsJ5X","emoji":"1f4f3","breadcrumbs":[{"label":"Tutorial 12: Delegatecall Vulnerabilities in Precompiled Contracts","emoji":"260e"}]},{"id":"y4lVV6lPQSj7kkdCDvyB","title":"EVM, L2s, Bridges, and the Quest for Scalability","pathname":"/zokyo-tutorials/tutorial-12-delegatecall-vulnerabilities-in-precompiled-contracts/evm-l2s-bridges-and-the-quest-for-scalability","siteSpaceId":"sitesp_qsJ5X","emoji":"26f0","breadcrumbs":[{"label":"Tutorial 12: Delegatecall Vulnerabilities in Precompiled Contracts","emoji":"260e"}]},{"id":"h0OTxThbAvDZVg3KaGfE","title":"Understanding Precompiles in the Ethereum Virtual Machine (EVM)","pathname":"/zokyo-tutorials/tutorial-12-delegatecall-vulnerabilities-in-precompiled-contracts/understanding-precompiles-in-the-ethereum-virtual-machine-evm","siteSpaceId":"sitesp_qsJ5X","emoji":"1f3d7","breadcrumbs":[{"label":"Tutorial 12: Delegatecall Vulnerabilities in Precompiled Contracts","emoji":"260e"}]},{"id":"y3cgJs8cD4MsuoyymTeg","title":"Custom Precompiles","pathname":"/zokyo-tutorials/tutorial-12-delegatecall-vulnerabilities-in-precompiled-contracts/custom-precompiles","siteSpaceId":"sitesp_qsJ5X","emoji":"1f4bb","breadcrumbs":[{"label":"Tutorial 12: Delegatecall Vulnerabilities in Precompiled Contracts","emoji":"260e"}]},{"id":"GpoJ0DNkCtDohbnuBMl3","title":"Potential Vulnerabilities in EVM Implementations: Overlooked DelegateCall in Precompiled Contracts","pathname":"/zokyo-tutorials/tutorial-12-delegatecall-vulnerabilities-in-precompiled-contracts/potential-vulnerabilities-in-evm-implementations-overlooked-delegatecall-in-precompiled-contracts","siteSpaceId":"sitesp_qsJ5X","emoji":"1f480","breadcrumbs":[{"label":"Tutorial 12: Delegatecall Vulnerabilities in Precompiled Contracts","emoji":"260e"}]},{"id":"MKmYoPVwGyLAKnoMOz5D","title":"Real World Examples","pathname":"/zokyo-tutorials/tutorial-12-delegatecall-vulnerabilities-in-precompiled-contracts/real-world-examples","siteSpaceId":"sitesp_qsJ5X","emoji":"1f453","breadcrumbs":[{"label":"Tutorial 12: Delegatecall Vulnerabilities in Precompiled Contracts","emoji":"260e"}]},{"id":"oEXG5l3Jx9i6MaMnaaUu","title":"Delegatecall and Precompiles: Conclusion","pathname":"/zokyo-tutorials/tutorial-12-delegatecall-vulnerabilities-in-precompiled-contracts/delegatecall-and-precompiles-conclusion","siteSpaceId":"sitesp_qsJ5X","emoji":"1f91d","breadcrumbs":[{"label":"Tutorial 12: Delegatecall Vulnerabilities in Precompiled Contracts","emoji":"260e"}]},{"id":"tNNaWqKtZAixxEDuiEh2","title":"Tutorial 13: Liquid Staking","pathname":"/zokyo-tutorials/tutorial-13-liquid-staking","siteSpaceId":"sitesp_qsJ5X","emoji":"1f30a"},{"id":"KpAIMQxciNTyJTeAJrHH","title":"Prerequisites","pathname":"/zokyo-tutorials/tutorial-13-liquid-staking/prerequisites","siteSpaceId":"sitesp_qsJ5X","emoji":"1f680","breadcrumbs":[{"label":"Tutorial 13: Liquid Staking","emoji":"1f30a"}]},{"id":"15vYl6iYz2BW3zAsXixG","title":"Understanding Liquid Staking","pathname":"/zokyo-tutorials/tutorial-13-liquid-staking/understanding-liquid-staking","siteSpaceId":"sitesp_qsJ5X","emoji":"1f4d8","breadcrumbs":[{"label":"Tutorial 13: Liquid Staking","emoji":"1f30a"}]},{"id":"Ry655iehf7ZA4thdTYnM","title":"Understanding Liquid Staking Vulnerabilities","pathname":"/zokyo-tutorials/tutorial-13-liquid-staking/understanding-liquid-staking-vulnerabilities","siteSpaceId":"sitesp_qsJ5X","emoji":"1f480","breadcrumbs":[{"label":"Tutorial 13: Liquid Staking","emoji":"1f30a"}]},{"id":"MyUAxN1nWIeFAm2fPHmC","title":"Example Vulnerability","pathname":"/zokyo-tutorials/tutorial-13-liquid-staking/example-vulnerability","siteSpaceId":"sitesp_qsJ5X","emoji":"1f6d1","breadcrumbs":[{"label":"Tutorial 13: Liquid Staking","emoji":"1f30a"}]},{"id":"o9LuYynqO7ZxxBxGxqcz","title":"Example Vulnerability 2","pathname":"/zokyo-tutorials/tutorial-13-liquid-staking/example-vulnerability-2","siteSpaceId":"sitesp_qsJ5X","emoji":"1f41c","breadcrumbs":[{"label":"Tutorial 13: Liquid Staking","emoji":"1f30a"}]},{"id":"2k2rRBhfULSwzA45ydvR","title":"Example Vulnerability 3","pathname":"/zokyo-tutorials/tutorial-13-liquid-staking/example-vulnerability-3","siteSpaceId":"sitesp_qsJ5X","emoji":"1f577","breadcrumbs":[{"label":"Tutorial 13: Liquid Staking","emoji":"1f30a"}]},{"id":"D6pcTv0Dz3Gh5bhy6NuR","title":"Liquid Staking: Conclusion","pathname":"/zokyo-tutorials/tutorial-13-liquid-staking/liquid-staking-conclusion","siteSpaceId":"sitesp_qsJ5X","emoji":"1f91d","breadcrumbs":[{"label":"Tutorial 13: Liquid Staking","emoji":"1f30a"}]},{"id":"1O3WU6bnjoHbUg1y9NrQ","title":"Tutorial 14: Slippage","pathname":"/zokyo-tutorials/tutorial-14-slippage","siteSpaceId":"sitesp_qsJ5X","emoji":"1f6bf","description":""},{"id":"hNB6KjOEcZVjgPnfCmSK","title":"Prerequisites","pathname":"/zokyo-tutorials/tutorial-14-slippage/prerequisites","siteSpaceId":"sitesp_qsJ5X","emoji":"1f680","breadcrumbs":[{"label":"Tutorial 14: Slippage","emoji":"1f6bf"}]},{"id":"dg3llnx6EdKd44ibB6mf","title":"Understanding Slippage in Automated Market Makers (AMMs)","pathname":"/zokyo-tutorials/tutorial-14-slippage/understanding-slippage-in-automated-market-makers-amms","siteSpaceId":"sitesp_qsJ5X","emoji":"1f4d8","breadcrumbs":[{"label":"Tutorial 14: Slippage","emoji":"1f6bf"}]},{"id":"1twe0pt7vvHjcek1nA67","title":"Understanding the \"Lack of Slippage Check\" Vulnerability in Automated Market Makers (AMMs) and DEXs","pathname":"/zokyo-tutorials/tutorial-14-slippage/understanding-the-lack-of-slippage-check-vulnerability-in-automated-market-makers-amms-and-dexs","siteSpaceId":"sitesp_qsJ5X","emoji":"1f480","breadcrumbs":[{"label":"Tutorial 14: Slippage","emoji":"1f6bf"}]},{"id":"NoGzlxx274YcoQqlXwCw","title":"On-Chain Slippage Calculations Vulnerability","pathname":"/zokyo-tutorials/tutorial-14-slippage/on-chain-slippage-calculations-vulnerability","siteSpaceId":"sitesp_qsJ5X","emoji":"1f621","breadcrumbs":[{"label":"Tutorial 14: Slippage","emoji":"1f6bf"}]},{"id":"oym9KNdp4hYDHCu8arNX","title":"0 slippage tolerance vulnerability","pathname":"/zokyo-tutorials/tutorial-14-slippage/0-slippage-tolerance-vulnerability","siteSpaceId":"sitesp_qsJ5X","emoji":"1f4db","breadcrumbs":[{"label":"Tutorial 14: Slippage","emoji":"1f6bf"}]},{"id":"S4THZ6C9Tfpd8XLNfFEK","title":"Real World Examples","pathname":"/zokyo-tutorials/tutorial-14-slippage/real-world-examples","siteSpaceId":"sitesp_qsJ5X","emoji":"1f453","breadcrumbs":[{"label":"Tutorial 14: Slippage","emoji":"1f6bf"}]},{"id":"7fdiOuXT1dXSbkRIhqpQ","title":"Resource bank to more slippage vulnerabilities","pathname":"/zokyo-tutorials/tutorial-14-slippage/resource-bank-to-more-slippage-vulnerabilities","siteSpaceId":"sitesp_qsJ5X","emoji":"1f3e6","description":"This page is a open resource where any examples of slippage bugs found in bug bounties, audit reports or live attacks are to be added here.","breadcrumbs":[{"label":"Tutorial 14: Slippage","emoji":"1f6bf"}]},{"id":"FoaMrhcfsuCH80bQZfgV","title":"Slippage Conclusion","pathname":"/zokyo-tutorials/tutorial-14-slippage/slippage-conclusion","siteSpaceId":"sitesp_qsJ5X","emoji":"1f91d","breadcrumbs":[{"label":"Tutorial 14: Slippage","emoji":"1f6bf"}]},{"id":"VKmzfDMjPeaYDfwklEVn","title":"Tutorial 15: Oracles","pathname":"/zokyo-tutorials/tutorial-15-oracles","siteSpaceId":"sitesp_qsJ5X","emoji":"1f4c9","description":""},{"id":"iHwTAsWWP9bJfwqkhwoh","title":"Prerequisites","pathname":"/zokyo-tutorials/tutorial-15-oracles/prerequisites","siteSpaceId":"sitesp_qsJ5X","emoji":"1f680","breadcrumbs":[{"label":"Tutorial 15: Oracles","emoji":"1f4c9"}]},{"id":"PDhSIkMEUf8nuL443RLC","title":"Understanding Oracles","pathname":"/zokyo-tutorials/tutorial-15-oracles/understanding-oracles","siteSpaceId":"sitesp_qsJ5X","emoji":"1f4d8","breadcrumbs":[{"label":"Tutorial 15: Oracles","emoji":"1f4c9"}]},{"id":"Qxe2Ka2rC9PkDVaEJovb","title":"Types of price feeds","pathname":"/zokyo-tutorials/tutorial-15-oracles/types-of-price-feeds","siteSpaceId":"sitesp_qsJ5X","emoji":"1f4c8","breadcrumbs":[{"label":"Tutorial 15: Oracles","emoji":"1f4c9"}]},{"id":"gFv9FjjwAD4E2alS8H9x","title":"Flash Loans","pathname":"/zokyo-tutorials/tutorial-15-oracles/flash-loans","siteSpaceId":"sitesp_qsJ5X","emoji":"1f621","breadcrumbs":[{"label":"Tutorial 15: Oracles","emoji":"1f4c9"}]},{"id":"KBCqdQOXsg644SIlPjKd","title":"Understanding Oracle Vulnerabilities","pathname":"/zokyo-tutorials/tutorial-15-oracles/understanding-oracle-vulnerabilities","siteSpaceId":"sitesp_qsJ5X","emoji":"1f480","breadcrumbs":[{"label":"Tutorial 15: Oracles","emoji":"1f4c9"}]},{"id":"Ruo0e2k2MvqXW6BWj4H8","title":"The Danger of Single Oracle Dependence","pathname":"/zokyo-tutorials/tutorial-15-oracles/understanding-oracle-vulnerabilities/the-danger-of-single-oracle-dependence","siteSpaceId":"sitesp_qsJ5X","emoji":"26d3","breadcrumbs":[{"label":"Tutorial 15: Oracles","emoji":"1f4c9"},{"label":"Understanding Oracle Vulnerabilities","emoji":"1f480"}]},{"id":"KhebBKUxIhzOHGW2EOIa","title":"Using Deprecated Functions","pathname":"/zokyo-tutorials/tutorial-15-oracles/understanding-oracle-vulnerabilities/using-deprecated-functions","siteSpaceId":"sitesp_qsJ5X","emoji":"2b07","breadcrumbs":[{"label":"Tutorial 15: Oracles","emoji":"1f4c9"},{"label":"Understanding Oracle Vulnerabilities","emoji":"1f480"}]},{"id":"vB0yeHHVcP0g4cwe0FtG","title":"Lack of return data validation","pathname":"/zokyo-tutorials/tutorial-15-oracles/understanding-oracle-vulnerabilities/lack-of-return-data-validation","siteSpaceId":"sitesp_qsJ5X","emoji":"274c","breadcrumbs":[{"label":"Tutorial 15: Oracles","emoji":"1f4c9"},{"label":"Understanding Oracle Vulnerabilities","emoji":"1f480"}]},{"id":"nmjkn2Lc1OxOHSJYDxo2","title":"Inconsistent or Absent Price Data Fetching/Updating Intervals","pathname":"/zokyo-tutorials/tutorial-15-oracles/understanding-oracle-vulnerabilities/inconsistent-or-absent-price-data-fetching-updating-intervals","siteSpaceId":"sitesp_qsJ5X","emoji":"1f550","breadcrumbs":[{"label":"Tutorial 15: Oracles","emoji":"1f4c9"},{"label":"Understanding Oracle Vulnerabilities","emoji":"1f480"}]},{"id":"WFkMd46sSDeWPe6fUy7Q","title":"Decentralized Exchange (DEX) Price Oracles Vulnerabilities","pathname":"/zokyo-tutorials/tutorial-15-oracles/decentralized-exchange-dex-price-oracles-vulnerabilities","siteSpaceId":"sitesp_qsJ5X","emoji":"1f52b","breadcrumbs":[{"label":"Tutorial 15: Oracles","emoji":"1f4c9"}]},{"id":"cVLP924K976sWAdjna0R","title":"Found Vulnerabilities In Oracle Implementations","pathname":"/zokyo-tutorials/tutorial-15-oracles/found-vulnerabilities-in-oracle-implementations","siteSpaceId":"sitesp_qsJ5X","emoji":"1f6d1","breadcrumbs":[{"label":"Tutorial 15: Oracles","emoji":"1f4c9"}]},{"id":"gkSXctfvnnvz7I3UuUV2","title":"Newly Registered Assets Skew Consultation Results","pathname":"/zokyo-tutorials/tutorial-15-oracles/found-vulnerabilities-in-oracle-implementations/newly-registered-assets-skew-consultation-results","siteSpaceId":"sitesp_qsJ5X","emoji":"2696","description":"Because price is using an average of Chainlink and pool, so if a new pool is added, it will skew the price","breadcrumbs":[{"label":"Tutorial 15: Oracles","emoji":"1f4c9"},{"label":"Found Vulnerabilities In Oracle Implementations","emoji":"1f6d1"}]},{"id":"z6ZkrZFNALnjBhQkepYk","title":"Flash-Loan Oracle Manipulations","pathname":"/zokyo-tutorials/tutorial-15-oracles/found-vulnerabilities-in-oracle-implementations/flash-loan-oracle-manipulations","siteSpaceId":"sitesp_qsJ5X","emoji":"26a1","breadcrumbs":[{"label":"Tutorial 15: Oracles","emoji":"1f4c9"},{"label":"Found Vulnerabilities In Oracle Implementations","emoji":"1f6d1"}]},{"id":"0OYWIrepJ4rYB7XWvlHH","title":"Relying Only On Chainlink: PriceOracle Does Not Filter Price Feed Outliers","pathname":"/zokyo-tutorials/tutorial-15-oracles/found-vulnerabilities-in-oracle-implementations/relying-only-on-chainlink-priceoracle-does-not-filter-price-feed-outliers","siteSpaceId":"sitesp_qsJ5X","emoji":"26d3","breadcrumbs":[{"label":"Tutorial 15: Oracles","emoji":"1f4c9"},{"label":"Found Vulnerabilities In Oracle Implementations","emoji":"1f6d1"}]},{"id":"z0pD8GN1qZEfKe1smW2B","title":"Not Validating Return Data e.g Chainlink:  (lastestRoundData)","pathname":"/zokyo-tutorials/tutorial-15-oracles/found-vulnerabilities-in-oracle-implementations/not-validating-return-data-e.g-chainlink-lastestrounddata","siteSpaceId":"sitesp_qsJ5X","emoji":"270d","breadcrumbs":[{"label":"Tutorial 15: Oracles","emoji":"1f4c9"},{"label":"Found Vulnerabilities In Oracle Implementations","emoji":"1f6d1"}]},{"id":"Snjgw0bgUx646HbKsazZ","title":"Chainlink: Using latestAnswer instead of latestRoundData","pathname":"/zokyo-tutorials/tutorial-15-oracles/found-vulnerabilities-in-oracle-implementations/chainlink-using-latestanswer-instead-of-latestrounddata","siteSpaceId":"sitesp_qsJ5X","emoji":"1f5ef","breadcrumbs":[{"label":"Tutorial 15: Oracles","emoji":"1f4c9"},{"label":"Found Vulnerabilities In Oracle Implementations","emoji":"1f6d1"}]},{"id":"t3KO5DZexGIRbiLJHmbN","title":"Reliance On Fetching Oracle Functionality","pathname":"/zokyo-tutorials/tutorial-15-oracles/found-vulnerabilities-in-oracle-implementations/reliance-on-fetching-oracle-functionality","siteSpaceId":"sitesp_qsJ5X","emoji":"1f62d","breadcrumbs":[{"label":"Tutorial 15: Oracles","emoji":"1f4c9"},{"label":"Found Vulnerabilities In Oracle Implementations","emoji":"1f6d1"}]},{"id":"pdKsJ35U8cyyZmIDWsg8","title":"Wrong Assumption of 18 decimals","pathname":"/zokyo-tutorials/tutorial-15-oracles/found-vulnerabilities-in-oracle-implementations/wrong-assumption-of-18-decimals","siteSpaceId":"sitesp_qsJ5X","emoji":"1f3b1","breadcrumbs":[{"label":"Tutorial 15: Oracles","emoji":"1f4c9"},{"label":"Found Vulnerabilities In Oracle Implementations","emoji":"1f6d1"}]},{"id":"uV9Rqqy93E4OkOklj1rJ","title":"Stale Prices","pathname":"/zokyo-tutorials/tutorial-15-oracles/found-vulnerabilities-in-oracle-implementations/stale-prices","siteSpaceId":"sitesp_qsJ5X","emoji":"1f9c0","breadcrumbs":[{"label":"Tutorial 15: Oracles","emoji":"1f4c9"},{"label":"Found Vulnerabilities In Oracle Implementations","emoji":"1f6d1"}]},{"id":"qvmzJep0YGBIxR5I13YE","title":"Oracle Price Returning 0","pathname":"/zokyo-tutorials/tutorial-15-oracles/found-vulnerabilities-in-oracle-implementations/oracle-price-returning-0","siteSpaceId":"sitesp_qsJ5X","emoji":"0030-20e3","breadcrumbs":[{"label":"Tutorial 15: Oracles","emoji":"1f4c9"},{"label":"Found Vulnerabilities In Oracle Implementations","emoji":"1f6d1"}]},{"id":"rmsO4VtWTwvkkKqEm3SD","title":"TWAP Oracles","pathname":"/zokyo-tutorials/tutorial-15-oracles/found-vulnerabilities-in-oracle-implementations/twap-oracles","siteSpaceId":"sitesp_qsJ5X","emoji":"1f6f6","breadcrumbs":[{"label":"Tutorial 15: Oracles","emoji":"1f4c9"},{"label":"Found Vulnerabilities In Oracle Implementations","emoji":"1f6d1"}]},{"id":"e17bwguI622mOeHTSZy6","title":"Wrong Token Order In Return Value","pathname":"/zokyo-tutorials/tutorial-15-oracles/found-vulnerabilities-in-oracle-implementations/wrong-token-order-in-return-value","siteSpaceId":"sitesp_qsJ5X","emoji":"1f616","breadcrumbs":[{"label":"Tutorial 15: Oracles","emoji":"1f4c9"},{"label":"Found Vulnerabilities In Oracle Implementations","emoji":"1f6d1"}]},{"id":"SmUXTKtGWwFvFbtaSOsS","title":"miscellaneous","pathname":"/zokyo-tutorials/tutorial-15-oracles/found-vulnerabilities-in-oracle-implementations/miscellaneous","siteSpaceId":"sitesp_qsJ5X","emoji":"1f3d7","breadcrumbs":[{"label":"Tutorial 15: Oracles","emoji":"1f4c9"},{"label":"Found Vulnerabilities In Oracle Implementations","emoji":"1f6d1"}]},{"id":"wrW9fOkbW6jr8lkRaICr","title":"Oracles: Conclusion","pathname":"/zokyo-tutorials/tutorial-15-oracles/oracles-conclusion","siteSpaceId":"sitesp_qsJ5X","emoji":"1f91d","breadcrumbs":[{"label":"Tutorial 15: Oracles","emoji":"1f4c9"}]},{"id":"Jaa1vllIr8Tn4MBZMyh3","title":"Tutorial 16: Zero Knowledge (ZK)","pathname":"/zokyo-tutorials/tutorial-16-zero-knowledge-zk","siteSpaceId":"sitesp_qsJ5X","emoji":"1f9e0","description":""},{"id":"qQ3TFveQDnQI8gJlI1Xv","title":"Prerequisites","pathname":"/zokyo-tutorials/tutorial-16-zero-knowledge-zk/prerequisites","siteSpaceId":"sitesp_qsJ5X","emoji":"1f680","breadcrumbs":[{"label":"Tutorial 16: Zero Knowledge (ZK)","emoji":"1f9e0"}]},{"id":"VFFGGWrIRpYmhAv6lbGF","title":"Theory","pathname":"/zokyo-tutorials/tutorial-16-zero-knowledge-zk/theory","siteSpaceId":"sitesp_qsJ5X","emoji":"1f4da","breadcrumbs":[{"label":"Tutorial 16: Zero Knowledge (ZK)","emoji":"1f9e0"}]},{"id":"QFE25toh0OotkjADtvHa","title":"Circom","pathname":"/zokyo-tutorials/tutorial-16-zero-knowledge-zk/theory/circom","siteSpaceId":"sitesp_qsJ5X","emoji":"1f50c","breadcrumbs":[{"label":"Tutorial 16: Zero Knowledge (ZK)","emoji":"1f9e0"},{"label":"Theory","emoji":"1f4da"}]},{"id":"oVj0wk8MBOBYIVTpI5Ig","title":"Computation","pathname":"/zokyo-tutorials/tutorial-16-zero-knowledge-zk/theory/computation","siteSpaceId":"sitesp_qsJ5X","emoji":"1f4bb","breadcrumbs":[{"label":"Tutorial 16: Zero Knowledge (ZK)","emoji":"1f9e0"},{"label":"Theory","emoji":"1f4da"}]},{"id":"DtC7QcI2aTV7CFtgIEti","title":"Arithmetic Circuits","pathname":"/zokyo-tutorials/tutorial-16-zero-knowledge-zk/theory/arithmetic-circuits","siteSpaceId":"sitesp_qsJ5X","emoji":"1f6e4","breadcrumbs":[{"label":"Tutorial 16: Zero Knowledge (ZK)","emoji":"1f9e0"},{"label":"Theory","emoji":"1f4da"}]},{"id":"iBlGvxfS8LM4JXQb7Y0D","title":"Rank-1 Constraint System (R1CS)","pathname":"/zokyo-tutorials/tutorial-16-zero-knowledge-zk/theory/rank-1-constraint-system-r1cs","siteSpaceId":"sitesp_qsJ5X","emoji":"1f6a7","breadcrumbs":[{"label":"Tutorial 16: Zero Knowledge (ZK)","emoji":"1f9e0"},{"label":"Theory","emoji":"1f4da"}]},{"id":"vROqaqCqIMMGTAtXWhWN","title":"Quadratic Arithmetic Program","pathname":"/zokyo-tutorials/tutorial-16-zero-knowledge-zk/theory/quadratic-arithmetic-program","siteSpaceId":"sitesp_qsJ5X","emoji":"2797","breadcrumbs":[{"label":"Tutorial 16: Zero Knowledge (ZK)","emoji":"1f9e0"},{"label":"Theory","emoji":"1f4da"}]},{"id":"WbqPVErG7eoWL4FoHpfS","title":"Linear Interactive Proof","pathname":"/zokyo-tutorials/tutorial-16-zero-knowledge-zk/theory/linear-interactive-proof","siteSpaceId":"sitesp_qsJ5X","emoji":"270f","breadcrumbs":[{"label":"Tutorial 16: Zero Knowledge (ZK)","emoji":"1f9e0"},{"label":"Theory","emoji":"1f4da"}]},{"id":"tinZQKZBHw3hJBNq7O9l","title":"ZK-Snarks","pathname":"/zokyo-tutorials/tutorial-16-zero-knowledge-zk/theory/zk-snarks","siteSpaceId":"sitesp_qsJ5X","emoji":"2728","description":"In this we will outline the theory of the Pinocchio protocol in particular as an example","breadcrumbs":[{"label":"Tutorial 16: Zero Knowledge (ZK)","emoji":"1f9e0"},{"label":"Theory","emoji":"1f4da"}]},{"id":"6l2X8NS5we62Frg7Rvud","title":"Definitions and Essentials","pathname":"/zokyo-tutorials/tutorial-16-zero-knowledge-zk/definitions-and-essentials","siteSpaceId":"sitesp_qsJ5X","emoji":"1f913","breadcrumbs":[{"label":"Tutorial 16: Zero Knowledge (ZK)","emoji":"1f9e0"}]},{"id":"0NR0Lq0pZX2wJLyAUwln","title":"Key","pathname":"/zokyo-tutorials/tutorial-16-zero-knowledge-zk/definitions-and-essentials/key","siteSpaceId":"sitesp_qsJ5X","emoji":"1f511","breadcrumbs":[{"label":"Tutorial 16: Zero Knowledge (ZK)","emoji":"1f9e0"},{"label":"Definitions and Essentials","emoji":"1f913"}]},{"id":"YFwIzXOVE6LVtH68eNHD","title":"Scalar Field Order","pathname":"/zokyo-tutorials/tutorial-16-zero-knowledge-zk/definitions-and-essentials/scalar-field-order","siteSpaceId":"sitesp_qsJ5X","emoji":"1f60e","breadcrumbs":[{"label":"Tutorial 16: Zero Knowledge (ZK)","emoji":"1f9e0"},{"label":"Definitions and Essentials","emoji":"1f913"}]},{"id":"BFCUKwhiHFKYDizogZ7e","title":"Incremental Merkle Tree","pathname":"/zokyo-tutorials/tutorial-16-zero-knowledge-zk/definitions-and-essentials/incremental-merkle-tree","siteSpaceId":"sitesp_qsJ5X","emoji":"1f333","breadcrumbs":[{"label":"Tutorial 16: Zero Knowledge (ZK)","emoji":"1f9e0"},{"label":"Definitions and Essentials","emoji":"1f913"}]},{"id":"sOiCYf1WNNLu654VJDU5","title":"ECDSA signature","pathname":"/zokyo-tutorials/tutorial-16-zero-knowledge-zk/definitions-and-essentials/ecdsa-signature","siteSpaceId":"sitesp_qsJ5X","emoji":"2712","breadcrumbs":[{"label":"Tutorial 16: Zero Knowledge (ZK)","emoji":"1f9e0"},{"label":"Definitions and Essentials","emoji":"1f913"}]},{"id":"GU70vgvWKGiOlPMHu5En","title":"Non-Interactive Proofs","pathname":"/zokyo-tutorials/tutorial-16-zero-knowledge-zk/definitions-and-essentials/non-interactive-proofs","siteSpaceId":"sitesp_qsJ5X","emoji":"1f4e8","breadcrumbs":[{"label":"Tutorial 16: Zero Knowledge (ZK)","emoji":"1f9e0"},{"label":"Definitions and Essentials","emoji":"1f913"}]},{"id":"n5xlILMBor8uRpxa7fcQ","title":"Fiat-Shamir transformation (or Fiat-Shamir heuristic)","pathname":"/zokyo-tutorials/tutorial-16-zero-knowledge-zk/definitions-and-essentials/fiat-shamir-transformation-or-fiat-shamir-heuristic","siteSpaceId":"sitesp_qsJ5X","emoji":"1f3dd","breadcrumbs":[{"label":"Tutorial 16: Zero Knowledge (ZK)","emoji":"1f9e0"},{"label":"Definitions and Essentials","emoji":"1f913"}]},{"id":"ZuFiAMCuINXGk82P5Igw","title":"Pedersen commitment","pathname":"/zokyo-tutorials/tutorial-16-zero-knowledge-zk/definitions-and-essentials/pedersen-commitment","siteSpaceId":"sitesp_qsJ5X","emoji":"1fab6","breadcrumbs":[{"label":"Tutorial 16: Zero Knowledge (ZK)","emoji":"1f9e0"},{"label":"Definitions and Essentials","emoji":"1f913"}]},{"id":"zKhJzjJ3AwM0BRzHmqB2","title":"Common Vulnerabilities in ZK Code","pathname":"/zokyo-tutorials/tutorial-16-zero-knowledge-zk/common-vulnerabilities-in-zk-code","siteSpaceId":"sitesp_qsJ5X","emoji":"1f480","breadcrumbs":[{"label":"Tutorial 16: Zero Knowledge (ZK)","emoji":"1f9e0"}]},{"id":"WMijWLnAgjdrfmqLV2Gb","title":"Under-constrained Circuits","pathname":"/zokyo-tutorials/tutorial-16-zero-knowledge-zk/common-vulnerabilities-in-zk-code/under-constrained-circuits","siteSpaceId":"sitesp_qsJ5X","emoji":"26d3","breadcrumbs":[{"label":"Tutorial 16: Zero Knowledge (ZK)","emoji":"1f9e0"},{"label":"Common Vulnerabilities in ZK Code","emoji":"1f480"}]},{"id":"CX1hazMzNSjO3aRd4olC","title":"Nondeterministic Circuits","pathname":"/zokyo-tutorials/tutorial-16-zero-knowledge-zk/common-vulnerabilities-in-zk-code/nondeterministic-circuits","siteSpaceId":"sitesp_qsJ5X","emoji":"2757","breadcrumbs":[{"label":"Tutorial 16: Zero Knowledge (ZK)","emoji":"1f9e0"},{"label":"Common Vulnerabilities in ZK Code","emoji":"1f480"}]},{"id":"RcfVhdBvZguZzlwkMwbb","title":"Arithmetic Over/Under Flows","pathname":"/zokyo-tutorials/tutorial-16-zero-knowledge-zk/common-vulnerabilities-in-zk-code/arithmetic-over-under-flows","siteSpaceId":"sitesp_qsJ5X","emoji":"1f30a","breadcrumbs":[{"label":"Tutorial 16: Zero Knowledge (ZK)","emoji":"1f9e0"},{"label":"Common Vulnerabilities in ZK Code","emoji":"1f480"}]},{"id":"MVtlvlq12njuT6Uzh5Ez","title":"Mismatching Bit Lengths","pathname":"/zokyo-tutorials/tutorial-16-zero-knowledge-zk/common-vulnerabilities-in-zk-code/mismatching-bit-lengths","siteSpaceId":"sitesp_qsJ5X","emoji":"1f342","breadcrumbs":[{"label":"Tutorial 16: Zero Knowledge (ZK)","emoji":"1f9e0"},{"label":"Common Vulnerabilities in ZK Code","emoji":"1f480"}]},{"id":"5epfm9nne4JuvL7A2OsW","title":"Unused Public Inputs Optimized Out","pathname":"/zokyo-tutorials/tutorial-16-zero-knowledge-zk/common-vulnerabilities-in-zk-code/unused-public-inputs-optimized-out","siteSpaceId":"sitesp_qsJ5X","emoji":"1f32a","breadcrumbs":[{"label":"Tutorial 16: Zero Knowledge (ZK)","emoji":"1f9e0"},{"label":"Common Vulnerabilities in ZK Code","emoji":"1f480"}]},{"id":"LRbeONCQ0LDhzdgmolNh","title":"Frozen Heart: Forging of Zero Knowledge Proofs","pathname":"/zokyo-tutorials/tutorial-16-zero-knowledge-zk/common-vulnerabilities-in-zk-code/frozen-heart-forging-of-zero-knowledge-proofs","siteSpaceId":"sitesp_qsJ5X","emoji":"1f976","breadcrumbs":[{"label":"Tutorial 16: Zero Knowledge (ZK)","emoji":"1f9e0"},{"label":"Common Vulnerabilities in ZK Code","emoji":"1f480"}]},{"id":"KjF743iRm9pfrha3ntZo","title":"Trusted Setup Leak","pathname":"/zokyo-tutorials/tutorial-16-zero-knowledge-zk/common-vulnerabilities-in-zk-code/trusted-setup-leak","siteSpaceId":"sitesp_qsJ5X","emoji":"1f6b0","breadcrumbs":[{"label":"Tutorial 16: Zero Knowledge (ZK)","emoji":"1f9e0"},{"label":"Common Vulnerabilities in ZK Code","emoji":"1f480"}]},{"id":"294MbBlwdyRq4HWWDRrt","title":"Assigned but not Constrained","pathname":"/zokyo-tutorials/tutorial-16-zero-knowledge-zk/common-vulnerabilities-in-zk-code/assigned-but-not-constrained","siteSpaceId":"sitesp_qsJ5X","emoji":"26d4","breadcrumbs":[{"label":"Tutorial 16: Zero Knowledge (ZK)","emoji":"1f9e0"},{"label":"Common Vulnerabilities in ZK Code","emoji":"1f480"}]},{"id":"G6z4d3skx5rZt6kmtklH","title":"Bugs In The Wild","pathname":"/zokyo-tutorials/tutorial-16-zero-knowledge-zk/bugs-in-the-wild","siteSpaceId":"sitesp_qsJ5X","emoji":"1f41b","breadcrumbs":[{"label":"Tutorial 16: Zero Knowledge (ZK)","emoji":"1f9e0"}]},{"id":"KJaSCidMdPgvnCfzOph5","title":"Dark Forest v0.3: Missing Bit Length Check","pathname":"/zokyo-tutorials/tutorial-16-zero-knowledge-zk/bugs-in-the-wild/dark-forest-v0.3-missing-bit-length-check","siteSpaceId":"sitesp_qsJ5X","emoji":"1f333","breadcrumbs":[{"label":"Tutorial 16: Zero Knowledge (ZK)","emoji":"1f9e0"},{"label":"Bugs In The Wild","emoji":"1f41b"}]},{"id":"AAXEgqgVklwqDCpw7Sj0","title":"BigInt: Missing Bit Length Check","pathname":"/zokyo-tutorials/tutorial-16-zero-knowledge-zk/bugs-in-the-wild/bigint-missing-bit-length-check","siteSpaceId":"sitesp_qsJ5X","emoji":"1f522","breadcrumbs":[{"label":"Tutorial 16: Zero Knowledge (ZK)","emoji":"1f9e0"},{"label":"Bugs In The Wild","emoji":"1f41b"}]},{"id":"xlCKxIKdWrieiKxT1wZg","title":"Circom-Pairing: Missing Output Check Constraint","pathname":"/zokyo-tutorials/tutorial-16-zero-knowledge-zk/bugs-in-the-wild/circom-pairing-missing-output-check-constraint","siteSpaceId":"sitesp_qsJ5X","emoji":"1f693","breadcrumbs":[{"label":"Tutorial 16: Zero Knowledge (ZK)","emoji":"1f9e0"},{"label":"Bugs In The Wild","emoji":"1f41b"}]},{"id":"yRahP7TURBII5otNDNr3","title":"Semaphore: Missing Smart Contract Range Check","pathname":"/zokyo-tutorials/tutorial-16-zero-knowledge-zk/bugs-in-the-wild/semaphore-missing-smart-contract-range-check","siteSpaceId":"sitesp_qsJ5X","emoji":"1f3f9","breadcrumbs":[{"label":"Tutorial 16: Zero Knowledge (ZK)","emoji":"1f9e0"},{"label":"Bugs In The Wild","emoji":"1f41b"}]},{"id":"iTaJVloCsZN1nkPVIfqM","title":"Zk-Kit: Missing Smart Contract Range Check","pathname":"/zokyo-tutorials/tutorial-16-zero-knowledge-zk/bugs-in-the-wild/zk-kit-missing-smart-contract-range-check","siteSpaceId":"sitesp_qsJ5X","emoji":"1f52b","breadcrumbs":[{"label":"Tutorial 16: Zero Knowledge (ZK)","emoji":"1f9e0"},{"label":"Bugs In The Wild","emoji":"1f41b"}]},{"id":"djhBUvH8oSDmuhUzCsUE","title":"Aztec 2.0: Missing Bit Length Check / Nondeterministic Nullifier","pathname":"/zokyo-tutorials/tutorial-16-zero-knowledge-zk/bugs-in-the-wild/aztec-2.0-missing-bit-length-check-nondeterministic-nullifier","siteSpaceId":"sitesp_qsJ5X","emoji":"1f916","breadcrumbs":[{"label":"Tutorial 16: Zero Knowledge (ZK)","emoji":"1f9e0"},{"label":"Bugs In The Wild","emoji":"1f41b"}]},{"id":"qWbPVUwLG3ZUmNUvFprP","title":"Aztec Plonk Verifier: 0 Bug","pathname":"/zokyo-tutorials/tutorial-16-zero-knowledge-zk/bugs-in-the-wild/aztec-plonk-verifier-0-bug","siteSpaceId":"sitesp_qsJ5X","emoji":"23f8","breadcrumbs":[{"label":"Tutorial 16: Zero Knowledge (ZK)","emoji":"1f9e0"},{"label":"Bugs In The Wild","emoji":"1f41b"}]},{"id":"vxADzkcbCkYa3Dma5wY9","title":"0xPARC StealthDrop: Nondeterministic Nullifier","pathname":"/zokyo-tutorials/tutorial-16-zero-knowledge-zk/bugs-in-the-wild/0xparc-stealthdrop-nondeterministic-nullifier","siteSpaceId":"sitesp_qsJ5X","emoji":"1fa82","breadcrumbs":[{"label":"Tutorial 16: Zero Knowledge (ZK)","emoji":"1f9e0"},{"label":"Bugs In The Wild","emoji":"1f41b"}]},{"id":"1HPuL4zuGlEEXRkRGs0a","title":"a16z ZkDrops: Missing Nullifier Range Check","pathname":"/zokyo-tutorials/tutorial-16-zero-knowledge-zk/bugs-in-the-wild/a16z-zkdrops-missing-nullifier-range-check","siteSpaceId":"sitesp_qsJ5X","emoji":"1f628","breadcrumbs":[{"label":"Tutorial 16: Zero Knowledge (ZK)","emoji":"1f9e0"},{"label":"Bugs In The Wild","emoji":"1f41b"}]},{"id":"rKKE64hJ8hmSrB0iCw7O","title":"MACI 1.0: Under-constrained Circuit","pathname":"/zokyo-tutorials/tutorial-16-zero-knowledge-zk/bugs-in-the-wild/maci-1.0-under-constrained-circuit","siteSpaceId":"sitesp_qsJ5X","emoji":"1f92b","breadcrumbs":[{"label":"Tutorial 16: Zero Knowledge (ZK)","emoji":"1f9e0"},{"label":"Bugs In The Wild","emoji":"1f41b"}]},{"id":"RzI2SLLYqpTGGKPxlfkf","title":"Bulletproofs Paper: Frozen Heart","pathname":"/zokyo-tutorials/tutorial-16-zero-knowledge-zk/bugs-in-the-wild/bulletproofs-paper-frozen-heart","siteSpaceId":"sitesp_qsJ5X","emoji":"2744","breadcrumbs":[{"label":"Tutorial 16: Zero Knowledge (ZK)","emoji":"1f9e0"},{"label":"Bugs In The Wild","emoji":"1f41b"}]},{"id":"D6iACR4szG8MlZNXUjUu","title":"PlonK: Frozen Heart","pathname":"/zokyo-tutorials/tutorial-16-zero-knowledge-zk/bugs-in-the-wild/plonk-frozen-heart","siteSpaceId":"sitesp_qsJ5X","emoji":"1f3d4","breadcrumbs":[{"label":"Tutorial 16: Zero Knowledge (ZK)","emoji":"1f9e0"},{"label":"Bugs In The Wild","emoji":"1f41b"}]},{"id":"t20LJyG3VNW7kouGnIIL","title":"Zcash: Trusted Setup Leak","pathname":"/zokyo-tutorials/tutorial-16-zero-knowledge-zk/bugs-in-the-wild/zcash-trusted-setup-leak","siteSpaceId":"sitesp_qsJ5X","emoji":"1f4a4","breadcrumbs":[{"label":"Tutorial 16: Zero Knowledge (ZK)","emoji":"1f9e0"},{"label":"Bugs In The Wild","emoji":"1f41b"}]},{"id":"sVsSZv4mvOE3wqKJvHkl","title":"14. MiMC Hash: Assigned but not Constrained","pathname":"/zokyo-tutorials/tutorial-16-zero-knowledge-zk/bugs-in-the-wild/14.-mimc-hash-assigned-but-not-constrained","siteSpaceId":"sitesp_qsJ5X","emoji":"1f6a8","breadcrumbs":[{"label":"Tutorial 16: Zero Knowledge (ZK)","emoji":"1f9e0"},{"label":"Bugs In The Wild","emoji":"1f41b"}]},{"id":"Miq8GPaDDtpwub1ntHmq","title":"PSE & Scroll zkEVM: Missing Overflow Constraint","pathname":"/zokyo-tutorials/tutorial-16-zero-knowledge-zk/bugs-in-the-wild/pse-and-scroll-zkevm-missing-overflow-constraint","siteSpaceId":"sitesp_qsJ5X","emoji":"1f694","breadcrumbs":[{"label":"Tutorial 16: Zero Knowledge (ZK)","emoji":"1f9e0"},{"label":"Bugs In The Wild","emoji":"1f41b"}]},{"id":"opKkztZMfUVx6ioBBHiO","title":"PSE & Scroll zkEVM: Missing Constraint","pathname":"/zokyo-tutorials/tutorial-16-zero-knowledge-zk/bugs-in-the-wild/pse-and-scroll-zkevm-missing-constraint","siteSpaceId":"sitesp_qsJ5X","emoji":"27a1","breadcrumbs":[{"label":"Tutorial 16: Zero Knowledge (ZK)","emoji":"1f9e0"},{"label":"Bugs In The Wild","emoji":"1f41b"}]},{"id":"mSDvWBJU9ZvjQeywhHSM","title":"Dusk Network: Missing Blinding Factors","pathname":"/zokyo-tutorials/tutorial-16-zero-knowledge-zk/bugs-in-the-wild/dusk-network-missing-blinding-factors","siteSpaceId":"sitesp_qsJ5X","emoji":"1f928","breadcrumbs":[{"label":"Tutorial 16: Zero Knowledge (ZK)","emoji":"1f9e0"},{"label":"Bugs In The Wild","emoji":"1f41b"}]},{"id":"LkpQrh2Hfg4lLDb5Ftsc","title":"EY Nightfall: Missing Nullifier Range Check","pathname":"/zokyo-tutorials/tutorial-16-zero-knowledge-zk/bugs-in-the-wild/ey-nightfall-missing-nullifier-range-check","siteSpaceId":"sitesp_qsJ5X","emoji":"1f303","breadcrumbs":[{"label":"Tutorial 16: Zero Knowledge (ZK)","emoji":"1f9e0"},{"label":"Bugs In The Wild","emoji":"1f41b"}]},{"id":"cPjHhRPPU9NqaIfuJszJ","title":"Summa: Unconstrained Constants Assignemnt","pathname":"/zokyo-tutorials/tutorial-16-zero-knowledge-zk/bugs-in-the-wild/summa-unconstrained-constants-assignemnt","siteSpaceId":"sitesp_qsJ5X","emoji":"1f386","breadcrumbs":[{"label":"Tutorial 16: Zero Knowledge (ZK)","emoji":"1f9e0"},{"label":"Bugs In The Wild","emoji":"1f41b"}]},{"id":"ybuTE3prKeZHeWB8QkCA","title":"Polygon zkEVM: Missing Remainder Constraint","pathname":"/zokyo-tutorials/tutorial-16-zero-knowledge-zk/bugs-in-the-wild/polygon-zkevm-missing-remainder-constraint","siteSpaceId":"sitesp_qsJ5X","emoji":"1f4cc","breadcrumbs":[{"label":"Tutorial 16: Zero Knowledge (ZK)","emoji":"1f9e0"},{"label":"Bugs In The Wild","emoji":"1f41b"}]},{"id":"aNcdtQYcQdCIliOxNjNU","title":"ZK Security Resources","pathname":"/zokyo-tutorials/tutorial-16-zero-knowledge-zk/zk-security-resources","siteSpaceId":"sitesp_qsJ5X","emoji":"1f4bf","breadcrumbs":[{"label":"Tutorial 16: Zero Knowledge (ZK)","emoji":"1f9e0"}]},{"id":"v1J10rQe1XmeDDfvXBpu","title":"Tutorial 17 DEX's (Decentralized Exchanges)","pathname":"/zokyo-tutorials/tutorial-17-dexs-decentralized-exchanges","siteSpaceId":"sitesp_qsJ5X","emoji":"1f91d","description":""},{"id":"wMxFUWWSUWNaAMvXfGDF","title":"Prerequisites","pathname":"/zokyo-tutorials/tutorial-17-dexs-decentralized-exchanges/prerequisites","siteSpaceId":"sitesp_qsJ5X","emoji":"1f680","breadcrumbs":[{"label":"Tutorial 17 DEX's (Decentralized Exchanges)","emoji":"1f91d"}]},{"id":"IxuCoK1d5oeJHvPQqKaJ","title":"Understanding Decentralized Exchanges","pathname":"/zokyo-tutorials/tutorial-17-dexs-decentralized-exchanges/understanding-decentralized-exchanges","siteSpaceId":"sitesp_qsJ5X","emoji":"1f4da","breadcrumbs":[{"label":"Tutorial 17 DEX's (Decentralized Exchanges)","emoji":"1f91d"}]},{"id":"k3wZhGOi9MznJVg4NTwW","title":"Common Vulnerabilities in DEX Code","pathname":"/zokyo-tutorials/tutorial-17-dexs-decentralized-exchanges/common-vulnerabilities-in-dex-code","siteSpaceId":"sitesp_qsJ5X","emoji":"1f480","breadcrumbs":[{"label":"Tutorial 17 DEX's (Decentralized Exchanges)","emoji":"1f91d"}]},{"id":"fK6ScowPg3Yurb2dFDAh","title":"The \"Lack of Slippage Check\" Vulnerability in Automated Market Makers (AMMs) a","pathname":"/zokyo-tutorials/tutorial-17-dexs-decentralized-exchanges/common-vulnerabilities-in-dex-code/the-lack-of-slippage-check-vulnerability-in-automated-market-makers-amms-a","siteSpaceId":"sitesp_qsJ5X","emoji":"1f50e","breadcrumbs":[{"label":"Tutorial 17 DEX's (Decentralized Exchanges)","emoji":"1f91d"},{"label":"Common Vulnerabilities in DEX Code","emoji":"1f480"}]},{"id":"lQw1jB5u9B0aosEyABpp","title":"On-Chain Slippage Calculations Vulnerability","pathname":"/zokyo-tutorials/tutorial-17-dexs-decentralized-exchanges/common-vulnerabilities-in-dex-code/on-chain-slippage-calculations-vulnerability","siteSpaceId":"sitesp_qsJ5X","emoji":"1f621","breadcrumbs":[{"label":"Tutorial 17 DEX's (Decentralized Exchanges)","emoji":"1f91d"},{"label":"Common Vulnerabilities in DEX Code","emoji":"1f480"}]},{"id":"1rmPAqgUWfNdvXz16XdT","title":"Slippage tolerance vulnerability","pathname":"/zokyo-tutorials/tutorial-17-dexs-decentralized-exchanges/common-vulnerabilities-in-dex-code/slippage-tolerance-vulnerability","siteSpaceId":"sitesp_qsJ5X","emoji":"1f4db","breadcrumbs":[{"label":"Tutorial 17 DEX's (Decentralized Exchanges)","emoji":"1f91d"},{"label":"Common Vulnerabilities in DEX Code","emoji":"1f480"}]},{"id":"F7FqW6obrDrcOUIHpGNt","title":"How Pool Implementation Mismatches Pose a Security Risk to Decentralized Exchanges (DEXs)","pathname":"/zokyo-tutorials/tutorial-17-dexs-decentralized-exchanges/common-vulnerabilities-in-dex-code/how-pool-implementation-mismatches-pose-a-security-risk-to-decentralized-exchanges-dexs","siteSpaceId":"sitesp_qsJ5X","emoji":"1f635","breadcrumbs":[{"label":"Tutorial 17 DEX's (Decentralized Exchanges)","emoji":"1f91d"},{"label":"Common Vulnerabilities in DEX Code","emoji":"1f480"}]},{"id":"Md3CcdDFTlPZ8IoglefY","title":"Vulnerabilities in Initial Pool Creation - Liquidity Manipulation Attacks","pathname":"/zokyo-tutorials/tutorial-17-dexs-decentralized-exchanges/common-vulnerabilities-in-dex-code/vulnerabilities-in-initial-pool-creation-liquidity-manipulation-attacks","siteSpaceId":"sitesp_qsJ5X","emoji":"1f3ca-2642","breadcrumbs":[{"label":"Tutorial 17 DEX's (Decentralized Exchanges)","emoji":"1f91d"},{"label":"Common Vulnerabilities in DEX Code","emoji":"1f480"}]},{"id":"lBxo2eFLOSd2EQeSIhS9","title":"Vulnerabilities In Oracle Implementations","pathname":"/zokyo-tutorials/tutorial-17-dexs-decentralized-exchanges/common-vulnerabilities-in-dex-code/vulnerabilities-in-oracle-implementations","siteSpaceId":"sitesp_qsJ5X","emoji":"1f6d1","breadcrumbs":[{"label":"Tutorial 17 DEX's (Decentralized Exchanges)","emoji":"1f91d"},{"label":"Common Vulnerabilities in DEX Code","emoji":"1f480"}]},{"id":"YdOpspXrILU570YJQ9Uz","title":"Newly Registered Assets Skew Consultation Results","pathname":"/zokyo-tutorials/tutorial-17-dexs-decentralized-exchanges/common-vulnerabilities-in-dex-code/vulnerabilities-in-oracle-implementations/newly-registered-assets-skew-consultation-results","siteSpaceId":"sitesp_qsJ5X","emoji":"2696","description":"Because price is using an average of Chainlink and pool, so if a new pool is added, it will skew the price","breadcrumbs":[{"label":"Tutorial 17 DEX's (Decentralized Exchanges)","emoji":"1f91d"},{"label":"Common Vulnerabilities in DEX Code","emoji":"1f480"},{"label":"Vulnerabilities In Oracle Implementations","emoji":"1f6d1"}]},{"id":"o47M2zzdx6DizzMKv320","title":"Flash-Loan Oracle Manipulations","pathname":"/zokyo-tutorials/tutorial-17-dexs-decentralized-exchanges/common-vulnerabilities-in-dex-code/vulnerabilities-in-oracle-implementations/flash-loan-oracle-manipulations","siteSpaceId":"sitesp_qsJ5X","emoji":"26a1","breadcrumbs":[{"label":"Tutorial 17 DEX's (Decentralized Exchanges)","emoji":"1f91d"},{"label":"Common Vulnerabilities in DEX Code","emoji":"1f480"},{"label":"Vulnerabilities In Oracle Implementations","emoji":"1f6d1"}]},{"id":"hx8NxEQB2SOgFC8AiycF","title":"Relying Only On Chainlink: PriceOracle Does Not Filter Price Feed Outliers","pathname":"/zokyo-tutorials/tutorial-17-dexs-decentralized-exchanges/common-vulnerabilities-in-dex-code/vulnerabilities-in-oracle-implementations/relying-only-on-chainlink-priceoracle-does-not-filter-price-feed-outliers","siteSpaceId":"sitesp_qsJ5X","emoji":"26d3","breadcrumbs":[{"label":"Tutorial 17 DEX's (Decentralized Exchanges)","emoji":"1f91d"},{"label":"Common Vulnerabilities in DEX Code","emoji":"1f480"},{"label":"Vulnerabilities In Oracle Implementations","emoji":"1f6d1"}]},{"id":"z7HsiUPGuIF4yrx8HbWg","title":"Not Validating Return Data e.g Chainlink:  (lastestRoundData)","pathname":"/zokyo-tutorials/tutorial-17-dexs-decentralized-exchanges/common-vulnerabilities-in-dex-code/vulnerabilities-in-oracle-implementations/not-validating-return-data-e.g-chainlink-lastestrounddata","siteSpaceId":"sitesp_qsJ5X","emoji":"270d","breadcrumbs":[{"label":"Tutorial 17 DEX's (Decentralized Exchanges)","emoji":"1f91d"},{"label":"Common Vulnerabilities in DEX Code","emoji":"1f480"},{"label":"Vulnerabilities In Oracle Implementations","emoji":"1f6d1"}]},{"id":"yEqcKSFlqEbdSyTbVAfG","title":"Chainlink: Using latestAnswer instead of latestRoundData","pathname":"/zokyo-tutorials/tutorial-17-dexs-decentralized-exchanges/common-vulnerabilities-in-dex-code/vulnerabilities-in-oracle-implementations/chainlink-using-latestanswer-instead-of-latestrounddata","siteSpaceId":"sitesp_qsJ5X","emoji":"1f5ef","breadcrumbs":[{"label":"Tutorial 17 DEX's (Decentralized Exchanges)","emoji":"1f91d"},{"label":"Common Vulnerabilities in DEX Code","emoji":"1f480"},{"label":"Vulnerabilities In Oracle Implementations","emoji":"1f6d1"}]},{"id":"8MA55sP9fFBwXMf8lP9O","title":"Reliance On Fetching Oracle Functionality","pathname":"/zokyo-tutorials/tutorial-17-dexs-decentralized-exchanges/common-vulnerabilities-in-dex-code/vulnerabilities-in-oracle-implementations/reliance-on-fetching-oracle-functionality","siteSpaceId":"sitesp_qsJ5X","emoji":"1f62d","breadcrumbs":[{"label":"Tutorial 17 DEX's (Decentralized Exchanges)","emoji":"1f91d"},{"label":"Common Vulnerabilities in DEX Code","emoji":"1f480"},{"label":"Vulnerabilities In Oracle Implementations","emoji":"1f6d1"}]},{"id":"9eYj8fZkL9DTIBE6i63f","title":"Wrong Assumption of 18 decimals","pathname":"/zokyo-tutorials/tutorial-17-dexs-decentralized-exchanges/common-vulnerabilities-in-dex-code/vulnerabilities-in-oracle-implementations/wrong-assumption-of-18-decimals","siteSpaceId":"sitesp_qsJ5X","emoji":"1f3b1","breadcrumbs":[{"label":"Tutorial 17 DEX's (Decentralized Exchanges)","emoji":"1f91d"},{"label":"Common Vulnerabilities in DEX Code","emoji":"1f480"},{"label":"Vulnerabilities In Oracle Implementations","emoji":"1f6d1"}]},{"id":"YxdnmYPKTRZH1FFwMBgv","title":"Stale Prices","pathname":"/zokyo-tutorials/tutorial-17-dexs-decentralized-exchanges/common-vulnerabilities-in-dex-code/vulnerabilities-in-oracle-implementations/stale-prices","siteSpaceId":"sitesp_qsJ5X","emoji":"1f9c0","breadcrumbs":[{"label":"Tutorial 17 DEX's (Decentralized Exchanges)","emoji":"1f91d"},{"label":"Common Vulnerabilities in DEX Code","emoji":"1f480"},{"label":"Vulnerabilities In Oracle Implementations","emoji":"1f6d1"}]},{"id":"9g6WsiKRHL65tnj5sVkv","title":"Oracle Price Returning 0","pathname":"/zokyo-tutorials/tutorial-17-dexs-decentralized-exchanges/common-vulnerabilities-in-dex-code/vulnerabilities-in-oracle-implementations/oracle-price-returning-0","siteSpaceId":"sitesp_qsJ5X","emoji":"0030-20e3","breadcrumbs":[{"label":"Tutorial 17 DEX's (Decentralized Exchanges)","emoji":"1f91d"},{"label":"Common Vulnerabilities in DEX Code","emoji":"1f480"},{"label":"Vulnerabilities In Oracle Implementations","emoji":"1f6d1"}]},{"id":"XT4HoyLMJHFQ2mbXFF4w","title":"TWAP Oracles","pathname":"/zokyo-tutorials/tutorial-17-dexs-decentralized-exchanges/common-vulnerabilities-in-dex-code/vulnerabilities-in-oracle-implementations/twap-oracles","siteSpaceId":"sitesp_qsJ5X","emoji":"1f6f6","breadcrumbs":[{"label":"Tutorial 17 DEX's (Decentralized Exchanges)","emoji":"1f91d"},{"label":"Common Vulnerabilities in DEX Code","emoji":"1f480"},{"label":"Vulnerabilities In Oracle Implementations","emoji":"1f6d1"}]},{"id":"YvAkTWIzHDqUwPTYAt0K","title":"Wrong Token Order In Return Value","pathname":"/zokyo-tutorials/tutorial-17-dexs-decentralized-exchanges/common-vulnerabilities-in-dex-code/vulnerabilities-in-oracle-implementations/wrong-token-order-in-return-value","siteSpaceId":"sitesp_qsJ5X","emoji":"1f616","breadcrumbs":[{"label":"Tutorial 17 DEX's (Decentralized Exchanges)","emoji":"1f91d"},{"label":"Common Vulnerabilities in DEX Code","emoji":"1f480"},{"label":"Vulnerabilities In Oracle Implementations","emoji":"1f6d1"}]},{"id":"24nUSrK3hCzOkQUspfGL","title":"miscellaneous","pathname":"/zokyo-tutorials/tutorial-17-dexs-decentralized-exchanges/common-vulnerabilities-in-dex-code/vulnerabilities-in-oracle-implementations/miscellaneous","siteSpaceId":"sitesp_qsJ5X","emoji":"1f3d7","breadcrumbs":[{"label":"Tutorial 17 DEX's (Decentralized Exchanges)","emoji":"1f91d"},{"label":"Common Vulnerabilities in DEX Code","emoji":"1f480"},{"label":"Vulnerabilities In Oracle Implementations","emoji":"1f6d1"}]},{"id":"onimW0FXKHoDwx05ON0r","title":"Minting and Burning Liquidity Pool Tokens","pathname":"/zokyo-tutorials/tutorial-17-dexs-decentralized-exchanges/common-vulnerabilities-in-dex-code/minting-and-burning-liquidity-pool-tokens","siteSpaceId":"sitesp_qsJ5X","emoji":"1f976","breadcrumbs":[{"label":"Tutorial 17 DEX's (Decentralized Exchanges)","emoji":"1f91d"},{"label":"Common Vulnerabilities in DEX Code","emoji":"1f480"}]},{"id":"qFUXCzCF3ii1nzk2B3jh","title":"Missing Checks","pathname":"/zokyo-tutorials/tutorial-17-dexs-decentralized-exchanges/common-vulnerabilities-in-dex-code/missing-checks","siteSpaceId":"sitesp_qsJ5X","emoji":"1f3ab","breadcrumbs":[{"label":"Tutorial 17 DEX's (Decentralized Exchanges)","emoji":"1f91d"},{"label":"Common Vulnerabilities in DEX Code","emoji":"1f480"}]},{"id":"9MAIJdzMzx4d2xSLNkfv","title":"18 Decimal Assumption","pathname":"/zokyo-tutorials/tutorial-17-dexs-decentralized-exchanges/common-vulnerabilities-in-dex-code/18-decimal-assumption","siteSpaceId":"sitesp_qsJ5X","emoji":"1f51e","breadcrumbs":[{"label":"Tutorial 17 DEX's (Decentralized Exchanges)","emoji":"1f91d"},{"label":"Common Vulnerabilities in DEX Code","emoji":"1f480"}]},{"id":"jQRXyl6CFdrnFhLxIRAZ","title":"Understanding ERC20 Decimals","pathname":"/zokyo-tutorials/tutorial-17-dexs-decentralized-exchanges/common-vulnerabilities-in-dex-code/18-decimal-assumption/understanding-erc20-decimals","siteSpaceId":"sitesp_qsJ5X","emoji":"1f4cc","breadcrumbs":[{"label":"Tutorial 17 DEX's (Decentralized Exchanges)","emoji":"1f91d"},{"label":"Common Vulnerabilities in DEX Code","emoji":"1f480"},{"label":"18 Decimal Assumption","emoji":"1f51e"}]},{"id":"6gtO74N4AY4Ga6y3jTHH","title":"Examples Of Vulnerabilities To Do With Assuming 18 Decimals","pathname":"/zokyo-tutorials/tutorial-17-dexs-decentralized-exchanges/common-vulnerabilities-in-dex-code/18-decimal-assumption/examples-of-vulnerabilities-to-do-with-assuming-18-decimals","siteSpaceId":"sitesp_qsJ5X","emoji":"1f480","breadcrumbs":[{"label":"Tutorial 17 DEX's (Decentralized Exchanges)","emoji":"1f91d"},{"label":"Common Vulnerabilities in DEX Code","emoji":"1f480"},{"label":"18 Decimal Assumption","emoji":"1f51e"}]},{"id":"JqQtfaCAE3MY8gFIue8g","title":"Incorrect Swap Path","pathname":"/zokyo-tutorials/tutorial-17-dexs-decentralized-exchanges/common-vulnerabilities-in-dex-code/incorrect-swap-path","siteSpaceId":"sitesp_qsJ5X","emoji":"1f6e3","breadcrumbs":[{"label":"Tutorial 17 DEX's (Decentralized Exchanges)","emoji":"1f91d"},{"label":"Common Vulnerabilities in DEX Code","emoji":"1f480"}]},{"id":"P1gziWBhdXSTfi8YV6Gp","title":"The Importance of Deadline Checks in Swaps","pathname":"/zokyo-tutorials/tutorial-17-dexs-decentralized-exchanges/common-vulnerabilities-in-dex-code/the-importance-of-deadline-checks-in-swaps","siteSpaceId":"sitesp_qsJ5X","breadcrumbs":[{"label":"Tutorial 17 DEX's (Decentralized Exchanges)","emoji":"1f91d"},{"label":"Common Vulnerabilities in DEX Code","emoji":"1f480"}]},{"id":"zVKtUGUCcHZ553SkU4Rg","title":"Conclusion","pathname":"/zokyo-tutorials/tutorial-17-dexs-decentralized-exchanges/conclusion","siteSpaceId":"sitesp_qsJ5X","emoji":"1f91d","breadcrumbs":[{"label":"Tutorial 17 DEX's (Decentralized Exchanges)","emoji":"1f91d"}]},{"id":"VxGoJdAGCIi5NfYOdyvf","title":"Tutorial 18: Proxies","pathname":"/zokyo-tutorials/tutorial-18-proxies","siteSpaceId":"sitesp_qsJ5X","emoji":"1f916"},{"id":"vsrqmhrc1yfZRfMflHM7","title":"Prerequisites","pathname":"/zokyo-tutorials/tutorial-18-proxies/prerequisites","siteSpaceId":"sitesp_qsJ5X","emoji":"1f680","breadcrumbs":[{"label":"Tutorial 18: Proxies","emoji":"1f916"}]},{"id":"BYoh7CQAIIbz7kl7JXn8","title":"Ethereum Storage and Memory","pathname":"/zokyo-tutorials/tutorial-18-proxies/ethereum-storage-and-memory","siteSpaceId":"sitesp_qsJ5X","emoji":"1f4e5","breadcrumbs":[{"label":"Tutorial 18: Proxies","emoji":"1f916"}]},{"id":"lsS4aZclyMNQFZQ3oUov","title":"Ethereum Calls and Delegate Calls","pathname":"/zokyo-tutorials/tutorial-18-proxies/ethereum-calls-and-delegate-calls","siteSpaceId":"sitesp_qsJ5X","emoji":"1f4f2","breadcrumbs":[{"label":"Tutorial 18: Proxies","emoji":"1f916"}]},{"id":"eVjKLu0a6iHEpvGS20KY","title":"Upgradability Patterns in Ethereum: Enhancing Smart Contracts Over Time","pathname":"/zokyo-tutorials/tutorial-18-proxies/upgradability-patterns-in-ethereum-enhancing-smart-contracts-over-time","siteSpaceId":"sitesp_qsJ5X","emoji":"1f4aa","breadcrumbs":[{"label":"Tutorial 18: Proxies","emoji":"1f916"}]},{"id":"9J9Q8BHi8gZ4oma59ZmX","title":"Proxy Upgrade Pattern in Ethereum","pathname":"/zokyo-tutorials/tutorial-18-proxies/proxy-upgrade-pattern-in-ethereum","siteSpaceId":"sitesp_qsJ5X","emoji":"1f51d","breadcrumbs":[{"label":"Tutorial 18: Proxies","emoji":"1f916"}]},{"id":"BEXVabp2pudSUbTFQ6S7","title":"Exploring the Landscape of Ethereum Proxies","pathname":"/zokyo-tutorials/tutorial-18-proxies/exploring-the-landscape-of-ethereum-proxies","siteSpaceId":"sitesp_qsJ5X","emoji":"1f300","breadcrumbs":[{"label":"Tutorial 18: Proxies","emoji":"1f916"}]},{"id":"kzqHEPEfwPMCerAVGD4Q","title":"Transparent Proxies","pathname":"/zokyo-tutorials/tutorial-18-proxies/exploring-the-landscape-of-ethereum-proxies/transparent-proxies","siteSpaceId":"sitesp_qsJ5X","emoji":"1fa9e","breadcrumbs":[{"label":"Tutorial 18: Proxies","emoji":"1f916"},{"label":"Exploring the Landscape of Ethereum Proxies","emoji":"1f300"}]},{"id":"6N7h66JYycrJ6YyhSbtp","title":"UUPS Proxies","pathname":"/zokyo-tutorials/tutorial-18-proxies/exploring-the-landscape-of-ethereum-proxies/uups-proxies","siteSpaceId":"sitesp_qsJ5X","emoji":"2b06","breadcrumbs":[{"label":"Tutorial 18: Proxies","emoji":"1f916"},{"label":"Exploring the Landscape of Ethereum Proxies","emoji":"1f300"}]},{"id":"UOyGWMmqZqQXhChhYGd5","title":"Beacon Proxies","pathname":"/zokyo-tutorials/tutorial-18-proxies/exploring-the-landscape-of-ethereum-proxies/beacon-proxies","siteSpaceId":"sitesp_qsJ5X","emoji":"1f4a1","breadcrumbs":[{"label":"Tutorial 18: Proxies","emoji":"1f916"},{"label":"Exploring the Landscape of Ethereum Proxies","emoji":"1f300"}]},{"id":"u0oiGDk78CujNZNQJwmo","title":"Diamond Proxies","pathname":"/zokyo-tutorials/tutorial-18-proxies/exploring-the-landscape-of-ethereum-proxies/diamond-proxies","siteSpaceId":"sitesp_qsJ5X","emoji":"1f48e","breadcrumbs":[{"label":"Tutorial 18: Proxies","emoji":"1f916"},{"label":"Exploring the Landscape of Ethereum Proxies","emoji":"1f300"}]},{"id":"tP6TRpBfhePlR6BEak7s","title":"Tutorial 19: 18 Decimal Assumption","pathname":"/zokyo-tutorials/tutorial-19-18-decimal-assumption","siteSpaceId":"sitesp_qsJ5X","emoji":"1f51e"},{"id":"kRee0Vbf4hZccjxdVR1k","title":"Prerequisites","pathname":"/zokyo-tutorials/tutorial-19-18-decimal-assumption/prerequisites","siteSpaceId":"sitesp_qsJ5X","emoji":"1f680","breadcrumbs":[{"label":"Tutorial 19: 18 Decimal Assumption","emoji":"1f51e"}]},{"id":"kJjJcFZ6JWVcY6RCZvSs","title":"Understanding ERC20 Decimals","pathname":"/zokyo-tutorials/tutorial-19-18-decimal-assumption/understanding-erc20-decimals","siteSpaceId":"sitesp_qsJ5X","emoji":"1f4cc","breadcrumbs":[{"label":"Tutorial 19: 18 Decimal Assumption","emoji":"1f51e"}]},{"id":"ex2513ongnNJafzKKMn6","title":"Examples Of Vulnerabilities To Do With Assuming 18 Decimals","pathname":"/zokyo-tutorials/tutorial-19-18-decimal-assumption/examples-of-vulnerabilities-to-do-with-assuming-18-decimals","siteSpaceId":"sitesp_qsJ5X","emoji":"1f480","breadcrumbs":[{"label":"Tutorial 19: 18 Decimal Assumption","emoji":"1f51e"}]},{"id":"9bycQ9zCteigGDI0jI0K","title":"Conclusion","pathname":"/zokyo-tutorials/tutorial-19-18-decimal-assumption/conclusion","siteSpaceId":"sitesp_qsJ5X","emoji":"1f91d","breadcrumbs":[{"label":"Tutorial 19: 18 Decimal Assumption","emoji":"1f51e"}]},{"id":"0oKFhcCzf7Q5IZGTYOxK","title":"Tutorial 20: Arithmetic","pathname":"/zokyo-tutorials/tutorial-20-arithmetic","siteSpaceId":"sitesp_qsJ5X","emoji":"2797","description":"Author: Omar Inuwa"},{"id":"6CRcM1TtTT3KVhWBZplL","title":"Prerequisites","pathname":"/zokyo-tutorials/tutorial-20-arithmetic/prerequisites","siteSpaceId":"sitesp_qsJ5X","emoji":"1f680","breadcrumbs":[{"label":"Tutorial 20: Arithmetic","emoji":"2797"}]},{"id":"NxzpynbHBvFagJzz6Fk1","title":"Arithmetic pitfall 1: Division by 0","pathname":"/zokyo-tutorials/tutorial-20-arithmetic/arithmetic-pitfall-1-division-by-0","siteSpaceId":"sitesp_qsJ5X","emoji":"1f573","breadcrumbs":[{"label":"Tutorial 20: Arithmetic","emoji":"2797"}]},{"id":"TxtuQZbxrZj1OhgP7mmm","title":"Arithmetic pitfall 2: Precision Loss Due To Rounding","pathname":"/zokyo-tutorials/tutorial-20-arithmetic/arithmetic-pitfall-2-precision-loss-due-to-rounding","siteSpaceId":"sitesp_qsJ5X","emoji":"1f52a","breadcrumbs":[{"label":"Tutorial 20: Arithmetic","emoji":"2797"}]},{"id":"YhRzcQOEWArWeZJEXfri","title":"Arithmetic pitfall 3: Erroneous Calculations","pathname":"/zokyo-tutorials/tutorial-20-arithmetic/arithmetic-pitfall-3-erroneous-calculations","siteSpaceId":"sitesp_qsJ5X","emoji":"1f978","breadcrumbs":[{"label":"Tutorial 20: Arithmetic","emoji":"2797"}]},{"id":"GUnQIKwxCdCO1JWSUfMa","title":"Conclusion","pathname":"/zokyo-tutorials/tutorial-20-arithmetic/conclusion","siteSpaceId":"sitesp_qsJ5X","emoji":"1f91d","breadcrumbs":[{"label":"Tutorial 20: Arithmetic","emoji":"2797"}]},{"id":"DQtHWVzxUGxkrd4c2T0y","title":"Tutorial 21: Unbounded Loops","pathname":"/zokyo-tutorials/tutorial-21-unbounded-loops","siteSpaceId":"sitesp_qsJ5X","emoji":"1f501"},{"id":"dBcdBK8Tcb6oz2A5pIv5","title":"Prerequisites","pathname":"/zokyo-tutorials/tutorial-21-unbounded-loops/prerequisites","siteSpaceId":"sitesp_qsJ5X","emoji":"1f680","breadcrumbs":[{"label":"Tutorial 21: Unbounded Loops","emoji":"1f501"}]},{"id":"kJvFIuwt8bTSI5h077xQ","title":"Gas Limit Vulnerability","pathname":"/zokyo-tutorials/tutorial-21-unbounded-loops/gas-limit-vulnerability","siteSpaceId":"sitesp_qsJ5X","emoji":"26fd","breadcrumbs":[{"label":"Tutorial 21: Unbounded Loops","emoji":"1f501"}]},{"id":"25wtQkSHYZH8Fu8K7AD8","title":"Transaction Failures Within Loops","pathname":"/zokyo-tutorials/tutorial-21-unbounded-loops/transaction-failures-within-loops","siteSpaceId":"sitesp_qsJ5X","emoji":"1f4e8","breadcrumbs":[{"label":"Tutorial 21: Unbounded Loops","emoji":"1f501"}]},{"id":"jxueCSHncQtTZyFtFSI0","title":"Conclusion","pathname":"/zokyo-tutorials/tutorial-21-unbounded-loops/conclusion","siteSpaceId":"sitesp_qsJ5X","emoji":"1f91d","breadcrumbs":[{"label":"Tutorial 21: Unbounded Loops","emoji":"1f501"}]},{"id":"EN273cfneNnROAdcbVSN","title":"Tutorial 22: `isContract`","pathname":"/zokyo-tutorials/tutorial-22-iscontract","siteSpaceId":"sitesp_qsJ5X","emoji":"1f4d4"},{"id":"xmEJyfXZNGrZpvIInyGQ","title":"Prerequisites","pathname":"/zokyo-tutorials/tutorial-22-iscontract/prerequisites","siteSpaceId":"sitesp_qsJ5X","emoji":"1f680","breadcrumbs":[{"label":"Tutorial 22: `isContract`","emoji":"1f4d4"}]},{"id":"qJB4ZOfnSxB09dziXTZa","title":"Understanding the 'isContract()` vulnerability","pathname":"/zokyo-tutorials/tutorial-22-iscontract/understanding-the-iscontract-vulnerability","siteSpaceId":"sitesp_qsJ5X","emoji":"1f480","breadcrumbs":[{"label":"Tutorial 22: `isContract`","emoji":"1f4d4"}]},{"id":"MNkLc1IsQSqBhrpl2b4Y","title":"Conclusion","pathname":"/zokyo-tutorials/tutorial-22-iscontract/conclusion","siteSpaceId":"sitesp_qsJ5X","emoji":"1f91d","breadcrumbs":[{"label":"Tutorial 22: `isContract`","emoji":"1f4d4"}]},{"id":"MpPhk8APdFmzfyWTkyiP","title":"Tutorial 23: Staking","pathname":"/zokyo-tutorials/tutorial-23-staking","siteSpaceId":"sitesp_qsJ5X","emoji":"1f4b5"},{"id":"T2ih5pxj9NJojze13JNZ","title":"Prerequisites","pathname":"/zokyo-tutorials/tutorial-23-staking/prerequisites","siteSpaceId":"sitesp_qsJ5X","emoji":"1f680","breadcrumbs":[{"label":"Tutorial 23: Staking","emoji":"1f4b5"}]},{"id":"ty0LvP0nPCb3mjnzRvml","title":"First Depositor Inflation Attack in Staking Contracts","pathname":"/zokyo-tutorials/tutorial-23-staking/first-depositor-inflation-attack-in-staking-contracts","siteSpaceId":"sitesp_qsJ5X","emoji":"1f480","breadcrumbs":[{"label":"Tutorial 23: Staking","emoji":"1f4b5"}]},{"id":"b20y4sk911P5AriAv3Bh","title":"Front-Running Rebase Attack (Stepwise Jump in Rewards)","pathname":"/zokyo-tutorials/tutorial-23-staking/front-running-rebase-attack-stepwise-jump-in-rewards","siteSpaceId":"sitesp_qsJ5X","emoji":"1f32a","breadcrumbs":[{"label":"Tutorial 23: Staking","emoji":"1f4b5"}]},{"id":"m9fioRF9crh2uw1AoNCV","title":"Rugability of a Poorly Implemented recoverERC20 Function in Staking Contracts","pathname":"/zokyo-tutorials/tutorial-23-staking/rugability-of-a-poorly-implemented-recovererc20-function-in-staking-contracts","siteSpaceId":"sitesp_qsJ5X","emoji":"2668","breadcrumbs":[{"label":"Tutorial 23: Staking","emoji":"1f4b5"}]},{"id":"LMKnSveaJXimCLoThWtN","title":"General Considerations for ERC777 Reentrancy Vulnerabilities","pathname":"/zokyo-tutorials/tutorial-23-staking/general-considerations-for-erc777-reentrancy-vulnerabilities","siteSpaceId":"sitesp_qsJ5X","emoji":"1f620","breadcrumbs":[{"label":"Tutorial 23: Staking","emoji":"1f4b5"}]},{"id":"GXoCTgjDHPvpFbnFt8Xh","title":"Vulnerability: _lpToken and Reward Token Confusion in Staking Contracts","pathname":"/zokyo-tutorials/tutorial-23-staking/vulnerability-_lptoken-and-reward-token-confusion-in-staking-contracts","siteSpaceId":"sitesp_qsJ5X","emoji":"1f94f","breadcrumbs":[{"label":"Tutorial 23: Staking","emoji":"1f4b5"}]},{"id":"lWJOdq7wijzRLeDTJIOl","title":"Slippage Checks","pathname":"/zokyo-tutorials/tutorial-23-staking/slippage-checks","siteSpaceId":"sitesp_qsJ5X","emoji":"1f30a","breadcrumbs":[{"label":"Tutorial 23: Staking","emoji":"1f4b5"}]},{"id":"JCqAonU1wZgN5IjmEEs2","title":"The Harvest Functionality in Vaults: Issues and Best Practices","pathname":"/zokyo-tutorials/tutorial-23-staking/the-harvest-functionality-in-vaults-issues-and-best-practices","siteSpaceId":"sitesp_qsJ5X","emoji":"1f33d","breadcrumbs":[{"label":"Tutorial 23: Staking","emoji":"1f4b5"}]},{"id":"UK6AMDMbGf5KmHM3yoXd","title":"Tutorial 24: Chain Re-org Vulnerability","pathname":"/zokyo-tutorials/tutorial-24-chain-re-org-vulnerability","siteSpaceId":"sitesp_qsJ5X","emoji":"26d3"},{"id":"DIM7JqMFLoyAMJsOOcsf","title":"Prerequisites","pathname":"/zokyo-tutorials/tutorial-24-chain-re-org-vulnerability/prerequisites","siteSpaceId":"sitesp_qsJ5X","emoji":"1f680","breadcrumbs":[{"label":"Tutorial 24: Chain Re-org Vulnerability","emoji":"26d3"}]},{"id":"G1iEf0g7LR8zwHPXNkRP","title":"Chain Reorganization (Re-org) Vulnerability","pathname":"/zokyo-tutorials/tutorial-24-chain-re-org-vulnerability/chain-reorganization-re-org-vulnerability","siteSpaceId":"sitesp_qsJ5X","emoji":"267b","breadcrumbs":[{"label":"Tutorial 24: Chain Re-org Vulnerability","emoji":"26d3"}]},{"id":"UHdnG0iXy7QtSdMB7BBQ","title":"Chain Re-org Vulnerability in Governance Voting Mechanisms","pathname":"/zokyo-tutorials/tutorial-24-chain-re-org-vulnerability/chain-re-org-vulnerability-in-governance-voting-mechanisms","siteSpaceId":"sitesp_qsJ5X","emoji":"1f9d1-2696","breadcrumbs":[{"label":"Tutorial 24: Chain Re-org Vulnerability","emoji":"26d3"}]},{"id":"twQuFbQJQYbKVWY4XpHA","title":"Tutorial 25: Cross Chain Bridges Vulnerabilities","pathname":"/zokyo-tutorials/tutorial-25-cross-chain-bridges-vulnerabilities","siteSpaceId":"sitesp_qsJ5X","emoji":"1f309"},{"id":"ywkbvcPaW7z4jbjnOAf5","title":"Prerequisites","pathname":"/zokyo-tutorials/tutorial-25-cross-chain-bridges-vulnerabilities/prerequisites","siteSpaceId":"sitesp_qsJ5X","emoji":"1f680","breadcrumbs":[{"label":"Tutorial 25: Cross Chain Bridges Vulnerabilities","emoji":"1f309"}]},{"id":"56YEQkKbiH0t0Q2NsMQW","title":"ERC777 Bridge Vulnerability: Reentrancy Attack in Token Accounting","pathname":"/zokyo-tutorials/tutorial-25-cross-chain-bridges-vulnerabilities/erc777-bridge-vulnerability-reentrancy-attack-in-token-accounting","siteSpaceId":"sitesp_qsJ5X","emoji":"267b","breadcrumbs":[{"label":"Tutorial 25: Cross Chain Bridges Vulnerabilities","emoji":"1f309"}]},{"id":"74B9vVMBCPYBQqsmL2i3","title":"Vulnerability: Withdrawals Can Be Locked Forever If Recipient Is a Contract","pathname":"/zokyo-tutorials/tutorial-25-cross-chain-bridges-vulnerabilities/erc777-bridge-vulnerability-reentrancy-attack-in-token-accounting/vulnerability-withdrawals-can-be-locked-forever-if-recipient-is-a-contract","siteSpaceId":"sitesp_qsJ5X","emoji":"1f6d1","breadcrumbs":[{"label":"Tutorial 25: Cross Chain Bridges Vulnerabilities","emoji":"1f309"},{"label":"ERC777 Bridge Vulnerability: Reentrancy Attack in Token Accounting","emoji":"267b"}]},{"id":"OtoAySRwgyWooD31Rg4i","title":"The Dangers of Not Using SafeERC20 for Token Transfers","pathname":"/zokyo-tutorials/tutorial-25-cross-chain-bridges-vulnerabilities/the-dangers-of-not-using-safeerc20-for-token-transfers","siteSpaceId":"sitesp_qsJ5X","emoji":"1f45b","breadcrumbs":[{"label":"Tutorial 25: Cross Chain Bridges Vulnerabilities","emoji":"1f309"}]},{"id":"czzBGiyDP77C0ytffsLR","title":"Uninitialized Variable Vulnerability in Upgradeable Smart Contracts","pathname":"/zokyo-tutorials/tutorial-25-cross-chain-bridges-vulnerabilities/uninitialized-variable-vulnerability-in-upgradeable-smart-contracts","siteSpaceId":"sitesp_qsJ5X","icon":"shovel","breadcrumbs":[{"label":"Tutorial 25: Cross Chain Bridges Vulnerabilities","emoji":"1f309"}]},{"id":"dsajY54He5WiLmGWRITi","title":"Unsafe External Calls and Their Vulnerabilities","pathname":"/zokyo-tutorials/tutorial-25-cross-chain-bridges-vulnerabilities/unsafe-external-calls-and-their-vulnerabilities","siteSpaceId":"sitesp_qsJ5X","icon":"phone-flip","breadcrumbs":[{"label":"Tutorial 25: Cross Chain Bridges Vulnerabilities","emoji":"1f309"}]},{"id":"tWAQ45DJbuKzUHzB2JaY","title":"Signature Replay Attacks in Cross-Chain Protocols","pathname":"/zokyo-tutorials/tutorial-25-cross-chain-bridges-vulnerabilities/signature-replay-attacks-in-cross-chain-protocols","siteSpaceId":"sitesp_qsJ5X","icon":"rectangle-vertical-history","breadcrumbs":[{"label":"Tutorial 25: Cross Chain Bridges Vulnerabilities","emoji":"1f309"}]},{"id":"dpcnVIJG374t86TJN6Gu","title":"Tutorial 26: Integer Underflow and Overflow Vulnerabilities in Solidity (Before 0.8.0)","pathname":"/zokyo-tutorials/tutorial-26-integer-underflow-and-overflow-vulnerabilities-in-solidity-before-0.8.0","siteSpaceId":"sitesp_qsJ5X","emoji":"1f6b0"},{"id":"syZoZIfD4rNneKcuCW3X","title":"Prerequisites","pathname":"/zokyo-tutorials/tutorial-26-integer-underflow-and-overflow-vulnerabilities-in-solidity-before-0.8.0/prerequisites","siteSpaceId":"sitesp_qsJ5X","emoji":"1f680","breadcrumbs":[{"label":"Tutorial 26: Integer Underflow and Overflow Vulnerabilities in Solidity (Before 0.8.0)","emoji":"1f6b0"}]},{"id":"BseunO318B30CJp2JmdI","title":"Understanding Integer Underflow and Overflow Vulnerabilities","pathname":"/zokyo-tutorials/tutorial-26-integer-underflow-and-overflow-vulnerabilities-in-solidity-before-0.8.0/understanding-integer-underflow-and-overflow-vulnerabilities","siteSpaceId":"sitesp_qsJ5X","emoji":"1f480","breadcrumbs":[{"label":"Tutorial 26: Integer Underflow and Overflow Vulnerabilities in Solidity (Before 0.8.0)","emoji":"1f6b0"}]},{"id":"TlID3On7CJBnBBuju8fv","title":"Conclusion","pathname":"/zokyo-tutorials/tutorial-26-integer-underflow-and-overflow-vulnerabilities-in-solidity-before-0.8.0/conclusion","siteSpaceId":"sitesp_qsJ5X","emoji":"1f91d","breadcrumbs":[{"label":"Tutorial 26: Integer Underflow and Overflow Vulnerabilities in Solidity (Before 0.8.0)","emoji":"1f6b0"}]},{"id":"YrcYCqutlZ3cT3C6XuS5","title":"Tutorial 27:  OpenZeppelin Vulnerabilities","pathname":"/zokyo-tutorials/tutorial-27-openzeppelin-vulnerabilities","siteSpaceId":"sitesp_qsJ5X","emoji":"1f94f"},{"id":"jxv5sv5R0IWjsc9uA4rT","title":"Prerequisites","pathname":"/zokyo-tutorials/tutorial-27-openzeppelin-vulnerabilities/prerequisites","siteSpaceId":"sitesp_qsJ5X","emoji":"1f680","breadcrumbs":[{"label":"Tutorial 27:  OpenZeppelin Vulnerabilities","emoji":"1f94f"}]},{"id":"ySHqJ89kw61vJCVkzhu6","title":"A Guide on Vulnerability Awareness and Management","pathname":"/zokyo-tutorials/tutorial-27-openzeppelin-vulnerabilities/a-guide-on-vulnerability-awareness-and-management","siteSpaceId":"sitesp_qsJ5X","emoji":"1f6e3","breadcrumbs":[{"label":"Tutorial 27:  OpenZeppelin Vulnerabilities","emoji":"1f94f"}]},{"id":"iumNoQTT8znAzSjAUL47","title":"Conclusion","pathname":"/zokyo-tutorials/tutorial-27-openzeppelin-vulnerabilities/a-guide-on-vulnerability-awareness-and-management/conclusion","siteSpaceId":"sitesp_qsJ5X","emoji":"1f91d","breadcrumbs":[{"label":"Tutorial 27:  OpenZeppelin Vulnerabilities","emoji":"1f94f"},{"label":"A Guide on Vulnerability Awareness and Management","emoji":"1f6e3"}]},{"id":"R5fezM5fJ4dkuxKcY99h","title":"Tutorial 28:  Signature Vulnerabilities / Replays","pathname":"/zokyo-tutorials/tutorial-28-signature-vulnerabilities-replays","siteSpaceId":"sitesp_qsJ5X","emoji":"1f58a"},{"id":"GLhWNve4bWnIKPIgj3wv","title":"Prerequisites","pathname":"/zokyo-tutorials/tutorial-28-signature-vulnerabilities-replays/prerequisites","siteSpaceId":"sitesp_qsJ5X","emoji":"1f680","breadcrumbs":[{"label":"Tutorial 28:  Signature Vulnerabilities / Replays","emoji":"1f58a"}]},{"id":"SQnxSmEmqLPCyqK8HL4J","title":"Reusing EIP-712 Signatures in Private Sales","pathname":"/zokyo-tutorials/tutorial-28-signature-vulnerabilities-replays/reusing-eip-712-signatures-in-private-sales","siteSpaceId":"sitesp_qsJ5X","emoji":"1f50f","breadcrumbs":[{"label":"Tutorial 28:  Signature Vulnerabilities / Replays","emoji":"1f58a"}]},{"id":"s4ZUo5DJir1qWaTYLNeE","title":"Replay Attacks on Failed Transactions","pathname":"/zokyo-tutorials/tutorial-28-signature-vulnerabilities-replays/replay-attacks-on-failed-transactions","siteSpaceId":"sitesp_qsJ5X","emoji":"1f501","breadcrumbs":[{"label":"Tutorial 28:  Signature Vulnerabilities / Replays","emoji":"1f58a"}]},{"id":"PzhAPpKGTrcm95u6sugk","title":"Improper Token Validation in Permit Signature","pathname":"/zokyo-tutorials/tutorial-28-signature-vulnerabilities-replays/improper-token-validation-in-permit-signature","siteSpaceId":"sitesp_qsJ5X","emoji":"1f4c3","breadcrumbs":[{"label":"Tutorial 28:  Signature Vulnerabilities / Replays","emoji":"1f58a"}]},{"id":"MpRn2AzMABrSv2X1QFXi","title":"Tutorial 29: Solmate Vulnerabilities","pathname":"/zokyo-tutorials/tutorial-29-solmate-vulnerabilities","siteSpaceId":"sitesp_qsJ5X","emoji":"1f91d"},{"id":"ZqxopkkKgVpuDx74930K","title":"Lack of Code Size Check in Token Transfer Functions in Solmate","pathname":"/zokyo-tutorials/tutorial-29-solmate-vulnerabilities/lack-of-code-size-check-in-token-transfer-functions-in-solmate","siteSpaceId":"sitesp_qsJ5X","emoji":"1f50f","breadcrumbs":[{"label":"Tutorial 29: Solmate Vulnerabilities","emoji":"1f91d"}]},{"id":"2kupCiy0tBImh0Jzgznm","title":"Tutorial 30: Inconsistent block lengths across chains","pathname":"/zokyo-tutorials/tutorial-30-inconsistent-block-lengths-across-chains","siteSpaceId":"sitesp_qsJ5X","emoji":"1f9f1"},{"id":"QXVNrQFTgUlzdt1X8DJa","title":"Incorrect Assumptions about Block Number in Multi-Chain Deployments","pathname":"/zokyo-tutorials/tutorial-30-inconsistent-block-lengths-across-chains/incorrect-assumptions-about-block-number-in-multi-chain-deployments","siteSpaceId":"sitesp_qsJ5X","emoji":"1f55b","breadcrumbs":[{"label":"Tutorial 30: Inconsistent block lengths across chains","emoji":"1f9f1"}]},{"id":"59IdwtI9WBSijn4o6c5D","title":"Tutorial 31: NFT JSON and XSS injection","pathname":"/zokyo-tutorials/tutorial-31-nft-json-and-xss-injection","siteSpaceId":"sitesp_qsJ5X","emoji":"1f489"},{"id":"6XkCzlyC2f4vakqdBDQy","title":"Vulnerability: JSON Injection in tokenURI Functions","pathname":"/zokyo-tutorials/tutorial-31-nft-json-and-xss-injection/vulnerability-json-injection-in-tokenuri-functions","siteSpaceId":"sitesp_qsJ5X","emoji":"1f4dc","breadcrumbs":[{"label":"Tutorial 31: NFT JSON and XSS injection","emoji":"1f489"}]},{"id":"tLBAiZVP5uFAVNVvgFPr","title":"Cross-Site Scripting (XSS) Vulnerability via SVG Construction in Smart Contracts","pathname":"/zokyo-tutorials/tutorial-31-nft-json-and-xss-injection/cross-site-scripting-xss-vulnerability-via-svg-construction-in-smart-contracts","siteSpaceId":"sitesp_qsJ5X","emoji":"1f4cd","breadcrumbs":[{"label":"Tutorial 31: NFT JSON and XSS injection","emoji":"1f489"}]},{"id":"SmVRumU4cwWzYsccu7u9","title":"Tutorial 32: Merkle Leafs","pathname":"/zokyo-tutorials/tutorial-32-merkle-leafs","siteSpaceId":"sitesp_qsJ5X","emoji":"1f343"},{"id":"nZHhnHHkZm4IRWZQXTKt","title":"Misuse of Merkle Leaf Nodes","pathname":"/zokyo-tutorials/tutorial-32-merkle-leafs/misuse-of-merkle-leaf-nodes","siteSpaceId":"sitesp_qsJ5X","emoji":"1f5a5","breadcrumbs":[{"label":"Tutorial 32: Merkle Leafs","emoji":"1f343"}]},{"id":"0EYhblgSSCy26CdTMiKl","title":"Tutorial 33: Layer 0","pathname":"/zokyo-tutorials/tutorial-33-layer-0","siteSpaceId":"sitesp_qsJ5X","emoji":"0030"},{"id":"ShA1ao7pobFVJVPZ66JW","title":"Lack of Force Resume in LayerZero Integrations","pathname":"/zokyo-tutorials/tutorial-33-layer-0/lack-of-force-resume-in-layerzero-integrations","siteSpaceId":"sitesp_qsJ5X","emoji":"1f4e9","breadcrumbs":[{"label":"Tutorial 33: Layer 0","emoji":"0030"}]},{"id":"gle7uZe7tgBVDvZRJjA8","title":"LayerZero-Specific Vulnerabilities in Airdropped Gas and Failure Handling","pathname":"/zokyo-tutorials/tutorial-33-layer-0/layerzero-specific-vulnerabilities-in-airdropped-gas-and-failure-handling","siteSpaceId":"sitesp_qsJ5X","emoji":"26fd","breadcrumbs":[{"label":"Tutorial 33: Layer 0","emoji":"0030"}]},{"id":"cvUCGpt4c8vxbCEFx2C6","title":"Understanding the Vulnerability of Blocking LayerZero Channels","pathname":"/zokyo-tutorials/tutorial-33-layer-0/understanding-the-vulnerability-of-blocking-layerzero-channels","siteSpaceId":"sitesp_qsJ5X","emoji":"1f513","breadcrumbs":[{"label":"Tutorial 33: Layer 0","emoji":"0030"}]},{"id":"d12SCmFVApGpl4v7QBoa","title":"Copy of Understanding the Vulnerability of Blocking LayerZero Channels","pathname":"/zokyo-tutorials/tutorial-33-layer-0/copy-of-understanding-the-vulnerability-of-blocking-layerzero-channels","siteSpaceId":"sitesp_qsJ5X","emoji":"1f58a","breadcrumbs":[{"label":"Tutorial 33: Layer 0","emoji":"0030"}]},{"id":"9uecNxxoHv6hf60CPbJI","title":"Tutorial 34: Forgetting to Update the Global State in Smart Contracts","pathname":"/zokyo-tutorials/tutorial-34-forgetting-to-update-the-global-state-in-smart-contracts","siteSpaceId":"sitesp_qsJ5X","emoji":"267b"},{"id":"2Zx5BbtUTJOQfNzfTCf8","title":"Tutorial 35: Wrong Function Signature","pathname":"/zokyo-tutorials/tutorial-35-wrong-function-signature","siteSpaceId":"sitesp_qsJ5X","emoji":"203c"},{"id":"CAM9s2oCYfgGs9RToP76","title":"Tutorial 36: Handling Edge Cases of Banned Addresses in DeFi","pathname":"/zokyo-tutorials/tutorial-36-handling-edge-cases-of-banned-addresses-in-defi","siteSpaceId":"sitesp_qsJ5X","emoji":"1f6d1"},{"id":"Ark4sLE9CFThVAvKWZLA","title":"Tutorial 37: initializer and onlyInitializing","pathname":"/zokyo-tutorials/tutorial-37-initializer-and-onlyinitializing","siteSpaceId":"sitesp_qsJ5X","icon":"flag-checkered"},{"id":"N9PBbRJwwq9YIdnbk1oj","title":"Tutorial 38: Eigen Layer","pathname":"/zokyo-tutorials/tutorial-38-eigen-layer","siteSpaceId":"sitesp_qsJ5X","emoji":"2797"},{"id":"Q8JhnQzB43EpBk1pp6dX","title":"Denial of Service in NodeDelegator Due to EigenLayer's maxPerDeposit Check","pathname":"/zokyo-tutorials/tutorial-38-eigen-layer/denial-of-service-in-nodedelegator-due-to-eigenlayers-maxperdeposit-check","siteSpaceId":"sitesp_qsJ5X","emoji":"1f4e9","breadcrumbs":[{"label":"Tutorial 38: Eigen Layer","emoji":"2797"}]},{"id":"7QbcCb6B9JON28n6qVL5","title":"Incorrect Share Issuance Due to Strategy Updates in EigenLayer Integrations","pathname":"/zokyo-tutorials/tutorial-38-eigen-layer/incorrect-share-issuance-due-to-strategy-updates-in-eigenlayer-integrations","siteSpaceId":"sitesp_qsJ5X","emoji":"1f4c8","breadcrumbs":[{"label":"Tutorial 38: Eigen Layer","emoji":"2797"}]},{"id":"hikHiFBXKiEldkN4vLqq","title":"nonReentrant Vulnerability in EigenLayer Withdrawals","pathname":"/zokyo-tutorials/tutorial-38-eigen-layer/nonreentrant-vulnerability-in-eigenlayer-withdrawals","siteSpaceId":"sitesp_qsJ5X","emoji":"1f501","breadcrumbs":[{"label":"Tutorial 38: Eigen Layer","emoji":"2797"}]},{"id":"KQyNGuSDAJ1AoO4gfWpF","title":"Tutorial 39: Wormhole","pathname":"/zokyo-tutorials/tutorial-39-wormhole","siteSpaceId":"sitesp_qsJ5X","emoji":"26ab"},{"id":"lAIA7itErYzipAFkitn9","title":"Proposal Execution Failure Due to Guardian Set Change","pathname":"/zokyo-tutorials/tutorial-39-wormhole/proposal-execution-failure-due-to-guardian-set-change","siteSpaceId":"sitesp_qsJ5X","emoji":"1f4e9","breadcrumbs":[{"label":"Tutorial 39: Wormhole","emoji":"26ab"}]},{"id":"QGfQJi6xlKuP5VzjvPw4","title":"Tutorial 40: Uniswap V3","pathname":"/zokyo-tutorials/tutorial-40-uniswap-v3","siteSpaceId":"sitesp_qsJ5X","emoji":"1f4bc"},{"id":"CSIYzWd8yxxy7RbOt6n9","title":"Understanding and Mitigating Partial Swaps in Uniswap V3","pathname":"/zokyo-tutorials/tutorial-40-uniswap-v3/understanding-and-mitigating-partial-swaps-in-uniswap-v3","siteSpaceId":"sitesp_qsJ5X","emoji":"1f4e9","breadcrumbs":[{"label":"Tutorial 40: Uniswap V3","emoji":"1f4bc"}]},{"id":"RD21CWqlR48HjXBeGyPr","title":"Underflow Vulnerability in Uniswap V3 Position Fee Growth Calculations","pathname":"/zokyo-tutorials/tutorial-40-uniswap-v3/underflow-vulnerability-in-uniswap-v3-position-fee-growth-calculations","siteSpaceId":"sitesp_qsJ5X","emoji":"1f30a","breadcrumbs":[{"label":"Tutorial 40: Uniswap V3","emoji":"1f4bc"}]},{"id":"lDMaqnGZKLDkMX0uz0TN","title":"Handling Decimal Discrepancies in Uniswap V3 Price Calculations","pathname":"/zokyo-tutorials/tutorial-40-uniswap-v3/handling-decimal-discrepancies-in-uniswap-v3-price-calculations","siteSpaceId":"sitesp_qsJ5X","emoji":"2797","breadcrumbs":[{"label":"Tutorial 40: Uniswap V3","emoji":"1f4bc"}]},{"id":"jOOfdhlPtNBEqvXGAieB","title":"Tutorial 41: Multiple Token Addresses in Proxied Tokens","pathname":"/zokyo-tutorials/tutorial-41-multiple-token-addresses-in-proxied-tokens","siteSpaceId":"sitesp_qsJ5X","emoji":"1f522"},{"id":"dvnUv5V7OUiZ780aL7x7","title":"Understanding Vulnerabilities Arising from Tokens with Multiple Entry Points","pathname":"/zokyo-tutorials/tutorial-41-multiple-token-addresses-in-proxied-tokens/understanding-vulnerabilities-arising-from-tokens-with-multiple-entry-points","siteSpaceId":"sitesp_qsJ5X","emoji":"1f513","breadcrumbs":[{"label":"Tutorial 41: Multiple Token Addresses in Proxied Tokens","emoji":"1f522"}]},{"id":"ve4ecrthlcKWrwoTnGQY","title":"Tutorial 42: abiDecoder v2","pathname":"/zokyo-tutorials/tutorial-42-abidecoder-v2","siteSpaceId":"sitesp_qsJ5X","emoji":"1f916"},{"id":"f4q175BNRQ4UwGHBSyUh","title":"Vulnerabilities from Manipulated Token Interactions Using ABI Decoding","pathname":"/zokyo-tutorials/tutorial-42-abidecoder-v2/vulnerabilities-from-manipulated-token-interactions-using-abi-decoding","siteSpaceId":"sitesp_qsJ5X","emoji":"1f965","breadcrumbs":[{"label":"Tutorial 42: abiDecoder v2","emoji":"1f916"}]},{"id":"2gVZcE5p9aRh6uCbeDhE","title":"Tutorial 43: On-Chain Randomness","pathname":"/zokyo-tutorials/tutorial-43-on-chain-randomness","siteSpaceId":"sitesp_qsJ5X","emoji":"2753"},{"id":"0FOIwwMeNj5x9nciGcxr","title":"Vulnerabilities in On-Chain Randomness and How It Can Be Exploited","pathname":"/zokyo-tutorials/tutorial-43-on-chain-randomness/vulnerabilities-in-on-chain-randomness-and-how-it-can-be-exploited","siteSpaceId":"sitesp_qsJ5X","icon":"at","breadcrumbs":[{"label":"Tutorial 43: On-Chain Randomness","emoji":"2753"}]},{"id":"IEuOS7yY7GqBywDhiNIf","title":"Tutorial 44: Weird ERC20 Tokens","pathname":"/zokyo-tutorials/tutorial-44-weird-erc20-tokens","siteSpaceId":"sitesp_qsJ5X","emoji":"1f616"},{"id":"2xOd0rRHB6SLAZE2v5hZ","title":"Weird Token List","pathname":"/zokyo-tutorials/tutorial-44-weird-erc20-tokens/weird-token-list","siteSpaceId":"sitesp_qsJ5X","icon":"at","breadcrumbs":[{"label":"Tutorial 44: Weird ERC20 Tokens","emoji":"1f616"}]},{"id":"XM2XC976qxLGmlA8GUQQ","title":"Tutorial 45: Hardcoded stable coin values","pathname":"/zokyo-tutorials/tutorial-45-hardcoded-stable-coin-values","siteSpaceId":"sitesp_qsJ5X","emoji":"1f528"},{"id":"CRWqwmM2H3GQg8gcYIy3","title":"Tutorial 46: The Risks of Chainlink Heartbeat Discrepancies in Smart Contracts","pathname":"/zokyo-tutorials/tutorial-46-the-risks-of-chainlink-heartbeat-discrepancies-in-smart-contracts","siteSpaceId":"sitesp_qsJ5X","emoji":"2764"},{"id":"JHTRWWgEU3zHaAz1Za4Z","title":"Tutorial 47: The Risk of Forgetting a Withdrawal Mechanism in Smart Contracts","pathname":"/zokyo-tutorials/tutorial-47-the-risk-of-forgetting-a-withdrawal-mechanism-in-smart-contracts","siteSpaceId":"sitesp_qsJ5X","emoji":"1f463"},{"id":"Ccm5mLcKfQXavoc9a4qM","title":"Tutorial 48: Governance and Voting","pathname":"/zokyo-tutorials/tutorial-48-governance-and-voting","siteSpaceId":"sitesp_qsJ5X","emoji":"1f4bb"},{"id":"qt8VtraLbFSzlVsn4XvT","title":"Flash Loan Voting Exploit","pathname":"/zokyo-tutorials/tutorial-48-governance-and-voting/flash-loan-voting-exploit","siteSpaceId":"sitesp_qsJ5X","icon":"bolt-lightning","breadcrumbs":[{"label":"Tutorial 48: Governance and Voting","emoji":"1f4bb"}]},{"id":"8KGy4b5bUDP86l8YVPkN","title":"Exploiting Self-Delegation","pathname":"/zokyo-tutorials/tutorial-48-governance-and-voting/exploiting-self-delegation","siteSpaceId":"sitesp_qsJ5X","icon":"circle-chevron-right","breadcrumbs":[{"label":"Tutorial 48: Governance and Voting","emoji":"1f4bb"}]},{"id":"5GalGMaIqq51h4hQEpy3","title":"Missing payable Keyword in Governance Execute Function","pathname":"/zokyo-tutorials/tutorial-48-governance-and-voting/missing-payable-keyword-in-governance-execute-function","siteSpaceId":"sitesp_qsJ5X","emoji":"1f4b0","breadcrumbs":[{"label":"Tutorial 48: Governance and Voting","emoji":"1f4bb"}]},{"id":"apno18zRVVwybRqSGXY2","title":"Voting Multiple Times by Shifting Delegation","pathname":"/zokyo-tutorials/tutorial-48-governance-and-voting/voting-multiple-times-by-shifting-delegation","siteSpaceId":"sitesp_qsJ5X","emoji":"1f44a","breadcrumbs":[{"label":"Tutorial 48: Governance and Voting","emoji":"1f4bb"}]},{"id":"iOpH89PGNl6nO5CrYTxI","title":"Missing Duplicate Veto Check","pathname":"/zokyo-tutorials/tutorial-48-governance-and-voting/missing-duplicate-veto-check","siteSpaceId":"sitesp_qsJ5X","emoji":"1f3d1","breadcrumbs":[{"label":"Tutorial 48: Governance and Voting","emoji":"1f4bb"}]},{"id":"TcciRJAyET8IZD2740X0","title":"Tutorial 49: Not Conforming To EIP standards","pathname":"/zokyo-tutorials/tutorial-49-not-conforming-to-eip-standards","siteSpaceId":"sitesp_qsJ5X","emoji":"1f4d5"},{"id":"or7gK47wegNfuQFP71G0","title":"Understanding EIP-2981: NFT Royalty Standard","pathname":"/zokyo-tutorials/tutorial-49-not-conforming-to-eip-standards/understanding-eip-2981-nft-royalty-standard","siteSpaceId":"sitesp_qsJ5X","emoji":"1f48e","breadcrumbs":[{"label":"Tutorial 49: Not Conforming To EIP standards","emoji":"1f4d5"}]},{"id":"CHDAEyFCb6JFpq5Bj9Xk","title":"Improper Implementation of EIP-2612 Permit Standard","pathname":"/zokyo-tutorials/tutorial-49-not-conforming-to-eip-standards/improper-implementation-of-eip-2612-permit-standard","siteSpaceId":"sitesp_qsJ5X","emoji":"1f44d","breadcrumbs":[{"label":"Tutorial 49: Not Conforming To EIP standards","emoji":"1f4d5"}]},{"id":"HpQ6QfnUH0xgGK5TPvow","title":"Vulnerabilities of Missing EIP-155 Replay Attack Protection","pathname":"/zokyo-tutorials/tutorial-49-not-conforming-to-eip-standards/vulnerabilities-of-missing-eip-155-replay-attack-protection","siteSpaceId":"sitesp_qsJ5X","emoji":"1f501","breadcrumbs":[{"label":"Tutorial 49: Not Conforming To EIP standards","emoji":"1f4d5"}]},{"id":"lPdXBkOXPYlbSu5CQobx","title":"Vulnerabilities Due to Missing EIP-1967 in Proxy Contracts","pathname":"/zokyo-tutorials/tutorial-49-not-conforming-to-eip-standards/vulnerabilities-due-to-missing-eip-1967-in-proxy-contracts","siteSpaceId":"sitesp_qsJ5X","emoji":"27a1","breadcrumbs":[{"label":"Tutorial 49: Not Conforming To EIP standards","emoji":"1f4d5"}]},{"id":"BHUWWUABOF6GjqutGvMs","title":"Vulnerability of Design Preventing EIP-165 Extensibility","pathname":"/zokyo-tutorials/tutorial-49-not-conforming-to-eip-standards/vulnerability-of-design-preventing-eip-165-extensibility","siteSpaceId":"sitesp_qsJ5X","emoji":"1f513","breadcrumbs":[{"label":"Tutorial 49: Not Conforming To EIP standards","emoji":"1f4d5"}]},{"id":"zfFVdCUyFcMORxw2qgDh","title":"The Dangers of Not Properly Implementing ERC-4626 in Yield Vaults","pathname":"/zokyo-tutorials/tutorial-49-not-conforming-to-eip-standards/the-dangers-of-not-properly-implementing-erc-4626-in-yield-vaults","siteSpaceId":"sitesp_qsJ5X","emoji":"1f39f","breadcrumbs":[{"label":"Tutorial 49: Not Conforming To EIP standards","emoji":"1f4d5"}]},{"id":"0x4cPoiuzHi9We6RwG83","title":"EIP-712 Implementation and Replay Attacks","pathname":"/zokyo-tutorials/tutorial-49-not-conforming-to-eip-standards/eip-712-implementation-and-replay-attacks","siteSpaceId":"sitesp_qsJ5X","emoji":"1f501","breadcrumbs":[{"label":"Tutorial 49: Not Conforming To EIP standards","emoji":"1f4d5"}]},{"id":"zO0pyBomqbC1JOg6sJvb","title":"Tutorial 50: Vesting","pathname":"/zokyo-tutorials/tutorial-50-vesting","siteSpaceId":"sitesp_qsJ5X","emoji":"23f3"},{"id":"zIQvGr8eXS5tiHZrv4o2","title":"Vulnerability of Allowing Unauthorized Withdrawals in Vesting Contracts","pathname":"/zokyo-tutorials/tutorial-50-vesting/vulnerability-of-allowing-unauthorized-withdrawals-in-vesting-contracts","siteSpaceId":"sitesp_qsJ5X","emoji":"1f694","breadcrumbs":[{"label":"Tutorial 50: Vesting","emoji":"23f3"}]},{"id":"rgabENrs3TiA5zM1Hkbz","title":"Vulnerability of Unbounded Timelock Loops in Vesting Contracts","pathname":"/zokyo-tutorials/tutorial-50-vesting/vulnerability-of-unbounded-timelock-loops-in-vesting-contracts","siteSpaceId":"sitesp_qsJ5X","emoji":"1f44a","breadcrumbs":[{"label":"Tutorial 50: Vesting","emoji":"23f3"}]},{"id":"9AMUTO8bqx09dQV2saJB","title":"Vulnerability of Incorrect Linear Vesting Calculations","pathname":"/zokyo-tutorials/tutorial-50-vesting/vulnerability-of-incorrect-linear-vesting-calculations","siteSpaceId":"sitesp_qsJ5X","emoji":"2b06","breadcrumbs":[{"label":"Tutorial 50: Vesting","emoji":"23f3"}]},{"id":"EJyt9dWpa8dDwTmnWkg2","title":"Missing hasStarted Modifier","pathname":"/zokyo-tutorials/tutorial-50-vesting/missing-hasstarted-modifier","siteSpaceId":"sitesp_qsJ5X","emoji":"26f3","breadcrumbs":[{"label":"Tutorial 50: Vesting","emoji":"23f3"}]},{"id":"aYZzMGnw3OzCAG91tyOi","title":"Vulnerability in Bond Depositor's Vesting Period Reset","pathname":"/zokyo-tutorials/tutorial-50-vesting/vulnerability-in-bond-depositors-vesting-period-reset","siteSpaceId":"sitesp_qsJ5X","emoji":"1f513","breadcrumbs":[{"label":"Tutorial 50: Vesting","emoji":"23f3"}]},{"id":"l0vHqFBlhtVTQYXHtvuw","title":"Tutorial 51: Ethereum's 63/64 Gas Rule","pathname":"/zokyo-tutorials/tutorial-51-ethereums-63-64-gas-rule","siteSpaceId":"sitesp_qsJ5X","emoji":"26fd"},{"id":"DlsgGfsDLtoRH06tPlwD","title":"Abusing Ethereum's 63/64 Gas Rule to Manipulate Contract Behavior","pathname":"/zokyo-tutorials/tutorial-51-ethereums-63-64-gas-rule/abusing-ethereums-63-64-gas-rule-to-manipulate-contract-behavior","siteSpaceId":"sitesp_qsJ5X","emoji":"1f6e2","breadcrumbs":[{"label":"Tutorial 51: Ethereum's 63/64 Gas Rule","emoji":"26fd"}]},{"id":"hSYyg0luL55gwLovaKYa","title":"Tutorial 52: NPM Dependency Confusion and Unclaimed Packages","pathname":"/zokyo-tutorials/tutorial-52-npm-dependency-confusion-and-unclaimed-packages","siteSpaceId":"sitesp_qsJ5X","emoji":"1f4e9"},{"id":"a98HdsUBoxDbLatcTph2","title":"Exploiting Unclaimed NPM Packages and Scopes","pathname":"/zokyo-tutorials/tutorial-52-npm-dependency-confusion-and-unclaimed-packages/exploiting-unclaimed-npm-packages-and-scopes","siteSpaceId":"sitesp_qsJ5X","emoji":"1f48e","breadcrumbs":[{"label":"Tutorial 52: NPM Dependency Confusion and Unclaimed Packages","emoji":"1f4e9"}]},{"id":"mj6tSMD0DE6GGdGvB7cU","title":"Tutorial 53: Airdrops","pathname":"/zokyo-tutorials/tutorial-53-airdrops","siteSpaceId":"sitesp_qsJ5X","emoji":"1f388"},{"id":"Tq8T3qlkX2Og2YXwyVCn","title":"Claiming on Behalf of Other Users","pathname":"/zokyo-tutorials/tutorial-53-airdrops/claiming-on-behalf-of-other-users","siteSpaceId":"sitesp_qsJ5X","emoji":"1f6c4","breadcrumbs":[{"label":"Tutorial 53: Airdrops","emoji":"1f388"}]},{"id":"0lbpLVohLVa9Sk8gGnZG","title":"Repeated Airdrop Claims Vulnerability","pathname":"/zokyo-tutorials/tutorial-53-airdrops/repeated-airdrop-claims-vulnerability","siteSpaceId":"sitesp_qsJ5X","emoji":"1f9f2","breadcrumbs":[{"label":"Tutorial 53: Airdrops","emoji":"1f388"}]},{"id":"L62SZDNwRE5U5HAQaJPt","title":"Airdrop Vulnerability – Merkle Leaves and Parent Node Hash Collisions","pathname":"/zokyo-tutorials/tutorial-53-airdrops/airdrop-vulnerability-merkle-leaves-and-parent-node-hash-collisions","siteSpaceId":"sitesp_qsJ5X","emoji":"1f343","breadcrumbs":[{"label":"Tutorial 53: Airdrops","emoji":"1f388"}]},{"id":"9lky0VlcEA57FsQWnQVD","title":"Tutorial 54: Precision","pathname":"/zokyo-tutorials/tutorial-54-precision","siteSpaceId":"sitesp_qsJ5X","emoji":"1f3af"},{"id":"L8AcEUTXFl0VJzyR40Ad","title":"Vulnerabilities Due to Insufficient Precision in Reward Calculations","pathname":"/zokyo-tutorials/tutorial-54-precision/vulnerabilities-due-to-insufficient-precision-in-reward-calculations","siteSpaceId":"sitesp_qsJ5X","emoji":"1f381","breadcrumbs":[{"label":"Tutorial 54: Precision","emoji":"1f3af"}]},{"id":"kglxTCqq7IqXIODGoiH1","title":"Min-Shares: Fixed Minimum Share Values for Tokens with Low Decimal Precision","pathname":"/zokyo-tutorials/tutorial-54-precision/min-shares-fixed-minimum-share-values-for-tokens-with-low-decimal-precision","siteSpaceId":"sitesp_qsJ5X","icon":"minimize","breadcrumbs":[{"label":"Tutorial 54: Precision","emoji":"1f3af"}]},{"id":"pST2yRy2uXY3sGGMptoE","title":"Vulnerability Due to Incorrect Rounding When the Numerator is Not a Multiple of the Denominator","pathname":"/zokyo-tutorials/tutorial-54-precision/vulnerability-due-to-incorrect-rounding-when-the-numerator-is-not-a-multiple-of-the-denominator","siteSpaceId":"sitesp_qsJ5X","icon":"function","breadcrumbs":[{"label":"Tutorial 54: Precision","emoji":"1f3af"}]},{"id":"LIgPO6IwCr7vAZJzMKgd","title":"Vulnerability from Small Deposits Being Rounded Down to Zero Shares in Smart Contracts","pathname":"/zokyo-tutorials/tutorial-54-precision/vulnerability-from-small-deposits-being-rounded-down-to-zero-shares-in-smart-contracts","siteSpaceId":"sitesp_qsJ5X","icon":"chart-line-down","breadcrumbs":[{"label":"Tutorial 54: Precision","emoji":"1f3af"}]},{"id":"x97dEF4riGxo1nqI5Iux","title":"Precision Loss During Withdrawals from Vaults Can Block Token Transfers Due to Value < Amount","pathname":"/zokyo-tutorials/tutorial-54-precision/precision-loss-during-withdrawals-from-vaults-can-block-token-transfers-due-to-value-less-than-amoun","siteSpaceId":"sitesp_qsJ5X","icon":"hand","breadcrumbs":[{"label":"Tutorial 54: Precision","emoji":"1f3af"}]},{"id":"iUi4YxZuNkBS6qxteIey","title":"18 Decimal Assumption Scaling: Loss of Precision in Asset Conversion Due to Incorrect Scaling","pathname":"/zokyo-tutorials/tutorial-54-precision/18-decimal-assumption-scaling-loss-of-precision-in-asset-conversion-due-to-incorrect-scaling","siteSpaceId":"sitesp_qsJ5X","icon":"face-weary","breadcrumbs":[{"label":"Tutorial 54: Precision","emoji":"1f3af"}]},{"id":"KsK20iqqgZocpLspgHIz","title":"Tutorial 55: AssetIn == AssetOut, FromToken == ToToken","pathname":"/zokyo-tutorials/tutorial-55-assetin-assetout-fromtoken-totoken","siteSpaceId":"sitesp_qsJ5X","icon":"equals"},{"id":"2y5QAiCouKrO1c0aaPhm","title":"Vulnerability: Missing fromToken != toToken Check","pathname":"/zokyo-tutorials/tutorial-55-assetin-assetout-fromtoken-totoken/vulnerability-missing-fromtoken-totoken-check","siteSpaceId":"sitesp_qsJ5X","emoji":"1f5bc","breadcrumbs":[{"label":"Tutorial 55: AssetIn == AssetOut, FromToken == ToToken","icon":"equals"}]},{"id":"g99paGLxKcoKnzmstTSV","title":"Tutorial 56: Vulnerabilities Related to LP Tokens Being the Same as Reward Tokens","pathname":"/zokyo-tutorials/tutorial-56-vulnerabilities-related-to-lp-tokens-being-the-same-as-reward-tokens","siteSpaceId":"sitesp_qsJ5X","emoji":"1f6bf"},{"id":"TkBRottWs6RjbfytLIIR","title":"Vulnerabilities Caused by LP Tokens Being the Same as Reward Tokens","pathname":"/zokyo-tutorials/tutorial-56-vulnerabilities-related-to-lp-tokens-being-the-same-as-reward-tokens/vulnerabilities-caused-by-lp-tokens-being-the-same-as-reward-tokens","siteSpaceId":"sitesp_qsJ5X","emoji":"1f5bc","breadcrumbs":[{"label":"Tutorial 56: Vulnerabilities Related to LP Tokens Being the Same as Reward Tokens","emoji":"1f6bf"}]},{"id":"RsPzpzyQ5Tbh6kagMq6n","title":"Tutorial 57: Unsanitized SWAP Paths and Arbitrary Contract Call Vulnerabilities","pathname":"/zokyo-tutorials/tutorial-57-unsanitized-swap-paths-and-arbitrary-contract-call-vulnerabilities","siteSpaceId":"sitesp_qsJ5X","icon":"shuffle"},{"id":"YHFLcjgvJvWqOavg0Dvg","title":"Arbitrary Contract Calls from Unsanitized Paths","pathname":"/zokyo-tutorials/tutorial-57-unsanitized-swap-paths-and-arbitrary-contract-call-vulnerabilities/arbitrary-contract-calls-from-unsanitized-paths","siteSpaceId":"sitesp_qsJ5X","emoji":"1f4f2","breadcrumbs":[{"label":"Tutorial 57: Unsanitized SWAP Paths and Arbitrary Contract Call Vulnerabilities","icon":"shuffle"}]},{"id":"EeOVlPiwPuL5RBnoA1vc","title":"Tutorial 58: The Risk of Infinite Approvals and Arbitrary Contract Calls","pathname":"/zokyo-tutorials/tutorial-58-the-risk-of-infinite-approvals-and-arbitrary-contract-calls","siteSpaceId":"sitesp_qsJ5X","icon":"thumbs-up"},{"id":"VrRmatylTdiUK1y36kvH","title":"Exploiting Infinite Approvals and Arbitrary Contract Calls","pathname":"/zokyo-tutorials/tutorial-58-the-risk-of-infinite-approvals-and-arbitrary-contract-calls/exploiting-infinite-approvals-and-arbitrary-contract-calls","siteSpaceId":"sitesp_qsJ5X","emoji":"1faa3","breadcrumbs":[{"label":"Tutorial 58: The Risk of Infinite Approvals and Arbitrary Contract Calls","icon":"thumbs-up"}]},{"id":"FT6ZJ4cLK9reyvw10sU6","title":"Tutorial 59: Low-Level Calls in Solidity Returning True for Non-Existent Contracts","pathname":"/zokyo-tutorials/tutorial-59-low-level-calls-in-solidity-returning-true-for-non-existent-contracts","siteSpaceId":"sitesp_qsJ5X","icon":"phone-flip"},{"id":"snmnlndQ6fUqCgMWi1VD","title":"Low-Level Calls Returning True for Non-Existent Contracts","pathname":"/zokyo-tutorials/tutorial-59-low-level-calls-in-solidity-returning-true-for-non-existent-contracts/low-level-calls-returning-true-for-non-existent-contracts","siteSpaceId":"sitesp_qsJ5X","icon":"check","breadcrumbs":[{"label":"Tutorial 59: Low-Level Calls in Solidity Returning True for Non-Existent Contracts","icon":"phone-flip"}]},{"id":"pCR3Narer9TA0oGjudUA","title":"Tutorial 60: The Impact of PUSH0 and the Shanghai Hardfork on Cross-Chain Deployments > 0.8.20","pathname":"/zokyo-tutorials/tutorial-60-the-impact-of-push0-and-the-shanghai-hardfork-on-cross-chain-deployments-greater-than-0.","siteSpaceId":"sitesp_qsJ5X","emoji":"0030-20e3"},{"id":"wtTeMZldQpXrXQMdLMsl","title":"PUSH0 and Cross-Chain Compatibility Challenges","pathname":"/zokyo-tutorials/tutorial-60-the-impact-of-push0-and-the-shanghai-hardfork-on-cross-chain-deployments-greater-than-0./push0-and-cross-chain-compatibility-challenges","siteSpaceId":"sitesp_qsJ5X","icon":"check","breadcrumbs":[{"label":"Tutorial 60: The Impact of PUSH0 and the Shanghai Hardfork on Cross-Chain Deployments > 0.8.20","emoji":"0030-20e3"}]},{"id":"kbqxWzz7KQeMpk737WWz","title":"Tutorial 61: Vyper Vulnerable Versions","pathname":"/zokyo-tutorials/tutorial-61-vyper-vulnerable-versions","siteSpaceId":"sitesp_qsJ5X","emoji":"1f40d"},{"id":"7CTvbVlCPiLALTyfkS5r","title":"Vyper and the EVM","pathname":"/zokyo-tutorials/tutorial-61-vyper-vulnerable-versions/vyper-and-the-evm","siteSpaceId":"sitesp_qsJ5X","icon":"snake","breadcrumbs":[{"label":"Tutorial 61: Vyper Vulnerable Versions","emoji":"1f40d"}]},{"id":"8NbYQeRRYUGBo2SUF7XY","title":"Tutorial 62: Typos in Smart Contracts — The Silent Threat Leading to Interface Mismatch","pathname":"/zokyo-tutorials/tutorial-62-typos-in-smart-contracts-the-silent-threat-leading-to-interface-mismatch","siteSpaceId":"sitesp_qsJ5X","emoji":"2328"},{"id":"PNY8GTCji3HIgJttdy8q","title":"Vyper and the EVM","pathname":"/zokyo-tutorials/tutorial-62-typos-in-smart-contracts-the-silent-threat-leading-to-interface-mismatch/vyper-and-the-evm","siteSpaceId":"sitesp_qsJ5X","icon":"snake","breadcrumbs":[{"label":"Tutorial 62: Typos in Smart Contracts — The Silent Threat Leading to Interface Mismatch","emoji":"2328"}]},{"id":"D3w37v9XmzbUmeSYEUKi","title":"Tutorial 63: Balance Check Using ==","pathname":"/zokyo-tutorials/tutorial-63-balance-check-using","siteSpaceId":"sitesp_qsJ5X","emoji":"2601"},{"id":"UqBGg7yslc5ckf9PX5il","title":"The Vulnerability: == Balance Check","pathname":"/zokyo-tutorials/tutorial-63-balance-check-using/the-vulnerability-balance-check","siteSpaceId":"sitesp_qsJ5X","icon":"circle-chevron-right","breadcrumbs":[{"label":"Tutorial 63: Balance Check Using ==","emoji":"2601"}]},{"id":"slUeCNLPz8josDIXv6OJ","title":"Tutorial 64: Equal Royalties for Unequal NFTs","pathname":"/zokyo-tutorials/tutorial-64-equal-royalties-for-unequal-nfts","siteSpaceId":"sitesp_qsJ5X","emoji":"1f48d"},{"id":"tTUoFKdEPRugtQGoROLB","title":"Understanding the Problem: Equal Royalties for Unequal NFTs","pathname":"/zokyo-tutorials/tutorial-64-equal-royalties-for-unequal-nfts/understanding-the-problem-equal-royalties-for-unequal-nfts","siteSpaceId":"sitesp_qsJ5X","icon":"transporter-7","breadcrumbs":[{"label":"Tutorial 64: Equal Royalties for Unequal NFTs","emoji":"1f48d"}]},{"id":"NibmELXqSxWisWzd2wFe","title":"Tutorial 65: ERC721 and NFTs","pathname":"/zokyo-tutorials/tutorial-65-erc721-and-nfts","siteSpaceId":"sitesp_qsJ5X","emoji":"1f5bc"},{"id":"AXW45ZpwEypSoCc2XLVx","title":"The Risk of Using transferFrom Instead of safeTransferFrom in ERC721 Projects","pathname":"/zokyo-tutorials/tutorial-65-erc721-and-nfts/the-risk-of-using-transferfrom-instead-of-safetransferfrom-in-erc721-projects","siteSpaceId":"sitesp_qsJ5X","icon":"file-shield","breadcrumbs":[{"label":"Tutorial 65: ERC721 and NFTs","emoji":"1f5bc"}]},{"id":"qH9MH7eIZWyRa7M2CcIi","title":"Why _safeMint Should Be Used Instead of _mint in ERC721 Projects","pathname":"/zokyo-tutorials/tutorial-65-erc721-and-nfts/why-_safemint-should-be-used-instead-of-_mint-in-erc721-projects","siteSpaceId":"sitesp_qsJ5X","emoji":"2744","breadcrumbs":[{"label":"Tutorial 65: ERC721 and NFTs","emoji":"1f5bc"}]},{"id":"bSI6894DVoT3soT9Dui9","title":"The Importance of Validating Token Types in Smart Contracts","pathname":"/zokyo-tutorials/tutorial-65-erc721-and-nfts/the-importance-of-validating-token-types-in-smart-contracts","siteSpaceId":"sitesp_qsJ5X","icon":"check","breadcrumbs":[{"label":"Tutorial 65: ERC721 and NFTs","emoji":"1f5bc"}]},{"id":"27OXbHTBZveTzxpvDdtJ","title":"Implementing ERC721TokenReceiver to Handle ERC721 Safe Transfers","pathname":"/zokyo-tutorials/tutorial-65-erc721-and-nfts/implementing-erc721tokenreceiver-to-handle-erc721-safe-transfers","siteSpaceId":"sitesp_qsJ5X","emoji":"1f4ec","breadcrumbs":[{"label":"Tutorial 65: ERC721 and NFTs","emoji":"1f5bc"}]},{"id":"BC9JxOnkAGzh7UdHdr8h","title":"NFT Implementation Deviating from ERC721 Standard in Transfer Functions","pathname":"/zokyo-tutorials/tutorial-65-erc721-and-nfts/nft-implementation-deviating-from-erc721-standard-in-transfer-functions","siteSpaceId":"sitesp_qsJ5X","icon":"person-from-portal","breadcrumbs":[{"label":"Tutorial 65: ERC721 and NFTs","emoji":"1f5bc"}]},{"id":"L9rBQY0PmBIbVGVoQcYZ","title":"NFT Approval Persistence after Transfer","pathname":"/zokyo-tutorials/tutorial-65-erc721-and-nfts/nft-approval-persistence-after-transfer","siteSpaceId":"sitesp_qsJ5X","icon":"stamp","breadcrumbs":[{"label":"Tutorial 65: ERC721 and NFTs","emoji":"1f5bc"}]},{"id":"c6eigAfw1NxuyCLxQFQ3","title":"Gameable NFT Launches through Pseudo-Randomness","pathname":"/zokyo-tutorials/tutorial-65-erc721-and-nfts/gameable-nft-launches-through-pseudo-randomness","siteSpaceId":"sitesp_qsJ5X","emoji":"1f3ae","breadcrumbs":[{"label":"Tutorial 65: ERC721 and NFTs","emoji":"1f5bc"}]},{"id":"WX0NSmL4r7xtVc6DQUCK","title":"Protecting Buyers from Losing Funds Due to Claimed NFT Rewards on Secondary Markets","pathname":"/zokyo-tutorials/tutorial-65-erc721-and-nfts/protecting-buyers-from-losing-funds-due-to-claimed-nft-rewards-on-secondary-markets","siteSpaceId":"sitesp_qsJ5X","emoji":"0032-20e3","breadcrumbs":[{"label":"Tutorial 65: ERC721 and NFTs","emoji":"1f5bc"}]},{"id":"JbLRdaFeBlZMZYeN6Lrc","title":"Preventing Reentrancy When Using SafeERC721","pathname":"/zokyo-tutorials/tutorial-65-erc721-and-nfts/preventing-reentrancy-when-using-safeerc721","siteSpaceId":"sitesp_qsJ5X","emoji":"267b","breadcrumbs":[{"label":"Tutorial 65: ERC721 and NFTs","emoji":"1f5bc"}]},{"id":"YVdxl3YRtjkEqjtfEWxN","title":"Preventing Re-use of EIP-712 Signatures in NFT Private Sales","pathname":"/zokyo-tutorials/tutorial-65-erc721-and-nfts/preventing-re-use-of-eip-712-signatures-in-nft-private-sales","siteSpaceId":"sitesp_qsJ5X","emoji":"1f58a","breadcrumbs":[{"label":"Tutorial 65: ERC721 and NFTs","emoji":"1f5bc"}]},{"id":"ayyidOPQ0i9QchaDsSlJ","title":"Tutorial 66: Vulnerability Arising from NFTs Supporting Both ERC721 and ERC1155 Standards","pathname":"/zokyo-tutorials/tutorial-66-vulnerability-arising-from-nfts-supporting-both-erc721-and-erc1155-standards","siteSpaceId":"sitesp_qsJ5X","emoji":"0032-20e3"},{"id":"uBVm38OkcfkqG1kJcRHH","title":"Tutorial 67: ERC1155 Vulnerabilities","pathname":"/zokyo-tutorials/tutorial-67-erc1155-vulnerabilities","siteSpaceId":"sitesp_qsJ5X","emoji":"1f4f7"},{"id":"fKQMs7FLjwG3ac6iiqcN","title":"Preventing Reentrancy in OpenZeppelin's SafeERC1155","pathname":"/zokyo-tutorials/tutorial-67-erc1155-vulnerabilities/preventing-reentrancy-in-openzeppelins-safeerc1155","siteSpaceId":"sitesp_qsJ5X","emoji":"267b","breadcrumbs":[{"label":"Tutorial 67: ERC1155 Vulnerabilities","emoji":"1f4f7"}]},{"id":"rYSfj2RRUB38ab3kppLk","title":"Vulnerabilities in OpenZeppelin's ERC1155Supply Contract","pathname":"/zokyo-tutorials/tutorial-67-erc1155-vulnerabilities/vulnerabilities-in-openzeppelins-erc1155supply-contract","siteSpaceId":"sitesp_qsJ5X","emoji":"1f6eb","breadcrumbs":[{"label":"Tutorial 67: ERC1155 Vulnerabilities","emoji":"1f4f7"}]},{"id":"KHQPpqVSJM7NgHR8xTog","title":"Understanding Incorrect Token Owner Enumeration in ERC1155Enumerable","pathname":"/zokyo-tutorials/tutorial-67-erc1155-vulnerabilities/understanding-incorrect-token-owner-enumeration-in-erc1155enumerable","siteSpaceId":"sitesp_qsJ5X","icon":"tally-4","breadcrumbs":[{"label":"Tutorial 67: ERC1155 Vulnerabilities","emoji":"1f4f7"}]},{"id":"NTe6NoRQiS6oxP6al56Q","title":"Avoiding Breaking ERC1155 Composability with Improper safeTransferFrom Implementation","pathname":"/zokyo-tutorials/tutorial-67-erc1155-vulnerabilities/avoiding-breaking-erc1155-composability-with-improper-safetransferfrom-implementation","siteSpaceId":"sitesp_qsJ5X","icon":"wine-glass-crack","breadcrumbs":[{"label":"Tutorial 67: ERC1155 Vulnerabilities","emoji":"1f4f7"}]},{"id":"gpAHiOHKKgzLu0UONOse","title":"Ensuring Compatibility with EIP-2981 in ERC1155 Contracts","pathname":"/zokyo-tutorials/tutorial-67-erc1155-vulnerabilities/ensuring-compatibility-with-eip-2981-in-erc1155-contracts","siteSpaceId":"sitesp_qsJ5X","emoji":"1f48d","breadcrumbs":[{"label":"Tutorial 67: ERC1155 Vulnerabilities","emoji":"1f4f7"}]},{"id":"8gYeaipsyidyBn7W1xBf","title":"Informational Vulnerabilities","pathname":"/zokyo-tutorials/informational-vulnerabilities","siteSpaceId":"sitesp_qsJ5X","emoji":"1fa9f"},{"id":"oF4WMtGsFHXAmip6xvCu","title":"Gas Efficiency","pathname":"/zokyo-tutorials/gas-efficiency","siteSpaceId":"sitesp_qsJ5X","emoji":"26fd"},{"id":"GB860r7uRX311SRhdbzG","title":"Automation Tools","pathname":"/zokyo-tutorials/automation-tools","siteSpaceId":"sitesp_qsJ5X","emoji":"1f4bb"},{"id":"S3y5xcPJoyQYi1VQhlFZ","title":"Out Of Gas (Coming Soon)","pathname":"/zokyo-tutorials/out-of-gas-coming-soon","siteSpaceId":"sitesp_qsJ5X","emoji":"1f51c"},{"id":"zs5ljeAnXGfs4f0L1OJ1","title":"DEX Aggregators (Coming Soon)","pathname":"/zokyo-tutorials/dex-aggregators-coming-soon","siteSpaceId":"sitesp_qsJ5X","emoji":"1f51c"},{"id":"NeOMRwIDqoJT6NdKbzNe","title":"Bribes (Coming Soon)","pathname":"/zokyo-tutorials/bribes-coming-soon","siteSpaceId":"sitesp_qsJ5X","emoji":"1f51c"},{"id":"NUIGfcVVMG8Rx1F2d58g","title":"Understanding Compiled Bytecode (coming soon)","pathname":"/zokyo-tutorials/understanding-compiled-bytecode-coming-soon","siteSpaceId":"sitesp_qsJ5X","emoji":"1f51c"},{"id":"1fqDaowCCupTZRdW120K","title":"Deployment Mistakes (coming soon)","pathname":"/zokyo-tutorials/deployment-mistakes-coming-soon","siteSpaceId":"sitesp_qsJ5X","emoji":"1f51c","description":""},{"id":"OijGAOA0LKBeKEOfTBKi","title":"Optimistic Roll-ups (coming soon)","pathname":"/zokyo-tutorials/optimistic-roll-ups-coming-soon","siteSpaceId":"sitesp_qsJ5X","emoji":"1f51c","description":""},{"id":"BdVTTwHs6Ks9FRSijZXX","title":"Typos (coming soon)","pathname":"/zokyo-tutorials/typos-coming-soon","siteSpaceId":"sitesp_qsJ5X","emoji":"1f51c","description":""},{"id":"JOnsr6LGW7SWwgQOI4Md","title":"Try-Catch (coming soon)","pathname":"/zokyo-tutorials/try-catch-coming-soon","siteSpaceId":"sitesp_qsJ5X","emoji":"1f51c","description":""},{"id":"VBrU0GQSkpZC91wsFEzK","title":"NFT Market-place (coming soon)","pathname":"/zokyo-tutorials/nft-market-place-coming-soon","siteSpaceId":"sitesp_qsJ5X","emoji":"1f51c","description":""},{"id":"VswyC8QETlhgsSuTEDB1","title":"Upgrade-able Contracts (coming soon)","pathname":"/zokyo-tutorials/upgrade-able-contracts-coming-soon","siteSpaceId":"sitesp_qsJ5X","emoji":"1f51c","description":""}]}