Skip to content

Commit

Permalink
docs: add cip for pfb/nonpfb limits per block (#225)
Browse files Browse the repository at this point in the history
* docs: add cip for pfb/nonpfb limits per block

* docs: add coauthors from previous PR

* docs: edits

* docs: add original context from previous PR

* Apply suggestions from code review

Co-authored-by: Rootul P <[email protected]>

* docs: rename to CIP-27.md

* docs: update readme

* Update cips/README.md

* docs: add cip-27 to cip-25 (ginger)

---------

Co-authored-by: Rootul P <[email protected]>
  • Loading branch information
jcstein and rootulp authored Oct 18, 2024
1 parent edd2e09 commit b62ea92
Show file tree
Hide file tree
Showing 4 changed files with 50 additions and 3 deletions.
4 changes: 3 additions & 1 deletion cips/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,8 @@ Read [CIP-1](./cip-1.md) for information on the CIP process.
| 15 | August 7, 2024 | [Agenda](https://github.com/celestiaorg/CIPs/issues/185) | [Notes](./notes/cdc-15.md) | [Recording](https://www.youtube.com/watch?v=7f1Jtggld34) |
| 16 | September 4, 2024 | [Agenda](https://github.com/celestiaorg/CIPs/issues/194) | TBD | [Recording](https://www.youtube.com/watch?v=zuJ6xoRvz-U) |
| 17 | October 2, 2024 | [Agenda](https://github.com/celestiaorg/CIPs/issues/201) | [Tweet Thread](https://x.com/JoshCStein/status/1842229129199935757) | [Recording](https://youtu.be/J2Cep6gBN-o) |
| 18 | October 16, 2024 | [Agenda](https://github.com/celestiaorg/CIPs/issues/214) | TBD | TBD |
| 18 | October 16, 2024 | [Agenda](https://github.com/celestiaorg/CIPs/issues/214) | TBD | [Recording](https://youtu.be/1aaPYxRVAtk) |
| 19 | November 6, 2024 | [Agenda](https://github.com/celestiaorg/CIPs/issues/221) | TBD | [Set reminder](https://youtu.be/txmttm6t4YI) |

## Celestia Improvement Proposals (CIPs)

Expand Down Expand Up @@ -55,6 +56,7 @@ Read [CIP-1](./cip-1.md) for information on the CIP process.
| [24](./cip-24.md) | Versioned Gas Scheduler Variable | Nina Barbakadze ([@ninabarbakadze](https://github.com/ninabarbakadze)) |
| [25](./cip-25.md) | Ginger Network Upgrade | Josh Stein ([@jcstein](https://github.com/jcstein)), Nina Barbakadze ([@ninabarbakadze](https://github.com/ninabarbakadze)) |
| [26](./cip-26.md) | Versioned timeouts | Josh Stein ([@jcstein](https://github.com/jcstein)), Rootul Patel ([@rootulp](https://github.com/rootulp)), Sanaz Taheri ([@staheri14](https://github.com/staheri14) |
| [27](./cip-26.md) | Block limits for number of PFBs and non-PFBs | Josh Stein ([@jcstein](https://github.com/jcstein)), Nina Barbakadze ([@ninabarbakadze](https://github.com/ninabarbakadze)), rach-id ([@rach-id](https://github.com/rach-id)), Rootul Patel ([@rootulp](https://github.com/rootulp)) |

## Contributing

Expand Down
1 change: 1 addition & 0 deletions cips/SUMMARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
- [CIP-24](./cip-24.md)
- [CIP-25](./cip-25.md)
- [CIP-26](./cip-26.md)
- [CIP-27](./cip-27.md)

- [Core Devs Call notes](./notes/README.md)
- [CDC #14](./notes/cdc-14.md)
Expand Down
4 changes: 2 additions & 2 deletions cips/cip-25.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
| status | Draft |
| type | Meta |
| created | 2024-10-01 |
| requires | CIP-21, CIP-24, CIP-26, CIP-TBD-2 |
| requires | CIP-21, CIP-24, CIP-26, CIP-27, CIP-TBD-2 |

## Abstract

Expand All @@ -20,7 +20,7 @@ This Meta CIP lists the CIPs included in the Ginger network upgrade.
- [CIP-21](./cip-21.md): Introduce blob type with verified signer
- [CIP-24](./cip-24.md): Versioned Gas Scheduler Variables
- [CIP-26](./cip-26.md): Versioned timeouts
- CIP-TBD-1: Block limits for number of PFBs and non-PFBs
- [CIP-27](./cip-27.md): Block limits for number of PFBs and non-PFBs
- CIP-TBD-2: Transaction size limit

All of the above CIPs are state breaking, and thus require a breaking network upgrade. The activation of this network upgrade will be different from previous network upgrades, as described in [CIP-10](./cip-10.md).
Expand Down
44 changes: 44 additions & 0 deletions cips/cip-27.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
| cip | 27 |
| - | - |
| title | Block limits for number of PFBs and non-PFBs |
| description | Set limits for number of PFBs and non-PFBs per block |
| author | Josh Stein ([@jcstein](https://github.com/jcstein)), Nina Barbakadze ([@ninabarbakadze](https://github.com/ninabarbakadze)), rach-id ([@rach-id](https://github.com/rach-id)), Rootul Patel ([@rootulp](https://github.com/rootulp)) |
| discussions-to | <https://forum.celestia.org/t/cip-limit-number-of-pfbs-and-non-pfbs-per-block-increase-transaction-size-limit/1843> |
| status | Draft |
| type | Standards Track |
| category | Core |
| created | 2024-10-16 |

## Abstract

This CIP proposes to set limits for the number of PayForBlobs (PFBs) messages and non-PFBs messages per block. The proposal is to set the limits to 600 PFBs messages and 200 non-PFB messages per block. Setting PFB and non-PFBs limits is not consensus-breaking.

## Specification

1. The number of PFBs per block is limited to 600 by setting `MaxPFBMessages` to 600.
1. The number of non-PFBs messages per block is limited to 200 by setting `MaxNonPFBMessages` to 200.
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.

## Rationale

The rationale for this proposal is to prevent long block times on the network by limiting the number of PFBs and non-PFB messages per block. This is not consensus-breaking but it has a meaningful effect on users and should be formalized in a CIP.

1. The limits for PFBs (Pay for Blob transactions) and non-PFBs per block were established using the following process:
1. Benchmarks were conducted in [PR 3904 on celestia-app](https://github.com/celestiaorg/celestia-app/pull/3904) to measure ABCI method processing times for different transaction types.
1. A target processing time of ~0.25 seconds was set to prevent long block times.
1. Based on these benchmarks run on the recommended validator configuration (4 CPU, 16GB RAM), a soft limiter was implemented in the prepare proposal stage.
1. This limiter sets specific caps on the number of PFB and non-PFB messages allowed in a default block to meet the processing time target.
1. While default blocks adhere to these limits, blocks exceeding them can still be included if they reach consensus, ensuring flexibility.
1. This approach balances network efficiency with block processing speed, directly informing the PFB and non-PFB limits now in place.

## Backwards Compatibility

This proposal is meant to be included with v3 and the [Ginger Network Upgrade](./cip-25.md). It is backwards compatible with v2.

## Security Considerations

This proposal does not introduce any new security risks. However, it does impact network behavior and user experience, which should be carefully considered during implementation.

## Copyright

Copyright and related rights waived via [CC0](https://github.com/celestiaorg/CIPs/blob/main/LICENSE).

0 comments on commit b62ea92

Please sign in to comment.