Most of the transaction throughput of Solana is consumed by vote transactions.
I looked into https://solanabeach.io and there seems to be many types of transactions:
SPL Associated Token Account
Can you point me someplace where the definition of each transaction is mentioned?
Out of these categories, what are the real application transactions?
If the number of transactions by applications increases, will the overhead of votes and other system transactions also increase proportionately?
If the throughput of Solana is 50K TPs, what is real throughput left for applications after removing the overhead?
This turned into a long post so if you don’t want to read it:
There isn’t really a list of all the different transactions.
Every program deployed to the blockchain can accept any number of different kinds of transactions that it defines.
You make “real application transactions” by deploying your own program that defines it’s own transactions that your application can call.
Additionally your real application can use the transactions from programs that already exist like the SPL token or Memo transactions to do real application logic.
I’m not 100% sure, but I don’t think that transactions get slower when you add more programs
I don’t have a deep understanding about what effects the throughput of transactions, but I do understand how new application transactions and such get added.
As far as I understand it, ( which may not be a perfect understanding ), the only transaction types that are built-in, so to speak, to Solana are the transactions supported by the Native programs. All of the rest of the transactions are actually defined by programs on the chain. These programs are written in exactly the same way that you would write your own programs for you applications that add your own application-specific transactions.
So each transaction is simply an instruction sent to a program. That means that there isn’t really a list of all the transactions supported on Solana. Anybody, at any time, could deploy a new program to Solana, and it can support any number of different kinds of transactions that it defines.
Still, you can check out the Solana Program Library, which has a list of programs deployed to all of the Solana clusters by the Solana Foundation. That is where SPL Token and Memo come from, for instance.
When sending a transaction to a program you get to include a bunch of bytes and a list of accounts to send with the transaction, it is up to the program which sets of bytes represent a valid transaction and differently configured bytes will usually mean different things you can do with the program. For instance, you can see the different instructions allowed for the SPL token program here in the code on GitHub.
As far as I know, Solana transactions don’t get slower when you deploy more programs to the blockchain. I think that the amount of time to complete a transaction won’t change when more programs get deployed to the blockchain, but I’m not sure.
Thanks a lot, @zicklag for such a wonderful explanation. Thanks for sending the Solana program library. It seems that all the vote, serum v3, SPL token, memo, stake, Swap v2, system transactions displayed in solanabeach.io are actually used by the programs deployed by the Solana foundation. These programs are supporting the SOL token transactions, staking SOL, voting by the validators, etc.
Only the “unknown” transactions are actually sent to the programs deployed by common people.
Isn’t that pretty less throughput used by the programs deployed by common people?
@zicklag I was actually surprised that common people are sending less transactions. I heard that Solana got a good response for its 3 hackathons and 1000s of smart contracts, games, NFTs are deployed on Solana. I was surprised why these dapps are not getting much traffic.
Something to note is that even custom DApps will probably often make heavy use of those Solana Program Library programs. For instance, the SPL Token library is actually used to make your own new kinds of tokens, including NFTs, so it may be that lots of apps use the SPL Token program instead of writing their own.
It’s probably similar for some of the other programs in the Solana Program Library too.
It’s a cool concept that you can make your own programs that also call other existing programs on the chain, so that you don’t have to re-write the same logic that other programs are already doing.