This audit covers the Curve DAO Token (CRV) contract, an ERC-20 token with a custom piecewise-linear mining supply mechanism implemented in Vyper. The contract manages token transfers, approvals, and a defined inflation schedule. Due to the provided source code being truncated, a full verification of the transferFrom function was not possible, which introduces a significant limitation to the technical assessment.

On-chain security analysis — is it a scam or legit?
Is Curve DAO Safe?
Not verified
This record has not gone through deep verification and is not being monitored. The score is a dated snapshot — the token’s risk can change at any time.Own this token? Put it under verification →This audit covers the Curve DAO Token (CRV) contract, an ERC-20 token with a custom piecewise-linear mining supply mechanism implemented in Vyper.
Read the full analysis- Ownership status UNKNOWN
- Mintable supply — no cap found, dilution unbounded
- Top-10 concentration > 30%
- Liquidity not locked, but no owner/deployer address holds LP — market-depth risk, not rug risk
- LP top1 unlocked holder = 65.7%
- LP top3 unlocked holders = 99.2%
- 1 High finding(s) from audit
- 1 Medium finding(s) from audit
Exact factors
- Ownership status UNKNOWN (owner could not be resolved)
- Mintable supply — no cap found, dilution unbounded
- Top-10 concentration > 30% (56.6% total → 35.5% effective; 21.4% in EOAs, 35.2% in contracts — moderate)
- Liquidity not locked, but no owner/deployer address holds LP — market-depth risk, not rug risk
- LP top1 unlocked holder = 65.7% (independent LP — depth risk, pool = 29% of DEX liquidity)
- LP top3 unlocked holders = 99.2% (independent LP — depth risk, pool = 29% of DEX liquidity)
- 1 High finding(s) from audit
- 1 Medium finding(s) from audit
Each factor is an on-chain fact recorded at the time of this analysis. The score is computed from them by a deterministic function, so the same contract returns the same score for anyone who runs the audit. How scores are computed
Security Checklist
as of audit · Sep 4Holders
as of audit · Sep 4, 2026- Contractstreasury, vesting, bridge, staking35.2%
- Walletsanonymous holders, free to sell21.4%
- Everyone elsethe rest of the supply43.4%
How holder types affect the score
Share held by contracts — treasury, vesting, bridge or staking — is discounted against share held by wallets when the score is computed: a contract cannot decide to sell the way an anonymous holder can, though it can still be drained or voted to sell. Effective concentration is the figure the risk score is actually calculated from.
Holder balances as recorded by the audit of Sep 4, 2026
Liquidity
as of audit · Sep 4- Curve tricrvUSDAnalysed$1.90M29.4%
- Curve triWETH$1.90M29.4%
- Uniswap v41INCH$734.0K11.4%
- Uniswap v3WETH$486.8K7.5%
- Uniswap v4ETH$434.2K6.7%
- Uniswap v3USDC$417.9K6.5%
Show 4 more pairs
The 14 remaining pairs hold $55.8K between them and are not listed. The risk score reads depth across every pair.
The LP tokens of the analysed pool are not locked or burned, so whoever holds them can withdraw that liquidity.
0x6df1…ac720xf4df…ffe20xc20e…c12b0xaabc…d1120x359e…16b20x9b61…28080xb1eb…1a600xe584…39c70xac42…9ffc0xc5bb…45cdNo privileged address appears among these holders: the unlocked liquidity sits with independent providers, not with the deployer.
Security Findings
HighTruncated Source Code for transferFrom Function
The provided source code for the transferFrom function is incomplete (self.ba...). This prevents a full and accurate security assessment of this critical ERC-20 functionality, which is essential for token transfers initiated by approved third parties. Without the complete code, potential vulnerabilities such as incorrect allowance checks, reentrancy, or arithmetic errors cannot be ruled out.H-01
transferFrom FunctionIssue
The provided source code for the transferFrom function is incomplete (self.ba...). This prevents a full and accurate security assessment of this critical ERC-20 functionality, which is essential for token transfers initiated by approved third parties. Without the complete code, potential vulnerabilities such as incorrect allowance checks, reentrancy, or arithmetic errors cannot be ruled out.
Fix
Provide the complete and verified source code for all functions within the contract to enable a thorough security audit. Ensure that the transferFrom implementation correctly handles allowances, balances, and prevents reentrancy or integer issues.
Status
Unresolved
MediumCentralized Control by Admin and Minter Roles
The admin role has significant power, including the ability to set the minter address (once) and transfer the admin role itself via set_admin. The minter role, once set, controls the actual issuance of new tokens based on the contract's inflation schedule. This centralization of control introduces a single point of failure and potential for malicious or compromised actors to manipulate token supply or administrative privileges (7.3 Access Control).M-01
Issue
The admin role has significant power, including the ability to set the minter address (once) and transfer the admin role itself via set_admin. The minter role, once set, controls the actual issuance of new tokens based on the contract's inflation schedule. This centralization of control introduces a single point of failure and potential for malicious or compromised actors to manipulate token supply or administrative privileges (7.3 Access Control).
Fix
Consider implementing multi-signature wallets for the admin and minter roles to distribute control and require multiple approvals for critical operations. Alternatively, implement time-locks for sensitive administrative actions to provide a window for community review and intervention.
Status
Unresolved
InfoPrecision Loss in Rate Calculation Due to Integer Division
The _update_mining_parameters and mintable_in_timeframe functions perform rate calculations using integer division (_rate = _rate * RATE_DENOMINATOR / RATE_REDUCTION_COEFFICIENT). While Vyper's integer division truncates, the contract's comment double-division with rounding made rate a bit less => good indicates this is an intentional design choice to bias the rate downwards, which is generally safer than upwards. However, it's important to acknowledge that this introduces minor precision loss over many epochs (7.4 Economic).I-01
Issue
The _update_mining_parameters and mintable_in_timeframe functions perform rate calculations using integer division (_rate = _rate * RATE_DENOMINATOR / RATE_REDUCTION_COEFFICIENT). While Vyper's integer division truncates, the contract's comment double-division with rounding made rate a bit less => good indicates this is an intentional design choice to bias the rate downwards, which is generally safer than upwards. However, it's important to acknowledge that this introduces minor precision loss over many epochs (7.4 Economic).
Fix
No direct action is required as this appears to be an intentional design choice. Document this behavior clearly in external specifications and ensure its implications are understood by stakeholders. If higher precision is ever required, consider using fixed-point arithmetic libraries or alternative calculation methods.
Status
Unresolved
InfoHardcoded Loop Limit in mintable_in_timeframe
The mintable_in_timeframe function uses a hardcoded loop limit of for i in range(999) to calculate future mintable supply. Given that RATE_REDUCTION_TIME is one year, this limits the calculation to approximately 999 years. While this is practically sufficient for the expected lifespan of the protocol, it is a fixed constraint that could theoretically be reached under extreme, long-term scenarios (7.1 Architecture).I-02
mintable_in_timeframeIssue
The mintable_in_timeframe function uses a hardcoded loop limit of for i in range(999) to calculate future mintable supply. Given that RATE_REDUCTION_TIME is one year, this limits the calculation to approximately 999 years. While this is practically sufficient for the expected lifespan of the protocol, it is a fixed constraint that could theoretically be reached under extreme, long-term scenarios (7.1 Architecture).
Fix
No immediate action is required given the practical implications. For future designs, if an indefinite or extremely long-term calculation is needed, consider an iterative approach that can be called multiple times or a more gas-efficient mathematical series calculation if possible.
Status
Unresolved
InfoSlight Supply Increase from Late update_mining_parameters Calls
The update_mining_parameters function can be called by anyone, but if it's called late in an epoch (i.e., after the epoch boundary but before the next call), the _available_supply calculation will result in a slightly higher start_epoch_supply for the subsequent epoch. The contract comment Total supply becomes slightly larger if this function is called late acknowledges this design trade-off, which prioritizes decentralization of calls over perfect precision at epoch boundaries (7.4 Economic).I-03
update_mining_parameters CallsIssue
The update_mining_parameters function can be called by anyone, but if it's called late in an epoch (i.e., after the epoch boundary but before the next call), the _available_supply calculation will result in a slightly higher start_epoch_supply for the subsequent epoch. The contract comment Total supply becomes slightly larger if this function is called late acknowledges this design trade-off, which prioritizes decentralization of calls over perfect precision at epoch boundaries (7.4 Economic).
Fix
No direct action is required as this is a known and accepted design trade-off. Ensure this behavior is clearly communicated to users and stakeholders. The impact is likely negligible given the scale of the token supply and the frequency of calls.
Status
Unresolved
Analysis
AI Copilotas of audit · Sep 4The contract demonstrates strong technical foundations, leveraging Vyper's safety features for secure arithmetic operations and preventing common Solidity pitfalls (7.2 Code Security). Core ERC-20 functions like transfer are implemented correctly, including checks for zero address transfers. A significant limitation is the truncated transferFrom function in the provided source, which prevents a full audit of this critical token transfer mechanism (7.2 Code Security). The inflation logic, while complex, is clearly defined and uses constants for parameters, reducing runtime errors (7.1 Architecture).
The contract's economic model is based on a transparent, piecewise-linear inflation schedule, designed to distribute tokens over time (7.4 Economic). The admin role has centralized control over setting the minter and transferring administrative privileges, which introduces a single point of control for critical token management functions (7.3 Access Control). While the minter can only be set once, its power over token supply is substantial. The mechanism for updating mining parameters is decentralized, allowing any user to trigger epoch updates, which slightly increases total supply if called late, a known design trade-off (7.4 Economic).
The contract is not designed with upgradeability in mind, as it is a standard implementation without a proxy pattern (7.7 Upgrades). This eliminates risks associated with upgrade mechanisms, such as proxy misconfigurations or malicious upgrade paths. Any changes to the core logic would require a new deployment and migration of assets, which is a significant undertaking.
Ensure that the full, verified source code for all deployed contracts is available for comprehensive security audits.
For contracts with centralized roles like admin and minter, implement robust multi-signature controls or time-locks to mitigate risks associated with a single point of failure. Regularly review the economic parameters and their long-term implications, especially for inflation models. While Vyper provides strong inherent security, continuous vigilance and adherence to best practices are crucial for maintaining contract integrity.
Contract & Record
Free for any token on the record. It links to this page and always shows the current score and the date it was checked.
- Aug 11, 202649Medium
Score changes are recorded as dated snapshots — history is append-only and cannot be edited.
Would You Like a More Detailed Audit of Curve DAO?
Our AI-powered scanner gives you a deeper, real-time smart contract analysis — free, with every scoring factor shown.
Get Detailed Audit Is this your token? Publish your own audit on this page