{"id":19830780,"url":"https://github.com/crytic/echidna-streaming-series","last_synced_at":"2025-05-01T15:30:58.651Z","repository":{"id":63671458,"uuid":"526276793","full_name":"crytic/echidna-streaming-series","owner":"crytic","description":"A 6-part series on how to use Echidna on real-world codebases","archived":true,"fork":false,"pushed_at":"2023-06-29T21:19:31.000Z","size":19572,"stargazers_count":106,"open_issues_count":6,"forks_count":40,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-30T05:32:16.442Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Solidity","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/crytic.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-08-18T15:51:11.000Z","updated_at":"2025-03-14T03:10:45.000Z","dependencies_parsed_at":"2024-11-12T11:39:46.140Z","dependency_job_id":null,"html_url":"https://github.com/crytic/echidna-streaming-series","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/crytic%2Fechidna-streaming-series","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/crytic%2Fechidna-streaming-series/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/crytic%2Fechidna-streaming-series/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/crytic%2Fechidna-streaming-series/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/crytic","download_url":"https://codeload.github.com/crytic/echidna-streaming-series/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251898589,"owners_count":21661847,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-12T11:25:23.151Z","updated_at":"2025-05-01T15:30:53.639Z","avatar_url":"https://github.com/crytic.png","language":"Solidity","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Echidna Streaming Workshop\n\nWelcome to the 6-part series on how to use Echidna to fuzz like a pro! This repository has 6 folders, each of which maps to a specific workshop in the series.\n\n\nTo learn more about how these workshops will work, please read this [blogpost](https://blog.trailofbits.com/2022/11/14/livestream-workshop-fuzzing-echidna-slither/).\n\n\nNote that each workshop will be live streamed on Trail of Bits' [Twitch channel](https://www.twitch.tv/trailofbits) and [YouTube channel](https://www.youtube.com/user/trailofbits) at **12 PM EST** on the following days:\n\n## Beginner\n\n[Part 1](part1/README.md): The Basics (streaming on **Nov 16, 2022**)\n\n[Part 2](part2/README.md): Fuzzing arithmetics and functions (streaming on **Nov 22, 2022**)\n\n## Intermediate\n\n[Part 3](part3/README.md): Introduction to AMM’s invariants (streaming on **Nov 30, 2022**)\n\n[Part 4](part4/README.md): AMM fuzzing (streaming on **Dec 6, 2022**)\n\n## Advanced\n\n[Part 5](part5/README.md): Introduction to advanced DeFi’s invariants (streaming on **Dec 14, 2022**)\n\n[Part 6](part6/README.md): Advanced DeFi invariants (streaming on **Dec 21, 2022**)\n\n### Additional Notes\n- This repository will be migrated to the [`building-secure-contracts`](https://github.com/crytic/building-secure-contracts) repository at the end of the series. We will update\nthis README when that time comes.\n- This repository will be updated as the series continues. Thus, there might be some incomplete folders / broken links in the process.\n\n# Try your own invariants! \n\n**ABDK Math** \n- Associative property of multiplication – `(x * y) * z = x * (y * z) `\n- Distributive property of multiplication – `x * (y + z) = (x * y) + (x * z) `\n- Multiplication of inverses (using the `inv` function) – `inv(x * y) = inv(x) * inv(y)`\n- Square roots – `sqrt(x) * sqrt(x) = x`\n- Logarithms – `log2(x * y) = log2(x) * log2(y)`\n- Average `gavg()`\n- Power `pow()`\n- Natural logarithm – `ln()`\n- Exponentiation – `exp()`\n\n**Uniswap V2**\n- Path independence for swaps\n- Pool invariant always increases\n- LP tokens are minted differently based on existing pool liquidity \n- An LP provider's underlying asset balances are monotonically increasing\n- Path independence for LPs\n\n# Echidna Installation\n\n- Download [relevant binaries for your system](https://github.com/crytic/echidna/releases/tag/v2.0.4) \n- Add to PATH* (All commands in respective README documents assume `echidna-test` refers to the binary) \n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcrytic%2Fechidna-streaming-series","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcrytic%2Fechidna-streaming-series","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcrytic%2Fechidna-streaming-series/lists"}