How Much Do Soroban Fees Cost? Running Smart Contracts in Stellar
Soroban, Stellar‘s smart contract platform launched on Mainnet, brings increased flexibility to the network.
One of the great advantages of the Stellar blockchain network is that classic transactions are the price of their fees compared to other networks.
Now, the question is, will Soroban transactions follow suit?
Today we’re going to explore this question analyzing different contracts and understand what to look out for when calculating the costs of contract call transactions.
Understanding Soroban fees involves breaking them down into two essential components: the inclusion fee and the resource fee.
The inclusion fee represents the maximum bid a submitter is willing to pay for their transaction to be prioritized in the ledger. When the ledger has space, only the base fee of 100 stroops is charged.
This price depends a lot on network congestion and the user’s willingness to wait for ledger inclusion.
The resource fee, on the other hand, hinges on the network resources consumed by the invoked transaction. Simply put, the more complex the transaction, the higher the fee to get it included in the ledger.
Let’s take a closer look at which resources impact the price in this part of the fee calculation.
Soroban resources
Soroban’s transaction resource fees are determined by six key factors:
CPUInstructions: The number of CPU instructions executed by the transaction.
Ledger Entry Accesses: Reading or writing any single ledger entry.
Ledger I/O: The amount of bytes read from or written to the ledger during the transaction.
Transaction Size: The size of the transaction submitted to the network.
Events & Return Value Size: The size of both the events produced by the contract and the return value of the top-level contract function.
Ledger Space Rent: Payment associated with the ledger entry Time-to-Live (TTL) extensions and rent payments for increasing ledger entry size.
While some resources, like RAM, don’t incur a cost fee, it’s important to note that all resources must be within the network’s maximum limit to be included.
To successfully execute a transaction, a fee proportional to the estimated cost of resources must be included in the envelope. If the resource usage exceeds the fee sent, the transaction will fail.
To help with the resource usage estimation, it’s possible to use the soroban-rpcsimulateTransaction method.
This method simulates the execution of the transaction in the ledger, providing information on the expected resource usage. Some values, like CPU instructions, come with a margin of error, with a 20% increase, and a minimum value of 3 million.
If the resource fee sent exceeds the actual resource usage, refunds are only applicable for Events & Return Value Size and Ledger Space Rent resources. Other resources will be allocated and charged as per the user’s request, even if they remain unused in the transaction.
Average transaction costs
To gain a better understanding of the day-to-day costs associated with these fees, we conducted a profiling analysis on various protocols developed by the community.
While many of these contracts are still in the development phase and require refinement, they offer valuable insights into average costs.
The tested transactions include token transfers, swaps, deposits, withdrawals into liquidity pools, oracle operations, and more.
To gather these metrics, we utilized the profiling functionality within the stellar-plus library. You can find part of the source code here.
The table below shows the average, maximum, and minimum values obtained from each resource.
Results from 220 transactions:
Resources
Average
Maximum
Minimum
Minimum Resource Fees
215,142
823,350
45,272
CPU Instructions
16,672,419
66,832,105
3,797,619
Ledger Read Bytes
30,550
75,312
696
Ledger Write Bytes
414
3,116
0
Ledger Entry Reads
3
10
1
Ledger Entry Writes
2
11
0
Events & return value size
151
1,360
4
Transaction size
332
1,732
116
Looking at the results, the average minimum resource fee comes in at around 215,000 stroops, which equals 0.0215 XLM.
It’s worth mentioning that this figure might be slightly influenced by including read transactions, which do not write to or modify the ledger.
While these read transactions can be executed in the ledger, it’s also possible to use simulations for reads without incurring a fee. Consequently, read transactions are less likely to be encountered frequently.
For a more precise evaluation, let’s narrow down our examination to the 119 transactions that involve ledger modifications. For this case, we’ll focus on visualizing the fees.
Results from 119 transactions with ledger modifications:
Resources
Average
Maximum
Minimum
Minimum Resource Fees
261,052
823,350
48,670
Focusing on transactions involving ledger modifications provides a dataset that aligns more closely with real-world scenarios.
The changes aren’t drastic, with the average minimum resource fee at 261,052 stroops, equivalent to 0.0261 XLM.
In the context of the current exchange rate, where XLM is valued at 0.11 USD, this fee translates to only 0.0029 USD. Moreover, the highest fee recorded from these transactions is just 0.0092 USD.
You can check all the results obtained per transaction in this spreadsheet.
In real-world scenarios, it’s natural to have more complex transactions that use more resources, as there will be more data and more security measures. It’s also important to note that this resource fee will be added to the inclusion fee, which may significantly increase based on network congestion.
Overall, Soroban fees are quite reasonable, usually just a few cents. This makes Soroban a cost-effective choice compared to other networks. As Mainnet is about to launch and Soroban usage is expected to grow, we look forward to gaining an even more accurate perspective.
We hope this article has given you a practical understanding of Soroban fees. If you have questions or seek assistance in developing your project with Soroban, please feel free to reach out to us!