## 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

The Algorand _Ledger_ is parameterized by the values in the following tables.

> For each parameter, the tables provide the reference implementation name and the last update version, to facilitate the match of the specifications and the implementation.

| Parameter | Current Value | Unit | Description | Reference Implementation Name | Last Update Version |
| --- | --- | --- | --- | --- | --- |
| BmaxBmax | 5,242,8805,242,880 | bytes | Maximum number of transaction bytes in a block | `MaxTxnBytesPerBlock` | v33 |
| ΔtmaxΔtmax | 2525 | seconds | Maximum difference between successive timestamps | `MaxTimestampIncrement` | v7 |
| VmaxVmax | 128128 | bytes | Maximum length of protocol version strings | `MaxVersionStringLen` | v12 |
| BNe,maxBNe,max | 3232 |  | Maximum number of _expired participation accounts_ in block header | `MaxProposedExpiredOnlineAccounts` | v31 |
| BNa,maxBNa,max | 3232 |  | Maximum number of _suspended participation accounts_ in block header | `Payout.MaxMarkAbsent` | v40 |

| Parameter | Current Value | Unit | Description | Reference Implementation Name | Last Update Version |
| --- | --- | --- | --- | --- | --- |
| Bb,baseBb,base | 10,000,00010,000,000 | μALGO | Bonus to be paid when block rewards first applies | `Bonus.BaseAmount` | v40 |
| Bb,startBb,start |  | round | Earliest round block rewards can apply | `Bonus.BaseRound` | v40 |
| Bb,decayBb,decay | 1,000,0001,000,000 | rounds | Time in rounds between 1% decays of the block rewards bonus component | `Bonus.DecayInterval` | v40 |
| hbbitshbbits | 55 | bits | Frequency of online account challenges, about hbr×2hbbitshbr×2hbbits rounds | `Payouts.ChallengeBits` | v40 |
| hbgracehbgrace | 200200 | rounds | Active challenge round lookback for the response interval \[r−2hbgrace,r−hbgrace\] | `Payouts.ChallengeGracePeriod` | v40 |
| hbrhbr | 1,0001,000 | rounds | Online account challenges interval, it defines the challenges frequency | `Payouts.ChallengeInterval` | v40 |
| Bp,feeBp,fee | 2,000,0002,000,000 | μALGO | Minimum `keyreg` transaction fee to be eligible for block rewards | `Payouts.GoOnlineFee` | v40 |
| Ar,maxAr,max | 70,000,000,000,00070,000,000,000,000 | μALGO | Maximum balance an account can have to be eligible for block rewards | `Payouts.MaxBalance` | v40 |
| Ar,minAr,min | 30,000,000,00030,000,000,000 | μALGO | Minimum balance an account must have to be eligible for block rewards | `Payouts.MinBalance` | v40 |
| Bp,%Bp,% | 5050 | % | Percent of fees paid in a block that go to the proposer instead of the FeeSink | `Payouts.Percent` | v40 |
| UrUr | 1,000,0001,000,000 | μALGO | Size of an earning unit | `RewardUnit` | v7 |
| ωrωr | 500,000500,000 | rounds | Rate at which the reward rate is refreshed | `RewardsRateRefreshInterval` | v7 |

| Parameter | Current Value | Unit | Description | Reference Implementation Name | Last Update Version |
| --- | --- | --- | --- | --- | --- |
| δxδx | 140,000140,000 | rounds | Default number of rounds needed to prepare for an upgrade | `DefaultUpgradeWaitRounds` | v20 |
| δxmaxδxmax | 250,000250,000 | rounds | Maximum number of rounds needed to prepare for an upgrade | `MaxUpgradeWaitRounds` | v39 |
| δxminδxmin | 10,00010,000 | rounds | Minimum number of rounds needed to prepare for an upgrade | `MinUpgradeWaitRounds` | v22 |
| ττ | 9,0009,000 |  | Number of votes needed to execute an upgrade | `UpgradeThreshold` | v7 |
| δdδd | 10,00010,000 | rounds | Number of rounds over which an upgrade proposal is open | `UpgradeVoteRounds` | v7 |

