The Solana community skilled its newest outage on June 1, when the Solana Mainnet Beta cluster stopped creating blocks as a consequence of stalled consensus. This was created by a run-time bug within the sturdy nonce transactions characteristic, which governs how the blockchain handles a selected type of the transaction supposed for offline use.
06-01-22 Solana Mainnet Beta Outage Report: The sturdy nonce transaction characteristic was disabled in releases v1.9.28/v1.10.23 to stop the community from halting if the identical state of affairs have been to come up once more. https://t.co/2HwkSWkLaR
— Wu Blockchain (@WuBlockchain) June 5, 2022
After disabling these “sturdy nonce transactions,” validators started restarting the community 4 and a half hours later. The next day, at 9:00 p.m. UTC, block manufacturing restarted, and community operators continued to revive shopper companies over the following a number of hours.
The current outage urged a failure in Solana’s capacity to deal with sturdy nonces. The community’s validators double counted these area of interest inbounds as a single transaction at two separate block heights, relatively than contemplating them as a single transaction. Solana’s consensus mechanism was successfully damaged by this unimaginable predicament.
Solana takes proactive step
To extend throughput, Solana makes use of parallel processing of nonoverlapping transactions. An incrementing nonce can be utilized by networks that execute transactions serially; Solana employs a unique mechanism to make sure transactions usually are not dealt with twice. As a result of sturdy nonce transactions usually are not meant to run out, they require a unique strategy to keep away from double processing and are dealt with sequentially.
The processing of a sturdy nonce transaction revealed a bug within the runtime that stopped the community from progressing all through the outage. A profitable transaction wouldn’t have precipitated this downside as a result of the sturdy nonce transaction would have failed.
The sturdy nonce transaction performance was deactivated in releases v1.9.28/v1.10.23 to stop the community from stalling if the identical circumstance arose once more. Sturdy nonce transactions is not going to execute till the mitigation has been deployed and the characteristic reactivated in a future model.