REPORT TLC-SR-2026-1031 · 31 Oct 2026

Smart Contract Audit Report

A complete security review of the Trust Line (TLCOIN) BEP20 contract on BNB Smart Chain: verified source, every function, every privilege, checked against live chain state.

PASSEDSECURITY
REVIEW
Audit summary

Trust Line (TLCOIN)

Contract0x9A43B63BE488E3090ee5b57297Ed08e08B3a1fbA
Contract nameTLRUST_COIN
NetworkBNB Smart Chain mainnet (56)
Language / compilerSolidity · solc 0.8.26+commit.8a97fa7a
Source verification✓ Exact match Sourcify
DeploymentBlock 130,501,892 · 29 Oct 2026 16:04 UTC
Review typeManual line-by-line review + on-chain state verification
ResultPassed · no critical or high issues
91Security score

Grade A

01Executive summary

The TLC contract is a compact, readable BEP20 implementation. It contains no transaction tax, no blacklist, no pause mechanism, no proxy and no external calls. Holder balances can only be changed by the holder (transfer, burn) or by an address the holder approved. The owner role is narrow: it cannot touch anyone's tokens.

Total supply is bounded by code. 1,000,000 TLC were minted at deployment and a single additional mint of 500,000 TLC is possible exactly once. After that, supply can only go down (through burns). This is a stronger supply guarantee than most tokens on BNB Chain, which commonly keep an unrestricted mint().

No critical, high-severity or logic issues were found. The one medium item is economic, not a code bug: at review time the deployer wallet holds about 95% of supply. The remaining items are low-severity ownership notes and informational code-quality points.

0Critical
0High
1Medium
2Low
6Informational

02Scope & methodology

In scope

Filecontracts/tlcoin.sol
ContractsSafeMath, IBEP20, BEP20, BEP20Detailed, Ownable, TLRUST_COIN
External selectors19 (all mapped)
OptimizerDisabled
LicenseMIT

Out of scope

  • Off-chain staking platform and its servers
  • DEX pools, liquidity and market price
  • Private key custody of the owner wallet
  • Economic sustainability of reward plans

Source retrieval

Verified source pulled from Sourcify with an exact (metadata-hash) match to the deployed bytecode.

Bytecode cross-check

All 19 function selectors extracted from runtime bytecode and matched to the source. No undeclared functions.

Manual review

Line-by-line reading of every function, modifier and storage write, against a 40-point BEP20 risk checklist.

Privilege mapping

Every onlyOwner path traced to its maximum possible effect on holders and supply.

On-chain verification

totalSupply, owner, balances and the extraMinted flag read live over BSC JSON-RPC.

Scoring

Weighted score over five categories: security, access control, transparency, quality and centralization.

03Contract overview

Inheritance

TLRUST_COIN
├── BEP20 (balances, allowances, transfer, burn)
│   ├── IBEP20 (interface)
│   └── SafeMath (library)
├── BEP20Detailed (name, symbol, decimals)
└── Ownable (ownerAddress, transferOwnership)

Live state

totalSupply1,000,000 TLC
owner0xD2eB96E9…c53e2c70
Owner balance950,046 TLC
extraMintedNot used
Contract self-balance0 TLC

04Security checklist

Not a honeypotAnyone can transfer and sell
0% buy / sell taxNo fee code at all
No fee modifierTax cannot be added later
No blacklist / whitelistNo address can be blocked
No pause functionTrading cannot be halted
No max-tx / max-walletNo hidden trade limits
Not upgradeableNo proxy, code is final
No hidden ownerSingle public ownerAddress
No selfdestruct / delegatecallContract cannot be killed
Reentrancy-safeNo external calls made
Overflow-safe0.8 checked math + SafeMath
Zero-address guardsOn transfer, mint, burn, approve
Owner cannot seize fundsNo forced transfer path
Owner cannot burn othersburn() uses msg.sender
Source verifiedExact bytecode match
Standard eventsTransfer & Approval emitted
Mint capped, not zeroOne-time 500,000 owner mint
Supply concentration~95% in treasury wallet

05Findings

IDTitleSeverityStatus
TLC-01Supply concentrated in deployer walletMediumAcknowledged
TLC-02Owner-controlled one-time reserve mintLowAcknowledged
TLC-03Single-step ownership transferLowAcknowledged
TLC-04Redundant SafeMath, optimizer offInfoAcknowledged
TLC-05Floating pragmaInfoNo impact
TLC-06Unused internal _burnFromInfoNo impact
TLC-07Standard approve race conditionInfoMitigated
TLC-08Ownership event not indexed / not emitted at deployInfoAcknowledged
TLC-09withdrawCoin limited to contract's own balanceInfoSafe by design
TLC-01Supply concentrated in deployer walletMedium

Description

At review time the owner/deployer address 0xD2eB…2c70 holds 950,046 TLC, about 95% of total supply. This is normal immediately after launch, but a single key controlling most of supply is a market and custody risk.

Impact

A large sale or a compromised private key could move the market sharply. This is an economic and operational risk; no code path is affected.

Recommendation

