Layerium security record

BNB Chainlayerium.org

As of 3 Nov 2026, Layerium has 1 audit report on Trustblock, by CertiK, dated 4 Jul 2023. That report lists no open critical findings. It also holds 1 deployed contract on 1 chain.

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 and findings, contracts and incidents up to Nov 2026. Trustblock does not review code.

Audits1

Newest first

AuditSecurity firmDateScopeCritical findingsReport
Layerium - AuditSecurity firm: CertiKDate: Scope: 1 address on BNB ChainNo open critical findingsOpen · skynet.certik.com

Findings19

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

SeverityOpenAcknowledgedFixed
Critical000
High030
Medium030
Low1300
HighBlacklisting Centralization RisksLayerium - Audit · CertiK · 4 Jul 2023Acknowledged

The `Layerium` contract grants the `_owner` maintain the authority to include/exclude address into/from the blacklist via function: - `blacklist_Add_Wallets` - `blacklist_Remove_Wallets` Also enable or disable blacklist functionality via function: - `blacklist_Switch` The blacklist will affect the token transfer with the following valuations: ```solidity=808 if (noBlackList){ require(!_isBlacklisted[from] && !_isBlacklisted[to], "This address is blacklisted. Transaction reverted.");} ``` If the private key of the `_owner` is compromised, an attacker could potentially prevent recipients from transferring their tokens.

Open the report
HighCentralization Risks in Layerium.solLayerium - Audit · CertiK · 4 Jul 2023Acknowledged

