GitHub Hardhat / Foundry Auto-Fetch
Import & Scan Multi-File GitHub Repository
74Grade C+
Multi-Contract Audit Summary
4 files inspected • 415 lines of Solidity code • 2 issues flagged
Repository Tree
main contracts/
contracts/Vault.sol(185 lines)
Issues Identified
1// SPDX-License-Identifier: MIT2pragma solidity ^0.8.20;34import "@openzeppelin/contracts/access/Ownable.sol";5import "@openzeppelin/contracts/token/ERC20/IERC20.sol";6import "./interfaces/IPriceOracle.sol";78contract Vault is Ownable {9 mapping(address => uint256) public userBalances;10 IPriceOracle public priceOracle;11 IERC20 public collateralToken;1213 event LiquidityDeposited(address indexed user, uint256 amount);14 event LiquidityWithdrawn(address indexed user, uint256 amount);1516 constructor(address _collateralToken, address _priceOracle) Ownable(msg.sender) {17 collateralToken = IERC20(_collateralToken);18 priceOracle = IPriceOracle(_priceOracle);19 }2021 function depositCollateral(uint256 amount) external {22 require(amount > 0, "Zero deposit");23 collateralToken.transferFrom(msg.sender, address(this), amount);24 userBalances[msg.sender] += amount;25 emit LiquidityDeposited(msg.sender, amount);26 }2728 // [CRITICAL] Reentrancy vulnerability: External call occurs before state balance is decremented29 function withdrawLiquidity(uint256 amount) external {30 require(userBalances[msg.sender] >= amount, "Insufficient collateral");3132 (bool success, ) = msg.sender.call{value: amount}("");33 require(success, "Transfer execution failed");3435 userBalances[msg.sender] -= amount;36 emit LiquidityWithdrawn(msg.sender, amount);37 }38}