DrivX Info
Investors buy DRIVX tokens. That capital funds a real, operating car rental business. The revenue it generates flows back as token buybacks — creating a value cycle backed by hard assets, not speculation. Endorsed by Hefestos Capital, a Balkan investment bank.
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.
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.
Contract cannot be locked
Owner cannot lock any user funds.
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.
Smart Contract Analysis Statement
Contract Analysis
The DRIVX Token contract implements an ERC20 token with a fixed supply of 7,000,000,000 DRVX and 18 decimals, minted in full to the project's multisig wallet at deployment. The token has no transfer taxes or fees, no minting, burning, pausing or blacklisting functions, no transaction or wallet limits and no upgrade mechanism. It is built on unmodified OpenZeppelin ERC20 and Ownable contracts, and the code deployed on BNB Smart Chain at 0x957373dF21669aF6B675Cf9751f0E65b2E50510A matches the published source exactly.
Ownership Privileges
The ownership of the contract has been assigned to a Safe multisig wallet (0xF708581c4A855bD73BeAD2b352338CcEe7E477E9) that requires two of three signatures, and it has not been renounced. The owner's privileges and limitations are as follows:
- The owner can transfer ownership of the contract to any non-zero address in a single step.
- The owner can renounce ownership, which permanently leaves the contract without an owner and has no effect on token transfers.
- As a regular holder, the owner Safe controls 5,230,000,000 DRVX, about 74.7% of the supply, and can transfer these tokens at any time - this is a token balance, not a contract privilege.
- The same Safe is the owner of the two vesting wallet contracts that hold a further 1,750,000,000 DRVX (25% of the supply); these contracts were not part of this audit.
- The owner cannot mint new tokens - the total supply is permanently fixed at 7,000,000,000 DRVX.
- The owner cannot burn, freeze or transfer tokens that belong to other holders.
- The owner cannot pause transfers, blacklist addresses or impose transaction or wallet limits.
- The owner cannot introduce or change fees - all transfers are free of taxes.
- The owner cannot upgrade, replace or destroy the contract.
Security Features
The contract implements several positive security features:
- The code relies on unmodified OpenZeppelin Contracts, which we compared file by file with the official 5.4.0 release.
- The entire supply is created once in the constructor, and no code path can create or destroy tokens afterwards.
- The contract makes no external calls and contains no delegatecall, self-destruct or proxy logic, which removes reentrancy and upgrade risks.
- Transfers, approvals and ownership changes reject the zero address and revert with descriptive custom errors.
- Both the ownership role and the treasury balance are held by a multisig wallet rather than by a single key.
Auditor Comments
Our review found no critical, high or medium severity issues in the contract. The main point of attention lies in the token distribution rather than in the code: almost the entire supply is controlled by one 2-of-3 multisig wallet without a time delay on transfers, so the security of the signers' keys is what ultimately protects holders. We also noted the approval race condition that is common to ERC-20 tokens, the lack of protection against tokens sent to the token's own address, the possibility of zero-value transfers being used for address poisoning, and a few minor documentation and compatibility points. Because the contract is immutable, these items can only be addressed through operational measures and user guidance, which are described in the full report. At the time of our review we did not find a decentralized exchange liquidity pool for DRVX.
Note - This Audit report consists of a security analysis of the DRIVX Token smart contract. This analysis did not include economic analysis of the contract's tokenomics. Moreover, we only audited the main contract for the DRIVX Token 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
Findings and Audit result
low Issues | 1 findings
Pending
#1 low Issue
ERC-20 approve race condition
The approve function inherited from the OpenZeppelin ERC20 implementation simply overwrites the existing allowance. When a holder changes a non-zero allowance to another non-zero value, a malicious spender who watches the public mempool can spend the old allowance just before the change is mined and then spend the new allowance afterwards, taking both amounts. The token offers no increaseAllowance, decreaseAllowance or permit function that would let holders adjust an allowance safely on-chain. We reproduced the scenario in a test in which an allowance of 100 tokens is changed to 50 and the spender ends up with 150 tokens.
optimization Issues | 1 findings
Pending
#1 optimization Issue
Unused Ownable module increases bytecode size and deployment cost
Because the owner role guards no functionality, the Ownable module only adds code. Compiling the contract without it, with the same compiler settings, reduces the runtime bytecode from 2,170 to 1,856 bytes, about 14 percent less, lowers the deployment cost by roughly 70,000 gas and removes three functions from the dispatcher. Removing the redundant decimals override, by contrast, saves nothing because the compiler produces identical code either way.
informational Issues | 8 findings
Pending
#1 informational Issue
Owner role carries no privileges
The contract inherits Ownable but does not define a single function that is restricted to the owner. The only actions available to the owner are transferring and renouncing the ownership itself, and neither has any effect on balances, supply, fees or transfers. The public owner getter can still lead users and automated token scanners to assume that administrative powers exist, and listing sites often present such a token as having an active owner.
Pending
#2 informational Issue
Single-step ownership transfer
transferOwnership assigns the new owner immediately and does not require the recipient to accept the role. A mistyped address, an address that nobody controls on this chain, or even the token contract itself is accepted, and the previous owner cannot reverse the change. renounceOwnership is just as immediate and permanent. Because the owner role controls nothing else in this contract, a mistake would only lose the nominal role, and transfers keep working, as our test confirms.
Pending
#3 informational Issue
Tokens sent to the token contract are permanently locked
transfer and transferFrom accept the token contract's own address as the recipient. The contract never moves its own balance and has no recovery function, so DRVX sent to it by mistake, as well as any other BEP-20 token sent to it, can never be retrieved by anyone, including the owner. Such DRVX still counts towards the total supply, which then overstates the amount that can actually circulate. Sending tokens to the token address is a common user error.
Pending
#4 informational Issue
Zero-value transferFrom can be used for address poisoning
transferFrom with a value of zero succeeds even when the caller has no allowance, and it still emits a Transfer event from the chosen holder to a recipient of the caller's choice. Anyone can therefore add entries to the history of any address, including the treasury Safe, that look like outgoing transfers to an address the attacker controls. Attackers use this to plant look-alike addresses that share the first and last characters of a real counterparty, hoping the victim later copies the fake address from the history. The ERC-20 standard allows zero-value transfers, so this behaviour is common, but it is a well-known phishing technique.
Pending
#5 informational Issue
Allowance decrease in transferFrom emits no Approval event
When transferFrom spends a finite allowance, the remaining allowance is updated without an Approval event, which is the deliberate behaviour of OpenZeppelin Contracts version 5. The ERC-20 standard does not require this event, but indexers, explorers and allowance dashboards that rebuild allowances only from Approval events will show values that are too high after every transferFrom.
Pending
#6 informational Issue
BEP-20 getOwner function is not implemented
The contract documentation describes DRVX as a BEP-20 and ERC-20 token, but the BEP-20 interface also contains a getOwner function that returns the token owner, and this contract does not provide it. Only the ERC-20 style owner getter is available, so tools that call getOwner receive a revert. The cross-chain binding that originally relied on getOwner no longer exists since the BNB Beacon Chain was retired, so the practical impact is small.
Pending
#7 informational Issue
Floating pragma and outdated compiler version
The source uses the floating pragma ^0.8.22, and the deployed bytecode was produced with Solidity 0.8.22 from October 2023. That release has six documented compiler bugs. We checked each of them against this code base and none applies, because the contract is compiled through the legacy pipeline without via-IR, contains no inline assembly or verbatim blocks, never deletes elements of memory byte arrays and does not use storage arrays near the end of storage. The pragma only matters if the source is compiled again.
Pending
#8 informational Issue
Code quality and documentation
The imports pull in every symbol of the imported files instead of naming ERC20 and Ownable explicitly. The decimals override returns the same value as the inherited function and compiles to identical bytecode, so it is redundant. The constant MAX_SUPPLY is in fact the fixed total supply rather than a cap for future minting, which its name may suggest, and its value repeats the decimals literal. The constructor and its parameter, the constant and the decimals function have no NatSpec comments of their own, and the file name DRIVX.sol differs from the contract name DRVXToken.