Transaction Pool & Sync - Algorand Specifications
Keyboard shortcuts
Press ← or → to navigate between chapters
Press S or / to search in the book
Press ? to show this help
Press Esc to hide this help
- Auto
- Light
- Dark
Algorand Specifications
| Parameter Name | Default Value | Introduced in Version | Last Updated in Version |
|---|---|---|---|
TxPoolExponentialIncreaseFactor |
2 |
0 | 0 |
Description:
Sets the increase factor of the Transaction Pool fee threshold. When the transaction pool is full, the priority of a new transaction must be at least TxPoolExponentialIncreaseFactor times greater than the minimum-priority of a transaction already in the pool; otherwise, the new transaction is discarded.
Should be set to
2on MainNet.
| Parameter Name | Default Value | Introduced in Version | Last Updated in Version |
|---|---|---|---|
TxBacklogServiceRateWindowSeconds |
10 |
27 | 27 |
Description:
Defines the time window (in seconds) used to determine the service rate of the transaction backlog (txBacklog). It helps to manage how quickly the node processes and serves transactions waiting in the backlog by monitoring the rate over a specific time period.
| Parameter Name | Default Value | Introduced in Version | Last Updated in Version |
|---|---|---|---|
TxBacklogReservedCapacityPerPeer |
20 |
27 | 27 |
Description:
Determines the dedicated capacity allocated to each peer for serving transactions from the transaction backlog (txBacklog). This ensures each peer has a specific portion of the overall transaction processing capacity, preventing one peer from monopolizing the node’s transaction handling resources.
| Parameter Name | Default Value | Introduced in Version | Last Updated in Version |
|---|---|---|---|
TxBacklogAppTxRateLimiterMaxSize |
1048576 |
32 | 32 |
Description:
Defines the maximum size for the transaction rate limiter, which is used to regulate the number of transactions that an Application can submit to the node within a given period. This rate limiter prevents individual Applications from overwhelming the network with excessive transactions. The value may be interpreted as the maximum sum of transaction bytes per period.
| Parameter Name | Default Value | Introduced in Version | Last Updated in Version |
|---|---|---|---|
TxBacklogAppTxPerSecondRate |
100 |
32 | 32 |
Description:
Determines the target transaction rate per second for an Application’s transactions within the transaction rate limiter. This means the node will aim to allow an Application to submit a specific number of transactions per second. If the Application tries to send more transactions than the rate limit allows, those transactions will be delayed or throttled.
| Parameter Name | Default Value | Introduced in Version | Last Updated in Version |
|---|---|---|---|
TxBacklogRateLimitingCongestionPct |
50 |
32 | 32 |
Description:
Determines the threshold percentage at which the transaction backlog rate limiter will be activated. When the backlog reaches a certain percentage, the node will start to limit the rate of transactions, either by slowing down incoming transactions or applying throttling measures. This helps prevent the backlog from growing too large and causing congestion on the network. If the backlog falls below this threshold, rate limiting is relaxed.
| Parameter Name | Default Value | Introduced in Version | Last Updated in Version |
|---|---|---|---|
EnableTxBacklogAppRateLimiting |
true |
32 | 32 |
Description:
Determines whether an Application-specific rate limiter should be applied when adding transactions to the transaction backlog. If enabled, the node enforces rate limits on how many Application transactions can be enqueued, preventing excessive transaction submission from a single app.
| Parameter Name | Default Value | Introduced in Version | Last Updated in Version |
|---|---|---|---|
TxBacklogAppRateLimitingCountERLDrops |
false |
35 | 35 |
Description:
Determines whether transaction messages dropped by the ERL ( Exponential Rate Limiter) congestion manager and the transaction backlog rate limiter should also be counted by the Application rate limiter. When enabled, all dropped transactions are included in the Application rate limiter’s calculations, making its rate-limiting decisions more accurate. However, this comes at the cost of additional deserialization overhead, as more transactions need to be processed even if they are ultimately dropped.
| Parameter Name | Default Value | Introduced in Version | Last Updated in Version |
|---|---|---|---|
EnableTxBacklogRateLimiting |
true |
27 (default was false) |
30 |
Description:
Determines whether a rate limiter and congestion manager should be applied when adding transactions to the transaction backlog. When enabled, the total transaction backlog size increases by MAX_PEERS * TxBacklogReservedCapacityPerPeer, allowing each peer to have a dedicated portion of the backlog. This helps manage network congestion by preventing any single source from overwhelming the queue.
| Parameter Name | Default Value | Introduced in Version | Last Updated in Version |
|---|---|---|---|
TxBacklogSize |
26000 |
27 | 27 |
Description:
Defines the queue size for storing received transactions before they are processed. The default value (26000) approximates the number of transactions that fit in a single block. However, if EnableTxBacklogRateLimiting is enabled, the total backlog size increases by MAX_PEERS * TxBacklogReservedCapacityPerPeer, allocating additional capacity per peer.
| Parameter Name | Default Value | Introduced in Version | Last Updated in Version |
|---|---|---|---|
TxPoolSize |
75000 |
0 (default was 50000) |
23 |
Description:
Defines the maximum number of transactions stored in the Transaction Pool buffer before being processed or discarded.
| Parameter Name | Default Value | Introduced in Version | Last Updated in Version |
|---|---|---|---|
TxSyncTimeoutSeconds |
30 |
0 | 0 |
Description:
Defines the maximum time a node will wait for responses after attempting to synchronize transactions by gossiping them to peers. After gossiping, the node waits for acknowledgments, such as confirmation that the transaction has been added to a peer’s Transaction Pool or relayed to others. If no acknowledgment is received within the time limit set by TxSyncTimeoutSeconds, the node stops the synchronization attempt and moves on to other tasks. However, the node will retry synchronization in future cycles.
| Parameter Name | Default Value | Introduced in Version | Last Updated in Version |
|---|---|---|---|
TxSyncIntervalSeconds |
60 |
0 | 0 |
Description:
Defines the number of seconds between transaction synchronizations.
| Parameter Name | Default Value | Introduced in Version | Last Updated in Version |
|---|---|---|---|
TxSyncServeResponseSize |
1000000 |
3 | 3 |
Description:
Sets the maximum size, in bytes, that the synchronization server will return when serving transaction synchronization requests.
| Parameter Name | Default Value | Introduced in Version | Last Updated in Version |
|---|---|---|---|
VerifiedTranscationsCacheSize |
150000 |
14 (default was 30000) |
23 |
Description:
Defines the number of transactions that the verified transactions cache would hold before cycling the cache storage in a round-robin fashion.
| Parameter Name | Default Value | Introduced in Version | Last Updated in Version |
|---|---|---|---|
ForceFetchTransactions |
false |
17 | 17 |
Description:
Forces a node to retrieve all transactions observed into its Transaction Pool, regardless of whether the node is participating in consensus or not.
| Parameter Name | Default Value | Introduced in Version | Last Updated in Version |
|---|---|---|---|
TransactionSyncDataExchangeRate |
0 |
17 | 17 |
Description:
Overrides the auto-computed data exchange rate between two peers. The unit of the data exchange rate is in bytes per second. Setting the value to 0 implies allowing the transaction sync to calculate the value dynamically.
| Parameter Name | Default Value | Introduced in Version | Last Updated in Version |
|---|---|---|---|
TransactionSyncSignificantMessageThreshold |
0 |
17 | 17 |
Description:
Defines the threshold used for a Transaction Sync message before it can be used to calculate the data exchange rate. Setting this to 0 would use the default values. The threshold is defined in bytes as a unit.