Solana to Prevent Future Network Shutdown If Runtime Bug Arises Again: Details
The Solana community skilled its newest outage on June 1, when the Solana Mainnet Beta cluster stopped creating blocks resulting from stalled consensus. This was created by a run-time bug within the sturdy nonce transactions function, which governs how the blockchain handles a particular type of the transaction meant for offline use.
06-01-22 Solana Mainnet Beta Outage Report: The sturdy nonce transaction function was disabled in releases v1.9.28/v1.10.23 to forestall the community from halting if the identical state of affairs had 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 consumer companies over the subsequent a number of hours.
The current outage prompt a failure in Solana’s potential 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, fairly than contemplating them as a single transaction. Solana’s consensus mechanism was successfully damaged by this not possible 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 special mechanism to make sure transactions are usually not dealt with twice. As a result of sturdy nonce transactions are usually not meant to run out, they require a special method 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 brought about 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 forestall the community from stalling if the identical circumstance arose once more. Sturdy nonce transactions won’t execute till the mitigation has been deployed and the function reactivated in a future model.