$$
\newcommand \BonusBaseAmount {B_{b,\mathrm{base}}}
\newcommand \BonusBaseRound {B_{b,\mathrm{start}}}
\newcommand \BonusDecayInterval {B_{b,\mathrm{decay}}}
\newcommand \MaxTimestampIncrement {\Delta t_\max}
\newcommand \MaxTxnBytesPerBlock {B_{\max}}
\newcommand \MaxVersionStringLen {V_\max}
\newcommand \Heartbeat {\mathrm{hb}}
\newcommand \Fee {\mathrm{fee}}
\newcommand \PayoutsChallengeBits {\Heartbeat_\mathrm{bits}}
\newcommand \PayoutsChallengeGracePeriod {\Heartbeat_\mathrm{grace}}
\newcommand \PayoutsChallengeInterval {\Heartbeat_r}
\newcommand \PayoutsGoOnlineFee {B_{p,\Fee}}
\newcommand \AccountMinBalance {A_{b,\min}}
\newcommand \DefaultUpgradeWaitRounds {\delta_x}
\newcommand \MaxUpgradeWaitRounds {\delta_{x_{\max}}}
\newcommand \MinUpgradeWaitRounds {\delta_{x_{\min}}}
\newcommand \UpgradeThreshold {\tau}
\newcommand \UpgradeVoteRounds {\delta_d}
\newcommand \RewardUnit {U_r}
\newcommand \RewardsRateRefreshInterval {\omega_r}
\newcommand \StateProof {\mathrm{SP}}
\newcommand \StateProofInterval {\delta_\StateProof}
\newcommand \StateProofVotersLookback {\delta_{\StateProof,b}}
\newcommand \StateProofTopVoters {N_\StateProof}
\newcommand \StateProofStrengthTarget {KQ_\StateProof}
\newcommand \StateProofMaxRecoveryIntervals {I_\StateProof}
\newcommand \StateProofWeightThreshold {f_\StateProof}
\newcommand \MinTxnFee {T_{\Fee,\min}}
\newcommand \MaxTxnLife {T_{\Delta r,\max}}
\newcommand \MaxTxnNoteBytes {T_{m,\max}}
\newcommand \MaxTxGroupSize {GT_\max}
\newcommand \MaxKeyregValidPeriod {K_{\Delta r,\max}}
\newcommand \MaxTxTail {\mathrm{TxTail}_\max}
$$
$$
\newcommand \MinBalance {b_\min}
\newcommand \Asset {\mathrm{Asa}}
\newcommand \MaxAssetDecimals {\Asset_{d,\max}}
\newcommand \MaxAssetNameBytes {\Asset_{n,\max}}
\newcommand \MaxAssetUnitNameBytes {\Asset_{u,\max}}
\newcommand \MaxAssetURLBytes {\Asset_{r,\max}}
\newcommand \LogicSig {\mathrm{LSig}}
\newcommand \LogicSigMaxCost {\LogicSig_{c,\max}}
\newcommand \LogicSigMaxSize {\LogicSig_\max}
\newcommand \LogicSigVersion {\LogicSig_{V}}
\newcommand \MaxProposedExpiredOnlineAccounts {B_{N_\mathrm{e},\max}}
\newcommand \PayoutMaxMarkAbsent {B_{N_\mathrm{a},\max}}
\newcommand \PayoutsMaxBalance {A_{r,\max}}
\newcommand \PayoutsMinBalance {A_{r,\min}}
\newcommand \PayoutsPercent {B_{p,\%}}
\newcommand \App {\mathrm{App}}
\newcommand \AppFlatOptInMinBalance {\App_{\mathrm{optin},\MinBalance}}
\newcommand \AppFlatParamsMinBalance {\App_{\mathrm{create},\MinBalance}}
\newcommand \Box {\mathrm{Box}}
\newcommand \BoxByteMinBalance {\Box_{\mathrm{byte},\MinBalance}}
\newcommand \BoxFlatMinBalance {\Box_{\mathrm{flat},\MinBalance}}
\newcommand \BytesPerBoxReference {\Box_{\mathrm{IO}}}
\newcommand \MaxBoxSize {\Box_\max}
\newcommand \MaxAppArgs {\App_{\mathrm{arg},\max}}
\newcommand \MaxAppBoxReferences {\App_{\Box,\max}}
\newcommand \MaxAppBytesValueLen {\App_{\mathrm{v},\max}}
\newcommand \MaxAppKeyLen {\App_{\mathrm{k},\max}}
\newcommand \MaxAppProgramCost {\App_{c,\max}}
\newcommand \MaxAppProgramLen {\App_{\mathrm{prog},\max}}
\newcommand \MaxAppSumKeyValueLens {\App_{\mathrm{kv},\max}}
\newcommand \MaxAppTotalArgLen {\App_{\mathrm{ay},\max}}
\newcommand \MaxAppTotalProgramLen {\App_{\mathrm{prog},t,\max}}
\newcommand \MaxAppTotalTxnReferences {\App_{r,\max}}
\newcommand \MaxAppTxnAccounts {\App_{\mathrm{acc},\max}}
\newcommand \MaxAppTxnForeignApps {\App_{\mathrm{app},\max}}
\newcommand \MaxAppTxnForeignAssets {\App_{\mathrm{asa},\max}}
\newcommand \MaxExtraAppProgramPages {\App_{\mathrm{page},\max}}
\newcommand \MaxGlobalSchemaEntries {\App_{\mathrm{GS},\max}}
\newcommand \MaxLocalSchemaEntries {\App_{\mathrm{LS},\max}}
\newcommand \MaxInnerTransactions {\App_\mathrm{itxn}}
\newcommand \SchemaBytesMinBalance {\App_{\mathrm{b},\MinBalance}}
\newcommand \SchemaMinBalancePerEntry {\App_{\mathrm{s},\MinBalance}}
\newcommand \SchemaUintMinBalance {\App_{\mathrm{u},\MinBalance}}
$$
$$
\newcommand \Account {\mathrm{Acc}}
\newcommand \MaxAssetsPerAccount {\Account_{\Asset,\max}}
\newcommand \MaxAppsCreated {\Account_{\App,\max}}
\newcommand \MaxAppsOptedIn {\Account_{\App,optin,\max}}
\newcommand \MaximumMinimumBalance {\mathrm{MBR}_\max}
\newcommand \DefaultKeyDilution {\mathrm{KeyDilution}}
$$
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
\( \MaxTxnBytesPerBlock \) \( 5{,}242{,}880 \) bytes Maximum number of transaction bytes in a block MaxTxnBytesPerBlockv33
\( \MaxTimestampIncrement \) \( 25 \) seconds Maximum difference between successive timestamps MaxTimestampIncrementv7
\( \MaxVersionStringLen \) \( 128 \) bytes Maximum length of protocol version strings MaxVersionStringLenv12
\( \MaxProposedExpiredOnlineAccounts \) \( 32 \) Maximum number of expired participation accounts in block header MaxProposedExpiredOnlineAccountsv31
\( \PayoutMaxMarkAbsent \) \( 32 \) Maximum number of suspended participation accounts in block header Payout.MaxMarkAbsentv40
Parameter Current Value Unit Description Reference Implementation Name Last Update Version
\( \BonusBaseAmount \) \( 10{,}000{,}000 \) μALGO Bonus to be paid when block rewards first applies Bonus.BaseAmountv40
\( \BonusBaseRound \) round Earliest round block rewards can apply Bonus.BaseRoundv40
\( \BonusDecayInterval \) \( 1{,}000{,}000 \) rounds Time in rounds between 1% decays of the block rewards bonus component Bonus.DecayIntervalv40
\( \PayoutsChallengeBits \) \( 5 \) bits Frequency of online account challenges, about \( \PayoutsChallengeInterval \times 2^{\PayoutsChallengeBits} \) rounds Payouts.ChallengeBitsv40
\( \PayoutsChallengeGracePeriod \) \( 200 \) rounds Active challenge round lookback for the response interval \( [r-2\PayoutsChallengeGracePeriod, r-\PayoutsChallengeGracePeriod] \) Payouts.ChallengeGracePeriodv40
\( \PayoutsChallengeInterval \) \( 1{,}000 \) rounds Online account challenges interval, it defines the challenges frequency Payouts.ChallengeIntervalv40
\( \PayoutsGoOnlineFee \) \( 2{,}000{,}000 \) μALGO Minimum keyreg transaction fee to be eligible for block rewards Payouts.GoOnlineFeev40
\( \PayoutsMaxBalance \) \( 70{,}000{,}000{,}000{,}000 \) μALGO Maximum balance an account can have to be eligible for block rewards Payouts.MaxBalancev40
\( \PayoutsMinBalance \) \( 30{,}000{,}000{,}000 \) μALGO Minimum balance an account must have to be eligible for block rewards Payouts.MinBalancev40
\( \PayoutsPercent \) \( 50 \) % Percent of fees paid in a block that go to the proposer instead of the FeeSink Payouts.Percentv40
\( \RewardUnit \) \( 1{,}000{,}000 \) μALGO Size of an earning unit RewardUnitv7
\( \RewardsRateRefreshInterval \) \( 500{,}000 \) rounds Rate at which the reward rate is refreshed RewardsRateRefreshIntervalv7
Parameter Current Value Unit Description Reference Implementation Name Last Update Version
\( \DefaultUpgradeWaitRounds \) \( 140{,}000 \) rounds Default number of rounds needed to prepare for an upgrade DefaultUpgradeWaitRoundsv20
\( \MaxUpgradeWaitRounds \) \( 250{,}000 \) rounds Maximum number of rounds needed to prepare for an upgrade MaxUpgradeWaitRoundsv39
\( \MinUpgradeWaitRounds \) \( 10{,}000 \) rounds Minimum number of rounds needed to prepare for an upgrade MinUpgradeWaitRoundsv22
\( \UpgradeThreshold \) \( 9{,}000 \) Number of votes needed to execute an upgrade UpgradeThresholdv7
\( \UpgradeVoteRounds \) \( 10{,}000 \) rounds Number of rounds over which an upgrade proposal is open UpgradeVoteRoundsv7
Parameter Current Value Unit Description Reference Implementation Name Last Update Version
\( \StateProofInterval \) \( 256 \) rounds Number of rounds between state proofs StateProofIntervalv34
\( \StateProofMaxRecoveryIntervals \) \( 10 \) Number of state proof intervals that the network will try to catch-up with StateProofMaxRecoveryIntervalsv34
\( \StateProofStrengthTarget \) \( 256 \) bits Security parameter for State Proof StateProofStrengthTargetv34
\( \StateProofTopVoters \) \( 1{,}024 \) Maximum number of online accounts included in the vector commitment of state proofs participants StateProofTopVotersv34
\( \StateProofVotersLookback \) \( 16 \) rounds Delay in rounds for online participant information committed to in the block header for State Proof StateProofVotersLookbackv34
\( \StateProofWeightThreshold \) \( 2^{32} \times \frac{30}{100} \) Fraction of participants proven to have signed by a State Proof StateProofWeightThresholdv34
Parameter Current Value Unit Description Reference Implementation Name Last Update Version
\( \MaxTxTail \) \( 1{,}000 \) Length of the Transaction Tail
\( \MaxKeyregValidPeriod \) \( 16{,}777{,}215 \) rounds Maximum voting range in a keyreg transaction, defined as \( (256 \times 2^{16})-1 \) MaxKeyregValidPeriodv31
\( \MaxTxGroupSize \) \( 16 \) txn Maximum number of transactions allowed in a group MaxTxGroupSize v18
\( \MaxTxnLife \) \( 1,000 \) rounds Maximum difference between last valid and first valid round, defines transaction lifespan in the pool MaxTxnLifev7
\( \MinTxnFee \) \( 1{,}000 \) μALGO Minimum processing fee for any transaction MinTxnFeev7
\( \MaxTxnNoteBytes \) \( 1{,}024 \) bytes Maximum length of a transaction note field MaxTxnNoteBytesv7
Parameter Current Value Unit Description Reference Implementation Name Last Update Version
\( \DefaultKeyDilution \) \( 10{,}000 \) rounds Granularity of top-level ephemeral keys, equal to the number of second-level keys in each batch DefaultKeyDilutionv7
\( \MinBalance \) \( 100{,}000 \) μALGO Minimum balance requirement (MBR) for an account MinBalancev9
\( \MaxAssetsPerAccount \) \( 0 \) (unlimited) Maximum number of assets per account MaxAssetsPerAccountv32
\( \MaxAppsCreated \) \( 0 \) (unlimited) Maximum number of application created per account MaxAppsCreatedv32
\( \MaxAppsOptedIn \) \( 0 \) (unlimited) Maximum number of application opted-in per account MaxAppsOptedInv32
\( \MaximumMinimumBalance \) \( 0 \) (unlimited) μALGO Maximum MBR of an account MaximumMinimumBalancev32
Parameter Current Value Unit Description Reference Implementation Name Last Update Version
\( \MaxAssetDecimals \) \( 19 \) Maximum decimal precision of the asset supply MaxAssetDecimalsv20
\( \MaxAssetNameBytes \) \( 32 \) bytes Maximum length of asset name MaxAssetNameBytesv18
\( \MaxAssetUnitNameBytes \) \( 8 \) bytes Maximum length of asset unit (symbol) MaxAssetUnitNameBytesv18
\( \MaxAssetURLBytes \) \( 96 \) bytes Maximum length of asset URL MaxAssetURLBytesv28
Parameter Current Value Unit Description Reference Implementation Name Last Update Version
\( \LogicSigMaxCost \) \( 20{,}000 \) opcodes Maximum opcode cost for LSig LogicSigMaxCostv18
\( \LogicSigMaxSize \) \( 1{,}000 \) bytes Maximum combined length of LSig program and LSig arguments LogicSigMaxSizev18
Parameter Current Value Unit Description Reference Implementation Name Last Update Version
\( \AppFlatOptInMinBalance \) \( 100{,}000 \) μALGO MBR for opting in to a single application AppFlatOptInMinBalancev24
\( \AppFlatParamsMinBalance \) \( 100{,}000 \) μALGO MBR for creating a single application AppFlatParamsMinBalancev24
\( \BoxByteMinBalance \) \( 400 \) μALGO / byte MBR per byte of box storage BoxByteMinBalancev36
\( \BoxFlatMinBalance \) \( 2{,}500 \) μALGO MBR per box created BoxFlatMinBalancev36
\( \BytesPerBoxReference \) \( 1{,}024\) bytes Box read and write payload per reference BytesPerBoxReferencev36
\( \MaxBoxSize \) \( 32{,}768 \) bytes Maximum size of a box MaxBoxSizev36
\( \MaxAppArgs \) \( 16 \) Maximum number of arguments for an appl transaction MaxAppArgsv24
\( \MaxAppBoxReferences \) \( 8 \) Maximum number of box references for an appl transaction MaxAppBoxReferencesv36
\( \MaxAppBytesValueLen \) \( 128 \) bytes Maximum length of a bytes value used in an application’s state MaxAppBytesValueLenv28
\( \MaxAppKeyLen \) \( 64 \) bytes Maximum length of a key used in an application’s state MaxAppKeyLenv24
\( \MaxAppProgramCost \) \( 700 \) opcodes Maximum cost of application Approval or ClearState application program MaxAppProgramCostv24
\( \MaxAppProgramLen \) \( 2{,}048 \) bytes Maximum length of application Approval or ClearState program page MaxAppProgramLenv28
\( \MaxAppSumKeyValueLens \) \( 128 \) bytes Maximum sum of the lengths of the key and value of one app state entry MaxAppSumKeyValueLensv28
\( \MaxAppTotalArgLen \) \( 2{,}048 \) bytes Maximum sum of the lengths of argument for an appl transaction MaxAppTotalArgLenv24
\( \MaxAppTotalProgramLen \) \( 2{,}048 \) bytes Maximum combined length of application Approval and ClearState programs MaxAppTotalProgramLenv24
\( \MaxAppTotalTxnReferences \) \( 8 \) Maximum number of references for an appl transaction MaxAppTotalTxnReferencesv24
\( \MaxAppTxnAccounts \) \( 4 \) Maximum number of account references for an appl transaction MaxAppTxnAccountsv24
\( \MaxAppTxnForeignApps \) \( 8 \) Maximum number of application references for an appl transaction MaxAppTxnForeignAppsv28
\( \MaxAppTxnForeignAssets \) \( 8 \) Maximum number of asset references for an appl transaction MaxAppTxnForeignAssetsv28
\( \MaxExtraAppProgramPages \) \( 3 \) Maximum extra length for application program in pages MaxExtraAppProgramPagesv28
\( \MaxGlobalSchemaEntries \) \( 64 \) Maximum number of key/value pairs of application global state MaxGlobalSchemaEntriesv24
\( \MaxLocalSchemaEntries \) \( 16 \) Maximum number of key/value pairs of application local state MaxLocalSchemaEntriesv24
\( \MaxInnerTransactions \) \( 16 \) txn Maximum number of inner transactions for an appl transaction MaxInnerTransactionsv30
\( \SchemaBytesMinBalance \) \( 25{,}000 \) μALGO Additional MBR for []bytes values in application state SchemaBytesMinBalancev24
\( \SchemaMinBalancePerEntry \) \( 25{,}000 \) μALGO MBR for key-value pair in application state SchemaMinBalancePerEntryv24
\( \SchemaUintMinBalance \) \( 35{,}00 \) μALGO Additional MBR for uint64 values in application state SchemaUintMinBalancev24