MetaPool

Resonance Security8 addresses on Ethereum and Solana

Audit · firm’s term: smart contract audit

Resonance Security reviewed Meta Pool (MetaPool) on 8 Aug 2025: 11 findings, 0 critical; 9 marked fixed, 2 open.

No open critical findings
Open the reportOpen Meta Pool’s security record
Report stored on IPFS. Content hash QmeGnaTjX5NXYH7GHVLUfG6yKkKFMnA9EP4PTvfMjaLFqE

Trustblock does not review code.

Findings11

Statuses are the security firm’s own, from its report.

SeverityOpenAcknowledgedFixed
Critical000
High000
Medium000
Low209
LowDead CodeFixed

Throughout the source code there are multiple instances that lead to a dead end as unimplemented features and functionalities are explicitly reverted. These should be cleaned up to increase the quality of the code and decrease the bytecode stored on the blockchain.It should be noted that while some code might be used to maintain interoperability between other contracts on the blockchain, it may still increase smart contract size while not being entirely necessary, since the blockchain may revert nonetheless.

LowMisleading Account Unregistration ResultFixed

The function storage_unregister() returns misleading information whenever the user account that calls the function does not exist, i.e. returns true when no account was unregistered. This function should return false, or an error indicating that no such account was found on storage.Misleading information may lead to malformed decisions and subsequent actions by users, which may ultimately damage the trust in the protocol.

LowMissing FtMint And FtBurn Events EmissionFixed

The events FtMint and FtBurn are not being emitted on all minting and burning actions. These events are missing from the functions stake_for_lockup(), unstake_all(), and unstake_from_lockup_shares().Emitted events are vital for transparency, efficiency, and usability in blockchain ecosystems, and, when available, should be used at all times as they enable off-chain users and applications to monitor, index, and respond to on-chain activity.

LowPausable Functionality Not UsedFixed

The smart contracts implement a Pausable functionality, however, it is not being used. Such functionality may be useful during emergencies and should be controlled by multi-signature wallets or decentralized autonomous organizations (DAO).

LowRedundant Code Throughout The ProtocolFixed

It was observed that throughout the protocol there are multiple instances of redundant code on several accounts:Variables and values related to testing environments;Deprecated variables and values;Reimplemented standard trait implementations;Redundant functions, e.g. withdraw_all() and withdraw_unstaked();These design patterns increase code complexity and do not maximize transaction gas and storage efficiency on the blockchain.

LowStorage-Mutating Function Marked As Read-OnlyFixed

The function ft_metadata_set() is marked as read-only, however, it mutates the storage of the smart contract, specifically the LazyOption with storage key ftmd. This fact may create inconsistencies in the usage of the protocol by its users.

LowUnused FunctionsFixed

The following functions and modifiers were found to be unused within the system:RewardMeter::reset()assert_min_balance()apply_multiplier()Unused functions increase the complexity and readability of the smart contract's code and their inclusion should be discouraged whenever possible.

LowUsage Of Outdated PackagesFixed

The following Rust crates are used as dependencies of the project and contain known vulnerabilities:paste (1.0.15). paste is unmaintained. For more information: [RUSTSEC-2024-0436](https://rustsec.org/advisories/RUSTSEC-2024-0436)wee_alloc (0.4.5). wee_alloc is unmaintained. For more information: [RUSTSEC-2022-0054](https://rustsec.org/advisories/RUSTSEC-2022-0054)borsh (0.7.2). Parsing borsh messages with ZST which are not-copy/clone is unsound. For more information: [RUSTSEC-2023-0033](https://rustsec.org/advisories/RUSTSEC-2023-0033)borsh (0.8.2). Parsing borsh messages with ZST which are not-copy/clone is unsound. For more information: [RUSTSEC-2023-0033](https://rustsec.org/advisories/RUSTSEC-2023-0033)It should also be noted that the NEAR SDK version 3.1.0 is also outdated and should be bumped to more recent versions to include the latest logical, performance, and security fixes.

LowUsage Of Outdated staked_amount Due To RoundingFixed

When attempting to deposit and stake NEAR, the function deposit_and_stake() is called. This function internally calls internal_deposit() and then internal_stake_from_account(). The function internal_stake_from_account() stakes the available account deposit by amount, which may or may not be the same amount specified by the user (due to rounding on is_close()). This same amount is then used on nslp_try_internal_clearing(), which may be different from what was actually staked, by a maximum range difference of 0.001 NEAR.

Contracts in scope

No deployed address is recorded for this audit.

The report names a repository or files. Open the report to see its scope.

Part of Meta Pool’s security record

Meta Pool
Audits2 audits by 2 firmsLast audit Aug 2025, by Resonance Security.
Critical findingsNo open critical findingsAcross the 2 reports, 2 critical findings were reported. Each is marked fixed by the firm that reported it.
Open Meta Pool’s security record

Security firm

Resonance Security

18 projects reviewed · 25 reports · latest Aug 2025

See Resonance Security’s audits

Something wrong on this page? A missing report, a wrong date, a finding that was fixed since. Tell us and we check it against its source.

Tell us