Speech AI Info

Speech AI is a decentralized, voice-native AI execution layer designed for on-chain crypto operations on Ethereum. It fuses large language model (LLM) inference, real-time blockchain execution, and non-custodial wallet orchestration into a seamless, speech-driven protocol.

Speech AI Logo

Team and KYC Verification

The team has securely submitted their personal information to SolidProof.io for verification.

In the event of any fraudulent activities, this information will be promptly reported to the relevant authorities to ensure accountability and compliance.

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.

92.00
Poor Excellent

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

"Static Analysis Dynamic Analysis Symbolic Execution SWC Check Manual Review"
Contract address
N/A
Network N/A
License N/A
Compiler N/A
Type N/A
Language Solidity
Onboard date 2025/05/28
Revision date 2025/05/28

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:

  1. Specification Review: Analyze the provided specifications, source code, and instructions to fully understand the smart contract's size, scope, and functionality.
  2. Manual Code Examination: Conduct a thorough line-by-line review of the source code to identify potential vulnerabilities and areas for improvement.
  3. Specification Alignment: Ensure that the code accurately implements the provided specifications and intended functionalities.
  4. Test Coverage Assessment: Evaluate the extent and effectiveness of test cases in covering the codebase, identifying any gaps in testing.
  5. Symbolic Execution: Analyze the smart contract to determine how various inputs affect execution paths, identifying potential edge cases and vulnerabilities.
  6. Best Practices Evaluation: Assess the smart contracts against established industry and academic best practices to enhance efficiency, maintainability, and security.
  7. 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 toggle staking.
  • The owner can withdraw tokens and ETH from the contract, including the staked tokens.

Note - This Audit report consists of a security analysis of the SPEECH AI smart contract. This analysis did not include functional testing (or unit testing) of the contract’s logic. Moreover, we only audited one token contract for the SPEECH AI 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

high Issues | 1 findings

Resolved

#1 high Issue
Owner Can Withdraw Staked Tokens
Staking.sol
L310-317
Description

The withdrawERC20 function allows the owner to specify any token address (_tokenAddress) for withdrawal, including the address of the primary staking token itself (address(token)). The function then transfers the entire balance of that token held by the contract to the owner. This means the owner can unilaterally withdraw all staked principal from users, effectively draining the contract of the tokens users have deposited for staking. This poses a significant centralization risk and can lead to a loss of user funds if the owner acts maliciously or if the owner's account is compromised. Mitigation involves adding a check to prevent _tokenAddress from being the staking token's address or implementing stricter withdrawal controls like a timelock or multi-signature approval.

medium Issues | 2 findings

Resolved

#1 medium Issue
Precision Loss in Reward Calculation
Staking.sol
L271-294
Description

The pendingRewards function calculates an intermediate APY value by (amount * returnPer) / 100. If amount * returnPer is less than 100, this APY truncates to zero due to integer division. Consequently, the final reward becomes zero, even if the staker mathematically earned a fractional reward that, over time, should accumulate to whole units. This unfairly denies rewards to users with small stakes or low return percentages. Mitigation involves reordering the calculation to (amount * returnPer * duration) / (100 * _days365), performing all multiplications first to preserve precision before the final division, ensuring fairer reward distribution.

Resolved

#2 medium Issue
Missing Reentrancy Protection in deposit function.
Staking.sol
L160-204
Description

The deposit function lacks reentrancy protection (the nonReentrant modifier). It performs an external call via token.transferFrom() before all internal state variables (like totalStaked, balanceOf, orders) are updated. If a malicious token contract is used for staking, its transferFrom function could call back into the deposit function (or other contract functions) mid-execution. This could lead to inconsistent state, such as creating multiple staking orders for a single intended deposit, or incorrectly inflating staked amounts, thereby corrupting user balances and contract accounting. Mitigation involves applying the nonReentrant modifier to the deposit function.

low Issues | 1 findings

Resolved

#1 low Issue
Missing Events Arithmetic (events-maths)
SpeachAI_Staking
L296-299
Description

Emit an event for critical parameter changes.

informational Issues | 4 findings

Resolved

#1 informational Issue
Unnecessary Return Value.
SpeachAI_Staking.sol
L296-299
Description

The function always returns true, and the return value is never used in the contract. No actual security impact, just unnecessary gas consumption. Remove the return value since it doesn't provide any meaningful information.

Resolved

#2 informational Issue
Time-Based Reward Calculation Variance
Staking.sol
L160-204
L206-241
L243-269
Description

Rewards are calculated using block.timestamp at the moment of withdraw or claimRewards execution. This means the actual rewards received can be slightly higher than an off-chain estimate from pendingRewards due to the time elapsed until the transaction is mined. This is an inherent behavior of on-chain time-based calculations, not a flaw. Mitigation involves clear UI communication, informing users that displayed pending rewards are estimates. Optionally, a deadline parameter in claim/withdraw functions could offer users more control over the transaction execution window, though the variance is typically minor and often beneficial to the user.

Resolved

#3 informational Issue
Unused code.
Staking.sol
L95-97
L149
Description

It is recommended to remove the unused event or code from the contract.

Resolved

#4 informational Issue
Missing zero check
Staking.sol
L206-241
L243-269
Description

It is recommended to check that the parameter value should not be zero.