As of 30 Oct 2026, Meta Pool has 2 audit reports by 2 security firms on Trustblock; the latest is by Resonance Security, dated 8 Aug 2025. Those reports list no open critical findings.
Record last updated . It holds audits and findings, contracts and incidents up to Oct 2026. Trustblock does not review code.
Newest first
| Audit | Security firm | Date | Scope | Critical findings | Report |
|---|---|---|---|---|---|
| MetaPool | Security firm: Resonance Security | Date: | Scope: 8 addresses on Ethereum and Solana | No open critical findings | Open · IPFS |
| Metapool security review | Security firm: Nethermind Security | Date: | Scope: Not recorded (see the report) | 2 critical findings, fixed | Open · GitHub |
Statuses are the security firm’s own, from each report.
| Severity | Open | Acknowledged | Fixed |
|---|---|---|---|
| Critical | 0 | 0 | 2 |
| High | 0 | 0 | 3 |
| Medium | 0 | 0 | 1 |
| Low | 2 | 0 | 10 |
The report gives no description here.
Open the reportThe report gives no description here.
Open the reportThe report gives no description here.
Open the reportThe report gives no description here.
Open the reportThe report gives no description here.
Open the reportThe report gives no description here.
Open the reportThroughout 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.
Open the reportThe 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.
Open the reportThe 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.
Open the reportThe 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).
Open the reportIt 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.
Open the reportThe 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.
Open the reportThe 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.
Open the reportThe 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.
Open the reportWhen 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.
Open the reportThe report gives no description here.
Open the reportThe reports name a repository or files. Open a report to see its scope.
Is this your project? Show this record on your own website. The label states what the record holds, links to this page and updates by itself. It is free and needs no sign-in.
Automatic: the three strongest facts of this project’s own record (its last audit and two more), highlighted. They update with the record. Picking a fact turns Automatic off.
<head><script src="https://widget.trustblock.run/project-widget.min.js" defer></script></head><body><divdata-tb-project-widgetdata-tb-project-slug="mpeth"></div></body>
Paste the code where the label should appear. It uses no API credit and updates by itself.
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