Logic errors, also known as business logic vulnerabilities, are subtle flaws in smart contracts. They occur when the contract’s code does not match its intended behavior. These errors are elusive, hiding within the contract’s logic and waiting to be discovered.
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract LendingPlatform {
mapping(address => uint256) public userBalances;
uint256 public totalLendingPool;
function deposit() public payable {
userBalances[msg.sender] += msg.value;
totalLendingPool += msg.value;
}
function withdraw(uint256 amount) public {
require(userBalances[msg.sender] >= amount, "Insufficient balance");
// Faulty calculation: Incorrectly reducing the user's balance without updating the total lending pool
userBalances[msg.sender] -= amount;
// This should update the total lending pool, but it's omitted here.
payable(msg.sender).transfer(amount);
}
}