Article

Why is Solana so incredibly stupid to work with? [RANT]

For the past few days I am trying to comprehend why / how this blockchain even gained it's recent popularity. From the perspective of a seasoned programmer I can see all the flaws it has and how painful it is to set-up for new developers. Even I am struggling.

Let's dive into the problems deeper:

1. Who the f**k decided to use Rust as a main language for Smart Contracts?

Coming from Ethereum background this one really does not spark joy. Rust is an idiotic language. Not really hard to learn but not really widespread as well. It's compilation time is atrocious and you will constantly bump into problems with "cargo" package manager. To be fair, I spent most of the last few days dealing with cargo dependency conflicts instead of coding.

2. Pain in the ass for newcomers

It has NO remix-like software like ETH / EVM chains have. And no, beta.solpg.io where you can not even inject your own wallet does not count. If you want to onboard new devs you need to make your software more accessible and not pain in the ass to set-up and work with.

3. Their naming is a joke

Solana team somehow wants to be different at all costs so they invented their own words. They don't call Smart Contracts contracts, no, they call them "Programs". Contract address is "Program ID" and god forbit calling contract-derived wallet a wallet. It's PDA now. Why? Because Ethereum Foundation came up with a name Smart Contract so you need to be different at all costs? This just spreads confusion. When I was reading documentation (and yes, I read it all and had a migraine from that) I was constantly confused and needed to traceback to previous pages to check what they mean by various special terms they invented. Just why? Stick the norm for god sake!

4. Their documentation is a joke

After you spend a significant chunk of time with installing stupid cargo packages and finally decide to run / build some examples they provide on their github you start to run into constant problems. Those examples does not build with a simple command. You will joggle packages here and there and install some third-party shady packages from people's recommendations on stackoverflow while hoping it will solve dependency issues.

Most of their JS examples does not work at all, miss requires, sometimes there are even spelling errors so variable "amount" is later "_amount" so it could never compile and you need to figure out why on your own. CLI examples tend to work, but only if you are on Linux-based system. If you try to do all that on windows you will soon bump into a wall of errors which has no good solution. You are FORCED to use linux-based OS.

5. Their online explorer is confusing

Speaking about their own online explorer https://explorer.solana.com/

  • It is hard to distinguish between normal accounts and Smart Contracts, when both are just "accounts" (not even wallets, we are different here).
  • Transactions are hard to read if not impossible to read.
  • Smart contract state-changes are non-existent (sorry, PDA state-changes or how you guys call it) or hard to read. I never actually bothered to dig into it and got lost when clicking on addresses in explorer.
  • Heck it is even impossible to tell which calls have been made in smart contract and if account has more than 100 tokens or more than XXX transactions you can not see the full history at all because god knows why. (caching or too big query to db? Cmon.. it's 2024)
  • Smart Contracts have no option to be "verified" like they do on etherscan. This space needs more transparency, not less.

6. No meaningful errors

Or sometimes no erorrs at all. I was trying to send TX from local build 1.16.25 to online cluster 1.17.12 and instead of getting a meaningful error it just kept loading indefinitely until hash expired. At the time I did not know I had mismatch of versions so I started digging through the internet finding one guy at the end of the world on stackoverflow who pointed me to right direction. This is also where I learned that 1.17.12 is not available for windows, forcing me to spin-up Ubuntu instance and basicly start over.

Also errors like "ErrNoAcc" or "Program failed: custom program error: 0x7dc8348c" are not really nice to debug...

Recommendations:

If you guys want to make your chain more popular / easy to work with, you need to implement the following:

1. It is industry standard to use Solidity and you need to support Solidity. I know you are implementing Solang which is fine but so far it is unstable and unusable for anything else than Hello world program.
2. Re-write documentation so it uses normal words, no more Programs, TPU, TVU, PDA and shit like that. It all has names so just use those names. Do not confuse people just because you can.
3. Ditch the stupid Cargo package manager or maintain your git repositaries so it is easy to download / setup / work with. It should not print errors on first build.

Closing thoughts

From developer's point of view this is a small disaster waiting to happen. All those problems prevent new devs coming to space villingly. You guys are basicly preventing people from using your chain.

Pridal/a lubo dňa St, 01/03/2024 - 07:42

Might interest you

Tutorial
This is (or should be) a working example of sending some Ether between two addresses. Requirements are:
Article
As the title says, DO NOT in any circumstances install ANY bitcoin price extension to ANY of your browsers. Why? I got malware by this…

Recommended

Article
31 views
For the past few days I am trying to comprehend why / how this blockchain even gained it'…
Tutorial
94 views
This sketch is quite easy, I used Arduino Nano with OLED 0.96″ display 128×64 resolution…
Tutorial
156 views
While working on a fairly complex website with very complex views setup, including tens…
Tutorial
14 views
In this case we have two options, either we use hook_user_presave() or we can create new…
Tutorial
15 views
When using Swiftmailer under Drupal 8 / 9 it automatically sets the headers for sender to…
Tutorial
7 views
Yes, IOS / Safari is the new internet explorer. Amount of time I spend on debugging…
Tutorial
43 views
There is a very handy function in Drupal 8 / 9, allowing developers refresh view when…
Tutorial
22 views
Often, when doing SEO checkups, SEO specialist come up with adding Schema.org…
Tutorial
174 views
I needed to test my contracts against USDC contract, specifically I needed ERC-721 mint…
Tutorial
85 views
If you are a newbie like I am and struggling with setting the proper MYSQL my.cnf config…
Tutorial
25 views
I had trouble to set this up properly, because documentation is quite misleading or often…
Article
72 views
As the title says, DO NOT in any circumstances install ANY bitcoin price extension to ANY…
Tutorial
278 views
This is (or should be) a working example of sending some Ether between two addresses.…
Module
45 views
This list was fetched from Zapper, with their /v1/token-list endpoint. Which you can…
Tutorial
143 views
In the last months I am being pretty much bombarded by my clients with asking what…