Move treasury funds to a multisig wallet (for example Safe), publish an allocation and vesting schedule, and lock liquidity once a DEX pair is created.

Team response

Acknowledged. Multisig treasury and published vesting are scheduled on the roadmap.

TLC-02Owner-controlled one-time reserve mintLow

Description

mintExtra() lets the owner mint 500,000 TLC to itself, one time only. The extraMinted flag is set before minting and is never reset.

function mintExtra() public onlyOwner {
    require(!extraMinted, "Extra mint already done");
    extraMinted = true;
    _mint(msg.sender, EXTRA_MINT_AMOUNT);
}

Impact

Supply can grow by 50% at the owner's discretion, once. The ceiling is strictly bounded at 1,500,000 TLC and the flag is public, so anyone can check whether it has been used.

Recommendation

Announce any use in advance and route minted tokens into a vesting or timelock contract.

Positive note

Most BEP20 tokens keep an unlimited mint(). A single, hard-coded, single-use mint is a deliberate and much safer design.

TLC-03Single-step ownership transferLow

Description

transferOwnership() sets the new owner immediately. A wrong address would permanently lose access to mintExtra and withdrawCoin. There is also no renounceOwnership.

Impact

Limited. Owner powers never touch holder balances, so a lost owner key affects only the reserve mint and token recovery.

Recommendation

Double-check the target address before any transfer, test with a small multisig first, and prefer a multisig as the owner.

TLC-04Redundant SafeMath, optimizer offInfo

Solidity 0.8+ already reverts on overflow, so SafeMath adds a second check, and the optimizer is disabled. Both slightly raise gas per transfer. Security is not affected; on BNB Chain the extra cost is a fraction of a cent.

TLC-05Floating pragmaInfo

The source uses pragma solidity >=0.8.14;. The deployed bytecode was compiled with the fixed version 0.8.26 (verified), so the live contract is unaffected. Pin an exact version in future contracts.

TLC-06Unused internal _burnFromInfo

_burnFrom is internal and never called, so it is unreachable. No risk; dead code only.

TLC-07Standard approve race conditionInfo

Like every ERC20/BEP20 token, changing a non-zero allowance with approve can be front-run. TLC already ships increaseAllowance and decreaseAllowance, the standard mitigation.

TLC-08Ownership event not indexed / not emitted at deployInfo

OwnershipTransferred parameters are not indexed, and the constructor sets the first owner without emitting it. Indexers have to read owner() directly. No security effect.

TLC-09withdrawCoin limited to contract's own balanceInfo
function withdrawCoin(uint256 amount) public onlyOwner {
    _transfer(address(this), msg.sender, amount);
}

This only moves TLC that sits at the contract's own address, typically tokens users sent there by mistake. It cannot move tokens from any holder wallet. A safe and user-friendly recovery path. Current contract balance: 0 TLC.

06Privileged functions

FunctionAccessWorst-case effectAffects holders?
mintExtra()onlyOwner+500,000 TLC, onceDilution only
withdrawCoin(uint256)onlyOwnerMoves tokens held by the contract itselfNo
transferOwnership(address)onlyOwnerChanges ownerNo
burn(uint256)Any holderBurns caller's own tokensOwn tokens only
transfer / transferFrom / approveAny holderStandard BEP20Own tokens only

There is no function that sets fees, blocks addresses, pauses transfers, changes balances or replaces the code.

07Score breakdown

Code security98
Transparency & verification100
Access control92
Code quality & gas88
Centralization76
Overall91 / 100 · A

08Strengths & holder benefits

What stood out in review, and why it matters to anyone holding TLC.

True ownership

No blacklist, pause or forced transfer exists. Once TLC is in your wallet, only you can move it. This is the single most important property a token can have, and many popular tokens do not offer it.

Honest transfers

Zero tax today and zero ability to add one tomorrow. Wallets, exchanges and payment tools see exactly the amount sent, which makes TLC easy to integrate and list.

Scarcity by code

A hard 1.5M ceiling enforced by a single-use flag, plus a holder burn that only reduces supply. Long-term scarcity does not depend on anyone's promise.

Immutable & verified

No proxy means the rules you read today are the rules forever. Exact-match source verification lets anyone confirm it independently.

Small attack surface

About 180 lines, no external calls, no loops over user arrays, no oracle. Less code means fewer places for bugs to hide.

Universal compatibility

Pure BEP20 with 18 decimals. Works out of the box with every BNB Chain wallet, DEX router, bridge and block explorer.

09Recommendations

  • Transfer ownership and treasury to a multisig wallet.
  • Publish a token allocation and vesting schedule for the treasury.
  • Announce in advance if and when mintExtra() will be used.
  • Lock DEX liquidity with a public locker when a trading pair launches.
  • Commission an additional independent third-party audit before major exchange listings.

10Disclaimer

This report is an internal security review prepared by the TLC technical team. It covers only the smart contract source listed in scope, as verified on-chain on 31 October 2026. It does not cover the staking platform, off-chain systems, key management, liquidity or market behaviour, and it is not an endorsement or investment advice. Smart contract reviews reduce risk but cannot guarantee the absence of all issues. Always verify the contract address and do your own research.