Block Chain Games Rug Pull

Reported loss $40K
Rugpull

What happened

Block Chain Games (BCGA) on BNB Chain is deployed behind a proxy whose owner can replace the logic contract at any time. The verified source holds only the proxy: all token logic, including balances and any mint function, lives in whichever contract implementation points to, and the owner alone controls that pointer with no delay or cap. This gives the owner unrestricted power over the token's behaviour.

Beosin Alert reported on 2023-03-13 that the owner 0x44f2526b…cf8acb called a privileged function with selector 0x25bbb5ae to mint a large amount of BCGA and then swapped it for 128.45 BNB (about 39,092 USD at the time). De.Fi's REKT database lists the loss as 39,686 USD and the minted amount as 10,000,000,000,000,000,000 BCGA; it says the proceeds were moved to another externally owned address and then distributed to several addresses. It lists the malicious transaction as 0x59367a10…04355c and the draining transaction as 0x13e1bc8b…ad3647.

How it happened

What the code allows:

  1. The deployed contract is a proxy. address public implementation; stores the logic address, and fallback() external payable virtual { _fallback(); } forwards every call that is not defined in the proxy through delegatecall(gas(), implementation_, 0, calldatasize(), 0, 0). Balances, transfers and minting therefore run in the implementation, which is not part of the verified source.
  2. The owner controls the logic: function setImplementation(address __implementation) public onlyOwner { implementation = __implementation; }. There is no timelock, multisig or cap, so the owner can point the token at logic that includes a mint or any other privileged function.
  3. onlyOwner checks require(owner() == msg.sender, "Ownable: caller is not the owner"), and owner() on-chain is the deployer's address, so one key holds this power. renounceOwnership() exists but the on-chain read in meta.json shows an owner still set.

What was reported to have happened:

  1. Beosin Alert says the owner called a privileged function with selector 0x25bbb5ae to mint a large amount of BCGA.
  2. The same alert says the minted tokens were immediately swapped for 128.45 BNB (about 39,092 USD), and De.Fi lists the loss as 39,686 USD and the minted amount as 10,000,000,000,000,000,000 BCGA. The mint function's source is in the unseen implementation, so the code evidence shown here proves the owner's ability to supply such logic, not the exact mint code.

Protocol details

Classification Token
Protocol Type Exit Scam/Rugpull
Affected asset / contract BCGA

Build your security review skills

Work through hands-on labs covering real exploit mechanics, review techniques, and defensive patterns.