Balance.Fun security record

BNB Chain, Ethereum, Solanabalance.funX

As of 3 Nov 2026, Balance.Fun has 1 audit report on Trustblock, by CertiK, dated 18 Dec 2024. That report lists no open critical findings.

Critical findings
No open critical findings
In 1 report.
Open the latest report
Your label, live
Get the label for your site

Record last updated . It holds audits, findings and contracts up to Nov 2026, and incidents up to Oct 2026. Trustblock does not review code.

Audits1

Newest first

AuditSecurity firmDateScopeCritical findingsReport
balanceSecurity firm: CertiKDate: Scope: Files named in the reportNo open critical findingsOpen · skynet.certik.com

Findings18

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

SeverityOpenAcknowledgedFixed
Critical000
High021
Medium000
Low1203
LowConcerns on Missing Default Valuebalance · CertiK · 18 Dec 2024Open

The `m_receiveAddr` is not assigned a default value during initialization which raises a concern: If a whitelist token is set up but the receiver address(`m_receiveAddr`) is not properly configured, users might inadvertently send tokens to the address(0).

Open the report
LowDiscussion on Native tokensbalance · CertiK · 18 Dec 2024Open

Both `TopUpTron` and `TopUpV1` include a `receive()` function to collect native tokens. The concern arises if the team intends to enable native tokens to be whitelisted and uses the contracts themselves as the receiver address. In this case, the payment record may not be updated, and may need further modification on `receive()` function.

Open the report
LowIncompatibility with Deflationary Tokensbalance · CertiK · 18 Dec 2024Open

When transferring deflationary ERC20 tokens, the input amount may not be equal to the received amount due to the charged transaction fee. For example, if a user sends 100 deflationary tokens (with a 10% transaction fee),, only 90 tokens actually arrived to the contract. However, a failure to discount such fees may allow the same user to withdraw 100 tokens from the contract, which causes the contract to lose 10 tokens in such a transaction. Reference: https://thoreum-finance.medium.com/what-exploit-happened-today-for-gocerberus-and-garuda-also-for-lokum-ybear-piggy-caramelswap-3943ee23a39f ```solidity=78 bool bTransRet = erc20_token.transferFrom(msg.sender, m_receiveAddr, topup_amount); ``` - Transferring tokens by `topup_amount`. ```solidity=81 userPopupAmount[msg.sender][erc20_topup_token] += topup_amount; ``` - The `topup_amount` appears to be used for bookkeeping purposes without compensating the potential transfer fees. ```solidity=102 bool bTransRet = erc20_token.transferFrom(msg.sender, m_receiveAddr, topup_amount); ``` - Transferring tokens by `topup_amount`. ```solidity=104 userPopupAmount[msg.sender][erc20_topup_token].add(topup_amount); ``` - This function call executes the following operation. - In `SafeMath.add`, - `return a + b;` - The `topup_amount` appears to be used for bookkeeping purposes without compensating the potential transfer fees.

Open the report
LowIncompatible with non-standard ERC20 tokenbalance · CertiK · 18 Dec 2024Open

The return values of the `transfer()` and `transferFrom()` calls in the smart contract are not checked. Some ERC-20 tokens' transfer functions return no values, while others return a bool value, they should be handled with care. If a function returns `false` instead of reverting upon failure, an unchecked failed transfer could be mistakenly considered successful in the contract. ```solidity=58 _token.transfer(receiptAddr, withdrawAmount); ``` Non-standard ERC20 token like USDT on Ethereum mainnet, its `transfer` and `transferFrom` functions do not yield a return value. If the input token refers to USDT, any attempt to transfer USDT using these functions will result in a revert. ```solidity=78 bool bTransRet = erc20_token.transferFrom(msg.sender, m_receiveAddr, topup_amount); ```

Open the report
LowInconsistent Commentbalance · CertiK · 18 Dec 2024Open

The linked comments appear to be inconsistent with the implementation.

Open the report
LowMissing Emit Eventsbalance · CertiK · 18 Dec 2024Open

There should always be events emitted in the sensitive functions that are controlled by centralization roles.

Open the report
LowMissing Zero Address Validationbalance · CertiK · 18 Dec 2024Open

The cited address is missing a check that it is not `address(0)` while updating. - `TopUpTron::validToken` - `TopUpTron::m_receiveAddr` - `TopUpV1::validToken` - `TopUpV1::m_receiveAddr`

Open the report
LowPotential Inconsistency on topup amount validatiobalance · CertiK · 18 Dec 2024Open

The payment amount in the Solana contract is subject to a restriction (`MIN_RECHARGE_AMOUNT`), which sets a minimum limit. However, this restriction does not apply to Aptos and Solidity contracts.

Open the report
LowPotential Missing Record Storagebalance · CertiK · 18 Dec 2024Open

Both Aptos and Solana contracts are designed to emit events when users make payments, without requiring additional storage to track user payments as is done in Solidity contracts.

Open the report
LowUnused Dependenciesbalance · CertiK · 18 Dec 2024Open

The linked packages in `TopUpV1` does not being used: - import "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol"; - import "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol"; - import "@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol"; - import "@openzeppelin/contracts-upgradeable/utils/structs/EnumerableMapUpgradeable.sol";

Open the report
Show 2 more
LowUnused error messagebalance · CertiK · 18 Dec 2024Open

The linked error message "ERR_INVALID_TOKEN_SETTING" does not being used in the current codebase.

Open the report
LowViolation of Check-Effect-Interaction Patternbalance · CertiK · 18 Dec 2024Open

In the function `topup` for both `TopUpTron` and `TopUpV1`, the external calls: - erc20_token.transferFrom are executed before the state variable `userPopupAmount` is updated.

Open the report

Contracts

No deployed address is recorded for these audits.

The reports name a repository or files. Open a report to see its scope.

The repositories and files the reports name

Show this on your site

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.

Content

Facts

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.

Fixed as
Language

Style

Layout
Theme
Accent
Corners

Format

Size
Date
Embed as
HTML
<head>
<script src="https://widget.trustblock.run/project-widget.min.js" defer></script>
</head>
<body>
<div
data-tb-project-widget
data-tb-project-slug="balancefun"
></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