diff --git a/docs/get-started/base-services-hub.mdx b/docs/get-started/base-services-hub.mdx
index dd1b902d0..22e442cb7 100644
--- a/docs/get-started/base-services-hub.mdx
+++ b/docs/get-started/base-services-hub.mdx
@@ -39,7 +39,7 @@ Thank you to all the teams supporting the Base ecosystem and its builders! If yo
| [Hexens](Hexens.io) | Security | At Hexens, we provide security audits to protect the future of Web3. We directly secure $120B+ in assets, working with industry leaders like Lido, EigenLayer, LayerZero, 1inch, Ava Labs, and Polygon. | Hexens will provide a discount of 15% for smart contract audits and 10% for services like pentest’s, and social engineering. Full triage will be provided for our bug bounty [r.xyz] for 3 months. | Please send your audit request to alice.rigby@hexens.io or @alicerigby on Telegram. |
| [Hypernative](https://www.hypernative.io/) | Security | Hypernative is the leading real-time security and threat prevention platform trusted by over 200 projects—including Ethena, Uniswap, Ethereum Foundation, Morpho, Chainlink, Solana, and Kraken. | Receive a discounted rate for the first year for Hypernative's real-time threat prevention platform. | Email marshall@hypernative.io to begin your trial and claim your offer. |
| [Immunefi](https://immunefi.com/) | AI & Security | Immunefi — One Platform. Unified Security Operations. Complete Onchain Protection. Over $180B of user funds protected across 500+ protocols. | 15%+ discount on Immunefi Audits, Audit Competitions, Vulnerability Detection/PR Reviews, Onchain Monitoring/Threat Prevention, Cloud Based Formal Verification, Brand Protection and Bug Bounty. | Please fill in this [form](https://calendly.com/d/cwsd-82q-rpj), and our Sales Team will review your submission and contact you shortly. |
-| [Meow](http://meow.com/) | Treasury Management & Yield | Meow helps web3 teams earn yield, send/receive USDC, and automate treasury via FDIC-insured accounts with free USDC transactions on Base—no wallets, prefunding, or exchange risk. | Only Base ecosystem projects (and select VC portfolios like a16z) get up to 3.5% interest on checking. Others get 0% and must use external funds for yield. | Sign up via https://app.meow.com/signup?referral=Base
Or list “Base Ecosystem” under “How did you hear about us?” during signup.
For intros, DM @dustinmeow on Telegram. |
+| [Meow](https://meow.com/) | Treasury Management & Yield | Meow helps web3 teams earn yield, send/receive USDC, and automate treasury via FDIC-insured accounts with free USDC transactions on Base—no wallets, prefunding, or exchange risk. | Only Base ecosystem projects (and select VC portfolios like a16z) get up to 3.5% interest on checking. Others get 0% and must use external funds for yield. | Sign up via https://app.meow.com/signup?referral=Base
Or list “Base Ecosystem” under “How did you hear about us?” during signup.
For intros, DM @dustinmeow on Telegram. |
| [Neynar](neynar.com) | Social and crypto infrastructure | Infrastructure to build easily in crypto and on social protocols like Farcaster. | 100% off for first month of Starter tier, only new customers are eligible. | Email team@neynar.com with what you're building on Base to get the coupon code |
| [NodeOps](https://nodeops.network/) | Cloud & Infrastructure | NodeOps Cloud is a permissionless infrastructure platform that delivers the most affordable compute power on the market. | 500 USD NodeOps Cloud Credit per Project (No-Questions Asked) & 10,000 USD and above NodeOps Cloud Credit per Project (After validation) | Users must complete the BuildOnNodeOps Grant Form, and NodeOps’ BD team will contact them if their projects require assistance. Alternatively, projects can reach out to the NodeOps Team via business@nodeops.xyz.
[Application form](https://forms.zohopublic.in/parthnod1/form/BuildOnNodeOpsGrantProgram/formperma/A0j6q-ChMzEUldiqrQNDrkyk7iIaIwmb_6swORtbUqc) |
| [Notion](https://www.notion.com) | AI, Productivity | The AI workspace that works for you. One place where teams find every answer, automate the busywork, and get projects done. | Startups / Projects get 6 months free of Notion Business with AI included. | To learn more and redeem the exclusive offer, visit https://ntn.so/base |
diff --git a/docs/iframe-theme.js b/docs/iframe-theme.js
index 35287274c..4501a8db7 100644
--- a/docs/iframe-theme.js
+++ b/docs/iframe-theme.js
@@ -53,7 +53,7 @@
document.addEventListener("DOMContentLoaded", updateIframesForDarkMode);
} else {
setTimeout(updateIframesForDarkMode, 100);
- // TODO: add Storybook with Darkmode enabled
+ // Storybook darkmode implementation pending
let themeChangeCount = 0;
const themeChangeInterval = setInterval(() => {
if (themeChangeCount < 2) {
diff --git a/docs/learn/arrays/filtering-an-array-sbs.mdx b/docs/learn/arrays/filtering-an-array-sbs.mdx
index 608f24782..813f286d5 100644
--- a/docs/learn/arrays/filtering-an-array-sbs.mdx
+++ b/docs/learn/arrays/filtering-an-array-sbs.mdx
@@ -28,7 +28,8 @@ contract ArrayDemo {
uint[] public numbers = [1,2,3,4,5,6,7,8,9,10];
function getEvenNumbers() external view returns(uint[] memory) {
- // TODO
+ // TODO: Filter and return only the even numbers from the numbers array
+ // Hint: You'll need to count them first to allocate memory
}
}
```
diff --git a/docs/learn/deployment-to-testnet/test-networks.mdx b/docs/learn/deployment-to-testnet/test-networks.mdx
index 6b21c62af..a16deb240 100644
--- a/docs/learn/deployment-to-testnet/test-networks.mdx
+++ b/docs/learn/deployment-to-testnet/test-networks.mdx
@@ -67,21 +67,31 @@ Several well-known testnets have emerged over the years, each with its own set o

-### L1 Testnets
+### Active Testnets (Recommended)
-- **Ropsten:** Ropsten played a significant role in Ethereum's history but was effectively deprecated by late 2022 when the Merge took place. The Merge marked the transition from proof-of-work to proof-of-stake consensus for the Ethereum mainnet. Ropsten's vulnerability to spam attacks and network instability made it unreliable for testing purposes.
+#### Base Sepolia (L2)
+Base Sepolia is the recommended testnet for all Base development. It settles on the Ethereum Sepolia L1 testnet and provides an environment for testing L2-specific features and smart contracts.
-- **Rinkeby:** Rinkeby offered better security than Ropsten and used a proof-of-authority consensus mechanism. However, it lacked decentralization and client diversity, which ultimately led to its decline in popularity. After the Merge, Rinkeby is no longer a recommended test network.
+#### Sepolia (L1)
+Sepolia is the primary stable testnet for Ethereum development. It is designed for developers seeking a lighter weight chain for faster synchronization and interaction. It is the preferred testnet for L1 development.
-- **Goerli:** Launched in early 2019, Goerli initially utilized a multi-client proof-of-authority consensus model to improve stability and security. Following the Merge, it transitioned to a proof-of-stake consensus mechanism, maintaining its cross-client compatibility and making it an ideal choice for developers. As of January 2024, Goerli is being sunset in favor of Sepolia.
+#### Optimism Sepolia (L2)
+Optimism Sepolia is built on the Ethereum Sepolia L1 testnet and offers a testing environment for Optimism's Layer-2 features.
-- **Sepolia:** As one of the two original primary testnets alongside Goerli, Sepolia is designed for developers seeking a lighter weight chain for faster synchronization and interaction. As of January 2024, it is now the preferred testnet and developers should migrate to using it.
+---
+
+### Deprecated Testnets
+
+The following networks are deprecated and should not be used for new development:
-### L2 Testnets
+#### Goerli (L1)
+Launched in early 2019, Goerli was a popular multi-client testnet. As of January 2024, Goerli has been sunset in favor of Sepolia.
-- **Base Sepolia:** As new Layer-2 networks emerged that settled on Ethereum's Layer-1, the need for testnets dedicated to these L2 networks also arose. For instance, the L2 network Base has its own testnet, known as Base Sepolia. This testnet settles on the Ethereum Sepolia L1 testnet, providing an environment for testing L2-specific features and smart contracts.
+#### Ropsten (L1)
+Ropsten was deprecated in late 2022 after the Merge. It is no longer supported.
-- **Optimism Sepolia:** Optimism, an Ethereum Layer-2 scaling solution utilizing Optimistic Rollups, has its own testnet called Optimism Sepolia. This testnet is also built on the Ethereum Sepolia L1 testnet and offers a testing environment for developers to experiment with Optimism's Layer-2 features, smart contracts, and apps.
+#### Rinkeby (L1)
+Rinkeby was deprecated after the Merge and is no longer supported.
---
diff --git a/docs/learn/onchain-app-development/account-abstraction/account-abstraction-on-base-using-privy-and-the-base-paymaster.mdx b/docs/learn/onchain-app-development/account-abstraction/account-abstraction-on-base-using-privy-and-the-base-paymaster.mdx
index 5f86a1aa9..2bc0844a8 100644
--- a/docs/learn/onchain-app-development/account-abstraction/account-abstraction-on-base-using-privy-and-the-base-paymaster.mdx
+++ b/docs/learn/onchain-app-development/account-abstraction/account-abstraction-on-base-using-privy-and-the-base-paymaster.mdx
@@ -508,7 +508,8 @@ Simply grab the first wallet in the list (you'll want to do something more elega
const { wallets } = useWallets();
// Grab the first wallet on the list
-// TODO: Implement the option to allow the user to choose another wallet
+// Note: For this demo, we simply default to the first wallet. In a production app,
+// you should add a UI to allow the user to select which wallet to use.
const wallet = wallets[0];
```
diff --git a/docs/learn/onchain-app-development/cross-chain/bridge-tokens-with-layerzero.mdx b/docs/learn/onchain-app-development/cross-chain/bridge-tokens-with-layerzero.mdx
index 3fefab957..a2c408151 100644
--- a/docs/learn/onchain-app-development/cross-chain/bridge-tokens-with-layerzero.mdx
+++ b/docs/learn/onchain-app-development/cross-chain/bridge-tokens-with-layerzero.mdx
@@ -48,7 +48,7 @@ The ETH is required for covering gas fees associated with deploying smart contra
LayerZero is an interoperability protocol that allows developers to build applications (and tokens) that can connect to multiple blockchains. LayerZero defines these types of applications as "omnichain" applications.
-The LayerZero protocol is made up of immutable on-chain [Endpoints](https://docs.layerzero.network/v2/concepts/protocol/layerzero-endpoint), a configurable [Security Stack](https://docs.layerzero.network/explore/decentralized-verifier-networks), and a permissionless set of [Executors](https://docs.layerzero.network/v2/concepts/permissionless-execution/executors) that transfer messages between chains.
+The LayerZero protocol is made up of immutable onchain [Endpoints](https://docs.layerzero.network/v2/concepts/protocol/layerzero-endpoint), a configurable [Security Stack](https://docs.layerzero.network/explore/decentralized-verifier-networks), and a permissionless set of [Executors](https://docs.layerzero.network/v2/concepts/permissionless-execution/executors) that transfer messages between chains.
### High-level concepts
diff --git a/docs/learn/onchain-app-development/frontend-setup/introduction-to-providers.mdx b/docs/learn/onchain-app-development/frontend-setup/introduction-to-providers.mdx
index 80ef241c9..cde989dcd 100644
--- a/docs/learn/onchain-app-development/frontend-setup/introduction-to-providers.mdx
+++ b/docs/learn/onchain-app-development/frontend-setup/introduction-to-providers.mdx
@@ -226,7 +226,7 @@ const config = createConfig({
ssr: true,
transports: {
[base.id]: http('YOUR PROJECT URL'),
- [mainnet.id]: http('TODO'),
+ // [mainnet.id]: http('https://mainnet.base.org'),
},
});
```
diff --git a/docs/learn/onchain-app-development/reading-and-displaying-data/useReadContract.mdx b/docs/learn/onchain-app-development/reading-and-displaying-data/useReadContract.mdx
index 52e36ed11..9b465274d 100644
--- a/docs/learn/onchain-app-development/reading-and-displaying-data/useReadContract.mdx
+++ b/docs/learn/onchain-app-development/reading-and-displaying-data/useReadContract.mdx
@@ -98,7 +98,7 @@ export function IssueList() {
return (