Parex

CertiKFiles named in the report

CertiK reviewed Parex on 15 Oct 2024: 14 findings, 1 critical; 10 marked fixed, 4 acknowledged.

1 critical finding, fixed
Open the reportOpen Parex’s security record

Report hosted on skynet.certik.com.

Trustblock does not review code.

Findings14

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

SeverityOpenAcknowledgedFixed
Critical001
High014
Medium002
Low033
HighCentralization Risks in PRX-BSCToken.solAcknowledged

In the contract `BSCToken`, the role `PRX` has authority over the functions shown in the diagram below. Any compromise to the `PRX` account may allow the hacker to take advantage of this authority. - `pause()`: pause the contract - `unpause()`: unpause the contract - `blacklist()`: add a account to blacklist - `unblacklist()`: remove a account from blacklist - `unlockTokens()`: unlock the tokens - `setBridgeFee()`: set the `bridgeFee` - `setMaxAmount()`: set the `maxAmount` - `sendBridgeOwnerReward()`: withdraw the token ![](https://accelerator-tasks-prod.acc.corp.certik.com/11ef-75db-4d73d860-8768-6dcbf759f90c/diagrams/centralization_PRX-BSCToken-PRX-_owner.svg)

LowFixed Fee Deduction in `unlockTokens` FunctionAcknowledged

The `unlockTokens()` function, called by the contract owner to unlock tokens for users, deducts a fixed `bridgeFee` instead of a fee proportional to the amount of tokens being unlocked. This introduces a potential inconsistency in the amount of tokens unlocked for users, especially in cases where larger token amounts are involved. ```solidity=145 if (amount > 0) { require(amount > bridgeFee, "Amount must be greater than bridge fee"); amountToMint -= bridgeFee; // Deduct the bridge fee bridgeTotalFee += bridgeFee; // Accumulate the total fees collected } ```

LowPull-Over-Push Pattern In `transferOwnership()` FAcknowledged

The change of `_owner` by function `transferOwnership()` overrides the previously set `_owner` with the new one without guaranteeing the new `_owner` is able to actuate transactions on-chain.

LowWithout Re-Approving in `_burnFrom` FunctionAcknowledged

The `_burnFrom` function allows users to burn tokens without updating their allowance. Specifically, on line 798, the function checks the user's approved allowance but does not to reduce the allowance after execution. This allows users to repeatedly call the function without re-approving the contract. ```solidity=797 function _burnFrom(address account, uint256 amount) internal virtual { uint256 currentAllowance = allowance(account, address(this)); require(currentAllowance >= amount, "ERC20: burn amount exceeds allowance"); _burn(account, amount); } ```

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

  • PRX-BSCToken.sol

Part of Parex’s security record

Parex
Audits1 audit by 1 firmLast audit Oct 2024, by CertiK.
Critical findingsNo open critical findingsIn that report, 1 critical finding was reported. It is marked fixed by the firm that reported it.
Open Parex’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