PepuBank Info
PEPU BANK is a next-generation decentralized protocol built on the new Pepe Unchained Layer 2 network, powered by the utility token $PENK. Our mission is to deliver seamless access to the PEPU ecosystem through powerful tools like the SuperBridge, Layer 2-native token purchases, and gamified community features.
TrustNet Score
The TrustNet Score evaluates crypto projects based on audit results, security, KYC verification, and social media presence. This score offers a quick, transparent view of a project's credibility, helping users make informed decisions in the Web3 space.
Real-Time Threat Detection
Real-time threat detection, powered by Cyvers.io,
is currently not
activated
for this project.
This advanced feature provides continuous monitoring and instant alerts to safeguard your assets from potential security threats. Real-time detection enhances your project's security by proactively identifying and mitigating risks.
For more information, click here.
Security Assessments
Summary and Final Words
No crucial issues found
The contract does not contain issues of high or medium criticality. This means that no known vulnerabilities were found in the source code.
Contract owner cannot mint
It is not possible to mint new tokens.
Contract owner cannot blacklist addresses.
It is not possible to lock user funds by blacklisting addresses.
Contract owner cannot set high fees
The fees, if applicable, can be a maximum of 25% or lower. The contract can therefore not be locked. Please take a look in the comment section for more details.
Token transfer can be locked
Owner can lock user funds with owner functions.
Token cannot be burned
There is no burning within the contract without any allowances
Ownership is not renounced
The owner retains significant control, which could potentially be used to modify key contract parameters.
Contract is not upgradeable
The contract does not use proxy patterns or other mechanisms to allow future upgrades. Its behavior is locked in its current state.
Scope of Work
This audit encompasses the evaluation of the files listed below, each verified with a SHA-1 Hash. The team referenced above has provided the necessary files for assessment.
The auditing process consists of the following systematic steps:
- Specification Review: Analyze the provided specifications, source code, and instructions to fully understand the smart contract's size, scope, and functionality.
- Manual Code Examination: Conduct a thorough line-by-line review of the source code to identify potential vulnerabilities and areas for improvement.
- Specification Alignment: Ensure that the code accurately implements the provided specifications and intended functionalities.
- Test Coverage Assessment: Evaluate the extent and effectiveness of test cases in covering the codebase, identifying any gaps in testing.
- Symbolic Execution: Analyze the smart contract to determine how various inputs affect execution paths, identifying potential edge cases and vulnerabilities.
- Best Practices Evaluation: Assess the smart contracts against established industry and academic best practices to enhance efficiency, maintainability, and security.
- Actionable Recommendations: Provide detailed, specific, and actionable steps to secure and optimize the smart contracts.
A file with a different Hash has been intentionally or otherwise modified after the security review. A different Hash may indicate a changed condition or potential vulnerability that was not within the scope of this review.
Final Words
The following provides a concise summary of the audit report, accompanied by insightful comments from the auditor. This overview captures the key findings and observations, offering valuable context and clarity.
Ownership Privileges
- The owner can pay out tokens to the user.
- The owner set the emergency operator.
- The emergency operator can pause the payout functionality in the contract.
- The owner can unpause the payout functionality in the contract.
- The owner can initiate the emergency withdrawal.
- The owner can withdraw tokens after 24 delay of withdrawal initiation.
- The owner can update the token address.
Note - This Audit report consists of a security analysis of the PepuBank smart contract. This analysis did not include functional testing (or unit testing) of the contract’s logic. Moreover, we only audited the mentioned contract for the PepuBank team. Other contracts associated with the project were not audited by our team. We recommend investors do their own research before investing.
Files and details
Functions
public
/
State variables
public
/
Total lines
of code
/
Capabilities
Hover on items
/
Findings and Audit result
medium Issues | 3 findings
Pending
#1 medium Issue
Centralized Payout Mechanism Creates Single Point of Failure and Censorship Risk.
The payout function in the SuperBridgeL1.sol contract is the sole mechanism for users to receive their bridged assets on L1. The function is protected by an onlyOwner modifier, which creates a highly centralized design. This makes the entire payout process dependent on a single administrative account. Users have no way to claim their funds independently and must trust that the owner will be available, act honestly, and remain uncompromised. This architecture introduces a critical single point of failure; if the owner's key is lost, or if the owner decides to act maliciously or goes offline, all pending user payouts can be permanently frozen or selectively censored. This custodial control contradicts the trust-minimized principles expected of secure blockchain bridges.
Pending
#2 medium Issue
Owner Can Arbitrarily Change The Payout Token Address.
The updateToken function grants the owner the immediate and unilateral authority to change the TOKEN address, which represents the asset paid out to users on L1. This presents a critical trust issue and an attack vector. A malicious owner could perform a "bait-and-switch" by replacing the legitimate token with a worthless one after users have bridged their funds, effectively stealing the valuable assets held by the contract. Furthermore, this function lacks any safety mechanism like a confirmation step or a time delay, making the bridge vulnerable to irreversible disruption through accidental operator error.
Pending
#3 medium Issue
Centralized Pause Control Can Permanently Lock User Funds.
The emergencyPause function grants emergencyOperator accounts the ability to halt all core functionality of the bridge contract, most critically the payout function. When paused, no user can receive their bridged assets on L1, effectively freezing all PEPU tokens held within the contract. The authority to reverse this state by unpausing the contract is restricted exclusively to the owner. This creates a severe centralization risk where a malicious or compromised owner can refuse to unpause the contract, or an owner who loses their keys can become incapable of doing so. In such scenarios, all user funds held in the contract become permanently and irrecoverably locked.
low Issues | 1 findings
Pending
#1 low Issue
Timelock Mechanism is Insufficient to Prevent Malicious Withdrawal.
The two-step emergency withdrawal mechanism, initiated by initiateEmergencyWithdraw(), is intended to provide a transparent safety feature. However, it ultimately allows a malicious or compromised owner to drain all contract funds. The 24-hour timelock only serves as a public notice period; it does not provide any on-chain method for the community or other stakeholders to prevent the subsequent executeEmergencyWithdraw() call. Once the delay has passed, the owner has unilateral power to transfer the contract's entire token balance to their own address. This design flaw is exacerbated by the fact that the withdrawal function can target any arbitrary ERC20 token, not just the designated bridge token. This creates a centralized risk where the timelock acts merely as a procedural delay for theft, rather than a genuine security measure.
informational Issues | 1 findings
Pending
#1 informational Issue
Floating pragma solidity version.
Adding the constant version of solidity is recommended, as this prevents the unintentional deployment of a contract with an outdated compiler that contains unresolved bugs.