BLOCKCHAIN AI.NEWS

Security

225,000 Empty Rounds Since MultiversX Last Produced a Block

MultiversX stopped its own mainnet on Saturday morning after what it says was an attempt to exploit an atomicity flaw in the virtual machine. Nine days earlier, the chain had rebuilt itself around the idea that execution no longer has to happen before a block is final.

Editorial illustration: a conveyor line of empty chrome block-shaped slots running toward a sealed frosted glass gate lit by warm gold light
✓ Halt confirmed by MultiversX on Sep 20, 2026 · Statement carried by Bloomingbit, PANews, TechFlow and Coindoo · Chain state, round arithmetic and commit history read directly by this desk at gateway.multiversx.com and GitHub on Sep 20 · Supernova parameters from MultiversX and Cointelegraph

The MultiversX mainnet has not produced a block since Saturday morning. Its clock, however, has not stopped. At 21:11 UTC on September 20 the metachain reported a current round of 33,616,168 against a last committed block at round 33,391,172 — a gap of 224,996 rounds. Since the Supernova upgrade cut the round to 600 milliseconds, that arithmetic converts cleanly: thirty-seven and a half hours in which the network counted out a quarter of a million slots and filled none of them.

MultiversX confirmed on September 20 that an attacker had attempted to exploit an atomicity issue at the virtual-machine level, that the attempt caused invalid state changes on chain, and that the network was paused to prevent further impact. The statement, carried by Bloomingbit and PANews among others, told users not to submit or rebroadcast transactions and not to deposit or withdraw EGLD or ESDT tokens through exchanges or bridges. A fix has been prepared and is being validated on a shadow fork; if it passes, deployment will be coordinated with validators, exchanges and infrastructure partners.

No loss figure has been disclosed. That is not the same as saying nothing was lost — only that the team has not said, and nobody outside it can currently read the chain to find out.

What the node is still willing to tell you

The public gateway keeps answering even with the chain stopped, and what it returns is worth reading slowly. All three shards and the metachain stopped within three and a half minutes of one another on September 19, between 07:37:49 and 07:41:12 UTC.

The metachain's final numbers are the interesting ones. It reports a highest final nonce of 33,342,245, a proposed nonce of 33,342,246, and a last executed nonce of 33,342,247. Execution, in other words, had run two blocks past the last block the network agreed on. Under the architecture MultiversX shipped ten days ago that is not a malfunction — it is the design working as specified. It is also, precisely, the state a recovery now has to reconcile.

Where each chain stopped

Chain Last block nonce Last block (UTC)
Shard 033,365,476Sep 19, 07:37:49
Shard 133,355,460Sep 19, 07:37:52
Shard 233,359,958Sep 19, 07:39:07
Metachain (final)33,342,245Sep 19, 07:41:12
Metachain (proposed)33,342,246
Metachain (last executed)33,342,247
Rounds elapsed since, at 21:11 UTC Sep 20224,996≈ 37h 30m
Read from gateway.multiversx.com/network/status by this desk on September 20, 2026 at 21:11 UTC. Round duration is 600ms since the Supernova activation.

Ten days ago, the order of operations changed

Supernova activated on mainnet on September 10 at 18:06:06 UTC, at activation round 32,157,661, cutting the round from 6,000 milliseconds to 600 — figures MultiversX publishes precisely on its own builders page. The speed is the headline. The cause is structural, and MultiversX named it in the title of its own write-up: decoupling consensus and execution.

Under the old arrangement, a proposer executed the transactions in a block and then asked the network to agree on the result. Under Supernova, as Cointelegraph described the design in August, the proposer selects transactions and proposes the block without executing them first. Validators check protocol compliance and vote. Once the votes aggregate into a proof, the block is final. Execution then runs asynchronously, and its results are notarized in a later block header — normally the next one, roughly 600 milliseconds behind.

