CertiK reviewed Uplift (Uplift.) on 7 Oct 2022: 8 findings, 0 critical; 4 marked fixed, 2 acknowledged, 2 open.
Report hosted on skynet.certik.com.
Trustblock does not review code.
Statuses are the security firm’s own, from its report.
| Severity | Open | Acknowledged | Fixed |
|---|---|---|---|
| Critical | 0 | 0 | 0 |
| High | 2 | 0 | 0 |
| Medium | 0 | 0 | 1 |
| Low | 0 | 2 | 3 |
A reentrancy attack can occur when the contract creates a function that makes an external call to another untrusted contract before resolving any effects. If the attacker can control the untrusted contract, they can make a recursive call back to the original function, repeating interactions that would have otherwise not run after the external call resolved the effects. ### External call(s) ```solidity=109 IERC20(token).safeTransfer(account_, amountInBuyToken); ``` ### State variables written after the call(s) ```solidity=110 refundClaimedInBuyToken[token][identifier][account_] += amountInBuyToken; ``` --- ### External call(s) ```solidity=55 IERC20(token_).safeTransfer(msg.sender, availableForWithdrawInIDOTokens); ``` ### State variables written after the call(s) ```solidity=56 claimed[token_][identifier_][msg.sender] += availableForWithdrawInIDOTokens; ```
A reentrancy attack can occur when the contract creates a function that makes an external call to another untrusted contract before resolving any effects. If the attacker can control the untrusted contract, they can make a recursive call back to the original function, repeating interactions that would have otherwise not run after the external call resolved the effects. ### External call(s) ```solidity=109 IERC20(token).safeTransfer(account_, amountInBuyToken); ``` ### Events emitted after the call(s) ```solidity=112 emit ClaimRefund(msg.sender, token, identifier, account_, amountInBuyToken); ``` --- ### External call(s) ```solidity=91 uint256 refundAmountInToken = _calculateRefundAmountInToken( token_, identifier_, msg.sender, refundInToken_, percentInBP, KPIIndex_ ); ``` * This function call executes the following external call(s). * In `SafeERC20._callOptionalReturn`, * `returndata = address(token).functionCall(data,SafeERC20: low-level call failed)` * In `BaseRefundRequester._handleBroughtTokens`, * `IERC20(token_).safeTransferFrom(msg.sender,projectFundsHolder_,refundInToken_)` * In `Address.functionCallWithValue`, * `(success,returndata) = target.call{value: value}(data)` * This call sends Ether. ### Events emitted after the call(s) ```solidity=120 emit RequestRefund(token_, identifier_, msg.sender, refundAmountInToken, refundInToken_, KPIIndex_); ``` --- ### External call(s) ```solidity=55 IERC20(token_).safeTransfer(msg.sender, availableForWithdrawInIDOTokens); ``` ### Events emitted after the call(s) ```solidity=57 emit Withdraw(token_, identifier_, msg.sender, availableForWithdrawInIDOTokens); ```
The report names a repository or files. Open the report to see its scope.
Repository and files the report names (20)
1,044 projects reviewed · 1,375 reports · latest May 2025
See CertiK’s auditsSomething wrong on this page? A missing report, a wrong date, a finding that was fixed since. Tell us and we check it against its source.
Tell us