# 1/05 **Spent**: Around 3 hours **What did I do?** Read about the protocol and glanced over the code for a bit **Any Findings?** - one interesting thing (possible DoS if token decimals are < USDC_DECIMALS) but it's not used within the contract. Still a bug to fix if it's going to be used. - a bunch of informational stuff all around the codebase (random natspec from functions that don't exist, natspec mismatches that differ from the actual functionality, missing OZ's Safe functions alternatives...) - a bug in a test file inside the function ```_randomMinter()``` this could be interesting to explore further **How do I feel?** Pretty good, not really overwhelmed it seems easy but I haven't looked at the main functionality besides reading the theory. **What to do next?** I have no clue. I should keep exploring. # 2/05 **Spent**: around 7 hours **What did I do?** - Spent most of the time wandering around the contract I don't recall what I really did but I do understand a bit more about the protocol. I should probably read the concept paper again. - I installed an extension that's going to help me map some notes with visible colors instead of writing comments. **Any Findings?** - I think I found the first issue which is probably a medium finding but let's see: it's a divide by zero that causes a DoS if ITokenAdapter.price() returns 0 due to oracle failure/misconfiguration. It affects most of the protocol's functions because they all use the faulty function - more informational stuff and nothing special throughout the contracts **How do I feel?** A bit overwhelmed but it's getting easier to understand the overall idea of the project and the main file. The maths part is still a bit of an enigma to be honest but I have the study material ready for it. **What to do next?** I guess that I should explore the main functionality that's related to the key areas of focus. For example the withdraw function on ```AlchemixV3.sol``` uses a lot of the new functionality so I should probably battletest it. Also, i could read the insights I got from the first read and check if the miswritten test that has ```_randomMinter()``` caused any bugs because the developers thought everything was right. **Insights** I noticed that most of the things I'm finding are related to bad written code and not really logic errors which are the ones that are important. I should probably get going with that as well but for that I need to understand more of the protocol. # 3/05 **Spent**: around 7 hours **What did I do?** - Spent a lot of time testing StakingGraph.sol and the Transmuter.sol. **Any Findings?** - setTransmuted needs a check for 0 otherwise it can break the transmuter completely until something changes it. **How do I feel?** Very overwhelmed specially cause a lot of the things I found were out of scope but i‘m happy that I got something. **What to do next?** Keep exploring and reading the previous reports on Alchemix, will eventually find something. **Insights** (same as the last day) I noticed that most of the things I'm finding are related to bad written code and not really logic errors which are the ones that are important. I should probably get going with that as well but for that I need to understand more of the protocol. I need to read more of the essential stuff. # 4/05 and 5/05 **Spent**: around 2 hour combined **What did I do?** - I spent some time solidifying my knowledge about the protocol. I feel like I can find more stuff on Tuesday. **Any Findings?** - setTransmuted needs a check for 0 otherwise it can break the transmuter completely until something changes it. **How do I feel?** Very overwhelmed specially cause a lot of the things I found were out of scope but i‘m happy that I got something. **What to do next?** Keep exploring and reading the previous reports on Alchemix, will eventually find something. **Insights** (same as the last day) I noticed that most of the things I'm finding are related to bad written code and not really logic errors which are the ones that are important. I should probably get going with that as well but for that I need to understand more of the protocol. I need to read more of the essential stuff. # 6/05 **Spent**: around 4 hours **What did I do?** - Explored the burn() function in alchemistV3.sol and everything related to it which led to find a bunch of bugs. **Any Findings?** - Protocol fees deducted but not transferred to the protocol wallet in AlchemistV3:burn() #109 - Incorrect fee amount transferred to the protocol wallet in AlchemistV3.repay()#111 **How do I feel?** Very good actually I think these findings are valid and they're not just simple logic errors it's actually critical stuff. Still a long way to go now, i think i got a little boost of confidence from these. **What to do next?** Keep exploring and reading the previous reports on Alchemix, will eventually find more issues. Tommorrow I'll analyze in depth what these functions are doing. **Insights** That was a good day and I didn't spend a lot of time. I think it was the rest days that led to this. I came a bit refreshed took a look and spotted something i didn't find for a couple of days. But I know there's still more bugs in the contracts let's hope that these are not invalid. # 7/05, 8/05 **Spent**: around 9 hours **What did I do?** - Spent the whole morning auditing both days. **Any Findings?** - Desynchronization of a variable and missing freeCollateral change in _sync()_ **How do I feel?** I feel tired and slowly starting to be out of ideas but I'm going to continue. **What to do next?** Keep exploring and reading the previous reports on Alchemix, will eventually find something more. # 9/05 **Spent**: around 4 hours **Notes**: I've looked at a bunch of functions and interactions witthin the protocol including: - src/AlchemistV3.sol where i found -> protocol fees deducted but not transferred to the protocol wallet in AlchemistV3:burn(); Incorrect fee amount transferred to the protocol wallet in AlchemistV3.repay(); Desynchronization on deposit() for existing positions enables incorrect accounting; sync() fails to unlock collateral after a redemption, leaving users unable to withdraw collateral. There's still about 6 days left to the end of the protocol and I honestly have no idea what to check next; Until now I've had good progress but I want to find more but it's getting much harder. I know that there're more bugs in here. # 10/05 # 11/05 **Spent**: around 2 hours **Notes**: Started to write a couple of invariant tests. # 12/05 # 13/05 **Notes**: Lumbar flare-up debuffed me. Nothing was done # 14/05 # 15/05