If anyone wants to listen/watch a high level, non-technical, explanation of Solana's failed tx's heres a video.
Should also help educate
@bankless and dispel the misunderstanding/misinformation in their most recent podcast
Also, a text TLDR of my video analogy:
I have a shared family account with me and 3 others that has $20
Tx 1: I withdraw $20 ✅Success
Tx 2: Mom tries to withdraw $20 ❌Fails (insufficient funds)
Tx 3: Sister tries to withdraw $20 Fails (insufficient funds)
Tx 4: Sister tries to withdraw $20 ❌Fails (insufficient funds)
75% of these withdrawals (analogy "transactions") FAILED but we don't say Wells Fargo has a network/system issue
The transactions/withdrawals SUCCESSFULLY LAND (are processed) but then show as a failure because the state has changed WHICH IS WHAT THE CHART IS SHOWING
there is a stat going around CT about failed transactions on Solana
it is misleading and 90% of the people using it don't know what it means
I will explain (for non-technical folks only)
first, an example of how a usual interaction in web2 works:
- you go on twitter and click on my profile
- this changes the URL to: "x. com / 0xmert_"
- what's happening here is the X site (called 'the client') is requesting data from the X servers (called 'the server')
- it's saying "hey server, give me data about 0xmert_"
a) in most cases, the X servers will say "ok, here's the data" — this is a successful response (called a "200")
so: the client made a request and the server responded successfully
b) in some cases, the X servers might be broken and will respond with a "500" response, indicating the server has a fault
so: the client made a request and the server responded un-successfully
ok here's the important part:
c) there are some cases where the client might make a bad request to the server (you have actually all seen this before, for example: a 404, page not found, maybe you mispelled mert somehow) — the server tells you this so that you can make a better request
(this might also be something like: 401 — Unauthorized — meaning you don't have the credentials to view a certain resource)
so: the client made a bad request and the server responded successfully
ok now let's loop it back to Solana
- when you see something that says "failed" on a Solana explorer, this represents c) above
(note: there is more nuance to it but this is meant for non-technical people)
so: the chain processed the request successfully, but the smart contract said: "wait a minute, this request is bad"
why would the smart contract do this?
some obvious reasons:
i) you do not have the right permissions to call this smart contract
ii) since you called the smart contract, the markets moved and exceeded your slippage tolerance
iii) a bot was spamming for arbitrage and the arbitrage doesn't exist anymore
note that this is different from b) above — the chain/server is *not* down, it is doing what the smart contract is telling it to do
it is important to make this distinction because i) if you're not precise about the problem, you can't fix it properly ii) it uses the same network resources, which is important to understand for scale + uptime considerations
sorry, I'm not done
there is also a case of terminology being overloaded here
the above chart says the word "failed" transaction
but in the context of solana this is a specific term — similar to the 200, 400, and 500 numbers I mentioned above
when most users say "failed", they are broadly referring to their transaction not becoming successful, they don't care why it "failed", they just care it didn't work
currently, the most common reason for this is that transactions don't make it on to the chain in the first place (they get dropped because block leaders can only handle so many at once) — this is a problem, but a separate one
the chart above is referring to something else
it represents transactions that didn't get dropped and were successfully submitted to the chain and the smart contract made a deliberate decision to tell you that it's a bad request
this is usually not a big problem for users because your wallet will simulate the txn and let you know that it will not work beforehand anyway
and so almost all failed txns you see on these charts are bot spam
(and this has always been a thing, failed txn rates have been too high since months ago, people are now just noticing the dropped txn issue and conflating it with this one instead)
the reason I wrote this is because people are using this chart to say solana's throughput is "fake" or that it is down — this is not the case since it exerts the same system load
the chart also importantly doesn't accurately capture the user experience since the overwhelming number of issues are before the txns even make it to the block
however, it does show that the system allows for too much spam with negligible economic activity
in fact, if that problem were fixed current revenue numbers (and throughput) would increase a ton
importantly: we all understand that this is a problem and so this is all being fixed
there are many talks and proposals on tackling these issues
i) adding better logic so that block leaders don't drop proper transactions (this is the big one today)
ii) adding better incentives and fee markets so bots don't find it +EV to spam the chain
user experience will continue to get better as we put the systems to the limit and iterate via learnings