The GnosisToken contract, an ERC-20 compliant token, was audited for security vulnerabilities. The contract exhibits several issues related to its use of an older Solidity compiler version (0.4.10), including the throw keyword for error handling and susceptibility to the ERC-20 approve race condition. While core token functionalities are present, adherence to modern security practices is lacking, contributing to a Medium overall risk level.

On-chain security analysis — is it a scam or legit?
Is Gnosis Token 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 →The GnosisToken contract, an ERC-20 compliant token, was audited for security vulnerabilities.
Read the full analysis- Ownership status UNKNOWN
- Top-10 concentration > 50%
- Liquidity not locked, but no owner/deployer address holds LP — market-depth risk, not rug risk
- LP top1 unlocked holder = 55.6%
- LP top3 unlocked holders = 98.6%
- 2 High finding(s) from audit
- 2 Medium finding(s) from audit
Exact factors
- Ownership status UNKNOWN (owner could not be resolved)
- Top-10 concentration > 50% (96.0% total → 57.9% effective; 32.6% in EOAs, 63.4% in contracts — heavy)
- Liquidity not locked, but no owner/deployer address holds LP — market-depth risk, not rug risk
- LP top1 unlocked holder = 55.6% (independent LP — depth risk, pool = 84% of DEX liquidity)
- LP top3 unlocked holders = 98.6% (independent LP — depth risk, pool = 84% of DEX liquidity)
- 2 High finding(s) from audit
- 2 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, staking63.4%
- Walletsanonymous holders, free to sell32.6%
- Everyone elsethe rest of the supply4.0%
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- Uniswap v3WETHAnalysed$93.7K83.8%
- Uniswap v3USDT$11.9K10.6%
- Uniswap v2WETH$3.5K3.1%
- BalancerWETH$1.6K1.4%
- Uniswap v4ETH$1.2K1.1%
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.
0x2b23…e60d0xee31…a3ed0x75c6…1cfb0x9823…d98e0xd2da…418d0x40d3…ef600x25f8…91baNo privileged address appears among these holders: the unlocked liquidity sits with independent providers, not with the deployer.
Security Findings
HighDeprecated throw Keyword for Error Handling
The contract uses the throw keyword for error handling, which is deprecated since Solidity 0.4.22. throw consumes all remaining gas, making it less gas-efficient than revert() or require(), which were introduced later and allow for more precise error messages and gas refunds. This can lead to higher transaction costs for failed operations.H-01
throw Keyword for Error HandlingIssue
The contract uses the throw keyword for error handling, which is deprecated since Solidity 0.4.22. throw consumes all remaining gas, making it less gas-efficient than revert() or require(), which were introduced later and allow for more precise error messages and gas refunds. This can lead to higher transaction costs for failed operations.
Fix
Update the contract to use require() or revert() statements for error handling. This improves gas efficiency and allows for clearer error messages, aligning with modern Solidity best practices.
Status
Unresolved
HighERC-20 approve Race Condition Vulnerability
The approve function is susceptible to a known ERC-20 race condition. If a user calls approve(spender, newAmount) while the spender is simultaneously trying to spend the oldAmount, the spender might be able to spend both oldAmount and newAmount, effectively doubling the allowance. This can lead to unintended token transfers.H-02
approve Race Condition VulnerabilityIssue
The approve function is susceptible to a known ERC-20 race condition. If a user calls approve(spender, newAmount) while the spender is simultaneously trying to spend the oldAmount, the spender might be able to spend both oldAmount and newAmount, effectively doubling the allowance. This can lead to unintended token transfers.
Fix
Implement the increaseAllowance and decreaseAllowance pattern, as recommended by OpenZeppelin, to safely modify allowances. This pattern prevents the race condition by requiring explicit increments or decrements, ensuring atomic updates.
Status
Unresolved
MediumOutdated Solidity Compiler Version
The contract is compiled with Solidity version 0.4.10. This version is significantly outdated and lacks numerous security features, bug fixes, and optimizations introduced in later versions (e.g., 0.5.x, 0.6.x, 0.8.x). Using an old compiler increases the risk of undiscovered compiler bugs or missing modern security patterns.M-01
Issue
The contract is compiled with Solidity version 0.4.10. This version is significantly outdated and lacks numerous security features, bug fixes, and optimizations introduced in later versions (e.g., 0.5.x, 0.6.x, 0.8.x). Using an old compiler increases the risk of undiscovered compiler bugs or missing modern security patterns.
Fix
Upgrade the contract to a recent and stable Solidity compiler version (e.g., 0.8.x). This would allow leveraging modern language features, improved security checks (like built-in overflow/underflow checks for uint types), and better gas optimization.
Status
Unresolved
MediumPotential Integer Overflow on Addition
The contract performs addition operations (e.g., balances[_to] += _value in transfer and transferFrom, assignedTokens += tokens[i] in the constructor) without explicit overflow checks. While uint256 provides a large range, a malicious or accidental input exceeding type(uint256).max could lead to an overflow, resulting in incorrect balance calculations.M-02
Issue
The contract performs addition operations (e.g., balances[_to] += _value in transfer and transferFrom, assignedTokens += tokens[i] in the constructor) without explicit overflow checks. While uint256 provides a large range, a malicious or accidental input exceeding type(uint256).max could lead to an overflow, resulting in incorrect balance calculations.
Fix
Implement SafeMath or similar libraries for all arithmetic operations to prevent integer overflows. Modern Solidity versions (0.8.0+) include built-in overflow/underflow checks for uint types, which would mitigate this risk if the compiler is updated.
Status
Unresolved
InfoConstructor Gas Limit Risk for Large Arrays
The GnosisToken constructor iterates through owners and tokens arrays to assign initial balances. If these arrays are excessively large, the constructor's gas consumption could exceed the block gas limit, preventing the contract from being deployed successfully.I-01
Issue
The GnosisToken constructor iterates through owners and tokens arrays to assign initial balances. If these arrays are excessively large, the constructor's gas consumption could exceed the block gas limit, preventing the contract from being deployed successfully.
Fix
For very large initial distributions, consider an alternative mechanism such as a separate function for claiming tokens or a batched distribution function that can be called multiple times post-deployment to avoid hitting block gas limits.
Status
Unresolved
InfototalSupply() Signature Mismatch in Interface
The Token interface declares totalSupply() constant returns (uint256 supply) {} with an empty body and constant keyword. While StandardToken correctly implements totalSupply as a public state variable, the interface definition is slightly inconsistent with modern ERC-20 interfaces which typically declare function totalSupply() external view returns (uint256);. The constant keyword for functions was deprecated in 0.5.0.I-02
totalSupply() Signature Mismatch in InterfaceIssue
The Token interface declares totalSupply() constant returns (uint256 supply) {} with an empty body and constant keyword. While StandardToken correctly implements totalSupply as a public state variable, the interface definition is slightly inconsistent with modern ERC-20 interfaces which typically declare function totalSupply() external view returns (uint256);. The constant keyword for functions was deprecated in 0.5.0.
Fix
While not a functional bug in StandardToken, for future compatibility and clarity, the Token interface could be updated to reflect modern ERC-20 standards, using view instead of constant and removing the empty function body.
Status
Unresolved
Analysis
AI Copilotas of audit · Sep 4The GnosisToken contract implements a standard ERC-20 token with a fixed supply and initial distribution logic (7.1 Architecture). The core transfer and transferFrom functions include checks to prevent underflow, demonstrating basic security considerations (7.2 Code Security). However, the contract uses Solidity 0.4.10, which lacks modern security features like revert() and require(), instead relying on throw for error handling, which is less gas-efficient. Furthermore, the approve function is vulnerable to the known ERC-20 race condition (7.3 Access Control).
The token's economic model is straightforward, with a fixed total supply and initial distribution defined in the constructor (7.4 Economic). There are no complex governance mechanisms or external dependencies that introduce economic risk (7.5 Governance). The initial distribution logic includes checks to ensure the total supply is correctly assigned, mitigating some deployment risks.
The contract is not designed with an upgrade mechanism, meaning its logic is immutable once deployed (7.7 Upgrades). This eliminates upgrade-related risks but also prevents future bug fixes or feature enhancements without a full redeployment and migration.
It is strongly recommended to migrate to a newer Solidity compiler version (0.8.x) and adopt modern best practices, including the use of require()/revert() for error handling and SafeMath for all arithmetic operations to prevent potential overflows.
Implement a robust solution for the ERC-20 approve race condition, such as the increaseAllowance/decreaseAllowance pattern, to enhance security and user experience.
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.
- Sep 4, 202661Medium
- Aug 16, 202655Medium
Score changes are recorded as dated snapshots — history is append-only and cannot be edited.
Frequently Asked Questions
What is the GNO contract address?
The Gnosis Token (GNO) contract on Ethereum is 0x6810e776880c02933d47db1b9fc05908e5386b96. Compare it with the address the project itself publishes before trading: other contracts can carry the same name and ticker.
Is Gnosis Token a scam?
Quantum Audit's risk score for Gnosis Token is 61/100 (Medium risk) as of Sep 4, 2026, computed by a deterministic function from on-chain facts — Contract verified: Verified; Mint: No mint; Liquidity lock: Not locked; Upgradeability: Fixed code. A score is a dated snapshot of those facts, not a guarantee; each one is listed on this page.
Is GNO liquidity locked?
Liquidity lock: Not locked (as of Sep 4, 2026). Total DEX liquidity: $111.8K.
Who holds GNO?
As of Sep 4, 2026, the 10 largest holders own 96.0% of the supply. The Holders section on this page shows who they are by holder type.
Would You Like a More Detailed Audit of Gnosis Token?
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