From 32a5c05509159059d96c7a172534f01b5fef1d75 Mon Sep 17 00:00:00 2001 From: Dmytro Kozhevin Date: Fri, 5 Sep 2025 13:20:49 -0400 Subject: [PATCH] Update resources and limits for p23. Also cleaned up the section a bit to have a more clear difference between transaction and ledger limits. --- docs/networks/resource-limits-fees.mdx | 80 ++++++++++++++++---------- 1 file changed, 49 insertions(+), 31 deletions(-) diff --git a/docs/networks/resource-limits-fees.mdx b/docs/networks/resource-limits-fees.mdx index 60a0da57a9..b29b38ebe8 100644 --- a/docs/networks/resource-limits-fees.mdx +++ b/docs/networks/resource-limits-fees.mdx @@ -11,39 +11,57 @@ Resource limitations and fees only apply to smart contract transactions. Read mo ::: -| Network Setting | Value | -| --- | --- | -| Soroban txn per ledger | 100 | -| Max CPU instructions per txn | 100 million | -| Memory limit per txn | 40 MB | -| Individual ledger key size (contract storage key) | 250 bytes | -| Individual ledger entry size (including Wasm entries) | 128 KiB | -| Read/Write ledger entries per txn | 40 read; 25 write | -| Read/Write bytes per txn | 200 KB read; 129 KiB write | -| Transaction size | 129 KiB | -| Persistent entry minimal/initial lifetime | 120 days | -| Temporary entry minimal/initial lifetime | 1 day | -| Max ledger entry expiration bump | 6 months | -| Events+return value size bytes | 8 KB | -| Max write bytes per ledger | 140 KiB | -| Max txs size in bytes per ledger | 130 KiB | -| Eviction scan size | 500 KB | +### Per-transaction limits + +These define the maximum amount of work a single Smart contract transaction can do. + +| Network Setting | Value | +| ----------------------------------------------------- | ------------------ | +| Max CPU instructions | 100 million | +| Max memory (RAM) | 40 MB | +| Max number of keys in the footprint | 100 | +| Disk reads\* | 100 entries/200 KB | +| Disk writes | 50 entries/132 KB | +| Transaction size | 132 KB | +| Events+return value size bytes | 16 KB | +| Individual ledger key size (contract storage key) | 250 bytes | +| Individual ledger entry size (including Wasm entries) | 128 KiB | + +\* Most transactions don't perform any disk reads, as only archived entries and 'classic' entries (G-accounts, trustlines) are considered to be disk reads. Live smart contract state is in-memory and is not counted towards this limit. + +### TTL extension parameters + +These define TTL extension parameters. + +| Persistent entry TTL on creation | 120 days | | Temporary entry TTL on creation | 1 day | | Max ledger entry TTL extension | 6 months | + +### Ledger-wide limits + +These define the maximum amount of work done by all the transactions in a single ledger (single block). + +| Network Setting | Value | +| ----------------------------------- | ------------------ | +| Max CPU instructions | 600 million | +| Max memory (RAM) | no explicit limit | +| Max number of keys in the footprint | no explicit limit | +| Disk reads | 1000 entries/7 MB | +| Disk writes | 500 entries/143 KB | +| Transactions size | 133 KB | +| Events+return value size bytes | no explicit limit | ## Resource Fees | Network Setting | Cost (stroops) | | :--------------------------------------------- | :------------------------ | -| 10,000 instructions | 25 (250,000/max tx) | -| Read 1 ledger entry | 6,250 (250,000/max tx) | -| Write 1 ledger entry | 10,000 (250,000/max tx) | -| Read 1KB from ledger | 1,786 (250,000/max tx) | -| 1KB of transaction size (bandwidth) | 1,624 (113,642/max tx) | -| 1KB of transaction size (history) | 16,235 (1,136,418/max tx) | -| 1KB of Events/return value | 10,000 (80,000/max tx) | -| Write 1KB to ledger | ~11,800 (826'000/max tx) | -| 30 days of rent for 1 KB of persistent storage | 0.29 XLM | -| 30 days of rent for 1 KB of temporary storage | 0.145 XLM | - -Note that the write fee normally fluctuates a bit (within 100 stroops/KB). However, if the ledger grows too quickly, the write fee will grow in a linear fashion with a steep slope. - -The ledger rent cost ('Write 1KB' entries in the table) is based on the write fee, rent period and some coefficient. +| 10,000 CPU instructions | 25 (250,000/max tx) | +| Read 1 ledger entry from disk | 6,250 (625,000/max tx) | +| Read 1KB from disk | 1,786 (357,200/max tx) | +| Write 1 ledger entry | 10,000 (500,000/max tx) | +| Write 1KB to disk | 3,500 (462'000/max tx) | +| 1KB of transaction size (bandwidth) | 1,624 (214,368/max tx) | +| 1KB of transaction size (history) | 16,235 (2,143,020/max tx) | +| 1KB of Events/return value | 10,000 (160,000/max tx) | +| 30 days of rent for 1 KB of persistent storage | ~427,000 | +| 30 days of rent for 1 KB of temporary storage | ~213,500 | + +Note, that the rent fees provided here may go up in case if a lot of contract data is written to the ledger within a short time period. This happens because the rent fees are designed in such a way that the closer the state size to some validator-defined threshold, the more expensive it gets to write new data or extend the TTLs.