This is not a fringe reading of the upgrade. The code says the same thing: the release that carried Supernova into mx-chain-go was cut from a branch named feat/supernova-async-exec, and the machinery lives in a directory called process/asyncExecution. The design also ships with its own brakes — an inclusion estimator that caps how many execution results a block may reference, and automatic backpressure that shrinks block capacity when execution falls too far behind.

None of that is a criticism of the architecture, which answers a real bottleneck and which several chains are converging on. But it changes what a virtual-machine bug means. When execution sits behind finality, a block can be irreversibly agreed before anyone knows what its transactions did. If the answer turns out to be "something invalid," the chain does not get to decline the block. It has already accepted it.

The quiet merge on activation day

There is one more entry in the record, and it needs handling with care.

On September 10 — the same day Supernova activated, in the hours before the activation round — MultiversX's virtual-machine repository received four commits. Three are titled "hardening with copy." The fourth, which merges them, is titled "Merge commit from fork," which is the message GitHub generates by default when a maintainer merges a private fork created for a security advisory. Together they touch eight files and change 72 lines for 84 removed.

The content is unusually uniform. Nearly every change replaces a shared byte slice with an explicit copy — bytes.Clone applied to contract addresses, storage keys, token identifiers, return data and transfer fields across the output, storage, runtime and managed-type contexts. One change fixes something plainly broken: a clone routine that called copy into a slice that had never been allocated, and therefore copied nothing at all.

Aliasing of that kind is a well-understood hazard. When two parts of a virtual machine hold references to the same underlying buffer rather than to copies of it, writing through one can change what the other sees, including after the point where a change was supposed to have been discarded. That is the same family of problem as an atomicity failure, which is the phrase MultiversX used.

It is not, however, proof of anything, and this desk is not going to pretend otherwise. MultiversX has not said which defect was exploited, has published no advisory on that repository, and the commits themselves read like deliberate hardening rather than an emergency. Merging a security fix quietly is a legitimate technique, not misconduct — it is what responsible disclosure looks like from the outside. The honest summary is narrower and still worth writing down: the last public change to the MultiversX virtual machine before the chain halted was a private security merge that spent all of its eighty-odd lines making the VM stop sharing memory it should have been copying.

Five days later, on September 14, a second fix landed in the main chain repository — a corrected type assertion in metaProcessor.getLastExecutionResult after a rollback, inside the asynchronous-execution manager, with 115 lines of code and 648 lines of new tests. That is the component that remembers what execution produced when the chain has to unwind. Whether it is related to what happened on the 19th, only MultiversX can say.

What a targeted recovery asks for

The team says it is evaluating a recovery that would preserve finalized transaction history and legitimate user state while reversing only the invalid changes connected to the incident. The alternative is the blunt one: rewind the chain to a block before the trouble and accept that everything after it, valid or not, goes with it.

The targeted option is better for users, and it is also the one that requires somebody to draw a line through the ledger and label each side. Deciding which state changes are "legitimate" is a judgment, taken by a small group, encoded in a patch, and ratified by validators mostly running what they are handed. Chains that have done this before generally found the engineering was the easy part.

For now the guidance stands: no transactions, no resubmissions, and no movement through exchanges or bridges until MultiversX says the network is back. A deposit or withdrawal that appears to succeed at an exchange right now is the exchange's internal bookkeeping, not the chain's.

The Take

Halting was the right call, and doing it inside a few minutes across four chains is a sign of an operations team that had rehearsed. The uncomfortable part is not the halt but the shape of the trade Supernova made. Decoupling execution from consensus buys a tenfold speedup by agreeing to blocks before anyone knows what they do, and it pays for that with a narrower set of options when execution goes wrong. Ten days of production is a short time to discover the bill. What MultiversX owes its users now is not speed but specificity: which defect, which blocks, which state, and who decided. A post-mortem that names the bug and shows the diff would cost the project nothing it has not already lost, and it would be worth more to everyone else running an asynchronous execution pipeline than another sub-second benchmark.

More on the subject