RESCUE Info

As rescue missions become more common and technology advances, The Company's Web3 venture provides innovative solutions to empower real-world impact.

RESCUE Logo

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.

75.25
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.

TrustNet DataPulse

Security Assessments

Select the audit
"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/04/09
Revision date In progress

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 renounced

Contract cannot be manipulated by owner functions.

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.


What is an SPL Token?

An SPL Token is the token standard used by the Solana blockchain, similar to the ERC-20 standard on Ethereum. SPL tokens can represent various assets, including cryptocurrencies, stablecoins, and utility tokens. They are managed by smart contracts on the Solana network and can be minted, transferred, and burned according to the rules of the contract. Solana's high throughput and low transaction fees make SPL tokens highly scalable and efficient for a wide range of decentralized applications (dApps) and projects.

Ownership Privileges
Mint Authority
  • Only designated mint authority can mint tokens
  • Authority verified against on-chain mint account
  • Unauthorized transactions rejected with error
  • Mint authority cannot be transferred or modified
Schedule Enforcement
  • Minting restricted by hardcoded 2025-2028 schedule
  • Schedule cannot be overridden by any party
  • Predefined minting amounts cannot be changed
  • Total supply capped at 100 million tokens
No Administrative Functions
  • No owner-only parameter update capabilities
  • No functions to modify the mint schedule
  • No metadata management functions
  • No fee-setting or token-freezing features
Immutable Design
  • All critical parameters hardcoded
  • No contract upgrade mechanism
  • No privileged pause/unpause functions
  • Operates by predefined rules rather than ongoing control

Note - This audit report consists of a security analysis of the SPL token. This analysis did not include functional testing (or unit testing) of the token’s logic. Furthermore, we only audited one token contract associated with this project. Other contracts related to this project were not audited by our team. We recommend investors conduct their own research before engaging with the token.

Files and details

Functions
public

/

State variables
public

/

Total lines
of code

/

Capabilities
Hover on items

/

Findings and Audit result

low Issues | 1 findings

Resolved

#1 low Issue
Token Program ID Validation.
lib.rs
L139-141
Description

The Rescue Minter contract includes a check for the correct token program ID but fails to enforce it by returning an error. When an invalid token program is detected, the code logs "Invalid token program ID" but continues execution, attempting to use the potentially malicious program. While Solana's runtime provides some protection through instruction validation, this pattern violates security best practices and creates ambiguity.

optimization Issues | 1 findings

Resolved

#1 optimization Issue
Hardcoded Test Keypaths.
lib.rs
L268-273
Description

This code makes the tests dependent on specific files existing at specific paths. Which Makes tests fail for other developers who don't have identical file system setup, Creates environment dependencies that break CI/CD pipelines, Reduces test reliability and reproducibility, and Makes the code harder to maintain across different environments. Replace hardcoded keypair paths with dynamically generated test keypairs.

informational Issues | 2 findings

Resolved

#1 informational Issue
Incorrect Success Message Issue.
lib.rs
L166
Description

This discrepancy creates a significant mismatch between what's actually happening and what's being reported to users. The schedule-based minting logic explicitly calculates a specific amount to mint based on the current time period and remaining allocation, which often differs from the user's requested amount. However, the completion message displays the user's requested amount (human_readable) rather than the actual amount minted (amount), potentially misleading users. Replace the misleading message with one that accurately reports the actual amount minted

Resolved

#2 informational Issue
Missing Return in Schedule Max Supply Check.
lib.rs
L222-239
Description

In the check_timestamp_and_schedule function, when the code detects a schedule-defined target amount that would exceed the maximum supply, it logs a message but doesn't explicitly handle. While this doesn't cause a security vulnerability (because minted_amount starts initialized as None and will remain None if the else branch isn't taken), it's still a code quality issue. The intent of what should happen when the max supply would be exceeded isn't explicitly stated in the code, requiring readers to understand the implicit behavior of the function. Add an explicit early return or continue statement to make the behavior clear.