The STBL_Token contract is an upgradeable ERC-20 token utilizing OpenZeppelin's battle-tested libraries for access control, pausing, and UUPS upgradeability. The technical implementation is robust, showing no critical code-level vulnerabilities like reentrancy or integer overflows. However, the contract exhibits a high degree of centralization, with the DEFAULT_ADMIN_ROLE holding significant power over critical functions such as role management, contract upgrades, and token supply manipulation (via MINTER_ROLE and BRIDGE_ROLE). This centralization, while common for initial deployments, introduces a single point of failure and elevates the overall risk to Medium.

On-chain security analysis — is it a scam or legit?
Is STBL_Token - STBL Governance 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 STBL_Token contract is an upgradeable ERC-20 token utilizing OpenZeppelin's battle-tested libraries for access control, pausing, and UUPS upgradeability.
Read the full analysis- Ownership status UNKNOWN
- Mintable supply — no cap found, dilution unbounded
- Proxy contract
- Top-10 concentration > 50%
- Liquidity not locked, but no owner/deployer address holds LP — market-depth risk, not rug risk
- LP top1 unlocked holder = 100.0%
- LP top3 unlocked holders = 100.0%
- 1 High finding(s) from audit
- 1 Medium finding(s) from audit
- 1 Low finding(s) from audit
Exact factors
- Ownership status UNKNOWN (owner could not be resolved)
- Mintable supply — no cap found, dilution unbounded
- Proxy contract (upgradeable — admin can replace logic)
- Top-10 concentration > 50% (79.5% total → 65.4% effective; 56.0% in EOAs, 23.5% in contracts — heavy)
- Liquidity not locked, but no owner/deployer address holds LP — market-depth risk, not rug risk
- LP top1 unlocked holder = 100.0% (independent LP — depth risk, pool = 98% of DEX liquidity)
- LP top3 unlocked holders = 100.0% (independent LP — depth risk, pool = 98% of DEX liquidity)
- 1 High finding(s) from audit
- 1 Medium finding(s) from audit
- 1 Low 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, staking23.5%
- Walletsanonymous holders, free to sell56.0%
- Everyone elsethe rest of the supply20.5%
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- Pancakeswap v3USDCAnalysed$1.74M97.8%
- Pancakeswap v3USDT$27.3K1.5%
- Pancakeswap v3WBNB$5.8K0.3%
- Pancakeswap v3USDC$2.1K0.1%
- Pancakeswap v3USDT$2.0K0.1%
- UniswapUSDT$8510.0%
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.
0xad6d…62710xde51…a29f0x5eea…26530x5b2d…38b9No privileged address appears among these holders: the unlocked liquidity sits with independent providers, not with the deployer.
Security Findings
HighCentralized Control Over Critical Functions
The DEFAULT_ADMIN_ROLE in the STBL_Token contract possesses extensive control over critical functions. This role can grant/revoke all other roles (MINTER_ROLE, BRIDGE_ROLE, PAUSE_ROLE, UPGRADER_ROLE), initiate contract upgrades, and update the trusted forwarder. The MINTER_ROLE and BRIDGE_ROLE can mint and burn tokens up to the MAX_CAP. This high degree of centralization introduces a single point of failure; if the address holding the DEFAULT_ADMIN_ROLE is compromised, an attacker could gain full control over the token's supply, upgrade its logic to malicious code, or pause all operations.H-01
Issue
The DEFAULT_ADMIN_ROLE in the STBL_Token contract possesses extensive control over critical functions. This role can grant/revoke all other roles (MINTER_ROLE, BRIDGE_ROLE, PAUSE_ROLE, UPGRADER_ROLE), initiate contract upgrades, and update the trusted forwarder. The MINTER_ROLE and BRIDGE_ROLE can mint and burn tokens up to the MAX_CAP. This high degree of centralization introduces a single point of failure; if the address holding the DEFAULT_ADMIN_ROLE is compromised, an attacker could gain full control over the token's supply, upgrade its logic to malicious code, or pause all operations.
Fix
Implement a robust multi-signature wallet (e.g., Gnosis Safe) to control the DEFAULT_ADMIN_ROLE and other critical roles. For highly sensitive operations like upgrades or role management, consider adding a time-lock mechanism to allow for community review or emergency response before execution. Clearly document the operational procedures and security measures for managing these privileged roles.
Status
Unresolved
MediumRedundant Role Grant in Initialization
The initialize() function calls _grantRole(DEFAULT_ADMIN_ROLE, _msgSender()); twice. While this redundancy does not introduce a functional vulnerability or error, it indicates a minor oversight in the code and could potentially lead to confusion or slight gas inefficiency if the _grantRole function had side effects beyond state modification.M-01
Issue
The initialize() function calls _grantRole(DEFAULT_ADMIN_ROLE, _msgSender()); twice. While this redundancy does not introduce a functional vulnerability or error, it indicates a minor oversight in the code and could potentially lead to confusion or slight gas inefficiency if the _grantRole function had side effects beyond state modification.
Fix
Remove the duplicate call to _grantRole(DEFAULT_ADMIN_ROLE, _msgSender()); from the initialize() function. Ensure that each role grant is performed only once to maintain code clarity and efficiency.
Status
Unresolved
LowUnnecessary SafeERC20 Usage for Self-Transfer
In the burn and bridgeBurn functions, IERC20(address(this)).safeTransferFrom(_from, address(this), _amt); is used. While SafeERC20 is generally good practice for interacting with external ERC-20 tokens, using safeTransferFrom to transfer tokens to address(this) (the token contract itself) is not strictly necessary for security. The contract is interacting with its own token balance, and a direct _transfer or _approve followed by _transferFrom would suffice without the SafeERC20 wrapper, as the contract's own _transfer logic is trusted.L-01
Issue
In the burn and bridgeBurn functions, IERC20(address(this)).safeTransferFrom(_from, address(this), _amt); is used. While SafeERC20 is generally good practice for interacting with external ERC-20 tokens, using safeTransferFrom to transfer tokens to address(this) (the token contract itself) is not strictly necessary for security. The contract is interacting with its own token balance, and a direct _transfer or _approve followed by _transferFrom would suffice without the SafeERC20 wrapper, as the contract's own _transfer logic is trusted.
Fix
Consider simplifying the burn and bridgeBurn functions by directly calling _transfer or _transferFrom if the intent is to move tokens within the contract's own context, rather than using SafeERC20 for self-transfers. This would slightly reduce gas costs and improve readability without compromising security. Alternatively, keep the current implementation as it is harmless.
Status
Unresolved
Analysis
AI Copilotas of audit · Sep 4The STBL_Token contract leverages battle-tested OpenZeppelin libraries for its core ERC-20 functionality, access control (7.3), pausing, and UUPS upgradeability (7.7). The code demonstrates good security practices, including the use of Solidity 0.8.x to prevent integer overflows/underflows and no apparent reentrancy vulnerabilities (7.2). The implementation of ERC2771Context for meta-transactions is correctly handled. A minor redundancy exists where _grantRole(DEFAULT_ADMIN_ROLE, _msgSender()); is called twice in the initialize() function (M-01), and SafeERC20 is used for self-transfers which is technically unnecessary but harmless (L-01).
The contract implements a MAX_CAP to limit total token supply, and distinct roles (MINTER_ROLE, BRIDGE_ROLE, PAUSE_ROLE) are used for specific actions, providing granular control (7.4). The PAUSE_ROLE offers an emergency stop mechanism for transfers. However, the contract exhibits high centralization (7.5), with the DEFAULT_ADMIN_ROLE possessing extensive power over all other roles, contract upgrades, and the trusted forwarder (H-01). This concentration of power means a compromise of the DEFAULT_ADMIN_ROLE could lead to significant economic or operational risks, including arbitrary minting/burning if the MINTER_ROLE is granted to a malicious actor.
The contract correctly implements the UUPS upgradeability pattern using OpenZeppelin's UUPSUpgradeable module (7.7). The _authorizeUpgrade function is properly overridden and protected by the UPGRADER_ROLE, ensuring only authorized entities can initiate upgrades. An event ContractUpgraded is emitted for transparency. However, the UPGRADER_ROLE itself is controlled by the DEFAULT_ADMIN_ROLE, meaning the security of upgrades ultimately depends on the security of the DEFAULT_ADMIN_ROLE (H-01).
To mitigate the risks associated with centralized control, it is strongly recommended to secure the DEFAULT_ADMIN_ROLE with a robust multi-signature wallet (e.g., Gnosis Safe) requiring multiple independent approvals for critical operations.
Consider implementing a time-lock mechanism for sensitive administrative actions, such as role changes or upgrades, to provide a window for community review or emergency intervention. Regularly review and audit the addresses holding administrative roles to ensure their security and 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 17, 202676High
Score changes are recorded as dated snapshots — history is append-only and cannot be edited.
Would You Like a More Detailed Audit of STBL_Token - STBL Governance 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