From c410d8801ac1f8e01cd5a3498e02398ebebb0748 Mon Sep 17 00:00:00 2001 From: Evan Forbes <42654277+evan-forbes@users.noreply.github.com> Date: Tue, 29 Oct 2024 12:05:20 -0500 Subject: [PATCH 1/6] fix: make check-bbr (#4004) ## Overview very minor fix that fixes the `check-bbr` command --- Makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index e095b08bb5..370601ba92 100644 --- a/Makefile +++ b/Makefile @@ -251,10 +251,10 @@ prebuilt-binary: ## check-bbr: Check if your system uses BBR congestion control algorithm. Only works on Linux. check-bbr: @echo "Checking if BBR is enabled..." - @if [ "$(sysctl net.ipv4.tcp_congestion_control | awk '{print $3}')" != "bbr" ]; then \ - echo "WARNING: BBR is not enabled. Please enable BBR for optimal performance. Call make enable-bbr or see Usage section in the README."; \ + @if [ "$$(sysctl net.ipv4.tcp_congestion_control | awk '{print $$3}')" != "bbr" ]; then \ + echo "WARNING: BBR is not enabled. Please enable BBR for optimal performance. Call make enable-bbr or see Usage section in the README."; \ else \ - echo "BBR is enabled."; \ + echo "BBR is enabled."; \ fi .PHONY: check-bbr From b6a3ed29d977b330395cc28f9075522efaf1c49a Mon Sep 17 00:00:00 2001 From: Evan Forbes <42654277+evan-forbes@users.noreply.github.com> Date: Tue, 29 Oct 2024 14:16:23 -0500 Subject: [PATCH 2/6] fix!: v3 upgrade delay (#4008) ## Overview Currently, there's a bug in v3 that will use the next version's upgrade delay instead of the current version's. For non-arabica networks, this PR introduces a consensus breaking change that fixes this issue. For arabica networks, they will continue to use the next version's delay. --------- Co-authored-by: Callum Waters --- app/test/square_size_test.go | 4 ++- app/test/upgrade_test.go | 8 ++--- pkg/appconsts/chain_ids.go | 5 +++ pkg/appconsts/versioned_consts.go | 8 ++++- pkg/appconsts/versioned_consts_test.go | 47 ++++++++++++++++++++++++++ specs/src/parameters_v2.md | 9 ++--- specs/src/parameters_v3.md | 9 ++--- test/util/testnode/config.go | 24 +++++++++---- x/signal/integration_test.go | 4 ++- x/signal/keeper.go | 3 +- x/signal/keeper_test.go | 5 +-- 11 files changed, 102 insertions(+), 24 deletions(-) create mode 100644 pkg/appconsts/chain_ids.go diff --git a/app/test/square_size_test.go b/app/test/square_size_test.go index d030b89093..b7d147fe0d 100644 --- a/app/test/square_size_test.go +++ b/app/test/square_size_test.go @@ -46,8 +46,10 @@ func (s *SquareSizeIntegrationTest) SetupSuite() { t := s.T() t.Log("setting up square size integration test") s.ecfg = encoding.MakeConfig(app.ModuleEncodingRegisters...) + cfg := testnode.DefaultConfig(). - WithModifiers(genesis.ImmediateProposals(s.ecfg.Codec)) + WithModifiers(genesis.ImmediateProposals(s.ecfg.Codec)). + WithTimeoutCommit(time.Second) cctx, rpcAddr, grpcAddr := testnode.NewNetwork(t, cfg) diff --git a/app/test/upgrade_test.go b/app/test/upgrade_test.go index 4c2677c8e0..e42449d747 100644 --- a/app/test/upgrade_test.go +++ b/app/test/upgrade_test.go @@ -106,7 +106,7 @@ func TestAppUpgradeV3(t *testing.T) { // brace yourselfs, this part may take a while initialHeight := int64(4) - for height := initialHeight; height < initialHeight+appconsts.UpgradeHeightDelay(v2.Version); height++ { + for height := initialHeight; height < initialHeight+appconsts.UpgradeHeightDelay(testApp.GetChainID(), v2.Version); height++ { appVersion := v2.Version _ = testApp.BeginBlock(abci.RequestBeginBlock{ Header: tmproto.Header{ @@ -116,7 +116,7 @@ func TestAppUpgradeV3(t *testing.T) { }) endBlockResp = testApp.EndBlock(abci.RequestEndBlock{ - Height: 3 + appconsts.UpgradeHeightDelay(v2.Version), + Height: 3 + appconsts.UpgradeHeightDelay(testApp.GetChainID(), v2.Version), }) require.Equal(t, appconsts.GetTimeoutCommit(appVersion), endBlockResp.Timeouts.TimeoutCommit) @@ -141,7 +141,7 @@ func TestAppUpgradeV3(t *testing.T) { _ = testApp.BeginBlock(abci.RequestBeginBlock{ Header: tmproto.Header{ ChainID: genesis.ChainID, - Height: initialHeight + appconsts.UpgradeHeightDelay(v3.Version), + Height: initialHeight + appconsts.UpgradeHeightDelay(testApp.GetChainID(), v3.Version), Version: tmversion.Consensus{App: 3}, }, }) @@ -152,7 +152,7 @@ func TestAppUpgradeV3(t *testing.T) { require.Equal(t, abci.CodeTypeOK, deliverTxResp.Code, deliverTxResp.Log) respEndBlock := testApp.EndBlock(abci. - RequestEndBlock{Height: initialHeight + appconsts.UpgradeHeightDelay(v3.Version)}) + RequestEndBlock{Height: initialHeight + appconsts.UpgradeHeightDelay(testApp.GetChainID(), v3.Version)}) require.Equal(t, appconsts.GetTimeoutCommit(v3.Version), respEndBlock.Timeouts.TimeoutCommit) require.Equal(t, appconsts.GetTimeoutPropose(v3.Version), respEndBlock.Timeouts.TimeoutPropose) } diff --git a/pkg/appconsts/chain_ids.go b/pkg/appconsts/chain_ids.go new file mode 100644 index 0000000000..50c26932f9 --- /dev/null +++ b/pkg/appconsts/chain_ids.go @@ -0,0 +1,5 @@ +package appconsts + +const ( + ArabicaChainID = "arabica-11" +) diff --git a/pkg/appconsts/versioned_consts.go b/pkg/appconsts/versioned_consts.go index 2455e87791..6034453598 100644 --- a/pkg/appconsts/versioned_consts.go +++ b/pkg/appconsts/versioned_consts.go @@ -79,7 +79,7 @@ func GetTimeoutCommit(v uint64) time.Duration { } // UpgradeHeightDelay returns the delay in blocks after a quorum has been reached that the chain should upgrade to the new version. -func UpgradeHeightDelay(v uint64) int64 { +func UpgradeHeightDelay(chainID string, v uint64) int64 { if OverrideUpgradeHeightDelayStr != "" { parsedValue, err := strconv.ParseInt(OverrideUpgradeHeightDelayStr, 10, 64) if err != nil { @@ -91,6 +91,12 @@ func UpgradeHeightDelay(v uint64) int64 { case v1.Version: return v1.UpgradeHeightDelay case v2.Version: + // ONLY ON ARABICA: don't return the v2 value even when the app version is + // v2 on arabica. This is due to a bug that was shipped on arabica, where + // the next version was used. + if chainID == ArabicaChainID { + return v3.UpgradeHeightDelay + } return v2.UpgradeHeightDelay default: return v3.UpgradeHeightDelay diff --git a/pkg/appconsts/versioned_consts_test.go b/pkg/appconsts/versioned_consts_test.go index f621c0199e..249dd99805 100644 --- a/pkg/appconsts/versioned_consts_test.go +++ b/pkg/appconsts/versioned_consts_test.go @@ -80,3 +80,50 @@ func TestVersionedConsts(t *testing.T) { }) } } + +func TestUpgradeHeightDelay(t *testing.T) { + tests := []struct { + name string + chainID string + version uint64 + expectedUpgradeHeightDelay int64 + }{ + { + name: "v1 upgrade delay", + chainID: "test-chain", + version: v1.Version, + expectedUpgradeHeightDelay: v1.UpgradeHeightDelay, + }, + { + name: "v1 arabica upgrade delay", + chainID: "arabica-11", + version: v1.Version, + expectedUpgradeHeightDelay: v1.UpgradeHeightDelay, + }, + { + name: "v2 upgrade delay on non-arabica chain", + chainID: "celestia", + version: v2.Version, + expectedUpgradeHeightDelay: v2.UpgradeHeightDelay, + }, + { + name: "v2 upgrade delay on arabica", + chainID: "arabica-11", + version: v2.Version, + expectedUpgradeHeightDelay: v3.UpgradeHeightDelay, // falls back to v3 because of arabica bug + }, + { + name: "v3 upgrade delay", + chainID: "mocha-4", + version: 3, + expectedUpgradeHeightDelay: v3.UpgradeHeightDelay, + }, + } + + for _, tc := range tests { + t.Run(tc.name, func(t *testing.T) { + actual := appconsts.UpgradeHeightDelay(tc.chainID, tc.version) + require.Equal(t, tc.expectedUpgradeHeightDelay, actual) + }) + } +} diff --git a/specs/src/parameters_v2.md b/specs/src/parameters_v2.md index 9bd3e63f25..ec93c9acda 100644 --- a/specs/src/parameters_v2.md +++ b/specs/src/parameters_v2.md @@ -8,10 +8,11 @@ hardcoded in the application or they are blocked by the `x/paramfilter` module. ## Global parameters -| Parameter | Default | Summary | Changeable via Governance | -|-------------------|---------|------------------------------------------------------------------------------------------------------------------------|---------------------------| -| MaxBlockSizeBytes | 100MiB | Hardcoded value in CometBFT for the protobuf encoded block. | False | -| MaxSquareSize | 128 | Hardcoded maximum square size determined per shares per row or column for the original data square (not yet extended). | False | +| Parameter | Default | Summary | Changeable via Governance | +|--------------------|---------|------------------------------------------------------------------------------------------------------------------------|---------------------------| +| MaxBlockSizeBytes | 100MiB | Hardcoded value in CometBFT for the protobuf encoded block. | False | +| MaxSquareSize | 128 | Hardcoded maximum square size determined per shares per row or column for the original data square (not yet extended). | False | +| UpgradeHeightDelay | 50400 | Height based delay after a successful `MsgTryUpgrade` has been submitted. | False | ## Module parameters diff --git a/specs/src/parameters_v3.md b/specs/src/parameters_v3.md index 860cdb286f..6f8d84fccb 100644 --- a/specs/src/parameters_v3.md +++ b/specs/src/parameters_v3.md @@ -8,10 +8,11 @@ hardcoded in the application or they are blocked by the `x/paramfilter` module. ## Global parameters -| Parameter | Default | Summary | Changeable via Governance | -|-------------------|---------|------------------------------------------------------------------------------------------------------------------------|---------------------------| -| MaxBlockSizeBytes | 100MiB | Hardcoded value in CometBFT for the protobuf encoded block. | False | -| MaxSquareSize | 128 | Hardcoded maximum square size determined per shares per row or column for the original data square (not yet extended). | False | +| Parameter | Default | Summary | Changeable via Governance | +|--------------------|---------|------------------------------------------------------------------------------------------------------------------------|---------------------------| +| MaxBlockSizeBytes | 100MiB | Hardcoded value in CometBFT for the protobuf encoded block. | False | +| MaxSquareSize | 128 | Hardcoded maximum square size determined per shares per row or column for the original data square (not yet extended). | False | +| UpgradeHeightDelay | 100800 | Height based delay after a successful `MsgTryUpgrade` has been submitted. | False | ## Module parameters diff --git a/test/util/testnode/config.go b/test/util/testnode/config.go index 0ec6e7920e..76508f91d4 100644 --- a/test/util/testnode/config.go +++ b/test/util/testnode/config.go @@ -82,10 +82,10 @@ func (c *Config) WithSuppressLogs(sl bool) *Config { return c } -// WithTimeoutCommit sets the TimeoutCommit and returns the Config. +// WithTimeoutCommit sets the timeout commit in the cometBFT config and returns +// the Config. func (c *Config) WithTimeoutCommit(d time.Duration) *Config { - c.TmConfig.Consensus.TimeoutCommit = d - return c + return c.WithAppCreator(DefaultAppCreator(WithTimeoutCommit(d))) } // WithFundedAccounts sets the genesis accounts and returns the Config. @@ -132,7 +132,7 @@ func DefaultConfig() *Config { WithTendermintConfig(DefaultTendermintConfig()). WithAppConfig(DefaultAppConfig()). WithAppOptions(DefaultAppOptions()). - WithAppCreator(DefaultAppCreator()). + WithTimeoutCommit(time.Millisecond * 30). WithSuppressLogs(true) } @@ -171,7 +171,15 @@ func DefaultTendermintConfig() *tmconfig.Config { return tmCfg } -func DefaultAppCreator() srvtypes.AppCreator { +type AppCreationOptions func(app *app.App) + +func WithTimeoutCommit(d time.Duration) AppCreationOptions { + return func(app *app.App) { + app.SetEndBlocker(wrapEndBlocker(app, d)) + } +} + +func DefaultAppCreator(opts ...AppCreationOptions) srvtypes.AppCreator { return func(_ log.Logger, _ tmdb.DB, _ io.Writer, _ srvtypes.AppOptions) srvtypes.Application { encodingConfig := encoding.MakeConfig(app.ModuleEncodingRegisters...) app := app.New( @@ -184,7 +192,11 @@ func DefaultAppCreator() srvtypes.AppCreator { simapp.EmptyAppOptions{}, baseapp.SetMinGasPrices(fmt.Sprintf("%v%v", appconsts.DefaultMinGasPrice, app.BondDenom)), ) - app.SetEndBlocker(wrapEndBlocker(app, time.Millisecond*30)) + + for _, opt := range opts { + opt(app) + } + return app } } diff --git a/x/signal/integration_test.go b/x/signal/integration_test.go index c3dd2419dd..829a2d0be9 100644 --- a/x/signal/integration_test.go +++ b/x/signal/integration_test.go @@ -23,10 +23,12 @@ func TestUpgradeIntegration(t *testing.T) { cp := app.DefaultConsensusParams() cp.Version.AppVersion = v2.Version app, _ := testutil.SetupTestAppWithGenesisValSet(cp) + chainID := "test" ctx := sdk.NewContext(app.CommitMultiStore(), tmtypes.Header{ Version: tmversion.Consensus{ App: v2.Version, }, + ChainID: chainID, }, false, tmlog.NewNopLogger()) goCtx := sdk.WrapSDKContext(ctx) ctx = sdk.UnwrapSDKContext(goCtx) @@ -77,7 +79,7 @@ func TestUpgradeIntegration(t *testing.T) { require.False(t, shouldUpgrade) require.EqualValues(t, 0, version) - ctx = ctx.WithBlockHeight(ctx.BlockHeight() + appconsts.UpgradeHeightDelay(version)) + ctx = ctx.WithBlockHeight(ctx.BlockHeight() + appconsts.UpgradeHeightDelay(chainID, version)) shouldUpgrade, version = app.SignalKeeper.ShouldUpgrade(ctx) require.True(t, shouldUpgrade) diff --git a/x/signal/keeper.go b/x/signal/keeper.go index 3ee13a9708..7e85e604d5 100644 --- a/x/signal/keeper.go +++ b/x/signal/keeper.go @@ -102,9 +102,10 @@ func (k *Keeper) TryUpgrade(ctx context.Context, _ *types.MsgTryUpgrade) (*types if version <= sdkCtx.BlockHeader().Version.App { return &types.MsgTryUpgradeResponse{}, types.ErrInvalidUpgradeVersion.Wrapf("can not upgrade to version %v because it is less than or equal to current version %v", version, sdkCtx.BlockHeader().Version.App) } + header := sdkCtx.BlockHeader() upgrade := types.Upgrade{ AppVersion: version, - UpgradeHeight: sdkCtx.BlockHeader().Height + appconsts.UpgradeHeightDelay(version), + UpgradeHeight: header.Height + appconsts.UpgradeHeightDelay(header.ChainID, header.Version.App), } k.setUpgrade(sdkCtx, upgrade) } diff --git a/x/signal/keeper_test.go b/x/signal/keeper_test.go index f79d1c3884..6c688a3328 100644 --- a/x/signal/keeper_test.go +++ b/x/signal/keeper_test.go @@ -183,7 +183,7 @@ func TestTallyingLogic(t *testing.T) { require.False(t, shouldUpgrade) // should be false because upgrade height hasn't been reached. require.Equal(t, uint64(0), version) - ctx = ctx.WithBlockHeight(ctx.BlockHeight() + appconsts.UpgradeHeightDelay(version)) + ctx = ctx.WithBlockHeight(ctx.BlockHeight() + appconsts.UpgradeHeightDelay("test", version)) shouldUpgrade, version = upgradeKeeper.ShouldUpgrade(ctx) require.True(t, shouldUpgrade) // should be true because upgrade height has been reached. @@ -426,7 +426,7 @@ func TestGetUpgrade(t *testing.T) { got, err := upgradeKeeper.GetUpgrade(ctx, &types.QueryGetUpgradeRequest{}) require.NoError(t, err) assert.Equal(t, v2.Version, got.Upgrade.AppVersion) - assert.Equal(t, appconsts.UpgradeHeightDelay(v2.Version), got.Upgrade.UpgradeHeight) + assert.Equal(t, appconsts.UpgradeHeightDelay("test", v2.Version), got.Upgrade.UpgradeHeight) }) } @@ -441,6 +441,7 @@ func setup(t *testing.T) (signal.Keeper, sdk.Context, *mockStakingKeeper) { Block: 1, App: 1, }, + ChainID: "test", }, false, log.NewNopLogger()) mockStakingKeeper := newMockStakingKeeper( map[string]int64{ From 2be49e216747787d6998c44c0ba30682e3b686d7 Mon Sep 17 00:00:00 2001 From: bombermine <84911882+bombermine3@users.noreply.github.com> Date: Wed, 30 Oct 2024 16:51:51 +0300 Subject: [PATCH 3/6] fix: enable tcp_bbr to load automatically after reboot (#4011) ## Overview Fix: Enable automatic loading of tcp_bbr module after reboot --- Makefile | 1 + 1 file changed, 1 insertion(+) diff --git a/Makefile b/Makefile index 370601ba92..4d2ae439a8 100644 --- a/Makefile +++ b/Makefile @@ -264,6 +264,7 @@ enable-bbr: @if [ "$(sysctl net.ipv4.tcp_congestion_control | awk '{print $3}')" != "bbr" ]; then \ echo "BBR is not enabled. Configuring BBR..."; \ sudo modprobe tcp_bbr; \ + echo tcp_bbr | sudo tee -a /etc/modules; \ echo "net.core.default_qdisc=fq" | sudo tee -a /etc/sysctl.conf; \ echo "net.ipv4.tcp_congestion_control=bbr" | sudo tee -a /etc/sysctl.conf; \ sudo sysctl -p; \ From 808d0f21baf7900e30e4f42345ee09d4bc34e388 Mon Sep 17 00:00:00 2001 From: Evan Forbes <42654277+evan-forbes@users.noreply.github.com> Date: Fri, 1 Nov 2024 14:40:43 -0500 Subject: [PATCH 4/6] feat: add command to enable mptcp (#4014) ## Overview adds a makefile command to enable and disable mptcp over different ports (not interfaces) for linux kernels greater than 5.6 not required, but potentially useful --- Makefile | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/Makefile b/Makefile index 4d2ae439a8..7ad829998c 100644 --- a/Makefile +++ b/Makefile @@ -274,8 +274,36 @@ enable-bbr: fi .PHONY: enable-bbr +## enable-mptcp: Enable mptcp over multiple ports (not interfaces). Only works on Linux Kernel 5.6 and above. +enable-mptcp: + @echo "Configuring system to use mptcp..." + @sudo sysctl -w net.mptcp.enabled=1 + @sudo sysctl -w net.mptcp.mptcp_path_manager=ndiffports + @sudo sysctl -w net.mptcp.mptcp_ndiffports=16 + @echo "Making MPTCP settings persistent across reboots..." + @echo "net.mptcp.enabled=1" | sudo tee -a /etc/sysctl.conf + @echo "net.mptcp.mptcp_path_manager=ndiffports" | sudo tee -a /etc/sysctl.conf + @echo "net.mptcp.mptcp_ndiffports=16" | sudo tee -a /etc/sysctl.conf + @echo "MPTCP configuration complete and persistent!" + +.PHONY: enable-mptcp + +## disable-mptcp: Disables mptcp over multiple ports. Only works on Linux Kernel 5.6 and above. +disable-mptcp: + @echo "Disabling MPTCP..." + @sudo sysctl -w net.mptcp.enabled=0 + @sudo sysctl -w net.mptcp.mptcp_path_manager=default + @echo "Removing MPTCP settings from /etc/sysctl.conf..." + @sudo sed -i '/net.mptcp.enabled=1/d' /etc/sysctl.conf + @sudo sed -i '/net.mptcp.mptcp_path_manager=ndiffports/d' /etc/sysctl.conf + @sudo sed -i '/net.mptcp.mptcp_ndiffports=16/d' /etc/sysctl.conf + @echo "MPTCP configuration reverted!" + +.PHONY: disable-mptcp + ## debug-version: Print the git tag and version. debug-version: @echo "GIT_TAG: $(GIT_TAG)" @echo "VERSION: $(VERSION)" .PHONY: debug-version + \ No newline at end of file From 34e6d3ba792ca01436d0547b29dfbf1cde0b7e1c Mon Sep 17 00:00:00 2001 From: tty47 <32740567+tty47@users.noreply.github.com> Date: Mon, 4 Nov 2024 16:26:41 +0100 Subject: [PATCH 5/6] ci(docker): bump version (#4021) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit hello! bumping version to: https://github.com/celestiaorg/.github/releases/tag/v0.5.0 best! Signed-off-by: Jose Ramon MaƱes --- .github/workflows/docker-build-publish.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/docker-build-publish.yml b/.github/workflows/docker-build-publish.yml index fff08019ec..8f628ea3b8 100644 --- a/.github/workflows/docker-build-publish.yml +++ b/.github/workflows/docker-build-publish.yml @@ -21,7 +21,7 @@ jobs: permissions: contents: write packages: write - uses: celestiaorg/.github/.github/workflows/reusable_dockerfile_pipeline.yml@v0.4.6 + uses: celestiaorg/.github/.github/workflows/reusable_dockerfile_pipeline.yml@v0.5.0 with: dockerfile: docker/Dockerfile checkout_ref: ${{ github.event.inputs.ref }} @@ -31,7 +31,7 @@ jobs: permissions: contents: write packages: write - uses: celestiaorg/.github/.github/workflows/reusable_dockerfile_pipeline.yml@v0.4.6 + uses: celestiaorg/.github/.github/workflows/reusable_dockerfile_pipeline.yml@v0.5.0 with: dockerfile: docker/txsim/Dockerfile packageName: txsim From 5d6c695af84d11f4f5c91ba20512eec40449942e Mon Sep 17 00:00:00 2001 From: Evan Forbes <42654277+evan-forbes@users.noreply.github.com> Date: Tue, 5 Nov 2024 03:13:54 -0600 Subject: [PATCH 6/6] feat: add script to configure v3 (#4022) ## Overview adds a script and better docs for configuring everything for v3 --- Makefile | 18 ++++++++++++++ app/default_overrides.go | 4 +++ docs/release-notes/release-notes.md | 38 ++++++++++++++++++++++++----- 3 files changed, 54 insertions(+), 6 deletions(-) diff --git a/Makefile b/Makefile index 7ad829998c..daa2075f4f 100644 --- a/Makefile +++ b/Makefile @@ -301,6 +301,24 @@ disable-mptcp: .PHONY: disable-mptcp +CONFIG_FILE ?= ${HOME}/.celestia-app/config/config.toml +SEND_RECV_RATE ?= 10485760 # 10 MiB + +configure-v3: + @echo "Using config file at: $(CONFIG_FILE)"; \ + if [[ "$$(uname)" == "Darwin" ]]; then \ + sed -i '' "s/^recv_rate = .*/recv_rate = $(SEND_RECV_RATE)/" $(CONFIG_FILE); \ + sed -i '' "s/^send_rate = .*/send_rate = $(SEND_RECV_RATE)/" $(CONFIG_FILE); \ + sed -i '' "s/ttl-num-blocks = 5/ttl-num-blocks = 12/" $(CONFIG_FILE); \ + else \ + sed -i "s/^recv_rate = .*/recv_rate = $(SEND_RECV_RATE)/" $(CONFIG_FILE); \ + sed -i "s/^send_rate = .*/send_rate = $(SEND_RECV_RATE)/" $(CONFIG_FILE); \ + sed -i "s/ttl-num-blocks = 5/ttl-num-blocks = 12/" $(CONFIG_FILE); \ + fi + +.PHONY: configure-v3 + + ## debug-version: Print the git tag and version. debug-version: @echo "GIT_TAG: $(GIT_TAG)" diff --git a/app/default_overrides.go b/app/default_overrides.go index 9e0b5dd382..39a5189188 100644 --- a/app/default_overrides.go +++ b/app/default_overrides.go @@ -274,6 +274,10 @@ func DefaultConsensusConfig() *tmcfg.Config { cfg.TxIndex.Indexer = "null" cfg.Storage.DiscardABCIResponses = true + const mebibyte = 1048576 + cfg.P2P.SendRate = 10 * mebibyte + cfg.P2P.RecvRate = 10 * mebibyte + return cfg } diff --git a/docs/release-notes/release-notes.md b/docs/release-notes/release-notes.md index 49f46b68d4..48e72f45ee 100644 --- a/docs/release-notes/release-notes.md +++ b/docs/release-notes/release-notes.md @@ -6,13 +6,39 @@ This guide provides notes for major version releases. These notes may be helpful ### Node Operators (v3.0.0) -- Consensus node operators must enable the BBR (Bottleneck Bandwidth and Round-trip propagation time) congestion control algorithm. See [#3774](https://github.com/celestiaorg/celestia-app/pull/3774). - - if using linux in docker, kubernetes, a vm or baremetal, this can be done by calling the `make enable-bbr` command on the host machine. -- Consensus node operators should manually configure their node's mempool `ttl-num-blocks = 12` in config.toml. An example command to do this: +#### Enabling BBR and MCTCP - ```bash - sed -i 's/ttl-num-blocks = 5/ttl-num-blocks = 12/' ~/.celestia-app/config/config.toml - ``` +Consensus node operators must enable the BBR (Bottleneck Bandwidth and Round-trip propagation time) congestion control algorithm. See [#3774](https://github.com/celestiaorg/celestia-app/pull/3774). +if using linux in docker, kubernetes, a vm or baremetal, this can be done by calling + +```sh +make enable-bbr +``` + +command on the host machine. + +#### Configure Node for V3 + +Consensus node operators should update several configurations for v3. This can be done by calling: + +```sh +make configure-v3 +``` + +If the config file is not in the default spot, it can be provided using: + +```sh +make configure-v3 CONFIG_FILE=path/to/other/config.toml +``` + +**Alternatively**, the configurations can be changed manually. This involves updating the mempool TTLs and the send and the receive rates. + +- Configuring Bandwidth Settings + - update `recv_rate` and `send_rate` in your TOML config file to 10MiB (10485760). +- Extend TTLs + - update `ttl-num-blocks` in your TOML config file to 12. + +#### Signaling Upgrades - Upgrades now use the `x/signal` module to coordinate the network to an upgrade height.