| Parameter | Current Value | Unit | Description | Reference Implementation Name | Last Update Version |
| --- | --- | --- | --- | --- | --- |
| δSPδSP | 256256 | rounds | Number of rounds between state proofs | `StateProofInterval` | v34 |
| ISPISP | 1010 |  | Number of state proof intervals that the network will try to catch-up with | `StateProofMaxRecoveryIntervals` | v34 |
| KQSPKQSP | 256256 | bits | Security parameter for State Proof | `StateProofStrengthTarget` | v34 |
| NSPNSP | 1,0241,024 |  | Maximum number of online accounts included in the vector commitment of state proofs participants | `StateProofTopVoters` | v34 |
| δSP,bδSP,b | 1616 | rounds | Delay in rounds for online participant information committed to in the block header for State Proof | `StateProofVotersLookback` | v34 |
| fSPfSP | 232×30100232×30100 |  | Fraction of participants proven to have signed by a State Proof | `StateProofWeightThreshold` | v34 |

| Parameter | Current Value | Unit | Description | Reference Implementation Name | Last Update Version |
| --- | --- | --- | --- | --- | --- |
| TxTailmaxTxTailmax | 1,0001,000 |  | Length of the _Transaction Tail_ |  |  |
| KΔr,maxKΔr,max | 16,777,21516,777,215 | rounds | Maximum voting range in a `keyreg` transaction, defined as (256×216)−1 | `MaxKeyregValidPeriod` | v31 |
| GTmaxGTmax | 1616 | txn | Maximum number of transactions allowed in a group | `MaxTxGroupSize` | v18 |
| TΔr,maxTΔr,max | 1,0001,000 | rounds | Maximum difference between last valid and first valid round, defines transaction lifespan in the pool | `MaxTxnLife` | v7 |
| Tfee,minTfee,min | 1,0001,000 | μALGO | Minimum processing fee for any transaction | `MinTxnFee` | v7 |
| Tm,maxTm,max | 1,0241,024 | bytes | Maximum length of a transaction note field | `MaxTxnNoteBytes` | v7 |

| Parameter | Current Value | Unit | Description | Reference Implementation Name | Last Update Version |
| --- | --- | --- | --- | --- | --- |
| KeyDilutionKeyDilution | 10,00010,000 | rounds | Granularity of top-level ephemeral keys, equal to the number of second-level keys in each batch | `DefaultKeyDilution` | v7 |
| bminbmin | 100,000100,000 | μALGO | Minimum balance requirement (MBR) for an account | `MinBalance` | v9 |
| AccAsa,maxAccAsa,max | 00 (unlimited) |  | Maximum number of assets per account | `MaxAssetsPerAccount` | v32 |
| AccApp,maxAccApp,max | 00 (unlimited) |  | Maximum number of applications created per account | `MaxAppsCreated` | v32 |
| AccApp,optin,maxAccApp,optin,max | 00 (unlimited) |  | Maximum number of applications opted-in per account | `MaxAppsOptedIn` | v32 |
| MBRmaxMBRmax | 00 (unlimited) | μALGO | Maximum MBR of an account | `MaximumMinimumBalance` | v32 |

| Parameter | Current Value | Unit | Description | Reference Implementation Name | Last Update Version |
| --- | --- | --- | --- | --- | --- |
| Asad,maxAsad,max | 1919 |  | Maximum decimal precision of the asset supply | `MaxAssetDecimals` | v20 |
| Asan,maxAsan,max | 3232 | bytes | Maximum length of asset name | `MaxAssetNameBytes` | v18 |
| Asau,maxAsau,max | 88 | bytes | Maximum length of asset unit (symbol) | `MaxAssetUnitNameBytes` | v18 |
| Asar,maxAsar,max | 9696 | bytes | Maximum length of asset URL | `MaxAssetURLBytes` | v28 |

| Parameter | Current Value | Unit | Description | Reference Implementation Name | Last Update Version |
| --- | --- | --- | --- | --- | --- |
| LSigc,maxLSigc,max | 20,00020,000 | opcodes | Maximum opcode cost for LSig | `LogicSigMaxCost` | v18 |
| LSigmaxLSigmax | 1,0001,000 | bytes | Maximum combined length of LSig program and LSig arguments | `LogicSigMaxSize` | v18 |

