16

If the network is under heavy use and transactions are being recorded in these blocks faster than normal, is there a cap on the size of the block?

Perhaps the rule is 20 second slot time, or a full block?

If this is the case, wouldn't a flooded network lead to decreased epoch time because of shortened slots?

17

Both the block size and the transaction size are defined as protocol parameters. These can be changed at any time by IOG, or voted on once we have Voltaire. Blocks come on average every 20 seconds, but the closest blocks can be currently is every second.

maxBlockBodySize is 65536 bytes and maxTxSize is 16384 bytes. As the network becomes more useful and congested, these parameters can be changed to accommodate the additional traffic.

We can also modify the activeSlotsCoefficient which is currently 0.05. By modifying this we can make blocks appear more frequently on average instead of 20 seconds.

Cardano has a verify flexible protocol so it can adjust quite a bit on its own before we need to worry about implementing hydra for additional scalability.

{
  "txFeePerByte": 44,
  "minUTxOValue": 1000000,
  "stakePoolDeposit": 500000000,
  "decentralization": 0,
  "poolRetireMaxEpoch": 18,
  "extraPraosEntropy": null,
  "stakePoolTargetNum": 500,
  "maxBlockBodySize": 65536,
  "maxTxSize": 16384,
  "treasuryCut": 0.2,
  "minPoolCost": 340000000,
  "maxBlockHeaderSize": 1100,
  "protocolVersion": {
      "minor": 0,
      "major": 4
  },
  "txFeeFixed": 155381,
  "stakeAddressDeposit": 2000000,
  "monetaryExpansion": 3.0e-3,
  "poolPledgeInfluence": 0.3
}
4
  • 1
    So an an activeSlotsCoefficient of .07 would be a block time of about 14.29 seconds?.07*14.29 = 1.003 May 4 at 20:37
  • 1
    @IsaacPadberg Yes. An epoch is 5 days or 432000 seconds which makes 432000 slots per epoch. 0.07 * 432000 means that on average 30240 slots will be filled with a block. 432000 / 30240 would give us about 14.29 seconds between blocks. May 6 at 22:58
  • Why have these numbers been set to fairly conservative amounts, when the protocol should be capable of more. Transaction size makes sense, but transactions per block seems fairly limited considering smart contracts will need more space.
    – Scalextrix
    Jun 5 at 12:05
  • @Scalextrix It is possible these parameters will be adjusted with the Alonzo HFC event to accommodate for a projected increase in transactions. However, there just does not appear to be any need at the moment as the max TPS Cardano has ever had to achieve at this point 0.7 TPS while the current parameters allow for ~10x of that.
    – EGMSSE
    Jul 7 at 15:00
4

Expanding on Andrew's excellent answer with some examples.

The lowest amount of transactions that could be in a block is maxBlockBodySize / maxTxSize, currently equal to 4.

It might be more practical to consider the minimum & average transaction sizes on the network. Using cardano-graphql to query these numbers for transactions in epochs >= 250 gives 2 months of history and a sample of 2.2m transactions.

  • Minimum real-world TX size: 190
  • Average real-world TX size: 613

Applying these numbers to the formula, we can calculate that at most 344 minimum size transactions would fit in a block, and on average 107 transactions can fit in a block.

Using this average and the current value for activeSlotsCoefficient, now we find how many transactions could be included in blocks per day:

107 tx/block * 0.05 blocks/slot * 86400 slots/day = 462,240 tx/day

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.