docs: add CIP for block limits on pfbs and tx size#220
docs: add CIP for block limits on pfbs and tx size#220
Conversation
cips/cip-tx-limits.md
Outdated
| 1. The number of PFBs per block is limited to 600 by setting `PFBTransactionCap` to 600. `PFBTransactionCap` is the maximum number of PFB messages a block can contain. | ||
|
|
||
| 1. The number of non-PFB transactions per block is limited to 200 by setting `NonPFBTransactionCap` to 200. `NonPFBTransactionCap` is the maximum number of SDK messages, aside from PFBs, that a block can contain. |
There was a problem hiding this comment.
[optional] I think it's worth calling out that these limits aren't actually enforced. They're limits used by the celestia-app implementation but a validator could hypothetically modify prepare proposal, run that binary and create blocks with more PFBs or non-PFBs.
[nit] the constants are poorly named b/c the thing being limited is the number of messages in a block not the number of transactions. Should we change the implementation and the specs here? cc: @rach-id
There was a problem hiding this comment.
@rootulp yes sure. want me to open a PR or you do it?
There was a problem hiding this comment.
8fbee0e updated to new variables, if these don't get included with v3.0.0-rc, I will revert to names NonPFBTransactionCap and PFBTransactionCap
cips/cip-tx-limits.md
Outdated
|
|
||
| The rationale for this proposal is twofold: | ||
|
|
||
| 1. To prevent congestion on the network by limiting the number of PFBs and non-PFB transactions per block. This was initially not considered consensus-breaking, but it has a meaningful effect on users and should be formalized in a CIP. |
There was a problem hiding this comment.
[optional] I think specifically to prevent block times from spiking b/c if a block includes > 600 PFB messages and 200 non-PFB messages, the time to process the block expands past the 6 second time window. cc: @rach-id can clarify
| 1. To prevent congestion on the network by limiting the number of PFBs and non-PFB transactions per block. This was initially not considered consensus-breaking, but it has a meaningful effect on users and should be formalized in a CIP. | |
| 1. To prevent long block times on the network by limiting the number of PFBs and non-PFB transactions per block. This was initially not considered consensus-breaking, but it has a meaningful effect on users and should be formalized in a CIP. |
Co-authored-by: Rootul P <rootulp@gmail.com>
Co-authored-by: nina / ნინა <barbakadzeninaa@gmail.com>
cips/cip-tx-limits.md
Outdated
|
|
||
| The rationale for this proposal is twofold: | ||
|
|
||
| 1. To prevent long block times on the network by limiting the number of PFBs and non-PFBs messages per block. This was initially not considered consensus-breaking, but it has a meaningful effect on users and should be formalized in a CIP. |
There was a problem hiding this comment.
We can do this at a later point but it might be helpful to remember later on how these numbers were chosen
There was a problem hiding this comment.
we could point to this PR celestiaorg/celestia-app#390 as I am adding the results to it and will open it for review afterwards
There was a problem hiding this comment.
The PR 309 referenced is from deciding on the prefix for addresses and unrelated to this? celestiaorg/celestia-app#390

@rach-id Can you please provide a condensed explanation of what you learned in the PR that was intended to be linked? to explain why these values were chosen?
There was a problem hiding this comment.
my bad, this PR: celestiaorg/celestia-app#3904
That PR contains benchmarks that we run to measure the processing time different ABCI methods take with different transaction types.
Then, to limit that processing time to ~0.25sec, we added a soft limiter in prepare proposal so that the default block created by the block construction mechanism respects that processing time limit.
This soft limiter is a simple cap on the number of messages a block can contain, based on running the PRs benchmarks on 4 CPU 16GB RAM machines, which is the suggested validator configuration.
This way, the default blocks don't take much time to process. However, if a block not respecting those limits reaches consensus, it still can be included and won't be wasted.
cips/cip-tx-limits.md
Outdated
|
|
||
| 1. It's important to note that these limits are not strictly enforced. While they are defined by the `celestia-app` implementation, a validator could potentially modify the `PrepareProposal` logic, run a custom binary, and produce blocks that exceed the specified limits for PFB or non-PFBs transactions. | ||
|
|
||
| 1. The size of a transaction is limited to 2MiB by setting `MaxTxSize` to 2097152, which is 2MiB in bytes. From version v3 and above, in `CheckTx`, `PrepareProposal`, and `ProcessProposal`, each transaction's size is checked against the `appconsts.MaxTxSize` threshold. This ensures that transactions over the limit are rejected or excluded at all stages, from initial submission to execution. |
There was a problem hiding this comment.
This first line also feels verbose. We should also point out that this is a versioned parameter
| @@ -0,0 +1,44 @@ | |||
| | cip | TBD(27) | | |||
| | - | - | | |||
| | title | Block limits for number of PFBs/non-PFBs and transaction size | | |||
There was a problem hiding this comment.
We discussed this in all core devs but IMO there wasn't a clear decision made in the call. I think we could split this into two CIPs:
- Block limits for PFBs / non-PFBs
- Limit transaction size
There was a problem hiding this comment.
I think @cmwaters explanation is that these both impact how a block is constructed, so was okay to leave it as 1 CIP.
There was a problem hiding this comment.
I'm also happy to scrap this and have it split to 2 CIPs by authors of the features. but I worry this will likely just add more delay to these being drafted.
|
closing this in favor of 2 separate CIPs for these features |
Motivation: celestiaorg/CIPs#220 (comment) IMO we should either include this in v3.0.0-rc0 or close it b/c not worth it to break these constant names after that.
Motivation: celestiaorg/CIPs#220 (comment) IMO we should either include this in v3.0.0-rc0 or close it b/c not worth it to break these constant names after that. (cherry picked from commit f217064)
Motivation: celestiaorg/CIPs#220 (comment) IMO we should either include this in v3.0.0-rc0 or close it b/c not worth it to break these constant names after that.
Motivation: celestiaorg/CIPs#220 (comment) IMO we should either include this in v3.0.0-rc0 or close it b/c not worth it to break these constant names after that.
Overview
Resolves #219