| Parameter | Current Value | Unit | Description | Reference Implementation Name | Last Update Version |
| --- | --- | --- | --- | --- | --- |
| Appoptin,bminAppoptin,bmin | 100,000100,000 | μALGO | MBR for opting in to a single application | `AppFlatOptInMinBalance` | v24 |
| Appcreate,bminAppcreate,bmin | 100,000100,000 | μALGO | MBR for creating a single application | `AppFlatParamsMinBalance` | v24 |
| Boxbyte,bminBoxbyte,bmin | 400400 | μALGO / byte | MBR per byte of box storage | `BoxByteMinBalance` | v36 |
| Boxflat,bminBoxflat,bmin | 2,5002,500 | μALGO | MBR per box created | `BoxFlatMinBalance` | v36 |
| BoxIOBoxIO | 2,0482,048 | bytes | Box read and write payload per reference | `BytesPerBoxReference` | v41 |
| BoxmaxBoxmax | 32,76832,768 | bytes | Maximum size of a box | `MaxBoxSize` | v36 |
| Apparg,maxApparg,max | 1616 |  | Maximum number of arguments for an `appl` transaction | `MaxAppArgs` | v24 |
| AppBox,maxAppBox,max | 88 |  | Maximum number of box references for an `appl` transaction | `MaxAppBoxReferences` | v36 |
| Appv,maxAppv,max | 128128 | bytes | Maximum length of a bytes value used in an application’s state | `MaxAppBytesValueLen` | v28 |
| Appk,maxAppk,max | 6464 | bytes | Maximum length of a key used in an application’s state | `MaxAppKeyLen` | v24 |
| Appc,maxAppc,max | 700700 | opcodes | Maximum cost of application Approval or ClearState application program | `MaxAppProgramCost` | v24 |
| Appprog,maxAppprog,max | 2,0482,048 | bytes | Maximum length of application Approval or ClearState program page | `MaxAppProgramLen` | v28 |
| Appkv,maxAppkv,max | 128128 | bytes | Maximum sum of the lengths of the key and value of one app state entry | `MaxAppSumKeyValueLens` | v28 |
| Appay,maxAppay,max | 2,0482,048 | bytes | Maximum sum of the lengths of argument for an `appl` transaction | `MaxAppTotalArgLen` | v24 |
| Appprog,t,maxAppprog,t,max | 2,0482,048 | bytes | Maximum combined length of application Approval and ClearState programs | `MaxAppTotalProgramLen` | v24 |
| Appr,maxAppr,max | 88 |  | Maximum number of references for an `appl` transaction | `MaxAppTotalTxnReferences` | v24 |
| Appacc,maxAppacc,max | 88 |  | Maximum number of account references for an `appl` transaction | `MaxAppTxnAccounts` | v41 |
| Appapp,maxAppapp,max | 88 |  | Maximum number of application references for an `appl` transaction | `MaxAppTxnForeignApps` | v28 |
| Appasa,maxAppasa,max | 88 |  | Maximum number of asset references for an `appl` transaction | `MaxAppTxnForeignAssets` | v28 |
| Appaccess,maxAppaccess,max | 1616 |  | Maximum number of resources access list for an `appl` transaction | `MaxAppAccess` | v41 |
| Apppage,maxApppage,max | 33 |  | Maximum extra length for application program in pages | `MaxExtraAppProgramPages` | v28 |
| AppGS,maxAppGS,max | 6464 |  | Maximum number of key/value pairs of application global state | `MaxGlobalSchemaEntries` | v24 |
| AppLS,maxAppLS,max | 1616 |  | Maximum number of key/value pairs of application local state | `MaxLocalSchemaEntries` | v24 |
| AppitxnAppitxn | 1616 | txn | Maximum number of inner transactions for an `appl` transaction | `MaxInnerTransactions` | v30 |
| Appb,bminAppb,bmin | 25,00025,000 | μALGO | Additional MBR for `[]bytes` values in application state | `SchemaBytesMinBalance` | v24 |
| Apps,bminApps,bmin | 25,00025,000 | μALGO | MBR for key-value pair in application state | `SchemaMinBalancePerEntry` | v24 |
| Appu,bminAppu,bmin | 35,0035,00 | μALGO | Additional MBR for `uint64` values in application state | `SchemaUintMinBalance` | v24 |

1. KQSP=256 is the value set for State Proofs of type 00. Other types of State Proofs might be added in the future.
KQSP=targetPQ is set to achieve _post-quantum_ _security_ for State Proof. For further details, refer to the State Proofs [normative specification](https://specs.algorand.co/crypto/crypto-state-proofs).