In the contract `Layerium` the role `_owner` has authority over the functions shown in the diagram and list below. * `set_New_Router_Address()` - Set a new router address * `includeInFee()` - Remove address from exclusion from fees * `Wallet_Update_Dev()` - Register a new wallet as the `Wallet_Dev` to receive fees * `set_New_Router_and_Make_Pair()` - Set a new router and create a new pair address * `blacklist_Switch()` - Enable/disable flag to restrict blacklisted users * `remove_Random_Tokens()` - Transfer tokens in wallet to a specified address * `blacklist_Add_Wallets()` - Add a list of addresses to the blacklist * `set_Max_Transaction_Percent()` - Set max transaction amount as a percentage of the total supply * `set_Swap_And_Liquify_Enabled()` - Enable/disable the flag to allow swapping of tokens in contract for BNB * `process_Tokens_Now()` - Specify a specific percentage of the token holdings to execute a swap for BNB outside of the normal routine running of `swapTokensForBNB()` * `set_Transfers_Without_Fees()` - Enable/Disable flag to allow for no-fee token transfers * `set_New_Pair_Address()` - Set a new pair address * `_set_Fees()` - Set sell and buy fees * `blacklist_Remove_Wallets()` - Remove a list of addresses from the blacklist * `excludeFromFee()` - Add address to exclusion from fees * `set_Number_Of_Transactions_Before_Liquify_Trigger()` - Set the number of transactions between each attempt to swap tokens for BNB * `set_Max_Wallet_Percent()` - Set maxing wallet holdings allowed as a percentage of the total supply Any compromise to the `_owner` account may allow the hacker to take advantage of this authority to set important contract parameters such as the blacklist and fees, and transfer funds out of the contract. ![](https://accelerator-tasks-prod.acc.corp.certik.com/e3bc5f944d83431ab7263c0d2af20e2c/diagrams/centralization_Layerium-Layerium-_owner.svg) The contract `Layerium` is inherited from `Ownable`, and the following functions are from the extension of contract `Ownable`. Any compromise to the `_owner` account may allow the hacker to control contract ownership. * `renounceOwnership()` - Give up contract ownership and set owner to address(0) * `transferOwnership()` - Transfer the contract ownership to a new address ![](https://accelerator-tasks-prod.acc.corp.certik.com/e3bc5f944d83431ab7263c0d2af20e2c/diagrams/centralization_Layerium-Ownable-_owner.svg)

Open the report
HighInitial Token DistributionLayerium - Audit · CertiK · 4 Jul 2023Acknowledged

All of the LYUM tokens are sent to the owner address. This is a centralization risk because the owner address can distribute tokens without obtaining the consensus of the community. Any compromise to this address may allow a hacker to steal and sell tokens on the market, resulting in severe damage to the project. The contract has been deployed to the mainnet and as of July 3, 2023, the largest holder is (> 10%) is: \ lyumcexreserved.bnb: 62,089,473 LYUM (20.70%) Reference: [https://bscscan.com/token/0x09cf7ca1b4ca6ab3855f23020e8e0e9e721cc03d#balances](https://bscscan.com/token/0x09cf7ca1b4ca6ab3855f23020e8e0e9e721cc03d#balances)

Open the report
Medium`_TotalFee` not updated in `_set_Fees()`Layerium - Audit · CertiK · 4 Jul 2023Acknowledged

In the function `_set_Fees()`, the `_sellFee` and `_buyFee` are updated, but the `_TotalFee` is not updated accordingly.

Open the report
MediumIncorrect Usage of Equality Symbol `==`Layerium - Audit · CertiK · 4 Jul 2023Acknowledged

In function `process_Tokens_Now()`, the equality symbol `==` is incorrectly used to set a variable to a value. This will cause the value of `percent_Of_Tokens_To_Process` to always be its default value of 0, causing the function to always process `swapAndLiquify` with 0 tokens. ```solidity=890 function process_Tokens_Now (uint256 percent_Of_Tokens_To_Process) public onlyOwner { // Do not trigger if already in swap require(!inSwapAndLiquify, "Currently processing, try later."); if (percent_Of_Tokens_To_Process > 100){percent_Of_Tokens_To_Process == 100;} uint256 tokensOnContract = balanceOf(address(this)); uint256 sendTokens = tokensOnContract*percent_Of_Tokens_To_Process/100; swapAndLiquify(sendTokens); } ```

Open the report
MediumLogical issue about `_TotalFee` in `transfer()`Layerium - Audit · CertiK · 4 Jul 2023Acknowledged

The `_TotalFee` initially equals `_buyFee + _sellFee`. When a user tries to buy or sell tokens, it is assigned to either `_buyFee` or `_sellFee` in the `_transfer()` function depending on whether the buy or sell leg is the pair contract. And when `noFeeToTransfer == True`, transfer between non-fee-exempt user will be charged with `_TotalFee`. ```solidity=855 if(_isExcludedFromFee[from] || _isExcludedFromFee[to] || (noFeeToTransfer && from != uniswapV2Pair && to != uniswapV2Pair)){ takeFee = false; } else if (from == uniswapV2Pair){_TotalFee = _buyFee;} else if (to == uniswapV2Pair){_TotalFee = _sellFee;} // Changing of _Totalfee based on previous transaction _tokenTransfer(from,to,amount,takeFee); } ``` Within `_transfer()` the function `_tokenTransfer()` is executed which has an external call to function `_transferTokens()`. The function makes another call to `_getValues()` to get the fee value (`tDev`) and amount to transfer (`tTransferAmount`) as shown below. ```solidity=978 function _transferTokens(address sender, address recipient, uint256 tAmount) private { (uint256 tTransferAmount, uint256 tDev) = _getValues(tAmount); ``` In the execution of function `_getValues()` the value of `_TotalFee` is used to derive the `tDev` fee value used to pay fees. ```solidity=988 function _getValues(uint256 tAmount) private view returns (uint256, uint256) { uint256 tDev = tAmount*_TotalFee/100; uint256 tTransferAmount = tAmount.sub(tDev); return (tTransferAmount, tDev); } ``` The `_TotalFee` is not reset after the particular buy or sell transaction to the `uniswapV2Pair`, therefore the original value of `_TotalFee` will be overwritten. Since there is no method to manually set the `_TotalFee` to a new value, the value will change according to transactions with the `uniswapV2Pair` address, being either equal to the `_buyFee` or `_sellFee` at any point in time.

Open the report

Contracts1

AddressChainSource code
0x09cf7ca1b4ca6ab3855f23020e8e0e9e721cc03dChain: BNB ChainSource code: Verified source

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="layerium"
></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