saviswap

CertiKFiles named in the report

CertiK reviewed SaviSwap on 11 Aug 2022: 19 findings, 0 critical; 8 marked fixed, 11 open.

No open critical findings
Open SaviSwap’s security record

The original report was removed from its address (seen 19 Oct 2026).

Trustblock does not review code.

Findings19

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

SeverityOpenAcknowledgedFixed
Critical000
High600
Medium204
Low304
HighCentralization Related RisksOpen

To bridge the gap in trust between the administrators need to express a sincere attitude regarding the consideration of the administrator teamʼs anonymity. The `onlyCommittee` of `Committee` has the responsibility to notify users about the following capabilities: - set `newPerformer` through `setPerformBySigs()` - set `newFeeTo` through `setFeeToBySigs()` - set `newFeeRate` through `setFeeRateBySigs()` - set `newOwner` through `transferContractOwnerBySigs()` - call function with `bytecode` through `functionCallBySigs()` - add new member through `addCommiteeMember()` - remove member through `removeCommiteeMember()` - initial selector mapping through `initSelectorMap()` - set `minimumSigs` through `setMinimumSigs()` - upgrade committee contract through `upgradeToBySigs()` The `Owner` of `Performer` has the responsibility to notify users about the following capabilities: - set `swap` through `setSwap()`

HighCentralization Risks in AdapterManage.solOpen

In the contract `AdapterManage` the role `_owner` has authority over the functions shown in the diagram below. Any compromise to the `_owner` account may allow the hacker to take advantage of this authority: - add the router to the router group through `registerAdapter()` - remove the router from the router group through `removeAdapter()` ![](https://accelerator-tasks-prod.acc.corp.certik.com/46553611404746aa9d99eaa748f6af3e/diagrams/centralization_AdapterManage-AdapterManage-_owner.svg)

HighCentralization Risks in FeeTo.solOpen

In the contract `FeeTo` the role `_owner` has authority over the functions shown in the diagram below. Any compromise to the `_owner` account may allow the hacker to take advantage of this authority: - set `feeTo` through `setFeeTo()` - set `feeRate` through `setFeeRate()` - withdraw ETH/BNB through `syncEth()` - withdraw tokens through `syncToken()` ![](https://accelerator-tasks-prod.acc.corp.certik.com/46553611404746aa9d99eaa748f6af3e/diagrams/centralization_FeeTo-FeeTo-_owner.svg)

HighCentralization Risks in MultiSig.solOpen

In the contract `MultiSig` the role `_owner` has authority over the functions shown in the diagram below. Any compromise to the `_owner` account may allow the hacker to take advantage of this authority: - add member through `addCommiteeMember()` - remove member through `removeCommiteeMember()` - set `sigsMin` through `setSigMin()` - authorize upgrade through `_authorizeUpgrade()` ![](https://accelerator-tasks-prod.acc.corp.certik.com/46553611404746aa9d99eaa748f6af3e/diagrams/centralization_MultiSig-MultiSig-_owner.svg)

HighCentralization Risks in Swap.solOpen

In the contract `Swap` the role `_owner` has authority over the functions shown in the diagram below. Any compromise to the `_owner` account may allow the hacker to take advantage of this authority: - set `performer` through `setPerformer()` - pause the contract through `pause()` - unpause the contract through `unpause()` - authorize upgrade through `_authorizeUpgrade()` ![](https://accelerator-tasks-prod.acc.corp.certik.com/46553611404746aa9d99eaa748f6af3e/diagrams/centralization_Swap-Swap-_owner.svg)

HighCentralized Control of Contract UpgradeOpen

The contracts `Swap` and `MultiSig` are upgradeable contracts, the owner can upgrade the contract without the community's commitment. If an attacker compromises the account, he can change the implementation of the contract and drain tokens from the contract.

MediumIncompatibility With Deflationary TokensOpen

When transferring standard ERC20 deflationary tokens, the input amount may not be equal to the received amount due to the charged transaction fee.

MediumUnrestricted Input AddressOpen

The input address is not checked, and if the input address is malicious, an attacker can do something harmful, such as re-enter the function.

LowPotential Front-Running RiskOpen

Malicious hackers may observe the pending transaction which will execute the `initialize` function, and launch a similar transaction but with the hacker's address of `owner` and gain the ownership of the contract.

LowThird Party DependenciesOpen

The contract is serving as the underlying entity to interact with third-party protocols. The scope of the audit would treat those 3rd party entities as black boxes and assume their functional correctness. However, in the real world, 3rd parties may be compromised and lead to assets being lost or stolen.

Show 1 more
LowUnchecked Low-level CallOpen

With low-level `call` functions, the input bytecode is not checked, which can lead to unpredictable risks.

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 (17)

  • SaviProxy.sol
  • Interface/IWeth.sol
  • Committee.sol
  • Libraries/TransferHelper.sol
  • Interface/AdapterManageInterface.sol
  • Performer.sol
  • Libraries/AdapterSet.sol
  • Interface/FeeToInterface.sol
  • Interface/PerformerInterface.sol
  • Swap.sol
  • Libraries/CommitteeSet.sol
  • Interface/OwnerInterface.sol
  • FeeTo.sol
  • Interface/SwapInterface.sol
  • Interface/CommitteeInterface.sol
  • AdapterManage.sol
  • Libraries/Constants.sol

Part of SaviSwap’s security record

SaviSwap
Audits1 audit by 1 firmLast audit Aug 2022, by CertiK.
Critical findingsNo open critical findingsIn 1 report.
Open SaviSwap’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