solana-playground / solana-playground

Quickly develop, deploy and test Solana programs from browsers
https://beta.solpg.io
Apache License 2.0
399 stars 135 forks source link

[ENHANCEMENT] Impossible to upgrade/deploy programs due Solana congestion. #221

Open viniguim4 opened 1 month ago

viniguim4 commented 1 month ago

Problem Statement:

Due to the current state of the network, it has become nearly impossible to successfully update or deploy programs from non-staked endpoints. The network experiences significant congestion, leading to a high rate of transaction drops during the upgrade and deployment processes.

Implications:

  1. Stalled Deployments/Upgrades: Network congestion severely delays the upgrading and deployment of programs, causing processes and workflows to stall. Common endpoints such as Chainstack and Shyft are particularly affected, with upgrades and deployments stuck approximately 99% of the time.
  2. Failed Deployments/Upgrades: Despite processing some transactions, network congestion often results in failed upgrade and deployment attempts. Limited retry times exacerbate the issue, eventually leading to failure.

Proposed Solution:

  1. Implement Jito bundles into the transaction sending process. Jito bundles allow for the grouping of transactions, enabling the sending of up to 5 transactions per bundle, (one of them to tip validator). This approach has shown promising results in my perspective.
  2. Utilize Jito solutions to reduce priority fees to almost zero by leveraging tip transactions instead.
  3. Take advantage of Jito blockengine endpoint accessibility, which is public and open for applications to engage with [Blockengine].

References :

acheroncrypto commented 1 month ago

Hey, thank you for the detailed explanation!

I think the Jito bundles are not a solution to this problem, only a short-term patch. I believe if everyone starts using this, which many people have already started, we'll end up with the same spot as nobody using them.

Currently, buffer writes are on infinite retry until success, but the first tx (buffer creation) and the last tx (deploy/upgrade) have a maximum of 5 retries. I'm thinking about also making the last tx infinite retry and potentially using Jito endpoints too.

Many people have reported that they were still able to deploy on the playground, even with the congestion going on. I'm aware it has been getting a lot worse in the last couple of days, so that could be why you've failed to deploy.

Also, it would be great if you could share which endpoint you used, how long it took, and what the error was.