PAW Chain security record

Arbitrum, Base, BNB Chain, Ethereum, Polygon (POS)pawchain.netGitHub

As of 3 Nov 2026, PAW Chain has 1 audit report on Trustblock, by CertiK, dated 23 Aug 2023. That report lists no open critical findings.

Critical findings
No open critical findings
In 1 report.
Open the latest report
Your label, live
Get the label for your site

Record last updated . It holds audits and findings, contracts and incidents up to Nov 2026. Trustblock does not review code.

Audits1

Newest first

AuditSecurity firmDateScopeCritical findingsReport
PAWSWAPSecurity firm: CertiKDate: Scope: Not recorded (see the report)No open critical findingsOriginal removed

Findings24

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

SeverityOpenAcknowledgedFixed
Critical000
High201
Medium003
Low4014
HighCentralization Related RisksPAWSWAP · CertiK · 23 Aug 2023Open

Base audit version: In the contracts `PAWFlexibleStaking` and `PawLPStaking`(in the file `PAWSWAP Shibaswap LP Stake` and `PAWSWAP Uniswap LP Stake`), the role `Operator` has authority over the following functions: - function ChangeMultiplier(): change the value of `APY` and `RewardMultiplier` which affect the reward rate. - function ChangeOperator(): transfer the role `ChangeOperator` to another address. - function RemoveRewardPool(): transfer all the `wPAW` tokens of the current contract to the `Operator` address. - function PauseRewards()/UnpauseRewards(): set the `RewardsPaused` flag to true/false. - function ChangePairAddress(): change the `PairContract` address. In the contract `PAWLockedStaking`, the role `_owner` has authority over the following functions: - function renounceOwnership(): transfer the role `_owner` to address(0). - function transferOwnership(): transfer the role `_owner` to another address. - function stopReward(): set the value of `APY` to 0. - function startReward(): start the reward by changing the `poolInfo[0].lastRewardTimestamp` from `21616747` to `block.timestamp`. - function massUpdatePools(): update reward variables for all pools. - function RemoveRewardPool(): transfer the `rewardToken` tokens of the current contract to the `_owner` address. - function updateApy(): set the value of `APY`. - function updateExitPenalty(): set the value of `exitPenaltyPerc`. Update version [76547e0](https://github.com/Pawkishi/PAWSWAPtoken/commit/76547e0445bacfc912f928ce7c3eac9cb4f4e4cc): In the contracts `PawFlexibleStake`, `PawSushiLPStake`, and `PawUniLPStake`, the role `owner` has authority over the following functions: - function renounceOwnership(): transfer the role `_owner` to address(0). - function transferOwnership(): transfer the role `_owner` to another address. - function emergencyRewardWithdraw(): transfer all the reward tokens `wPAWToken` in the current contract to the `owner` address. - function recoverToken(): transfer all the token assets except `PAWToken` and `wPAWToken` to the `owner` address. - function updateNewAPY()/updateRewardPerTimeStamp(): set the value of `APY`/`rewardPerTimeStamp`. - function setWPAWStakingContract(): change the address `WPAWStaking`. The function `emergencyWithdraw()` will call the function `IwPAWFlexibleStaking(WPAWStaking).forceWithdraw()` if the `user.amount` is 0. In the contract `PawLockedStake`, the role `_owner` has authority over the following functions: - function renounceOwnership(): transfer the role `_owner` to address(0). - function transferOwnership(): transfer the role `_owner` to another address. - function withdrawPenalty(): transfer the early withdrawal penalty tokens to the `_owner` address. - function emergencyRewardWithdraw(): transfer all the reward token `wPAWToken` in the current contract to the `owner` address. - function recoverToken(): transfer all the token assets except `PAWToken` and `wPAWToken` to the `owner` address. - function updateEarlyWithdrawPenalty(): set the value of `earlyWithdrawPenalty` not greater than 30%. - function updateLockingDuration(): set the value of `lockDuration`. - function updateNewAPY(): set the value of `APY`. - function setWPAWStakingContract(): change the address `WPAWStaking`. The function `emergencyWithdraw()` will call the function `IwPAWFlexibleStaking(WPAWStaking).forceWithdraw()` if the `user.amount` is 0. Any compromise to the privileged accounts may allow the hacker to take advantage of this authority.

Open the report
HighInitial Token DistributionPAWSWAP · CertiK · 23 Aug 2023Open

All PAW tokens are sent to the deployer address when deploying the contract. This could be a centralization risk as the deployer can distribute PAW tokens without obtaining the consensus of the community.

Open the report
LowSource of Reward TokenPAWSWAP · CertiK · 23 Aug 2023Open

In the linked contracts, the reward token is the `wPAW` token. The token address is `0x083Af0FB9A8982E09e43AC718aeA9773E28c7f06`, but the actual implementation is unknown. In the function `Claim()` which the users used to retrieve the reward tokens, the `wPAW` token is transferred to the retriever from the current contract. However, we do not find the code which mints or transfers the `wPAW` token to the current contract.

Open the report
LowToo Many DigitsPAWSWAP · CertiK · 23 Aug 2023Open

Literals with many digits are difficult to read and review. For example: ```solidity=41 require(amount >= 100000000000, "The minimum deposit for staking is 0.0000001 LP"); ``` --- ```solidity=149 Unclaimed = (((RewardMultiplier * Time) * CalculatePAWequivalent(Deposits[user])) / 1000000000000000); ``` --- ```solidity=155 return (((ERC20(PAW).balanceOf(PairContract)*((((1000000000000000000 * amount) / (ERC20(PairContract).totalSupply())))) / 1000000000000000000))*2); ```

Open the report
LowUnlocked Compiler VersionPAWSWAP · CertiK · 23 Aug 2023Open

The contracts have an unlocked compiler version. An unlocked compiler version in the source code of the contract permits the user to compile it at or above a particular version. This, in turn, leads to differences in the generated bytecode between compilations due to differing compiler version numbers. This can lead to ambiguity when debugging, as compiler specific bugs may occur in the codebase that would be hard to identify over a span of multiple compiler versions rather than a specific one.

Open the report
LowVariables That Could Be Declared as ImmutablePAWSWAP · CertiK · 23 Aug 2023Open

The linked variables `PAW`, `wPAW`, `lockDuration` assigned in the constructor can be declared as `immutable`. Immutable state variables can be assigned during contract creation but will remain constant throughout the lifetime of a deployed contract. A big advantage of immutable variables is that reading them is significantly cheaper than reading from regular state variables since they will not be stored in storage.

Open the report

Contracts

No deployed address is recorded for these audits.

The reports name a repository or files. Open a report to see its scope.

Show this on your site

Is this your project? Show this record on your own website. The label states what the record holds, links to this page and updates by itself. It is free and needs no sign-in.

Content

Facts

Automatic: the three strongest facts of this project’s own record (its last audit and two more), highlighted. They update with the record. Picking a fact turns Automatic off.

Fixed as
Language

Style

Layout
Theme
Accent
Corners

Format

Size
Date
Embed as
HTML
<head>
<script src="https://widget.trustblock.run/project-widget.min.js" defer></script>
</head>
<body>
<div
data-tb-project-widget
data-tb-project-slug="paw-chain"
></div>
</body>

Paste the code where the label should appear. It uses no API credit and updates by itself.

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