From bc30866a003fcc6e25f6aa28e2846969f3f097ed Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Tue, 16 Apr 2024 21:22:49 -0400 Subject: [PATCH 01/12] docs: disable blobstream --- cips/cip-disable-blobstream.md | 72 ++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 cips/cip-disable-blobstream.md diff --git a/cips/cip-disable-blobstream.md b/cips/cip-disable-blobstream.md new file mode 100644 index 0000000..2a6bac1 --- /dev/null +++ b/cips/cip-disable-blobstream.md @@ -0,0 +1,72 @@ +--- +title: Disable blobstream module +description: Disable the blobstream state machine module +author: Rootul Patel (@rootulp) +discussions-to: URL +status: Draft +type: Standards Track +category: Core +created: 2024-04-16 +--- + +## Abstract + +The purpose of this proposal is to disable the blobstream module in celestia-app. + +## Motivation + +The blobstream module is a celestia-app specific state machine module. The blobstream module was designed to serve as a single component in the original blobstream architecture. The original blobstream architecture has been deprecated in favor of [blobstreamx](https://github.com/succinctlabs/blobstreamx) so the blobstream module is no longer needed and thus can be disabled. + +## Specification + +The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119 and RFC 8174. + +If this CIP is adopted: + +1. The state machine MUST NOT accept new transactions that include blobstream messages (e.g. `NewMsgRegisterEVMAddress`). +1. The state machine MUST NOT respond to queries for the blobstream module (e.g. `AttestationRequestByNonce`, `LatestAttestationNonce`, `EarliestAttestationNonce`). + +## Parameters + +If this CIP is adopted, the following parameter can be removed: + +| Parameter | Value | Description | Changeable via Governance | +|---------------------------------|-------|------------------------------------------------------------------------|---------------------------| +| blobstream.DataCommitmentWindow | 400 | Number of blocks that are included in a signed batch (DataCommitment). | True | + +## Rationale + +## Backwards Compatibility + +This proposal is backwards-incompatible because it is state-machine breaking. Therefore, this proposal cannot be introduced without an app version bump. + +## Test Cases + +> [!NOTE] +> Blobstream was previously named Quantum Gravity Bridge (QGB) and the codebase never fully adopted the name change so you may interpret instances of `qgb` as `blobstream`. + +1. Ensure that celestia-app no longer accepts transactions for the blobstream module. Example: `celestia-app tx qgb ` should return an error message. +1. Ensure that celestia-app no longer accepts gRPC, RPC, or CLI queries for the blobstream module. Example: `celestia-app query qgb ` should return an error message. + +## Reference Implementation + +Celestia-app uses a versioned module manager and configurator that enables the removal of modules during app version upgrades. Concretely, the blobstream module can be disabled via this diff in `app.go`: + +```diff +{ + Module: blobstream.NewAppModule(appCodec, app.BlobstreamKeeper), + FromVersion: v1, +- ToVersion: v2, ++ ToVersion: v1, +}, +``` + +Additionally, a store migration needs to be registered during the upgrade process to ensure that the blobstream module's state is removed. Lastly, the blobstream module's tx commands and query commands should be removed from the CLI. + +## Security Considerations + +TBD + +## Copyright + +Copyright and related rights waived via [CC0](../LICENSE). From 52f40560b2c2a267dfa5e0f33250fd7da1716a49 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Tue, 16 Apr 2024 21:25:32 -0400 Subject: [PATCH 02/12] chore: add forum URL --- cips/cip-disable-blobstream.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cips/cip-disable-blobstream.md b/cips/cip-disable-blobstream.md index 2a6bac1..00ae02d 100644 --- a/cips/cip-disable-blobstream.md +++ b/cips/cip-disable-blobstream.md @@ -2,7 +2,7 @@ title: Disable blobstream module description: Disable the blobstream state machine module author: Rootul Patel (@rootulp) -discussions-to: URL +discussions-to: https://forum.celestia.org/t/cip-disable-blobstream-module/1693 status: Draft type: Standards Track category: Core From 5f8ce4cc8a7e330418a88098c850a4b56881d2eb Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Tue, 16 Apr 2024 21:27:36 -0400 Subject: [PATCH 03/12] chore: assign myself cip-20 --- README.md | 1 + cips/{cip-disable-blobstream.md => cip-20.md} | 1 + 2 files changed, 2 insertions(+) rename cips/{cip-disable-blobstream.md => cip-20.md} (99%) diff --git a/README.md b/README.md index 247c1aa..456a470 100644 --- a/README.md +++ b/README.md @@ -37,6 +37,7 @@ Read [CIP-1](https://github.com/celestiaorg/CIPs/blob/main/cips/cip-1.md) for in | [17](/cips/cip-17.md) | Lemongrass Hardfork | Evan Forbes (@evan-forbes) | | [18](/cips/cip-18.md) | Standardised Gas and Pricing Estimation Interface | Callum Waters (@cmwaters) | | [19](/cips/cip-19.md) | Shwap Protocol | Hlib Kanunnikov (@Wondertan) | +| [20](/cips/cip-20.md) | Disable blobstream module | Rootul Patel (@rootulp) | ## Contributing diff --git a/cips/cip-disable-blobstream.md b/cips/cip-20.md similarity index 99% rename from cips/cip-disable-blobstream.md rename to cips/cip-20.md index 00ae02d..72bc7ad 100644 --- a/cips/cip-disable-blobstream.md +++ b/cips/cip-20.md @@ -1,4 +1,5 @@ --- +cip: 20 title: Disable blobstream module description: Disable the blobstream state machine module author: Rootul Patel (@rootulp) From f02d608d8bcd05851ea9e8f5ca59aba78a57d435 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Tue, 16 Apr 2024 21:37:14 -0400 Subject: [PATCH 04/12] docs: add rationale --- cips/cip-20.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/cips/cip-20.md b/cips/cip-20.md index 72bc7ad..60575a6 100644 --- a/cips/cip-20.md +++ b/cips/cip-20.md @@ -37,6 +37,8 @@ If this CIP is adopted, the following parameter can be removed: ## Rationale +Disabling the blobstream module reduces the functionality of the celestia-app state machine. Disabling the blobstream module also reduces the amount of state that needs to be stored and maintained in the celestia-app state machine. + ## Backwards Compatibility This proposal is backwards-incompatible because it is state-machine breaking. Therefore, this proposal cannot be introduced without an app version bump. From 2f40bc4720452ec8d33fb76f588c7ff718f32298 Mon Sep 17 00:00:00 2001 From: Rootul P Date: Wed, 17 Apr 2024 10:37:52 -0400 Subject: [PATCH 05/12] Update cips/cip-20.md Co-authored-by: joshcs.eth <46639943+jcstein@users.noreply.github.com> --- cips/cip-20.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cips/cip-20.md b/cips/cip-20.md index 60575a6..521d913 100644 --- a/cips/cip-20.md +++ b/cips/cip-20.md @@ -16,7 +16,7 @@ The purpose of this proposal is to disable the blobstream module in celestia-app ## Motivation -The blobstream module is a celestia-app specific state machine module. The blobstream module was designed to serve as a single component in the original blobstream architecture. The original blobstream architecture has been deprecated in favor of [blobstreamx](https://github.com/succinctlabs/blobstreamx) so the blobstream module is no longer needed and thus can be disabled. +The blobstream module is a celestia-app specific state machine module. The blobstream module was designed to serve as a single component in the original blobstream architecture. The original blobstream architecture has been deprecated in favor of [Blobstream X](https://github.com/succinctlabs/blobstreamx) so the blobstream module is no longer needed and thus can be disabled. ## Specification From 3ec1361c4d6462682d934a661e3b735db275c804 Mon Sep 17 00:00:00 2001 From: Rootul P Date: Wed, 17 Apr 2024 10:38:42 -0400 Subject: [PATCH 06/12] Update cips/cip-20.md Co-authored-by: joshcs.eth <46639943+jcstein@users.noreply.github.com> --- cips/cip-20.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cips/cip-20.md b/cips/cip-20.md index 521d913..c2ac899 100644 --- a/cips/cip-20.md +++ b/cips/cip-20.md @@ -24,7 +24,7 @@ The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "S If this CIP is adopted: -1. The state machine MUST NOT accept new transactions that include blobstream messages (e.g. `NewMsgRegisterEVMAddress`). +1. The state machine MUST NOT accept new transactions that include Blobstream messages (e.g. `NewMsgRegisterEVMAddress`). 1. The state machine MUST NOT respond to queries for the blobstream module (e.g. `AttestationRequestByNonce`, `LatestAttestationNonce`, `EarliestAttestationNonce`). ## Parameters From c9123ec844c5950d550894780b49f590e7011576 Mon Sep 17 00:00:00 2001 From: Rootul P Date: Wed, 17 Apr 2024 10:38:47 -0400 Subject: [PATCH 07/12] Update cips/cip-20.md Co-authored-by: joshcs.eth <46639943+jcstein@users.noreply.github.com> --- cips/cip-20.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cips/cip-20.md b/cips/cip-20.md index c2ac899..a0a5a64 100644 --- a/cips/cip-20.md +++ b/cips/cip-20.md @@ -25,7 +25,7 @@ The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "S If this CIP is adopted: 1. The state machine MUST NOT accept new transactions that include Blobstream messages (e.g. `NewMsgRegisterEVMAddress`). -1. The state machine MUST NOT respond to queries for the blobstream module (e.g. `AttestationRequestByNonce`, `LatestAttestationNonce`, `EarliestAttestationNonce`). +1. The state machine MUST NOT respond to queries for the Blobstream module (e.g. `AttestationRequestByNonce`, `LatestAttestationNonce`, `EarliestAttestationNonce`). ## Parameters From 4f2ae2ac09374941ec1fe3f0e507c67594cfb87d Mon Sep 17 00:00:00 2001 From: Rootul P Date: Wed, 17 Apr 2024 10:38:53 -0400 Subject: [PATCH 08/12] Update cips/cip-20.md Co-authored-by: joshcs.eth <46639943+jcstein@users.noreply.github.com> --- cips/cip-20.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cips/cip-20.md b/cips/cip-20.md index a0a5a64..4d0069e 100644 --- a/cips/cip-20.md +++ b/cips/cip-20.md @@ -37,7 +37,7 @@ If this CIP is adopted, the following parameter can be removed: ## Rationale -Disabling the blobstream module reduces the functionality of the celestia-app state machine. Disabling the blobstream module also reduces the amount of state that needs to be stored and maintained in the celestia-app state machine. +Disabling the blobstream module reduces the functionality of the celestia-app state machine. Disabling the Blobstream module also reduces the amount of state that needs to be stored and maintained in the celestia-app state machine. ## Backwards Compatibility From f1e16aaab4f876cbfb04b8c9e4545d93424a2475 Mon Sep 17 00:00:00 2001 From: Rootul P Date: Wed, 17 Apr 2024 10:39:05 -0400 Subject: [PATCH 09/12] Update README.md Co-authored-by: joshcs.eth <46639943+jcstein@users.noreply.github.com> --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 456a470..72eb037 100644 --- a/README.md +++ b/README.md @@ -37,7 +37,7 @@ Read [CIP-1](https://github.com/celestiaorg/CIPs/blob/main/cips/cip-1.md) for in | [17](/cips/cip-17.md) | Lemongrass Hardfork | Evan Forbes (@evan-forbes) | | [18](/cips/cip-18.md) | Standardised Gas and Pricing Estimation Interface | Callum Waters (@cmwaters) | | [19](/cips/cip-19.md) | Shwap Protocol | Hlib Kanunnikov (@Wondertan) | -| [20](/cips/cip-20.md) | Disable blobstream module | Rootul Patel (@rootulp) | +| [20](/cips/cip-20.md) | Disable Blobstream module | Rootul Patel (@rootulp) | ## Contributing From cc720a3dc5ed21de1fbc9fc46e508cbc56f90b05 Mon Sep 17 00:00:00 2001 From: Rootul P Date: Wed, 17 Apr 2024 10:39:19 -0400 Subject: [PATCH 10/12] Update cips/cip-20.md Co-authored-by: joshcs.eth <46639943+jcstein@users.noreply.github.com> --- cips/cip-20.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cips/cip-20.md b/cips/cip-20.md index 4d0069e..9cd9a56 100644 --- a/cips/cip-20.md +++ b/cips/cip-20.md @@ -1,7 +1,7 @@ --- cip: 20 title: Disable blobstream module -description: Disable the blobstream state machine module +description: Disable the Blobstream state machine module author: Rootul Patel (@rootulp) discussions-to: https://forum.celestia.org/t/cip-disable-blobstream-module/1693 status: Draft From e95526e703c613375abc622dc006bfd43b2fc777 Mon Sep 17 00:00:00 2001 From: Rootul P Date: Wed, 17 Apr 2024 10:39:24 -0400 Subject: [PATCH 11/12] Update cips/cip-20.md Co-authored-by: joshcs.eth <46639943+jcstein@users.noreply.github.com> --- cips/cip-20.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cips/cip-20.md b/cips/cip-20.md index 9cd9a56..41c21eb 100644 --- a/cips/cip-20.md +++ b/cips/cip-20.md @@ -1,6 +1,6 @@ --- cip: 20 -title: Disable blobstream module +title: Disable Blobstream module description: Disable the Blobstream state machine module author: Rootul Patel (@rootulp) discussions-to: https://forum.celestia.org/t/cip-disable-blobstream-module/1693 From 77f208cfaa92aa85205429674d78e04be76291bb Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Wed, 17 Apr 2024 10:41:14 -0400 Subject: [PATCH 12/12] chore: blobstream -> Blobstream --- cips/cip-20.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/cips/cip-20.md b/cips/cip-20.md index 41c21eb..a703bc5 100644 --- a/cips/cip-20.md +++ b/cips/cip-20.md @@ -12,11 +12,11 @@ created: 2024-04-16 ## Abstract -The purpose of this proposal is to disable the blobstream module in celestia-app. +The purpose of this proposal is to disable the Blobstream module in celestia-app. ## Motivation -The blobstream module is a celestia-app specific state machine module. The blobstream module was designed to serve as a single component in the original blobstream architecture. The original blobstream architecture has been deprecated in favor of [Blobstream X](https://github.com/succinctlabs/blobstreamx) so the blobstream module is no longer needed and thus can be disabled. +The Blobstream module is a celestia-app specific state machine module. The Blobstream module was designed to serve as a single component in the original Blobstream architecture. The original Blobstream architecture has been deprecated in favor of [Blobstream X](https://github.com/succinctlabs/blobstreamx) so the Blobstream module is no longer needed and thus can be disabled. ## Specification @@ -37,7 +37,7 @@ If this CIP is adopted, the following parameter can be removed: ## Rationale -Disabling the blobstream module reduces the functionality of the celestia-app state machine. Disabling the Blobstream module also reduces the amount of state that needs to be stored and maintained in the celestia-app state machine. +Disabling the Blobstream module reduces the functionality of the celestia-app state machine. Disabling the Blobstream module also reduces the amount of state that needs to be stored and maintained in the celestia-app state machine. ## Backwards Compatibility @@ -48,12 +48,12 @@ This proposal is backwards-incompatible because it is state-machine breaking. Th > [!NOTE] > Blobstream was previously named Quantum Gravity Bridge (QGB) and the codebase never fully adopted the name change so you may interpret instances of `qgb` as `blobstream`. -1. Ensure that celestia-app no longer accepts transactions for the blobstream module. Example: `celestia-app tx qgb ` should return an error message. -1. Ensure that celestia-app no longer accepts gRPC, RPC, or CLI queries for the blobstream module. Example: `celestia-app query qgb ` should return an error message. +1. Ensure that celestia-app no longer accepts transactions for the Blobstream module. Example: `celestia-app tx qgb ` should return an error message. +1. Ensure that celestia-app no longer accepts gRPC, RPC, or CLI queries for the Blobstream module. Example: `celestia-app query qgb ` should return an error message. ## Reference Implementation -Celestia-app uses a versioned module manager and configurator that enables the removal of modules during app version upgrades. Concretely, the blobstream module can be disabled via this diff in `app.go`: +Celestia-app uses a versioned module manager and configurator that enables the removal of modules during app version upgrades. Concretely, the Blobstream module can be disabled via this diff in `app.go`: ```diff { @@ -64,7 +64,7 @@ Celestia-app uses a versioned module manager and configurator that enables the r }, ``` -Additionally, a store migration needs to be registered during the upgrade process to ensure that the blobstream module's state is removed. Lastly, the blobstream module's tx commands and query commands should be removed from the CLI. +Additionally, a store migration needs to be registered during the upgrade process to ensure that the Blobstream module's state is removed. Lastly, the Blobstream module's tx commands and query commands should be removed from the CLI. ## Security Considerations