As of 3 Nov 2026, FitBurn AI has 1 audit report on Trustblock, by CertiK, dated 5 May 2023. That report lists no open critical findings.
Record last updated . It holds audits, findings and contracts up to Nov 2026, and incidents up to Oct 2026. Trustblock does not review code.
Newest first
| Audit | Security firm | Date | Scope | Critical findings | Report |
|---|---|---|---|---|---|
| Fitburn (Audit) | Security firm: CertiK | Date: | Scope: Files named in the report | No open critical findings | Open · skynet.certik.com |
Statuses are the security firm’s own, from each report.
| Severity | Open | Acknowledged | Fixed |
|---|---|---|---|
| Critical | 0 | 0 | 0 |
| High | 2 | 0 | 0 |
| Medium | 0 | 0 | 4 |
| Low | 0 | 1 | 8 |
Tokens that are penalized by the user are left in the contract and cannot be withdrawn directly by the user. We did not find a `withdraw()` method that allows the owner to retrieve these penalized tokens.
Open the reportThe function `receiveReward()` allows the owner of the specified stake to receive the reward, If a user performs the following actions: - 1, Calls the function `receiveReward()` after a staking period, passing the parameter `withdrawDeposit` as false, then the variable `stake.cycles` will be equal to 1. - 2, Immediately calls the function `receiveReward()` again, passing the parameter `withdrawDeposit` as true, then at line 219 of the code, the variable `depositItem.amount` will be equal to `stakeAmount`, but the variable `_penalties[depositItem.token][depositItem.tokenId]` will be updated. This could potentially allow the owner of the project to withdraw assets belonging to other users.
Open the reportIf a user deposits ERC721 tokens for a period that is less than one, the `depositItem.amount` in line 180 may become 0 due to the penalty mechanism. However, the transfer of ERC721 tokens to the user is based on the token ID, so the user can avoid the penalty.
Open the reportThe `AbstractVesting` contract is designed to gradually release tokens stored in the contract over a certain period of time. The contract includes a `topUp()` method that allows users to transfer tokens to the contract. To support the transfer of ERC1155 tokens to the contract, it is necessary to implement the corresponding onReceived methods.
Open the reportIf the asset being deposited is 721 or 998, and the user's staked time is less than one cycle, the `stake.deposit[i].amount` is not set to 0, which is inconsistent with other situations where it is set to 0. Since `stake.activeDeposit` has already been set to false, this issue will not result in any loss of assets.
Open the reportBased on the code logic, the user can withdraw both their deposited tokens and rewards by setting the `withdrawDeposit` parameter to true. Otherwise, if `withdrawDeposit` is set to false, only the rewards will be withdrawn, which is inconsistent with line 191 comment.
Open the reportThe `receiveReward()` function can be called by the user to receive their reward. The user can pass the `breakLastPeriod` parameter as either true or false. By setting `breakLastPeriod` to false, the check on line 222 of the code `!breakLastPeriod` will always evaluate to true.
Open the reportThe formula for calculating the reward is as follows: ```solidity=237 (finishTimestamp - startTimestamp) / period ``` Therefore, if a user deposits tokens for less than one PERIOD, the reward will not accumulate cumulatively. Additionally, if the user claims their reward without withdrawing their tokens, their reward may be partially reduced.
Open the reportThe function `setFactories()` can be called by an admin to modify the variables `_minters` and `_manipulators`. If the original `minter` and `manipulator` have been authorized with additional permissions, then when these variables are modified, the original permissions are not revoked.
Open the reportThe `removeFactory()` function is used to remove an address. However, it only sets the location corresponding to the address in the array to `address(0)`, without reducing the length of the array. This can cause wasted gas during subsequent searches. And when `grantFactoryMintPermission()` or `grantFactoryMetadataPermission()` is called to authorize the address, `address(0)` will also be authorized. Additionally, when an address is removed, it may be necessary to also revoke the corresponding permission.
Open the reportThe variable `_disabledTypes` is not displaying any initialization, therefore, it is being set to the default value of `false`.
Open the report```solidity=44 /* expires */ uint64(params.expiresAt) ``` - The type conversion `uint64(params.expiresAt)` from larger type uint256 to smaller type uint64 may truncate data.
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="fitburn"></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