As of 3 Nov 2026, HELLO Labs has 3 audit reports by 2 security firms on Trustblock; the latest is by Hacken, dated 24 May 2024. Those reports list 1 open critical finding. It also holds 3 deployed contracts on 3 chains.
Record last updated . It holds audits and findings, contracts and incidents up to Nov 2026. Trustblock does not review code.
Newest first
| Audit | Security firm | Date | Scope | Critical findings | Report |
|---|---|---|---|---|---|
| Hello Labs / Bridge Rust | Security firm: Hacken | Date: | Scope: 3 addresses on Ethereum, BNB Chain and Solana | 1 open critical finding | Open · hacken.io |
| Hello Labs / Bridge + Voting | Security firm: Hacken | Date: | Scope: 3 addresses on Ethereum, BNB Chain and Solana | 3 critical findings, fixed | Open · hacken.io |
| Hello.one - Audit 2 | 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 | 1 | 0 | 3 |
| High | 2 | 0 | 2 |
| Medium | 0 | 0 | 1 |
| Low | 17 | 0 | 20 |
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 function `airdrop()` is used to distribute tokens and can be called multiple times by the `owner`. In addition, `owner` can airdrop `H1T3` from any address to any other address without approval as it calls `_basicTransfer()` which does not require any approvals. Any compromise to the `owner` account may allow the hacker to take any holders `H1T3`.
Open the report`_developmentFee` is used instead of `_burnFee`.
Open the reportThe report gives no description here.
Open the reportThe report gives no description here.
Open the reportThe function `initialize()` is `external` and can be called by anyone as long as the contract is deployed.
Open the reportThis comment is only correct if the `setMaxWalletPercent()` has not been used to change the percentage.
Open the reportThere is a `return` before the `emit` so that the event will never be emitted.
Open the reportThe functions which are never called internally within the contract should have external visibility for gas optimization. ```solidity function tradingStatus(bool _status) public onlyOwner { function getCirculatingSupply() public view returns (uint256) { function rescueToken(address tokenAddress, uint256 tokens) function clearStuckBalance(uint256 amountPercentage, address adr) public onlyOwner { function setWhitelisted(address _wallet, bool status) public onlyOwner { ```
Open the reportThe function `totalSupply()` does not read or modify state and is declared as `view`.
Open the reportThe function `clearStuckBalance()` uses Solidity's built in `transfer()` function. There are potential issues with this as this forwards exactly 2300 gas and if the receiving contract has a `fallback` function or gas prices are changed, then the transaction may be reverted. See this [doc](https://ethereum.stackexchange.com/questions/19341/address-send-vs-address-transfer-best-practice-usage) for more details.
Open the reportThe functions `takeFee`, `shouldTakeFee`, and `checkTxLimit` are all declared as `internal`. The naming convention for `internal` functions is that they start with `_`.
Open the reportThere should always be events emitted in the sensitive functions that are controlled by centralization roles.
Open the reportAddresses should be checked before assignment or external call to make sure they are not zero addresses.
Open the reportAny user with the `authorized` role can set `_liquidityFee`, `_marketingFee`, `_developmentFee`, `_burnFee`, and `_feeDenominator`, but the upper limit is just that the total sum of fees is less than `feeDenominator`. In the extreme case this means the total fee can be as high as 99.9999...%.
Open the reportAlthough `totalFee` is a public variable, the fees that go into it are not made public. Users may want to know exactly how much of the `totalFee` is used for liquidity, marketing, development, and burning as well as what the denominator for `totalFee` is.
Open the reportThe `approve` function could be used in a Front-Running attack that allows a spender to transfer more tokens than the owner of the tokens ever wanted to allow the spender to transfer. Here is a possible attack scenario: Alice allows Bob to transfer N of Alice's tokens (N>0) by calling approve method on Token smart contract passing Bob's address and N as method arguments After some time, Alice decides to change from N to M (M>0) the number of Alice's tokens Bob is allowed to transfer, so she calls approve method again, this time passing Bob's address and M as method arguments Bob notices Alice's second transaction before it was mined and quickly sends another transaction that calls ·transferFrom· method to transfer N Alice's tokens somewhere If Bob's transaction will be executed before Alice's transaction, then Bob will successfully transfer N Alice's tokens and will gain the ability to transfer another M tokens Before Alice noticed that something went wrong, Bob calls ·transferFrom· method again, this time to transfer M Alice's tokens. So, Alice's attempt to change Bob's allowance from N to M (N>0 and M>0) made it possible for Bob to transfer N+M of Alice's tokens, while Alice never wanted to allow so many of her tokens to be transferred by Bob. ERC20 API: An Attack Vector on [Approve/TransferFrom Methods](https://docs.google.com/document/d/1YLPtQxZu1UAvO9cZ1O2RPXBbT0mooh4DYKjA_jp-RLM/edit#heading=h.m9fhqynw2xvt)
Open the reportSolidity version >=0.8.0 includes checked arithmetic operations and underflow/overflow by default, making SafeMath redundant.
Open the reportThe state variable `launchedAt` was never used.
Open the reportLiterals with many digits are difficult to read and review. File: contracts/Main.sol (Line 467, Function `Main.slitherConstructorConstantVariables`) ```solidity address constant DEAD = 0x000000000000000000000000000000000000dEaD; ``` --- File: contracts/Main.sol (Line 468, Function `Main.slitherConstructorConstantVariables`) ```solidity address constant ZERO = 0x0000000000000000000000000000000000000000; ```
Open the reportThe word `settting` in this comment should be spelled `setting`.
Open the reportThe contract has unlocked compiler version. An unlocked compiler version in the source code of the contract permits the user to compile it at or above a particular version. This, in turn, leads to differences in the generated bytecode between compilations due to differing compiler version numbers. This can lead to an ambiguity when debugging as compiler specific bugs may occur in the codebase that would be hard to identify over a span of multiple compiler versions rather than a specific one.
Open the reportThe `amount` in the formula noted above is untaxed and is not the amount a user will receive if their transaction was taxed.
Open the report| Address | Chain | Source code |
|---|---|---|
| 0x0f1c…ac000x0f1cbed8efa0e012adbccb1638d0ab0147d5ac00 | Chain: BNB Chain | Source code: Verified source |
| 4h49hP…bSS44h49hPGphLNJNDRyiBwzvKoasR3rw1WJCEv19PhUbSS4 | Chain: Solana | |
| 0x4110…311c0x411099c0b413f4feddb10edf6a8be63bd321311c | Chain: Ethereum | Source code: Verified source |
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="hello-labs"></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