"
- }
- }
- }
-}
-```
-
-## Verifying your Timeboost setup
-
-There are multiple ways to confirm that Timeboost is correctly enabled on your chain:
-
-### Periodic startup logs
-
-When you start your sequencer with Timeboost enabled, you'll see periodic logs indicating the start of new express lane auction rounds:
-
-```shell
-New express lane auction round
-```
-
-This log indicates that the Timeboost mechanism is active and running normally.
-
-### Transaction processing confirmation
-
-After finishing a bid request, look for messages in your sequencer logs such as:
-
-```shell
-AuctionResolved: New express lane controller assigned round
-```
-
-This message confirms that your sequencer is processing express queue transactions from the express lane controller, and that Timeboost is functioning correctly.
-
-### User interaction verification
-
-Users can interact with Timeboost by submitting bids through the `auctioneer_submitBid` endpoint of your auctioneer service.
-For detailed instructions on how users can interact with Timeboost, see [How to Use Timeboost](https://docs.arbitrum.io/how-arbitrum-works/timeboost/how-to-use-timeboost).
-
-A successful bid submission will trigger the auction resolution process and generate the corresponding logs mentioned above.
diff --git a/docs/launch-arbitrum-chain/02-configure-your-chain/common-configurations/09-sequencer-timing-adjustments.mdx b/docs/launch-arbitrum-chain/02-configure-your-chain/common-configurations/09-sequencer-timing-adjustments.mdx
deleted file mode 100644
index 9d3ce1e017..0000000000
--- a/docs/launch-arbitrum-chain/02-configure-your-chain/common-configurations/09-sequencer-timing-adjustments.mdx
+++ /dev/null
@@ -1,9 +0,0 @@
----
-title: 'Sequencer Timing Adjustments'
-description: 'Learn how to configure sequencer timing adjustments for your Arbitrum chain'
-author:
-sme:
-content_type: how-to
-tags: ['hide-from-search']
-unlisted: true
----
diff --git a/docs/launch-arbitrum-chain/02-configure-your-chain/common-configurations/10-per-batch-gas-cost.mdx b/docs/launch-arbitrum-chain/02-configure-your-chain/common-configurations/10-per-batch-gas-cost.mdx
deleted file mode 100644
index dfaa300451..0000000000
--- a/docs/launch-arbitrum-chain/02-configure-your-chain/common-configurations/10-per-batch-gas-cost.mdx
+++ /dev/null
@@ -1,9 +0,0 @@
----
-title: 'Per batch gas cost'
-description: 'Learn how to configure per batch gas cost for your Arbitrum chain'
-author:
-sme:
-content_type: how-to
-tags: ['hide-from-search']
-unlisted: true
----
diff --git a/docs/launch-arbitrum-chain/02-configure-your-chain/common-configurations/11-smart-contract-size-limit.mdx b/docs/launch-arbitrum-chain/02-configure-your-chain/common-configurations/11-smart-contract-size-limit.mdx
deleted file mode 100644
index f6f3c94abe..0000000000
--- a/docs/launch-arbitrum-chain/02-configure-your-chain/common-configurations/11-smart-contract-size-limit.mdx
+++ /dev/null
@@ -1,9 +0,0 @@
----
-title: 'Smart contract size limit'
-description: 'Learn how to configure smart contract size limits on your Arbitrum chain'
-author:
-sme:
-content_type: how-to
-tags: ['hide-from-search']
-unlisted: true
----
diff --git a/docs/launch-arbitrum-chain/02-configure-your-chain/common-configurations/12-customizing-anytrust.mdx b/docs/launch-arbitrum-chain/02-configure-your-chain/common-configurations/12-customizing-anytrust.mdx
deleted file mode 100644
index 46a0ea59a0..0000000000
--- a/docs/launch-arbitrum-chain/02-configure-your-chain/common-configurations/12-customizing-anytrust.mdx
+++ /dev/null
@@ -1,9 +0,0 @@
----
-title: 'Customizing AnyTrust'
-description: 'Learn how to customize AnyTrust on your Arbitrum chain'
-author:
-sme:
-content_type: how-to
-tags: ['hide-from-search']
-unlisted: true
----
diff --git a/docs/launch-arbitrum-chain/02-start-your-journey.mdx b/docs/launch-arbitrum-chain/02-start-your-journey.mdx
deleted file mode 100644
index 7efc94581b..0000000000
--- a/docs/launch-arbitrum-chain/02-start-your-journey.mdx
+++ /dev/null
@@ -1,12 +0,0 @@
----
-title: 'Start your journey into Arbitrum chains'
-sidebar_label: 'Arbitrum chain: get started'
-description: 'Learn how to get started with Arbitrum chains'
-sidebar_position: '2'
-author: 'anegg0'
-sme: 'mahsamoosavi'
-editor: 'anegg0'
-target_audience: 'Prospective chain owners, and operators'
-tags: ['hide-from-search']
-unlisted: true
----
diff --git a/docs/launch-arbitrum-chain/03-arbitrum-license.mdx b/docs/launch-arbitrum-chain/03-arbitrum-license.mdx
deleted file mode 100644
index b727357f1a..0000000000
--- a/docs/launch-arbitrum-chain/03-arbitrum-license.mdx
+++ /dev/null
@@ -1,12 +0,0 @@
----
-title: 'The Arbitrum chain license'
-sidebar_label: 'Arbitrum chain license'
-description: ''
-sidebar_position: 2
-author:
-sme:
-editor: anegg0
-target_audience:
-tags: ['hide-from-search']
-unlisted: true
----
diff --git a/docs/launch-arbitrum-chain/04-maintain-your-chain/01-bridging.mdx b/docs/launch-arbitrum-chain/04-maintain-your-chain/01-bridging.mdx
deleted file mode 100644
index 598237adc9..0000000000
--- a/docs/launch-arbitrum-chain/04-maintain-your-chain/01-bridging.mdx
+++ /dev/null
@@ -1,9 +0,0 @@
----
-title: 'Bridging'
-description: 'PLACEHOLDER'
-author:
-sme:
-content_type: how-to
-tags: ['hide-from-search']
-unlisted: true
----
diff --git a/docs/launch-arbitrum-chain/04-maintain-your-chain/02-monitoring.mdx b/docs/launch-arbitrum-chain/04-maintain-your-chain/02-monitoring.mdx
deleted file mode 100644
index 649e63f45f..0000000000
--- a/docs/launch-arbitrum-chain/04-maintain-your-chain/02-monitoring.mdx
+++ /dev/null
@@ -1,9 +0,0 @@
----
-title: 'Monitoring'
-description: 'Learn how to configure your Arbitrum chain with a custom bond and validator configurations'
-author:
-sme:
-content_type: how-to
-tags: ['hide-from-search']
-unlisted: true
----
diff --git a/docs/launch-arbitrum-chain/04-maintain-your-chain/04-guidance/01-decentralization-security.mdx b/docs/launch-arbitrum-chain/04-maintain-your-chain/04-guidance/01-decentralization-security.mdx
deleted file mode 100644
index 272aab0202..0000000000
--- a/docs/launch-arbitrum-chain/04-maintain-your-chain/04-guidance/01-decentralization-security.mdx
+++ /dev/null
@@ -1,9 +0,0 @@
----
-title: 'Decentralization and Security'
-description: 'PLACEHOLDER'
-author:
-sme:
-content_type: how-to
-tags: ['hide-from-search']
-unlisted: true
----
diff --git a/docs/launch-arbitrum-chain/04-maintain-your-chain/04-guidance/02-guidance-on-altda.mdx b/docs/launch-arbitrum-chain/04-maintain-your-chain/04-guidance/02-guidance-on-altda.mdx
deleted file mode 100644
index eca5d9a361..0000000000
--- a/docs/launch-arbitrum-chain/04-maintain-your-chain/04-guidance/02-guidance-on-altda.mdx
+++ /dev/null
@@ -1,9 +0,0 @@
----
-title: 'Guidance on AltDA'
-description: 'PLACEHOLDER'
-author:
-sme:
-content_type: how-to
-tags: ['hide-from-search']
-unlisted: true
----
diff --git a/docs/launch-arbitrum-chain/06-third-party-integrations/03-integrations.mdx b/docs/launch-arbitrum-chain/06-third-party-integrations/03-integrations.mdx
deleted file mode 100644
index 34c95d1a99..0000000000
--- a/docs/launch-arbitrum-chain/06-third-party-integrations/03-integrations.mdx
+++ /dev/null
@@ -1,15 +0,0 @@
----
-title: 'Integrations'
-description: 'PLACEHOLDER'
-author:
-sme:
-content_type: how-to
-tags: ['hide-from-search']
-unlisted: true
----
-
-## Compatible third-party integrations
-
-## LayerZero OFT
-
-## xERC-20 Gateway
diff --git a/docs/launch-arbitrum-chain/07-arbitrum-node-runners/arbitrum-chain-node-providers.mdx b/docs/launch-arbitrum-chain/07-arbitrum-node-runners/arbitrum-chain-node-providers.mdx
deleted file mode 100644
index 142b208a4a..0000000000
--- a/docs/launch-arbitrum-chain/07-arbitrum-node-runners/arbitrum-chain-node-providers.mdx
+++ /dev/null
@@ -1,9 +0,0 @@
----
-title: 'Arbitrum chain Node Providers'
-description: 'PLACEHOLDER'
-author:
-sme:
-content_type: how-to
-tags: ['hide-from-search']
-robots: noindex
----
diff --git a/docs/launch-arbitrum-chain/08-ecosystem-support/01-arbitrum-chain-portal.mdx b/docs/launch-arbitrum-chain/08-ecosystem-support/01-arbitrum-chain-portal.mdx
deleted file mode 100644
index 7c7c6b0fe6..0000000000
--- a/docs/launch-arbitrum-chain/08-ecosystem-support/01-arbitrum-chain-portal.mdx
+++ /dev/null
@@ -1,9 +0,0 @@
----
-title: 'Arbitrum chains Portal'
-description: 'PLACEHOLDER'
-author:
-sme:
-content_type: how-to
-tags: ['hide-from-search']
-unlisted: true
----
diff --git a/docs/launch-arbitrum-chain/08-ecosystem-support/03-get-listed-arbitrum-chain-platforms.mdx b/docs/launch-arbitrum-chain/08-ecosystem-support/03-get-listed-arbitrum-chain-platforms.mdx
deleted file mode 100644
index 416349caf7..0000000000
--- a/docs/launch-arbitrum-chain/08-ecosystem-support/03-get-listed-arbitrum-chain-platforms.mdx
+++ /dev/null
@@ -1,9 +0,0 @@
----
-title: 'Get listed on Arbitrum platforms'
-description: 'PLACEHOLDER'
-author:
-sme:
-content_type: how-to
-tags: ['hide-from-search']
-unlisted: true
----
diff --git a/docs/launch-arbitrum-chain/arbitrum-chain-supported-parent-chains.mdx b/docs/launch-arbitrum-chain/arbitrum-chain-supported-parent-chains.mdx
deleted file mode 100644
index 01cd8daf02..0000000000
--- a/docs/launch-arbitrum-chain/arbitrum-chain-supported-parent-chains.mdx
+++ /dev/null
@@ -1,60 +0,0 @@
----
-title: 'Supported parent chains'
-sidebar_label: 'Supported parent chains'
-description: 'List of officially supported parent chains for Arbitrum chains'
-sidebar_position: '2'
-author: 'mahsamoosavi'
-sme: 'mahsamoosavi'
-editor: 'anegg0'
-target_audience: 'Arbitrum chains owners and operators'
----
-
-This page lists the parent chains that are officially supported for Arbitrum chains, including mainnets, testnets, and options for local development. While the Arbitrum chain SDK provides functionality to enable custom parent chains, support is limited to the chains explicitly listed on this page. Developers are welcome to use the Arbitrum chain SDK to configure and deploy custom parent chains; however, such setups, including deploying the required creator and template contracts, are beyond the scope of our official support.
-
-:::caution Supported Chains Only
-
-Please note that we cannot guarantee compatibility or offer assistance for custom configurations outside of the supported chains detailed below.
-
-:::
-
-#### Supported chains
-
-
-
-- **Ethereum Mainnet**
- **Chain ID:** `1`
-
-- **Arbitrum One**
- **Chain ID:** `42161`
-
-- **Arbitrum Nova**
- **Chain ID:** `42170`
-
-- **Base**
- **Chain ID:** `8453`
-
-- **Sepolia**
- **Chain ID:** `11155111`
-
-- **Arbitrum Sepolia**
- **Chain ID:** `421613`
-
-- **Base Sepolia**
- **Chain ID:** `84531`
-
-- **Nitro Testnode L1**
- **Chain ID:** `1337`
-
-- **Nitro Testnode L2**
- **Chain ID:** `412346`
-
-- **Nitro Testnode L3**
- **Chain ID:** `333333`
-
-
-
-### Adding custom parent chains
-
-Although Arbitrum chains primarily supports a predefined set of chains, it provides developers with the flexibility to add custom parent chains through [the `registerCustomParentChain` function of the Arbitrum (Orbit) chain SDK](https://github.com/OffchainLabs/arbitrum-orbit-sdk/blob/729facd4d50156d7a84cf1204552c900eb86655c/src/chains.ts#L102). This capability enables integration with chains beyond the officially supported list, offering opportunities for customization and expanding the Arbtrium ecosystem.
-
-However, adding a custom chain requires deploying essential contracts, such as the creator contract and template contract, on the target chain. These contracts are fundamental for ensuring the proper functioning of the Arbitrum chain framework on the custom chain.
diff --git a/docs/launch-arbitrum-chain/partials/_arbitrum-chain-public-preview-banner-partial.md b/docs/launch-arbitrum-chain/partials/_arbitrum-chain-public-preview-banner-partial.md
deleted file mode 100644
index 3b33fd052a..0000000000
--- a/docs/launch-arbitrum-chain/partials/_arbitrum-chain-public-preview-banner-partial.md
+++ /dev/null
@@ -1,7 +0,0 @@
-:::info PUBLIC PREVIEW, MAINNET READY
-
-Arbitrum chains are now [Mainnet ready](/launch-arbitrum-chain/concepts/public-preview-expectations.mdx#arbitrum-chains-are-mainnet-ready-but-deploy-to-testnet-first)! Note that Arbitrum is still a **[public preview](/launch-arbitrum-chain/concepts/public-preview-expectations.mdx)** capability - the Arbitrum product and its supporting documentation may change significantly as we capture feedback from readers like you.
-
-To provide feedback, click the _Request an update_ button at the top of this document, [join the Arbitrum Discord](https://discord.gg/arbitrum), or reach out to our team directly by completing [this form](http://bit.ly/3yy6EUK).
-
-:::
diff --git a/docs/node-running/contribute.mdx b/docs/node-running/contribute.mdx
deleted file mode 100644
index 4f7c3501cf..0000000000
--- a/docs/node-running/contribute.mdx
+++ /dev/null
@@ -1,8 +0,0 @@
----
-title: 'Contribute docs'
-description: "Learn how to contribute to Arbitrum's documentation"
----
-
-import ContributeDocsPartial from '../partials/_contribute-docs-partial.mdx';
-
-
diff --git a/docs/node-running/how-tos/data-availability-committee/partials/parameters/_ipfs-parameters.mdx b/docs/node-running/how-tos/data-availability-committee/partials/parameters/_ipfs-parameters.mdx
deleted file mode 100644
index 2ff2d05dfe..0000000000
--- a/docs/node-running/how-tos/data-availability-committee/partials/parameters/_ipfs-parameters.mdx
+++ /dev/null
@@ -1,5 +0,0 @@
-| Parameter | Description |
-| --------------------------------------------- | -------------------------------------------------------------------------------------------------------- |
-| --data-availability.ipfs-storage.enable | Enables storage/retrieval of sequencer batch data from IPFS |
-| --data-availability.ipfs-storage.profiles | Comma separated list of IPFS profiles to use |
-| --data-availability.ipfs-storage.read-timeout | Timeout for IPFS reads, since by default it will wait forever. Treat timeout as not found (default 1m0s) |
diff --git a/docs/node-running/node-running-content-map.mdx b/docs/node-running/node-running-content-map.mdx
deleted file mode 100644
index 01e0c38fb9..0000000000
--- a/docs/node-running/node-running-content-map.mdx
+++ /dev/null
@@ -1,98 +0,0 @@
----
-id: node-running-content-map
-title: Run an Arbitrum node
-sidebar_label: Run an Arbitrum node
----
-
-import Card from '@site/src/components/Cards/Card';
-
-# Run an Arbitrum node
-
-Learn how to run an Arbitrum node.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/docs/partials/_macos-verify-tx-issue-banner-partial.mdx b/docs/partials/_macos-verify-tx-issue-banner-partial.mdx
deleted file mode 100644
index 11df1da02c..0000000000
--- a/docs/partials/_macos-verify-tx-issue-banner-partial.mdx
+++ /dev/null
@@ -1,13 +0,0 @@
----
-partial_type: banner
-title: 'MacOS Verification Issue Banner'
-description: 'Warning banner for MacOS transaction verification limitations'
-author: anegg0
-last_reviewed: 2025-01-15
----
-
-:::caution MacOS Users
-
-This feature is currently unavailable to MacOS users. We are working on a solution and will update this page when this limitation is resolved.
-
-:::
diff --git a/docs/partials/_under-construction-banner-partial.mdx b/docs/partials/_under-construction-banner-partial.mdx
deleted file mode 100644
index 1a30c582f3..0000000000
--- a/docs/partials/_under-construction-banner-partial.mdx
+++ /dev/null
@@ -1,15 +0,0 @@
----
-partial_type: banner
-title: 'Under Construction Banner'
-description: 'Banner indicating document is under construction'
-author: anegg0
-last_reviewed: 2025-01-15
----
-
-:::caution UNDER CONSTRUCTION
-
-This document is currently under construction.
-
-If you're waiting for this content to be completed, click the `Request an update` button at the top of this page to let us know. We incorporate these requests into our content prioritization discussions. **Thank you!**
-
-:::
diff --git a/docs/stylus/concepts/public-preview-expectations.md b/docs/stylus/concepts/public-preview-expectations.md
deleted file mode 100644
index 89a7854c02..0000000000
--- a/docs/stylus/concepts/public-preview-expectations.md
+++ /dev/null
@@ -1,42 +0,0 @@
----
-title: 'Public preview: What to expect'
-description: 'Stylus is currently tagged as a `release-candidate` supported by *public preview* documentation. This concept document explains what this means, and what to expect.'
-author: symbolpunk
-sidebar_position: 10
----
-
-Stylus is currently tagged as a `release-candidate` supported by _public preview_ documentation. This concept document explains what "public preview" means, what to expect from public preview capabilities, and how to engage with our team as you tinker.
-
-### How products are developed at Offchain Labs
-
-Offchain Labs builds products in a way that aligns loosely with the spirit of "building in public". We like to release things **early and often** so that we can capture feedback and iterate in service of your needs, as empirically as possible.
-
-To do this, some of our product offerings are documented with **public preview** disclaimers that look like this:
-
-This banner's purpose is to set expectations while inviting readers like you to express your needs so that we can incorporate them into the way that we iterate on product.
-
-### What to expect when using public preview offerings
-
-As you tinker and provide feedback, we'll be listening. Sometimes, we'll learn something non-obvious that will result in a significant change. More commonly, you'll experience incremental improvements to the developer experience as the offering grows out of its **public preview** status, towards **stable** status.
-
-Public preview offerings are evolving rapidly, so don't expect the degree of release notes discipline that you'd expect from a stable offering. Keep your eyes open for notifications regarding patch, minor, and major changes, along with corresponding relnotes that highlight breaking changes and new capabilities.
-
-### How to provide feedback
-
-Our product team primarily uses three feedback channels while iterating on public preview capabilities:
-
-1. **Docs**: Click on the **Request an update** button located in the top-right corner of any document to provide feedback on the docs and/or developer experience. This will lead you to a prefilled Github issue that members of our product team periodically review.
-2. **Discord**: [Join the Arbitrum Discord](https://discord.gg/arbitrum) to engage with members of the Arbitrum community and product team.
-3. **Google form**: Complete [this form](http://bit.ly/3yy6EUK) to ask for support.
-
-### What to expect when providing feedback
-
-Our ability to respond to feedback is determined by our ever-evolving capacity and priorities. We can't guarantee responses to all feedback submissions, but our small-but-mighty team is listening, and we'll try our best to acknowledge and respond to your feedback. No guarantees though!
-
-:::info
-[Our small-but-mighty team is hiring](https://jobs.lever.co/offchainlabs).
-:::
-
-### Thank you!
-
-Thanks for helping us build things that meet your needs! We're excited to engage with OGs and newcomers alike; please don't hesitate to reach out.
diff --git a/docs/stylus/how-tos/using-constructors.mdx b/docs/stylus/how-tos/using-constructors.mdx
deleted file mode 100644
index c50a713bd4..0000000000
--- a/docs/stylus/how-tos/using-constructors.mdx
+++ /dev/null
@@ -1,543 +0,0 @@
----
-title: 'Using constructors with Stylus'
-description: 'A comprehensive guide to implementing and deploying smart contracts with constructors in Stylus'
-sidebar_label: 'Using constructors'
-author: 'anegg0'
-sme: 'anegg0'
-user_story: 'As a Rust developer, I want to understand how to implement and use constructors in Stylus smart contracts'
-content_type: 'how-to'
-sidebar_position: 3
-displayed_sidebar: buildAppsSidebar
----
-
-import CustomDetails from '@site/src/components/CustomDetails';
-import { VanillaAdmonition } from '@site/src/components/VanillaAdmonition/';
-
-Constructors allow you to initialize your Stylus smart contracts with specific parameters when deploying them. This guide will show you how to implement constructors in Rust, understand their behavior, and deploy contracts using them.
-
-## What you'll accomplish
-
-By the end of this guide, you'll be able to:
-
-- Implement constructor functions in Stylus contracts
-- Understand the constructor rules and limitations
-- Deploy contracts with constructor parameters
-- Test the constructor functionality
-- Handle constructor errors and validation
-
-## Prerequisites
-
-Before implementing constructors, ensure you have:
-
-
-
-Follow the instructions on [Rust Lang's installation page](https://www.rust-lang.org/tools/install) to install a complete Rust toolchain (v1.88 or newer) on your system. After installation, ensure you can access the programs `rustup`, `rustc`, and `cargo` from your preferred terminal application.
-
-
-
-
-
-In your terminal, run:
-
-```shell
-cargo install --force cargo-stylus
-```
-
-Add WASM ([WebAssembly](https://webassembly.org/)) as a build target for the specific Rust toolchain you are using. The below example sets your default Rust toolchain to 1.88 as well as adding the WASM build target:
-
-```shell
-rustup default 1.88
-rustup target add wasm32-unknown-unknown --toolchain 1.88
-```
-
-You can verify that cargo stylus is installed by running `cargo stylus --help` in your terminal, which will return a list of helpful commands.
-
-
-
-
-
-Instructions on how to set up a local Arbitrum test node can be found [in the Nitro-devnode repository](https://github.com/OffchainLabs/nitro-devnode).
-
-
-
-## Understanding Stylus constructors
-
-Stylus constructors provide an atomic way to deploy, activate, and initialize a contract in a single transaction. If your contract lacks a constructor, it may allow access to the contract's storage before the initialization logic runs, leading to unexpected behavior.
-
-
- Stylus uses trait-based composition instead of traditional inheritance. When building contracts
- that compose multiple traits, constructors help initialize all components properly. See the
- [Constructor with trait-based composition](#constructor-with-trait-based-composition) section for
- examples.
-
-
-### Constructor rules and guarantees
-
-Stylus constructors follow these important rules:
-
-| Rule | Why it exists |
-| ------------------------------------------- | --------------------------------------------------------------------------------------- |
-| **Exactly 0 or 1 constructor** per contract | Mimics Solidity behavior and avoids ambiguity |
-| **Must be annotated with `#[constructor]`** | Guarantees the deployer calls the correct initialization method |
-| **Must take `&mut self`** | Allows writing to contract storage during deployment |
-| **Returns `()` or `Result<(), Error>`** | Enables error handling; reverting aborts deployment |
-| **Use `tx_origin()` for deployer address** | Factory contracts are used in deployment, so `msg_sender()` returns the factory address |
-| **Constructor runs exactly once** | The SDK uses a sentinel system to prevent re-execution |
-
-
- Stylus uses a factory pattern for deployment, which means `msg_sender()` in a constructor returns
- the factory contract address, not the deployer. Always use `tx_origin()` to get the actual
- deployer address.
-
-
-## Basic constructor implementation
-
-Here's a simple example of a constructor in a Stylus contract:
-
-```rust
-#![cfg_attr(not(any(test, feature = "export-abi")), no_main)]
-
-extern crate alloc;
-
-use alloy_primitives::{Address, U256};
-use alloy_sol_types::sol;
-use stylus_sdk::prelude::*;
-
-sol! {
- #[derive(Debug)]
- error InvalidAmount();
-}
-
-sol_storage! {
- #[entrypoint]
- pub struct SimpleToken {
- address owner;
- uint256 total_supply;
- string name;
- string symbol;
- mapping(address => uint256) balances;
- }
-}
-
-#[derive(SolidityError, Debug)]
-pub enum SimpleTokenError {
- InvalidAmount(InvalidAmount),
-}
-
-#[public]
-impl SimpleToken {
- /// Constructor initializes the token with a name, symbol, and initial supply
- #[constructor]
- #[payable]
- pub fn constructor(
- &mut self,
- name: String,
- symbol: String,
- initial_supply: U256,
- ) -> Result<(), SimpleTokenError> {
- // Validate input parameters
- if initial_supply == U256::ZERO {
- return Err(SimpleTokenError::InvalidAmount(InvalidAmount {}));
- }
-
- // Get the deployer address using tx_origin()
- let deployer = self.vm().tx_origin();
-
- // Initialize contract state
- self.owner.set(deployer);
- self.name.set_str(&name);
- self.symbol.set_str(&symbol);
- self.total_supply.set(initial_supply);
-
- // Mint initial supply to deployer
- self.balances.setter(deployer).set(initial_supply);
-
- Ok(())
- }
-
- // Additional contract methods...
- pub fn balance_of(&self, account: Address) -> U256 {
- self.balances.get(account)
- }
-
- pub fn total_supply(&self) -> U256 {
- self.total_supply.get()
- }
-}
-```
-
-### Key implementation details
-
-1. **Parameter validation**: Always validate constructor parameters before proceeding with initialization
-2. **Error handling**: Use `Result<(), Error>` to handle initialization failures gracefully
-3. **Payable constructors**: Add `#[payable]` to receive ETH during deployment
-4. **State initialization**: Set all necessary contract state in the constructor
-
-## Advanced constructor patterns
-
-### Constructor with complex validation
-
-```rust
-#[constructor]
-#[payable]
-pub fn constructor(
- &mut self,
- name: String,
- symbol: String,
- initial_supply: U256,
- max_supply: U256,
-) -> Result<(), TokenContractError> {
- // Multiple validation checks
- if initial_supply == U256::ZERO {
- return Err(TokenContractError::InvalidAmount(InvalidAmount {}));
- }
-
- if initial_supply > max_supply {
- return Err(TokenContractError::TooManyTokens(TooManyTokens {}));
- }
-
- if name.is_empty() || symbol.is_empty() {
- return Err(TokenContractError::InvalidAmount(InvalidAmount {}));
- }
-
- let deployer = self.vm().tx_origin();
-
- // Initialize with timestamp tracking
- self.owner.set(deployer);
- self.name.set_str(&name);
- self.symbol.set_str(&symbol);
- self.total_supply.set(initial_supply);
- self.max_supply.set(max_supply);
- self.created_at.set(U256::from(self.vm().block_timestamp()));
-
- // Mint tokens to deployer
- self.balances.setter(deployer).set(initial_supply);
-
- // Emit initialization event
- log(self.vm(), TokenCreated {
- creator: deployer,
- name: name.clone(),
- symbol: symbol.clone(),
- initial_supply,
- });
-
- Ok(())
-}
-```
-
-### Constructor with trait-based composition
-
-Stylus uses trait-based composition instead of traditional inheritance. When implementing constructors with traits, each component typically has its own initialization logic:
-
-```rust
-// Define traits for different functionality
-trait IErc20 {
- fn balance_of(&self, account: Address) -> U256;
- fn transfer(&mut self, to: Address, value: U256) -> bool;
-}
-
-trait IOwnable {
- fn owner(&self) -> Address;
- fn transfer_ownership(&mut self, new_owner: Address) -> bool;
-}
-
-// Define storage for each component
-#[storage]
-struct Erc20Component {
- balances: StorageMap,
- total_supply: StorageU256,
-}
-
-#[storage]
-struct OwnableComponent {
- owner: StorageAddress,
-}
-
-// Main contract that composes functionality
-#[storage]
-#[entrypoint]
-struct MyToken {
- erc20: Erc20Component,
- ownable: OwnableComponent,
- name: StorageString,
- symbol: StorageString,
-}
-
-#[public]
-#[implements(IErc20, IOwnable)]
-impl MyToken {
- #[constructor]
- pub fn constructor(
- &mut self,
- name: String,
- symbol: String,
- initial_supply: U256,
- ) -> Result<(), TokenError> {
- // Initialize each component
- self.initialize_ownable()?;
- self.initialize_erc20(initial_supply)?;
-
- // Initialize contract-specific state
- self.name.set_str(&name);
- self.symbol.set_str(&symbol);
-
- Ok(())
- }
-
- fn initialize_ownable(&mut self) -> Result<(), TokenError> {
- let deployer = self.vm().tx_origin();
- self.ownable.owner.set(deployer);
- Ok(())
- }
-
- fn initialize_erc20(&mut self, initial_supply: U256) -> Result<(), TokenError> {
- if initial_supply == U256::ZERO {
- return Err(TokenError::InvalidSupply);
- }
-
- let deployer = self.vm().tx_origin();
- self.erc20.total_supply.set(initial_supply);
- self.erc20.balances.setter(deployer).set(initial_supply);
- Ok(())
- }
-}
-```
-
-
- Unlike Solidity's inheritance, Stylus uses Rust's trait system for composition. Each component is
- initialized explicitly in the constructor.
-
-
-## Testing constructors
-
-The Stylus SDK provides comprehensive testing tools for constructor functionality:
-
-```rust
-#[cfg(test)]
-mod tests {
- use super::*;
- use stylus_sdk::testing::*;
-
- #[test]
- fn test_constructor_success() {
- let vm = TestVMBuilder::new()
- .sender(Address::from([0x01; 20]))
- .build();
-
- let mut contract = SimpleToken::from(&vm);
-
- let result = contract.constructor(
- "Test Token".to_string(),
- "TEST".to_string(),
- U256::from(1000000),
- );
-
- assert!(result.is_ok());
- assert_eq!(contract.name.get_string(), "Test Token");
- assert_eq!(contract.symbol.get_string(), "TEST");
- assert_eq!(contract.total_supply.get(), U256::from(1000000));
- assert_eq!(
- contract.balance_of(Address::from([0x01; 20])),
- U256::from(1000000)
- );
- }
-
- #[test]
- fn test_constructor_validation() {
- let vm = TestVMBuilder::new()
- .sender(Address::from([0x01; 20]))
- .build();
-
- let mut contract = SimpleToken::from(&vm);
-
- // Test zero supply rejection
- let result = contract.constructor(
- "Test Token".to_string(),
- "TEST".to_string(),
- U256::ZERO,
- );
-
- assert!(result.is_err());
- assert!(matches!(
- result.unwrap_err(),
- SimpleTokenError::InvalidAmount(_)
- ));
- }
-}
-```
-
-## Deploying contracts with constructors
-
-### Using cargo stylus
-
-Deploy your contract with constructor arguments using `cargo stylus deploy`:
-
-```bash
-# Deploy with constructor parameters
-cargo stylus deploy \
- --private-key-path ~/.arbitrum/key \
- --endpoint https://sepolia-rollup.arbitrum.io/rpc \
- --constructor-args "MyToken" "MTK" 1000000
-```
-
-### Constructor argument encoding
-
-`cargo stylus` automatically encodes the constructor arguments. The arguments should be provided in the same order as defined in your constructor function.
-
-For complex types:
-
-- **Strings**: Provide as quoted strings
-- **Numbers**: Provide as decimal or hex (0x prefix)
-- **Addresses**: Provide as hex strings with 0x prefix
-- **Arrays**: Use JSON array syntax
-
-```bash
-# Example with multiple argument types
-cargo stylus deploy \
- --constructor-args "TokenName" "TKN" 1000000 "0x742d35Cc6635C0532925a3b8D95B5C1b0ea3C28F"
-```
-
-## Best practices
-
-### Constructor parameter validation
-
-Always validate constructor parameters to prevent deployment of misconfigured contracts:
-
-```rust
-#[constructor]
-pub fn constructor(&mut self, params: ConstructorParams) -> Result<(), Error> {
- // Validate all parameters before any state changes
- self.validate_parameters(¶ms)?;
-
- // Initialize state only after validation passes
- self.initialize_state(params)?;
-
- Ok(())
-}
-
-fn validate_parameters(&self, params: &ConstructorParams) -> Result<(), Error> {
- if params.name.is_empty() {
- return Err(Error::InvalidName);
- }
- // Additional validation...
- Ok(())
-}
-```
-
-### Error handling patterns
-
-Use descriptive error types and provide meaningful error messages:
-
-```rust
-sol! {
- #[derive(Debug)]
- error InvalidName(string reason);
- #[derive(Debug)]
- error InvalidSupply(uint256 provided, uint256 max_allowed);
- #[derive(Debug)]
- error Unauthorized(address caller);
-}
-
-#[derive(SolidityError, Debug)]
-pub enum ConstructorError {
- InvalidName(InvalidName),
- InvalidSupply(InvalidSupply),
- Unauthorized(Unauthorized),
-}
-```
-
-### State initialization order
-
-Initialize contract state in a logical order to avoid dependency issues:
-
-```rust
-#[constructor]
-pub fn constructor(&mut self, params: ConstructorParams) -> Result<(), Error> {
- // 1. Validate parameters first
- self.validate_parameters(¶ms)?;
-
- // 2. Set basic contract metadata
- self.name.set_str(¶ms.name);
- self.symbol.set_str(¶ms.symbol);
-
- // 3. Set ownership and permissions
- let deployer = self.vm().tx_origin();
- self.owner.set(deployer);
-
- // 4. Initialize token economics
- self.total_supply.set(params.initial_supply);
- self.max_supply.set(params.max_supply);
-
- // 5. Set up initial balances
- self.balances.setter(deployer).set(params.initial_supply);
-
- // 6. Emit events last
- log(self.vm(), ContractInitialized { /* ... */ });
-
- Ok(())
-}
-```
-
-## Common pitfalls and solutions
-
-### Using msg_sender() instead of tx_origin()
-
-**Problem**: Using `msg_sender()` in constructors returns the factory contract address, not the deployer.
-
-```rust
-// ❌ Wrong - returns factory address
-let deployer = self.vm().msg_sender();
-
-// ✅ Correct - returns actual deployer
-let deployer = self.vm().tx_origin();
-```
-
-### Missing parameter validation
-
-**Problem**: Not validating constructor parameters can lead to unusable contracts.
-
-```rust
-// ❌ Wrong - no validation
-#[constructor]
-pub fn constructor(&mut self, supply: U256) {
- self.total_supply.set(supply); // Could be zero!
-}
-
-// ✅ Correct - validate first
-#[constructor]
-pub fn constructor(&mut self, supply: U256) -> Result<(), Error> {
- if supply == U256::ZERO {
- return Err(Error::InvalidSupply);
- }
- self.total_supply.set(supply);
- Ok(())
-}
-```
-
-### Forgetting the #[constructor] annotation
-
-**Problem**: Functions named "constructor" without the annotation won't be recognized.
-
-```rust
-// ❌ Wrong - missing annotation
-pub fn constructor(&mut self, value: U256) {
- // This won't be called during deployment
-}
-
-// ✅ Correct - properly annotated
-#[constructor]
-pub fn constructor(&mut self, value: U256) {
- // This will be called during deployment
-}
-```
-
-## Summary
-
-Constructors in Stylus provide a powerful way to initialize your smart contracts during deployment. Key takeaways:
-
-- Use `#[constructor]` annotation and `&mut self` parameter
-- Always use `tx_origin()` to get the deployer address
-- Validate all parameters before initializing state
-- Handle errors gracefully with `Result<(), Error>` return type
-- Test the constructor behavior thoroughly
-- Deploy with `cargo stylus deploy --constructor-args`
diff --git a/docs/stylus/partials/_stylus-public-preview-banner-partial.md b/docs/stylus/partials/_stylus-public-preview-banner-partial.md
deleted file mode 100644
index 729f55610d..0000000000
--- a/docs/stylus/partials/_stylus-public-preview-banner-partial.md
+++ /dev/null
@@ -1,7 +0,0 @@
-:::info ALPHA RELEASE, PUBLIC PREVIEW DOCS
-
-Stylus is currently tagged as a `release-candidate`. The code has been audited, and testing in production environments is underway. Caution should be taken when used in production scenarios. This documentation is currently in [public preview](/stylus/concepts/public-preview-expectations).
-
-To provide feedback, click the **Request an update** button at the top of this document, [join the Arbitrum Discord](https://discord.gg/arbitrum), or reach out to our team directly by completing [this form](http://bit.ly/3yy6EUK).
-
-:::
diff --git a/src/components/FloatingHoverModal/index.js b/src/components/FloatingHoverModal/index.js
index 71b07d2871..12a385372b 100644
--- a/src/components/FloatingHoverModal/index.js
+++ b/src/components/FloatingHoverModal/index.js
@@ -32,7 +32,6 @@ import ConfigPermissionedValidators from '@site/docs/launch-arbitrum-chain/parti
import ConfigL1ChallengePeriod from '@site/docs/launch-arbitrum-chain/partials/config-l1-challenge-period.mdx';
import ConfigForceInclusion from '@site/docs/launch-arbitrum-chain/partials/config-force-inclusion.mdx';
import ConfigAccountAbstraction from '@site/docs/launch-arbitrum-chain/partials/config-account-abstraction.mdx';
-import ConfigChallengePeriod from '@site/docs/launch-arbitrum-chain/partials/config-challenge-period-l1.mdx';
import ConfigCustomizableGovernance from '@site/docs/launch-arbitrum-chain/partials/config-customizable-governance.mdx';
import ConfigDataPostingCosts from '@site/docs/launch-arbitrum-chain/partials/config-data-posting-costs.mdx';
import ConfigEVMCompatibility from '@site/docs/launch-arbitrum-chain/partials/config-evm-compatbility.mdx';
@@ -54,7 +53,6 @@ const contentMap = {
'config-l1-challenge-period': ConfigL1ChallengePeriod,
'config-force-inclusion': ConfigForceInclusion,
'config-account-abstraction': ConfigAccountAbstraction,
- 'config-challenge-period-l1': ConfigChallengePeriod,
'config-customizable-governance': ConfigCustomizableGovernance,
'config-data-posting-costs': ConfigDataPostingCosts,
'config-evm-compatibility': ConfigEVMCompatibility,