If a blockchain is meant to keep a permanent, immutable record of transactions, shouldn’t it do so? Except that some transactions are more traceble than others, especially on BNB Chain.
Let’s cook up some BNB.
US$6.2 billion of BNB tokens “magically” appear in a Binance Chain (BNB Beacon Chain) wallet without any transaction reflecting their transfer in.
Token movements between the Binance Chain (BNB Beacon Chain) and Binance Smart Chain (BNB Smart Chain) have periodically not had transaction hashes to identify such transfers.
Attempts to run a blockchain node on Binance Chain (BNB Beacon Chain) have proved futile as there are “breaks” in the chain every 24 hours.
Bynow, there are serious questions hanging over the “blockchain-ness” of cryptocurrency exchange Binance’s various blockchains (BNB Beacon Chain, BNB Smart Chain), and whether or not they’re really operated as blockchains or somewhat more cynically as nothing more than centralized databases with a veneer of “decentralization.”
In order to make sense of the madness, it’s important to start from the beginning — Binance’s BNB token.
Launched in 2017, Binance’s BNB was intended to have a maximum supply of 200 million, as recorded in its whitepaper, of which 100 million was for the initial coin offering to outside investors, 80 million to the founding team (over a four year vesting period) and 20 million for angel investors.
In 2019, Binance launched the Binance Chain (since renamed to BNB Beacon Chain), which uses the Cosmos SDK and was intended to support decentralized exchanges, primarily Binance’s DEX.
So far so good.
Then in 2020, Binance went ahead with its Binance Smart Chain (since renamed to BNB Smart Chain), an Ethereum clone that could support smart contracts.
The importance of the two Binance chains and their relationship with each other will become apparent shortly.
In mid-December 2022, Twitter user @cryptohippo65 noted that 22 million BNB tokens had “miraculously” appeared in one of the top wallet addresses for the BNB token:
According to the blockchain explorer, this wallet held some 22 million in BNB tokens, but there’s no evidence of where those tokens came from.
There are only 10 transactions for the wallet address at the time of print and none of them contained 22 million BNB.
For the unfamiliar, a blockchain is supposed to record all the transactions going into or out of a particular wallet address — that’s what makes it special, that you have an unalterable, immutable record of transactions.
From the early days of Bitcoin and blockchain, the idea was that by having a permanent, decentralized and immutable ledger of transactions, us fallible humans would no longer have to argue over what had or had not happened in the past — the code would set us free to pursue more higher order pursuits, such as buying Lambos.
As a decentralized single source of truth, any blockchain address is supposed to reflect whatever went in and whatever went out, except this peculiar address (bnb1j725qk29cv4kwpers4addy9x93ukhw7czfkja) on the Binance Chain (now known as the BNB Beacon Chain).
So how did 22 million BNB make its way into this address (by the way, this isn’t how airdrops work)?
That leaves only two real possibilities (neither of which is mutually exclusive):
None of the Binance Chains operate as actual blockchains, in other words, transactions (and their hash identifiers) can be amended going backwards and the ledger doesn’t provide an immutable source of truth; and/or
The blockchain explorer is faulty, such that the transactions do go through, but the explorer doesn’t reflect them — in other words your tokens can show up, but how they got there isn’t transparent.
@cryptohippo65 did not immediately assume that the Binance blockchains had an issue and instead tried other explorers, which gave rise to the same issue — no trace of 22 million BNB heading into the wallet in question.
So if the problem isn’t with the explorer, then where is it?
A bit of nomenclature clarity is necessary here, otherwise things get very messy, very quickly:
Binance Chain (“BC”) — since renamed as BNB Beacon Chain and operates on the BEP-2 technical standard, and a heavily re-worked version of the Cosmos SDK.
Binance Smart Chain (“BSC”) — since renamed as BNB Smart Chain and operates on the BEP-20 technical standard, a version of Ethereum that has also been modified.
BSC Token Hub — the BSC Token Hub acts as a vault to facilitate cross-chain transactions between BC and BSC and submits the communication between the two blockchains. (E.g. sending BNB from BC to BSC via the BSC Token Hub should leave a trail of breadcrumbs to see that passage and ought to be capable of inspection on an explorer).
For simplicity, this article will only refer to Binance Chain as “BC” and Binance Smart Chain as “BSC” exclusively and ignore the new nomenclature in the interests of clarity.
So technically, if a user were to send BNB from BC to BSC there should be a transaction history of that through the BSC Token Hub, and vice versa the other way around.
In practice of course, that wasn’t the case as revealed by ChainArgos data.
In this transaction 200,000 BNB were transferred to the BSC Token Hub (the bridge) on the BSC side from the address 0x18913656c387613f6d0a1bff7365c335c0069e69 (BEP-20) with the ultimate destination bnb1h9ymecpakr8p8lhchtah2xxx7x4xq099umclqu (BEP-2) on the BC side.
The transaction of 200,000 BNB was marked as successful:
But a quick search of the BC explorer for the address bnb1h9ymecpakr8p8lhchtah2xxx7x4xq099umclqu (BEP-2) shows no evidence of the 200,000 BNB transfer for that date window.
Since ChainArgos started looking more closely at these transactions, some changes have been noted in the classification of transactions and wallet names.
Nonetheless, the gaps are still there.
Every transaction on a blockchain is supposed to have a unique “TxHash” or a one-of-a-kind code which acts as an identifier for that transaction.
In this case, the 200,000 BNB is identified by this TxHash:
It’s also reflected as an “Oracle Claim” which will be helpful when trying to find this transaction on the BC explorer, except that it’s not there.
Even looking at transaction data several days before and after December 20, 2020 there isn’t a single TxHash for CD6948F6A80EC0BC5A87E80A37C70C3A9EDC82CFFEC467C5AEAC187333AB58FD
So ChainArgos tried again in the other direction, from BC to BSC with the same result.
Transaction that has been stewed to perfection for over two years still reflects a “pending…” TxHash on BSC.
So maybe it’s just a blockchain explorer limitation?
After all, bridging across chains could cause some things to get unchained (pun intended), but perhaps there is a way to find out if there are any incoming cross-chain transfers coming from the BC side into BSC, except that there isn’t.
To be sure, no one is saying that the transactions between BC and BSC via the BSC Token Hub don’t go through, there just isn’t any way to verify and that much is alluded to by someone claiming to be the “Chief Scientist” for the BNB Chain.
So if, as the “Chief Scientist” suggests, what you see is really not what you get, how is one to figure out what transactions have occurred, by running a node?
While the BSC node is easy enough to setup and run, the way it syncs is something else altogether.
For those new to the business of running a blockchain node, the idea of course is to sync your node from the genesis block so that you have a copy of the same decentralized ledger of transactions that everyone else has going back to the very beginning.
Think of it as coming to a meeting late, and someone updates you of what has transpired up to that point.
The whole idea behind decentralization is that transactions are supposed to be verified independently from the very beginning, yet interestingly enough BNB Chain recommends you “Sync From Snapshot (Recommended)” to run a BSC node.
In fact, BNB Chain discourages you from syncing your node from the genesis block (i.e. the very beginning).
And that’s a big deal because every other properly decentralized blockchain doesn’t just recommend you sync from the genesis block, it’s a requirement.
Take Ethereum for instance, where running a node requires you sync from the genesis block because a validator needs the entire state (i.e. the balances of accounts, the code of contracts, etc.) in order to validate future blocks.
Because that’s how blockchains are supposed to work — you’re supposed to have a full history, not just a page.
It’s the equivalent of trying to study the history of Germany, but only starting in 1946, and pretending that all those years before that were, um, unimportant for context.
Not syncing from the genesis block is akin to a bank tearing up the first half of your bank book and tossing it out but being ok to confirm that you miraculously have a hundred million dollars.
Or like getting a recipe which tells you only what to do after you take it out of the oven (the first part matters too).
To make matters worse, syncing a BSC node using snapshots requires running something called a “pruneancient flag” the nomenclature of which will make sense shortly — that bit of code literally means pruning old transactions, hence “prune-ancient.”
Because, who needs the really old transactions right?
Onwards and upwards.
But as it turns out, these “ancient” transactions really aren’t that ancient anyway.
Syncing a BSC node using snapshots, means that the “validator” only pulls the 90,000 blocks immediately past, whereas older transactions get put into what the cynics who created this chain called a “prunedfreezer.”
Well for starters, it means that if someone wanted to bury “interesting” transactions, they could — just wait another 90,000 blocks and they get stuffed into the “prunedfreezer” literally the stuff that gets jammed into cold storage and which no longer go in later snapshots.
Which means that every three and a half days or so, voila, the transactions before that get stuffed in the “prunedfreezer.”
Mind you, these transactions aren’t lost, they’re just really difficult to get to, syncing from snapshots, (sort of like when you really drop food behind the freezer), the only way is to try and sync the node from the genesis block.
Nevertheless, the BSC node can be synced all the way to the genesis block, albeit with some effort.
On to the more interesting Binance-associated blockchain, BC.
The best way to sync a blockchain is from the beginning, except that any attempt to sync a node from the genesis block on BC throws up this error:
panic: Failed to process committed block (285075852:2BDC391C402FF452B83AD484D5C40DA615133C25E60C07352CBC6E45435EA873): Wrong Block.Header.AppHash. Expected 3E60F1573122DC7FAD2C5E4779A21BFEEB578422C915A16DEA70A1A617314720, got 1EDDADB1DC0B8E67A3F10FCE05201A4A59A7C380EC54F3CA83D400317CC49685
The program basically determines that you can’t handle the truth.
Attempting to sync a node from the genesis block revealed that the blockchain hashes didn’t match.
Suffice to say that there is evidence the BC blockchain breaks every 24 hours but somehow acquires sufficient consensus to keep moving forward.
So where are we at?
Basically we are nowhere closer to finding out how the 22 million BNB appeared in the wallet address:
We know that the BNB are there, we just don’t know how they got there, which is more of an existential question.
The wallet in question has since the time this investigation first began, been relabeled as the “Staking Escrow Account” and at the time of writing, is no longer searchable on the BC explorer.
We are no closer than before to finding out what exactly is going on with the various Binance-associated blockchains, and each time we dig, it becomes less and less clear.
If indeed tokens in a BC wallet appeared without any transaction tracing them into that wallet address, then this has ceased becoming a math or programming issue, it’s become a thoroughly human one.
In the meantime, wouldn’t it be great if 22 million BNB just showed up in your wallet?
Binance Chain — What’s in your wallet?
Patrick is an innovative entrepreneur and a lawyer passionate about cryptocurrencies and the business world. He is the CEO of Novum Global Technologies, a cryptocurrency quantitative trading firm. He understands the business concerns of founders and business people helping them to utilise the legal framework to structure their companies to take advantage of emerging technologies such as the blockchain in order to reach greater heights. His passion for travel, marketing and brand building has led him across careers and continents. He read law at the National University of Singapore and graduated with Honors in the Upper Division and joined one of Singapore’s top law firms, Allen & Gledhill where he was called to the Singapore Bar as an Advocate & Solicitor in 2005. He created Purer Skin, a skincare and inner beauty company which melds the traditional wisdom of ancient Asian ingredients such as Bird's Nest with modern technology. In 2010, his partner and himself successfully raised $589,000 from the National Research Foundation of Singapore under the Prime Minister’s Office. He has played a key role in the growth of Purer Skin from 11 retail points in Singapore to over 755 retail points in Singapore and 2 overseas in less than a year. He taught himself graphic design, coding, website design and video editing to create the Purer Skin brand and finished his training at a leading Digital Media Company.