BaoBey

CertiKFiles named in the report

CertiK reviewed BaoBey on 2 May 2023: 11 findings, 0 critical; 10 marked fixed, 1 open.

No open critical findings
Open BaoBey’s security record

The original report was removed from its address (seen 17 Oct 2026).

Trustblock does not review code.

Findings11

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

SeverityOpenAcknowledgedFixed
Critical000
High101
Medium001
Low008
HighInitial Token DistributionFixed

All `BeBe` tokens are sent to the `mint_wallet` address upon contract deployment. The `mint_wallet` address [`0x380F3734C32F0ef998955E5d57BA1E69f7a5DD4f`](https://bscscan.com/address/0x380f3734c32f0ef998955e5d57ba1e69f7a5dd4f) is an externally owned account, posing a potential centralization risk as the `mint_wallet` can distribute `BeBe` tokens without the consensus of the community.

Medium`transfer_delay_enabled` Limits SwappingFixed

Within the `_transfer()` function, the boolean variable `transfer_delay_enabled` being true can lead the function call to access a block of code that requires the user invoking the call to not have made a previous call within the same block. While the check does not apply if the `to` address is the `uniswapV2Router` or `uniswap_v2_pair`, there is no consideration of the `from` address being the `uniswapV2Router` or `uniswap_v2_pair` addresses, therefore potentially limiting swapping capabilities. There are instances in which the `from` address and the `_msgSender()` are either both `uniswapV2Router` or both `uniswap_v2_pair`; in those cases, the router or pair address will not be able to make such a call more than once in a block.

LowDuplicate Require StatementsFixed

The `_transfer()` function implementation within the contract `BaoBeyToken` uses **require statements** to ensure that the `from` and `to` addresses passed as parameters are not `address(0)`. While these are important checks to have, the checks already exist in the `ERC20.sol` contract implementation of `_transfer()`, which is eventually called and used to handle the actual transfers. Therefore, the linked **require statements** are redundant and can be removed.

LowInaccurate CommentFixed

The comment in Line 726 says "devOrOwner", but the modifier used is called "marketingOrOwner".

LowLocked BNBFixed

The constructor of the `BaoBeyToken` contract is `payable`. The contract also includes a `payable` `receive()` function; however, there are no functions that allow the BNB to be withdrawn. Therefore, BNB used to create the contract and any other BNB sent to the contract will be locked.

LowMissing Emit EventsFixed

There should always be events emitted in the sensitive functions that are controlled by centralization roles. The following functions are privileged functions controlled by the `owner` role and should emit events upon being called: - `init()` - `removeLimits()` - `disableTransferDelay()` - `setIsExcludedFromTax()` - `setAutomatedMarketMakerPair()` - `enableTrading()`

LowRedundant Type CastingFixed

The variables `uniswap_v2_pair` and `_dead_wallet` are already of type `address` and are redundantly casted to that type.

LowState Variable Should Be Declared `constant`Fixed

State variables that never change should be declared as `constant` to save gas. ```solidity=616 uint256 private _gas_price_limit = 70 * 1 gwei; ``` - `_gas_price_limit` should be declared `constant`.

LowTautologyFixed

Upon contract deployment, the two boolean variables `limits_in_effect` and `_gas_limit_active` are initialized to `true`. The value of these variables can only be changed by calling the `removeLimits()` function, which changes both variables to `false` (at which point they can never be made `true` again). In the following lines of code from the `_transfer()` function, the checks can be optimized as they are redundant. ```solidity=658 if (limits_in_effect && trading_enabled) { if ( from != owner() && to != owner() && to != address(0) && to != address(0xdead) ) { if (_gas_limit_active && automated_market_maker_pairs[from]) { require( tx.gasprice <= _gas_price_limit, "_transfer: Gas price exceeds limit" ); } ``` Since the first check in Line 658 is checking whether or not `limits_in_effect` is true, the second check in Line 665 regarding `_gas_limit_active` is unnecessary since these two variables will always be consistently set. ---- Additionally, the check in Line 662 is unnecessary due to the following **require statement**: ```solidity=654 require(to != address(0), "ERC20: transfer to the zero address"); ``` Since the function will revert if the `to` address is the 0 address, there is no need to check this again in Line 662.

LowToo Many Cases Handled In One FunctionFixed

The `_transfer()` function contains a series of checks that evaluate the value of certain variables before executing blocks of code. At least seven boolean variables are considered within the call; therefore there are at least 128 (i.e., 2^7) possible cases that can be passed through the function. As a result, it is likely that not all test cases have been considered and the function may behave unexpectedly in certain cases.

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.

Repository and files the report names (1)

  • BaoBeyToken.sol

Part of BaoBey’s security record

BaoBey
Audits1 audit by 1 firmLast audit May 2023, by CertiK.
Critical findingsNo open critical findingsIn 1 report.
Open BaoBey’s security record

Security firm

CertiK

1,044 projects reviewed · 1,375 reports · latest May 2025

See CertiK’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