<div align="center">
<center>
<img src="https://avatars.githubusercontent.com/u/167952721" height="350" alt="@offbeatsecurity" style="margin-bottom: 20px;">
<h1>ZKTokenV3 Review</h1>
<h3>July 11, 2025</h3>
<p>Prepared for ZkSync</p>
<p>Conducted by:</p>
<p>Richie Humphrey (devtooligan)</p>
</center>
</div>
## About the **ZkSync ZKTokenV3 Review**
ZKTokenV3 is an upgraded governance token contract that introduces token burning functionality. The contract extends the existing ZkTokenV2 implementation with two new burning mechanisms: a public `burn` function that allows users to destroy their own tokens, and a role-gated `burnFrom` function that enables authorized addresses to burn tokens from specified accounts. This upgrade represents a minimal extension to previously audited code and OpenZeppelin base contracts.
## About **Offbeat Security**
Offbeat Security is a boutique security company providing unique security solutions for complex and novel crypto projects. Our mission is to elevate the blockchain security landscape through invention and collaboration.
## Summary & Scope
The [l2-contracts/src](https://github.com/ScopeLift/zk-governance/tree/5c18bd1c7d18f17390bc6e2fc6e5d2167a326b30/l2-contracts/src) folder was reviewed at commit [5c18bd1](https://github.com/ScopeLift/zk-governance/tree/5c18bd1c7d18f17390bc6e2fc6e5d2167a326b30).
The following **1 file** was in scope:
- l2-contracts/src/ZkTokenV3.sol (19 SLOC)
<br>
<br>
## Summary of Findings
The contract implements a straightforward upgrade to the existing ZkTokenV2, adding burning capabilities. The total new code under review was 19 SLOC. No security vulnerabilities were identified during the review.
| Identifier | Title | Severity | Fixed |
| --------------------- | -------------------------------------- | -------- | ----- |
| - | No findings identified | - | - |
## Centralization
Users should be aware that addresses with the `BURNER_ROLE` can burn tokens from any account using the `burnFrom` function. This represents a significant privilege that should be carefully managed and potentially controlled by a multisig or governance mechanism.
## Additional Note: Public Burn Function
The contract includes a publicly accessible `burn` function that allows any token holder to permanently destroy their own tokens. While this is not a standard ERC20 feature, the project team has provided the following reasons for implementing this functionality:
- Token holders to burn compromised tokens in case of a security incident
- Correction of over-minted tokens if minting caps are exceeded
- Forward compatibility with future protocol fee mechanisms that may require burning
Users should be aware that calling this function will permanently and irrevocably destroy their tokens.
## Detailed Findings
No security vulnerabilities were identified in the ZKTokenV3 contract during this review.