Uplift.

CertiKFiles named in the report

CertiK reviewed Uplift (Uplift.) on 7 Oct 2022: 8 findings, 0 critical; 4 marked fixed, 2 acknowledged, 2 open.

No open critical findings
Open the reportOpen Uplift’s security record

Report hosted on skynet.certik.com.

Trustblock does not review code.

Findings8

Statuses are the security firm’s own, from its report.

SeverityOpenAcknowledgedFixed
Critical000
High200
Medium001
Low023
LowCheck Effect Interaction Pattern ViolatedAcknowledged

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; ```

LowPotential Reentrancy Attack (Events)Acknowledged

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); ```

Contracts in scope

No deployed address is recorded for this audit.

The report names a repository or files. Open the report to see its scope.

Repository and files the report names (20)

  • contracts/interfaces/IReferrer.sol
  • contracts/vesting/BaseRefundVesting.sol
  • contracts/vesting/chains/OneChainRefundVesting.sol
  • contracts/BaseRoleChecker.sol
  • contracts/libraries/DatesVestingLibrary.sol
  • contracts/interfaces/IPool.sol
  • contracts/refundRequester/BaseRefundRequester.sol
  • contracts/interfaces/IRefundIDO.sol
  • contracts/vesting/types/OneChainDatesRefundVesting.sol
  • contracts/libraries/UQ112x112.sol
  • contracts/interfaces/IBaseRefundVesting.sol
  • contracts/refundClaimer/BaseRefundClaimer.sol
  • contracts/libraries/BP.sol
  • contracts/interfaces/IOneChainRefundVesting.sol
  • contracts/interfaces/IBaseRefundClaimer.sol
  • contracts/refundClaimer/OneChainRefundClaimer.sol
  • contracts/refundRequester/OneChainRefundRequester.sol
  • contracts/interfaces/IOneChainRefundClaimer.sol
  • contracts/interfaces/IBaseRefundRequester.sol
  • contracts/Registry.sol

Part of Uplift’s security record

Uplift
Audits1 audit by 1 firmLast audit Oct 2022, by CertiK.
Critical findingsNo open critical findingsIn 1 report.
Open Uplift’s security record

Security firm

CertiK

1,044 projects reviewed · 1,375 reports · latest May 2025

See CertiK’s audits

Something 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