diff --git a/.github/workflows/docs-validation.yml b/.github/workflows/docs-validation.yml
index 19ca13b9cf..503c45ccd9 100644
--- a/.github/workflows/docs-validation.yml
+++ b/.github/workflows/docs-validation.yml
@@ -24,6 +24,4 @@ jobs:
run: npx mintlify broken-links
- name: Check for orphan pages
- # Report-only until the existing orphans are resolved (#2253 removes this).
- continue-on-error: true
run: bash scripts/check-orphans.sh
diff --git a/build-on-celo/build-on-socialconnect.mdx b/build-on-celo/build-on-socialconnect.mdx
index 4ebb96e5ee..379c41cee5 100644
--- a/build-on-celo/build-on-socialconnect.mdx
+++ b/build-on-celo/build-on-socialconnect.mdx
@@ -1,18 +1,13 @@
---
title: Introduction to SocialConnect
-og:description: A beginner's guide to understanding and using SocialConnect
+description: How SocialConnect maps phone numbers and other identifiers to Celo addresses
---
By the conclusion of this guide, you will have a basic understanding of SocialConnect and how to get started with it.
This document will cover:
-- What is SocialConnect?
-- Key Features
-- Getting Started
-- Further Reading
-
-## 🚀 What is SocialConnect?
+## How it works
SocialConnect is an open-source protocol that maps off-chain personal identifiers (such as phone numbers, Twitter handles, etc.) to on-chain account addresses. This enables a convenient and interoperable user experience for various use cases, including:
@@ -21,13 +16,13 @@ SocialConnect is an open-source protocol that maps off-chain personal identifier
For a short demo of a payment from a Kaala wallet user to a Libera wallet user using only a phone number, check out the [SocialConnect documentation](https://socialconnect-docs.vercel.app/).
-## 🔑 Key Features
+## Why it matters on Celo
- **Interoperability**: Seamlessly map off-chain identifiers to on-chain addresses.
- **Convenience**: Simplify user interactions by using familiar identifiers like phone numbers and social media handles.
- **Privacy**: Ensure user privacy with features like phone number privacy and key hardening.
-## 🛠️ Getting Started
+## Getting started
To start using SocialConnect, follow these steps:
@@ -39,7 +34,13 @@ To start using SocialConnect, follow these steps:
For detailed guides and examples, refer to the [SocialConnect documentation](https://socialconnect-docs.vercel.app/).
-## 📚 Further Reading
+## Related
+
+- [ODIS](/tooling/libraries-sdks/contractkit/odis) - the phone-number privacy service SocialConnect looks identifiers up through
+- [Build with Self](/build-on-celo/build-with-self) - proof of personhood from a passport or ID document
+- [MiniPay](/build-on-celo/build-on-minipay/overview) - maps phone numbers to addresses through SocialConnect
+
+## Resources
To dive deeper into SocialConnect, explore the following sections in the documentation:
diff --git a/build-on-celo/build-with-usat.mdx b/build-on-celo/build-with-usat.mdx
index bde4382a5e..fbf8fc041f 100644
--- a/build-on-celo/build-with-usat.mdx
+++ b/build-on-celo/build-with-usat.mdx
@@ -1,6 +1,6 @@
---
title: Build with USAâ‚®
-og:description: Integrate USA₮ — the US-regulated dollar stablecoin issued by Anchorage Digital Bank — into your Celo app.
+description: Integrate USA₮ — the US-regulated dollar stablecoin issued by Anchorage Digital Bank — into your Celo app
---
USA₮ (Tether America USD) is a US-regulated dollar stablecoin issued by [Anchorage Digital Bank, N.A.](https://usat.io/) — the first federally chartered digital asset bank in the United States. Reserves are custodied by Cantor Fitzgerald. USA₮ is designed to meet GENIUS Act standards, the US federal framework for regulated stablecoins.
diff --git a/build-on-celo/index.mdx b/build-on-celo/index.mdx
index 84cb602965..2adc6f3735 100644
--- a/build-on-celo/index.mdx
+++ b/build-on-celo/index.mdx
@@ -67,6 +67,15 @@ Using the final audited release, the Celo validator community performed a dry ru
Following a successful Baklava upgrade, the Celo L2 Mainnet officially went live.
+## Get support
+
+- General questions: join [Discord](https://discord.com/invite/celo), claim the developer role, and ask in `#build-with-celo`.
+- Advanced questions: open an issue or join [GitHub Discussions](https://github.com/orgs/celo-org/discussions).
+- Longer-form discussion: the [Celo Forum](https://forum.celo.org/).
+- Updates: the [DevDesk mailing list](https://embeds.beehiiv.com/eeadfef4-2f0c-45ce-801c-b920827d5cd2) and [CeloDevs on X](https://x.com/CeloDevs).
+
+Something missing or unclear in these docs? [Open an issue](https://github.com/celo-org/docs/issues/new), or edit the page yourself — the docs live in [celo-org/docs](https://github.com/celo-org/docs), and GitHub will walk you from an edit to a pull request.
+
## Useful Links
* [Layer 2 Specification](/operate/specification)
diff --git a/build-on-celo/support.mdx b/build-on-celo/support.mdx
deleted file mode 100644
index 43b34435f6..0000000000
--- a/build-on-celo/support.mdx
+++ /dev/null
@@ -1,30 +0,0 @@
----
-title: Get Support
-og:description: A comprehensive guide on how to reach out for support
----
-
-import {ColoredText} from "/snippets/ColoredText.jsx";
-
-# Get Support
-
-This section explains how you can get support and stay up-to-date with Celo developer news.
-
----
-
-
-Help us improve by sharing your feedback on missing tools, unclear sections, or any challenges you encounter by creating an [issue](https://github.com/celo-org/docs/issues/new) or by clicking on "Edit this page" on the bottom of each page.
-
-
-## How to Get Support?
-
-- For general questions, join our [Discord](https://discord.com/invite/celo) and claim the developer role to ask questions in our #build-with-celo channel. Our moderators can provide guidance and answers.
-
-- For advanced questions, create issues and participate in [GitHub Discussions](https://github.com/orgs/celo-org/discussions).
-
-For the latest updates, sign up for the [DevDesk Mailing List](https://embeds.beehiiv.com/eeadfef4-2f0c-45ce-801c-b920827d5cd2) and follow [CeloDevs on X](https://x.com/CeloDevs).
-
-## Additional Resources
-
-- [Celo specification](/operate/specification)
-- [Transaction types on Celo](https://github.com/celo-org/txtypes)
-- [Celo Forum](https://forum.celo.org/)
diff --git a/docs.json b/docs.json
index c988c624fa..d50ba5bc4a 100644
--- a/docs.json
+++ b/docs.json
@@ -191,6 +191,8 @@
"build-on-celo/build-with-farcaster",
"build-on-celo/build-with-self",
"build-on-celo/build-with-local-stablecoin",
+ "build-on-celo/build-with-usat",
+ "build-on-celo/build-on-socialconnect",
"build-on-celo/build-with-defi"
]
},
@@ -211,6 +213,7 @@
"group": "Overview",
"pages": [
"tooling/overview/index",
+ "tooling/overview/migrate/from-ethereum",
"tooling/bridges/bridges",
"tooling/bridges/cross-chain-messaging",
"tooling/testnets/celo-sepolia/index"
@@ -253,7 +256,8 @@
"tooling/wallets/ledger/setup",
"tooling/wallets/ledger/to-celo-terminal",
"tooling/wallets/ledger/to-celo-web",
- "tooling/wallets/ledger/to-celo-cli"
+ "tooling/wallets/ledger/to-celo-cli",
+ "tooling/wallets/ledger/eip712-workaround"
]
}
]
@@ -288,7 +292,8 @@
"tooling/oracles/redstone",
"tooling/oracles/supra",
"tooling/oracles/quex-oracles",
- "tooling/oracles/dia"
+ "tooling/oracles/dia",
+ "tooling/oracles/wit-oracle"
]
},
{
@@ -353,7 +358,12 @@
"tooling/libraries-sdks/contractkit/setup",
"tooling/libraries-sdks/contractkit/usage",
"tooling/libraries-sdks/contractkit/contracts-wrappers-registry",
- "tooling/libraries-sdks/contractkit/odis"
+ "tooling/libraries-sdks/contractkit/odis",
+ "tooling/libraries-sdks/contractkit/data-encryption-key",
+ "tooling/libraries-sdks/contractkit/migrating-to-viem",
+ "tooling/libraries-sdks/contractkit/migrating-to-contractkit-v2",
+ "tooling/libraries-sdks/contractkit/migrating-to-contractkit-v1",
+ "tooling/libraries-sdks/contractkit/notes-web3-with-contractkit"
]
},
"tooling/libraries-sdks/web3/index"
@@ -559,6 +569,130 @@
"dark": "/images/CeloDocs_LogoDark.svg"
},
"redirects": [
+ {
+ "source": "/build/build-with-thirdweb/overview",
+ "destination": "/tooling/dev-environments/thirdweb"
+ },
+ {
+ "source": "/build/build-with-thirdweb/celo-nft-drop-tutorial",
+ "destination": "/tooling/dev-environments/thirdweb"
+ },
+ {
+ "source": "/build/build-with-thirdweb/one-click%20quickstart",
+ "destination": "/tooling/dev-environments/thirdweb"
+ },
+ {
+ "source": "/build/composer-kit",
+ "destination": "/tooling/libraries-sdks/composer-kit"
+ },
+ {
+ "source": "/build/mcp",
+ "destination": "/build-on-celo/build-with-ai/mcp/index"
+ },
+ {
+ "source": "/build/mcp/celo-mcp",
+ "destination": "/build-on-celo/build-with-ai/mcp/celo-mcp"
+ },
+ {
+ "source": "/build/mcp/composer-mcp",
+ "destination": "/build-on-celo/build-with-ai/mcp/index"
+ },
+ {
+ "source": "/build/build-on-socialconnect",
+ "destination": "/build-on-celo/build-on-socialconnect"
+ },
+ {
+ "source": "/developer/verify/foundry",
+ "destination": "/tooling/contract-verification/index"
+ },
+ {
+ "source": "/wallet/coinbase-wallet",
+ "destination": "/tooling/wallets/metamask/setup"
+ },
+ {
+ "source": "/build/support",
+ "destination": "/build-on-celo/index"
+ },
+ {
+ "source": "/network/alfajores/disclaimer",
+ "destination": "/tooling/testnets/celo-sepolia/index"
+ },
+ {
+ "source": "/network/baklava/disclaimer",
+ "destination": "/tooling/testnets/celo-sepolia/index"
+ },
+ {
+ "source": "/network/celo-sepolia/disclaimer",
+ "destination": "/tooling/testnets/celo-sepolia/index"
+ },
+ {
+ "source": "/developer/setup/overview",
+ "destination": "/tooling/overview"
+ },
+ {
+ "source": "/developer/setup/mac",
+ "destination": "/tooling/dev-environments/hardhat"
+ },
+ {
+ "source": "/developer/setup/windows",
+ "destination": "/tooling/dev-environments/hardhat"
+ },
+ {
+ "source": "/developer/setup/wallet",
+ "destination": "/tooling/wallets/metamask/add-celo-testnet-to-metamask"
+ },
+ {
+ "source": "/developer/setup/replit",
+ "destination": "/tooling/dev-environments/remix"
+ },
+ {
+ "source": "/developer/setup/development-chain",
+ "destination": "/tooling/dev-environments/foundry"
+ },
+ {
+ "source": "/developer/migrate/from-ethereum",
+ "destination": "/tooling/overview/migrate/from-ethereum"
+ },
+ {
+ "source": "/tooling/overview/setup/overview",
+ "destination": "/tooling/overview"
+ },
+ {
+ "source": "/tooling/overview/setup/mac",
+ "destination": "/tooling/dev-environments/hardhat"
+ },
+ {
+ "source": "/tooling/overview/setup/windows",
+ "destination": "/tooling/dev-environments/hardhat"
+ },
+ {
+ "source": "/tooling/overview/setup/wallet",
+ "destination": "/tooling/wallets/metamask/add-celo-testnet-to-metamask"
+ },
+ {
+ "source": "/tooling/overview/setup/replit",
+ "destination": "/tooling/dev-environments/remix"
+ },
+ {
+ "source": "/tooling/overview/setup/development-chain",
+ "destination": "/tooling/dev-environments/foundry"
+ },
+ {
+ "source": "/build-on-celo/support",
+ "destination": "/build-on-celo/index"
+ },
+ {
+ "source": "/tooling/contract-verification/foundry",
+ "destination": "/tooling/contract-verification/index"
+ },
+ {
+ "source": "/tooling/testnets/celo-sepolia/disclaimer",
+ "destination": "/tooling/testnets/celo-sepolia/index"
+ },
+ {
+ "source": "/tooling/wallets/coinbase-wallet",
+ "destination": "/tooling/wallets/metamask/setup"
+ },
{
"source": "/tooling/overview/faucet",
"destination": "https://faucet.celo.org/celo-sepolia"
@@ -705,7 +839,7 @@
},
{
"source": "/celo-codebase/protocol/identity",
- "destination": "/tooling/libraries-sdks/contractkit/odis"
+ "destination": "/build-on-celo/build-on-socialconnect"
},
{
"source": "/celo-codebase/protocol/identity/encrypted-cloud-backup",
@@ -713,7 +847,7 @@
},
{
"source": "/celo-codebase/protocol/identity/index",
- "destination": "/tooling/libraries-sdks/contractkit/odis"
+ "destination": "/build-on-celo/build-on-socialconnect"
},
{
"source": "/celo-codebase/protocol/identity/metadata",
@@ -721,7 +855,7 @@
},
{
"source": "/celo-codebase/protocol/identity/phone-number-privacy",
- "destination": "/tooling/libraries-sdks/contractkit/odis"
+ "destination": "/build-on-celo/build-on-socialconnect"
},
{
"source": "/celo-codebase/protocol/identity/privacy-research",
@@ -741,7 +875,7 @@
},
{
"source": "/celo-codebase/protocol/identity#using-the-mapping-for-payment",
- "destination": "/tooling/libraries-sdks/contractkit/odis"
+ "destination": "/build-on-celo/build-on-socialconnect"
},
{
"source": "/celo-codebase/protocol/index",
@@ -1385,7 +1519,7 @@
},
{
"source": "/developer-guide/celo-for-eth-devs",
- "destination": "/build-on-celo"
+ "destination": "/tooling/overview/migrate/from-ethereum"
},
{
"source": "/developer-guide/contractkit",
@@ -1465,7 +1599,7 @@
},
{
"source": "/developer-guide/overview/celo-for-eth-devs",
- "destination": "/build-on-celo"
+ "destination": "/tooling/overview/migrate/from-ethereum"
},
{
"source": "/developer-guide/overview/integrations/custody",
@@ -1509,7 +1643,7 @@
},
{
"source": "/developer-resources/celo-for-eth-devs",
- "destination": "/build-on-celo"
+ "destination": "/tooling/overview/migrate/from-ethereum"
},
{
"source": "/developer-resources/contractkit/contracts-wrappers-registry",
@@ -2097,7 +2231,7 @@
},
{
"source": "/protocol/identity/index",
- "destination": "https://self.xyz/"
+ "destination": "/build-on-celo/build-on-socialconnect"
},
{
"source": "/protocol/index",
@@ -2181,7 +2315,7 @@
},
{
"source": "/protocol/socialconnect",
- "destination": "https://self.xyz/"
+ "destination": "/build-on-celo/build-on-socialconnect"
},
{
"source": "/protocol/stability",
@@ -3035,22 +3169,6 @@
"source": "/what-is-celo/using-celo",
"destination": "/home/index"
},
- {
- "source": "/build/build-on-socialconnect",
- "destination": "/build-on-celo/index"
- },
- {
- "source": "/build/build-with-thirdweb/celo-nft-drop-tutorial",
- "destination": "/tooling/dev-environments/thirdweb"
- },
- {
- "source": "/build/build-with-thirdweb/one-click%20quickstart",
- "destination": "/tooling/dev-environments/thirdweb"
- },
- {
- "source": "/build/build-with-thirdweb/overview",
- "destination": "/tooling/dev-environments/thirdweb"
- },
{
"source": "/tooling/dev-environments/thirdweb/overview",
"destination": "/tooling/dev-environments/thirdweb"
@@ -3083,26 +3201,6 @@
"source": "/build-on-celo/build-with-thirdweb/one-click%20quickstart",
"destination": "/tooling/dev-environments/thirdweb"
},
- {
- "source": "/build/composer-kit",
- "destination": "/tooling/libraries-sdks/composer-kit"
- },
- {
- "source": "/build/mcp",
- "destination": "/build-on-celo/build-with-ai/mcp/index"
- },
- {
- "source": "/build/mcp/celo-mcp",
- "destination": "/build-on-celo/build-with-ai/mcp/celo-mcp"
- },
- {
- "source": "/build/mcp/composer-mcp",
- "destination": "/build-on-celo/build-with-ai/mcp/index"
- },
- {
- "source": "/build/support",
- "destination": "/build-on-celo/index"
- },
{
"source": "/build-on-celo/build-with-ai/build-with-goat/token-swap-agent",
"destination": "/build-on-celo/build-with-ai/overview"
@@ -3273,7 +3371,7 @@
},
{
"source": "/legacy/protocol/identity/index",
- "destination": "/tooling/libraries-sdks/contractkit/odis"
+ "destination": "/build-on-celo/build-on-socialconnect"
},
{
"source": "/legacy/protocol/identity/odis",
diff --git a/img/doc-images/deploy-replit/image1.png b/img/doc-images/deploy-replit/image1.png
deleted file mode 100644
index cd962fbd0f..0000000000
Binary files a/img/doc-images/deploy-replit/image1.png and /dev/null differ
diff --git a/img/doc-images/deploy-replit/image10.png b/img/doc-images/deploy-replit/image10.png
deleted file mode 100644
index d977bc4b98..0000000000
Binary files a/img/doc-images/deploy-replit/image10.png and /dev/null differ
diff --git a/img/doc-images/deploy-replit/image11.png b/img/doc-images/deploy-replit/image11.png
deleted file mode 100644
index ca088b5dbe..0000000000
Binary files a/img/doc-images/deploy-replit/image11.png and /dev/null differ
diff --git a/img/doc-images/deploy-replit/image12.png b/img/doc-images/deploy-replit/image12.png
deleted file mode 100644
index 91cd12d941..0000000000
Binary files a/img/doc-images/deploy-replit/image12.png and /dev/null differ
diff --git a/img/doc-images/deploy-replit/image2.png b/img/doc-images/deploy-replit/image2.png
deleted file mode 100644
index 73c2fd4d74..0000000000
Binary files a/img/doc-images/deploy-replit/image2.png and /dev/null differ
diff --git a/img/doc-images/deploy-replit/image3.png b/img/doc-images/deploy-replit/image3.png
deleted file mode 100644
index 8142e9a30f..0000000000
Binary files a/img/doc-images/deploy-replit/image3.png and /dev/null differ
diff --git a/img/doc-images/deploy-replit/image4.png b/img/doc-images/deploy-replit/image4.png
deleted file mode 100644
index 1e68732369..0000000000
Binary files a/img/doc-images/deploy-replit/image4.png and /dev/null differ
diff --git a/img/doc-images/deploy-replit/image5.png b/img/doc-images/deploy-replit/image5.png
deleted file mode 100644
index 3c478a26a9..0000000000
Binary files a/img/doc-images/deploy-replit/image5.png and /dev/null differ
diff --git a/img/doc-images/deploy-replit/image6.png b/img/doc-images/deploy-replit/image6.png
deleted file mode 100644
index 5110654537..0000000000
Binary files a/img/doc-images/deploy-replit/image6.png and /dev/null differ
diff --git a/img/doc-images/deploy-replit/image7.png b/img/doc-images/deploy-replit/image7.png
deleted file mode 100644
index 78e435dab9..0000000000
Binary files a/img/doc-images/deploy-replit/image7.png and /dev/null differ
diff --git a/img/doc-images/deploy-replit/image8.png b/img/doc-images/deploy-replit/image8.png
deleted file mode 100644
index b36d54ba5f..0000000000
Binary files a/img/doc-images/deploy-replit/image8.png and /dev/null differ
diff --git a/img/doc-images/deploy-replit/image9.png b/img/doc-images/deploy-replit/image9.png
deleted file mode 100644
index 3921804a1e..0000000000
Binary files a/img/doc-images/deploy-replit/image9.png and /dev/null differ
diff --git a/img/doc-images/testnet-wallet/image1.png b/img/doc-images/testnet-wallet/image1.png
deleted file mode 100644
index d8a90f3706..0000000000
Binary files a/img/doc-images/testnet-wallet/image1.png and /dev/null differ
diff --git a/img/doc-images/testnet-wallet/image2.png b/img/doc-images/testnet-wallet/image2.png
deleted file mode 100644
index f969ccd825..0000000000
Binary files a/img/doc-images/testnet-wallet/image2.png and /dev/null differ
diff --git a/img/doc-images/testnet-wallet/image3.png b/img/doc-images/testnet-wallet/image3.png
deleted file mode 100644
index 1ff04579c0..0000000000
Binary files a/img/doc-images/testnet-wallet/image3.png and /dev/null differ
diff --git a/img/doc-images/testnet-wallet/image4.png b/img/doc-images/testnet-wallet/image4.png
deleted file mode 100644
index ea293cf6bd..0000000000
Binary files a/img/doc-images/testnet-wallet/image4.png and /dev/null differ
diff --git a/img/doc-images/testnet-wallet/image5.png b/img/doc-images/testnet-wallet/image5.png
deleted file mode 100644
index e362837587..0000000000
Binary files a/img/doc-images/testnet-wallet/image5.png and /dev/null differ
diff --git a/img/doc-images/testnet-wallet/image6.png b/img/doc-images/testnet-wallet/image6.png
deleted file mode 100644
index cc209062a6..0000000000
Binary files a/img/doc-images/testnet-wallet/image6.png and /dev/null differ
diff --git a/scripts/check-orphans.sh b/scripts/check-orphans.sh
index f975033040..508c8da4a2 100755
--- a/scripts/check-orphans.sh
+++ b/scripts/check-orphans.sh
@@ -1,31 +1,44 @@
#!/usr/bin/env bash
-# Report .mdx pages that are not referenced anywhere in the docs.json
-# navigation tree. Report-only in CI for now (issue #2252); issue #2253
-# makes orphans fail CI once the existing ones are resolved.
+# Fail if any page file is not referenced in the docs.json navigation tree.
+# A page on disk that is not in navigation is unreachable from the site.
+# Either add it to navigation or delete it with a redirect (see AGENTS.md section 2).
set -euo pipefail
cd "$(dirname "$0")/.."
nav_pages=$(mktemp)
-mdx_files=$(mktemp)
-trap 'rm -f "$nav_pages" "$mdx_files"' EXIT
+page_files=$(mktemp)
+trap 'rm -f "$nav_pages" "$page_files"' EXIT
-# Every page path referenced in navigation: walk all objects that carry a
-# "pages" array and keep only its string entries (nested groups are objects
-# and are reached separately via the recursive descent).
-jq -r '.navigation | .. | objects | select(has("pages")) | .pages[] | strings' docs.json \
- | sort -u > "$nav_pages"
+# Every page path reachable from navigation. Three forms count:
+# - string entries in a "pages" array (the common case)
+# - "href" on a group or anchor, when it points at an internal path
+# - "root", which Mintlify uses for a group's landing page
+# Nested groups are objects and are reached separately via recursive descent.
+{
+ jq -r '.navigation | .. | objects | select(has("pages")) | .pages[] | strings' docs.json
+ jq -r '.navigation | .. | objects | (.href?, .root?) | strings
+ | select(startswith("http") | not)' docs.json \
+ | sed 's|^https\?://docs\.celo\.org||; s|^/||; s|#.*$||; s|/$||'
+} | grep -v '^$' | sort -u > "$nav_pages"
-# Every .mdx page in the repo, as a root-relative path without extension.
-# snippets/ holds reusable fragments, not pages; submodules/ is excluded
-# defensively (empty on CI checkouts, but its upstream repo carries docs).
-find . -name '*.mdx' \
+# Every page file in the repo, as a root-relative path without extension.
+# Mintlify renders .md as well as .mdx. snippets/ holds reusable fragments,
+# not pages; submodules/ is excluded defensively (empty on CI checkouts, but
+# its upstream repo carries docs). The remaining excludes are repo meta that
+# is deliberately not published.
+find . \( -name '*.mdx' -o -name '*.md' \) \
-not -path './node_modules/*' \
-not -path './snippets/*' \
-not -path './submodules/*' \
- | sed 's|^\./||; s|\.mdx$||' | sort -u > "$mdx_files"
+ -not -path './.*/*' \
+ -not -path './scripts/*' \
+ -not -path './README.md' \
+ -not -path './AGENTS.md' \
+ -not -path './CLAUDE.md' \
+ | sed 's|^\./||; s|\.mdx$||; s|\.md$||' | sort -u > "$page_files"
-orphans=$(comm -23 "$mdx_files" "$nav_pages")
+orphans=$(comm -23 "$page_files" "$nav_pages")
if [ -z "$orphans" ]; then
echo "No orphan pages found."
@@ -33,6 +46,8 @@ if [ -z "$orphans" ]; then
fi
count=$(printf '%s\n' "$orphans" | wc -l | tr -d ' ')
-echo "Found $count orphan page(s): .mdx files not referenced in docs.json navigation:"
+echo "Found $count orphan page(s): pages not reachable from docs.json navigation:"
printf '%s\n' "$orphans"
+echo
+echo "Add each to \"navigation\" in docs.json, or delete it and add a \"redirects\" entry."
exit 1
diff --git a/tooling/contract-verification/foundry.mdx b/tooling/contract-verification/foundry.mdx
deleted file mode 100644
index 8a186a4b17..0000000000
--- a/tooling/contract-verification/foundry.mdx
+++ /dev/null
@@ -1,36 +0,0 @@
----
-title: "Verify Smart Contract using Foundry"
-sidebarTitle: "Verify with Foundry"
-og:description: How to verify a Smart Contract on Celo using Foundry
----
-
-Verifying a smart contract allows developers to review your code from within the CeloScan Block Explorer
-
-## Prerequisites
-
-[Project must be setup using Foundry](/developer/deploy/foundry)
-
-
-## Verifying Contracts
-
-Set your environment variable
-
-```bash
-// get your API key here: https://etherscan.io/register
-export ETHERSCAN_API_KEY=
-```
-
-Use the following command
-
-For Celo Sepolia Testnet:
-
-```bash
-forge verify-contract --chain-id 11142220 --etherscan-api-key $ETHERSCAN_API_KEY --watch
-```
-
-For Celo Mainnet:
-
-```bash
-forge verify-contract --chain-id 42220 --etherscan-api-key $ETHERSCAN_API_KEY
- --watch
-```
\ No newline at end of file
diff --git a/tooling/contract-verification/index.mdx b/tooling/contract-verification/index.mdx
index 1889d6e060..4ade407b02 100644
--- a/tooling/contract-verification/index.mdx
+++ b/tooling/contract-verification/index.mdx
@@ -1,20 +1,37 @@
---
title: "Verify Contract Deployed on Celo"
sidebarTitle: "Overview"
-description: How to verify contract deployed on Celo.
+description: How to verify a contract deployed on Celo with Hardhat, Foundry, Remix, Blockscout or Celoscan
---
+Verifying publishes your contract's source so anyone can read it on the block explorer. Pick the route that matches how you deployed.
+## Verify contracts on Celo
-How to verify contracts deployed on Celo.
+- [Using Foundry](#using-foundry)
+- [Using Hardhat](/tooling/contract-verification/hardhat)
+- [Using Blockscout](/tooling/contract-verification/blockscout)
+- [Using Remix](/tooling/contract-verification/remix)
+- [Using Celoscan](/tooling/contract-verification/celoscan)
----
+## Using Foundry
+
+If you deployed with [Foundry](/tooling/dev-environments/foundry), verify with `forge verify-contract`. Set your API key first — get one at [etherscan.io/register](https://etherscan.io/register):
+
+```bash
+export ETHERSCAN_API_KEY=
+```
+
+Celo Mainnet (chain ID 42220):
+
+```bash
+forge verify-contract --chain-id 42220 --etherscan-api-key $ETHERSCAN_API_KEY --watch
+```
-The fastest way to verify on Celo is to use [hardhat-celo](/developer/verify/hardhat). Alternatively, you can use the Celo Explorer and CeloScan to verify contracts using a user interface.
+Celo Sepolia testnet (chain ID 11142220):
-## Verify Contracts on Celo
+```bash
+forge verify-contract --chain-id 11142220 --etherscan-api-key $ETHERSCAN_API_KEY --watch
+```
-- [Using Blockscout](/developer/verify/blockscout)
-- [Using Remix](/developer/verify/remix)
-- [Using CeloScan](/developer/verify/celoscan)
-- [Using Hardhat](/developer/verify/hardhat)
\ No newline at end of file
+Passing `--verify` to `forge create` or `forge script` verifies right after deployment using the same `ETHERSCAN_API_KEY`. A `[etherscan]` block in `foundry.toml` is only needed to point Foundry at a custom verifier URL.
diff --git a/tooling/dev-environments/foundry.mdx b/tooling/dev-environments/foundry.mdx
index 3e54b3260c..839814e92e 100644
--- a/tooling/dev-environments/foundry.mdx
+++ b/tooling/dev-environments/foundry.mdx
@@ -109,7 +109,7 @@ forge create --rpc-url celo-sepolia --private-key src/Counter
Notice the contract name after `:`, this is because a single solidity file can have multiple contracts.
-It is recommended to use `--verify` flag so that the contract gets verified right after deployment, this requires [etherscan configuration](/developer/verify/foundry) in the `foundry.toml` file.
+It is recommended to use `--verify` flag so that the contract gets verified right after deployment, see [verifying with Foundry](/tooling/contract-verification/index#using-foundry).
On successful deployment, you should a following output!
diff --git a/tooling/dev-environments/hardhat.mdx b/tooling/dev-environments/hardhat.mdx
index 6a72e84596..64fa3bd2c6 100644
--- a/tooling/dev-environments/hardhat.mdx
+++ b/tooling/dev-environments/hardhat.mdx
@@ -14,11 +14,11 @@ How to deploy a smart contract to Celo testnet, Mainnet, or a local network usin
## Prerequisites
-To deploy on Celo using Hardhat, you should have Celo set up Celo in your local environment. If you prefer to deploy without a local environment, you can deploy using Remix or Replit.
+Node.js and a package manager installed locally, plus an account funded from the [Celo Sepolia faucet](https://faucet.celo.org/celo-sepolia).
-- [Using Windows](/tooling/overview/setup/windows)
-- [Using Mac](/tooling/overview/setup/mac)
-- [Using Replit](/tooling/overview/setup/replit)
+The configuration below reads a mnemonic on Celo's derivation path, `m/44'/52752'/0'/0`. Generate one with [`celocli account:new`](/tooling/libraries-sdks/cli/account) — MetaMask cannot export or import along that path, so an existing MetaMask seed will not work here.
+
+To deploy without a local environment, use [Remix](/tooling/dev-environments/remix) instead.
## Create Hardhat Project
diff --git a/tooling/libraries-sdks/contractkit/data-encryption-key.mdx b/tooling/libraries-sdks/contractkit/data-encryption-key.mdx
index e3440576a5..e7c0717b41 100644
--- a/tooling/libraries-sdks/contractkit/data-encryption-key.mdx
+++ b/tooling/libraries-sdks/contractkit/data-encryption-key.mdx
@@ -1,5 +1,6 @@
---
title: "Data Encryption Key"
+description: What the data encryption key is and how ContractKit registers it on the Accounts contract
---
diff --git a/tooling/libraries-sdks/contractkit/migrating-to-contractkit-v1.mdx b/tooling/libraries-sdks/contractkit/migrating-to-contractkit-v1.mdx
index 1619b59a20..e4e1ed48b5 100644
--- a/tooling/libraries-sdks/contractkit/migrating-to-contractkit-v1.mdx
+++ b/tooling/libraries-sdks/contractkit/migrating-to-contractkit-v1.mdx
@@ -1,6 +1,6 @@
---
title: Migrating to ContractKit v1.0
-og:description: How to migrate to the newest version of ContractKit and make use of its latest features.
+description: How to migrate to ContractKit v1 and use its features
---
How to migrate to from prerelease of ContractKit to v1 and make use of its features.
diff --git a/tooling/libraries-sdks/contractkit/migrating-to-contractkit-v2.mdx b/tooling/libraries-sdks/contractkit/migrating-to-contractkit-v2.mdx
index 51e39b91ad..51b8eee4c5 100644
--- a/tooling/libraries-sdks/contractkit/migrating-to-contractkit-v2.mdx
+++ b/tooling/libraries-sdks/contractkit/migrating-to-contractkit-v2.mdx
@@ -1,6 +1,6 @@
---
title: Migrating to ContractKit v2.0
-og:description: How to migrate from v1 to v2 ContractKit suite of packages and make use of their latest features.
+description: How to migrate from ContractKit v1 to the v2 suite of packages
---
How to migrate from v1 to v2 of the Celo SDK suite of packages and make use of their latest features.
diff --git a/tooling/libraries-sdks/contractkit/migrating-to-viem.mdx b/tooling/libraries-sdks/contractkit/migrating-to-viem.mdx
index d156dcc548..5626fa9651 100644
--- a/tooling/libraries-sdks/contractkit/migrating-to-viem.mdx
+++ b/tooling/libraries-sdks/contractkit/migrating-to-viem.mdx
@@ -1,6 +1,7 @@
---
-title: Migration document from Contractkit
-og:description: How to migrate from ContractKit to viem.
+title: Migrating to viem
+sidebarTitle: "Migrating to viem"
+description: How to migrate from ContractKit to viem
---
@@ -18,13 +19,13 @@ Hello devs 🌱 this is a migration path away from contractkit. This aims to giv
- import Web3 from "web3";
- import { newKitFromWeb3 } from "@celo/contractkit";
-
-- const web3 = new Web3("https://alfajores-forno.celo-testnet.org");
+- const web3 = new Web3("https://forno.celo.org");
- const kit = newKitFromWeb3(web3);
+ import { createPublicClient, http } from 'viem'
+ import { celo, celoSepolia } from 'viem/chains'
+
+ const publicClient = createPublicClient({
-+ chain: celoSepolia, // or celo for celo's mainnet
++ chain: celo, // or celoSepolia for the testnet
+ transport: http()
+ })
```
@@ -39,7 +40,7 @@ With viem:
```diff
- const accounts = await kit.web3.eth.getAccounts();
-+ const accounts = await publicClient.getAddresses()
++ const accounts = await walletClient.getAddresses()
const defaultAccount = accounts[0];
```
@@ -71,13 +72,13 @@ With viem:
+ gasLimit: 21000n,
+ gasPrice: 20000000000n,
+ };
-+ const signedTransaction = await walletClient.signTransaction({
++ const serializedTransaction = await walletClient.signTransaction({
+ account,
-+ transaction,
++ ...transaction,
+ });
+
+ // Send the signed transaction
-+ const txHash = await walletClient.sendSignedTransaction(signedTransaction);
++ const txHash = await publicClient.sendRawTransaction({ serializedTransaction });
```
### Provider methods
@@ -135,13 +136,12 @@ const registryContract = getContract({
publicClient,
})
-async function CeloTokens(): Promise<[string, string][]> {
- return Promise.all(
- ['GoldToken', 'StableToken', 'StableTokenEUR', 'StableTokenBRL'].map(async (token) => [
- token,
- await registryContract.read.getAddressForString(token),
- ])
+async function celoTokens(): Promise> {
+ const names = ['GoldToken', 'StableToken', 'StableTokenEUR', 'StableTokenBRL']
+ const entries = await Promise.all(
+ names.map(async (name) => [name, await registryContract.read.getAddressForString([name])] as const)
)
+ return Object.fromEntries(entries)
}
```
@@ -152,10 +152,9 @@ async function CeloTokens(): Promise<[string, string][]> {
- const contract = await kit.contracts.getGoldToken();
- const balance = await contract.balanceOf(wallet.address);
-+ const tokenAddresses = await CeloTokens();
-+ const USDm = tokenAddresses["StableToken]
-+ const balance = await client.readContract({
-+ abi: tokenAbi,
++ const { StableToken: USDm } = await celoTokens() // USDm, 18 decimals
++ const balance = await publicClient.readContract({
++ abi: stableTokenABI,
+ address: USDm,
+ functionName: "balanceOf",
+ args: [account.address],
@@ -170,19 +169,18 @@ Then, use the address of the token that you need and call the transfer method of
+ import { stableTokenABI } from '@celo/abis/types/viem'
- const CELO = await kit.contracts.getGoldToken();
- const txReceipt = await CELO.transfer('0x...', amount)
-+ const tokenAddresses = await CeloTokens();
-+ const USDm = tokenAddresses["StableToken]
-+ const { request } = await walletClient.simulateContract({
-+ abi,
++ const { StableToken: USDm } = await celoTokens() // USDm, 18 decimals
++ const { request } = await publicClient.simulateContract({
++ abi: stableTokenABI,
+ address: USDm,
+ functionName: 'transfer',
+ args: [
+ '0x...', // to address
-+ amount: 1000n,
++ 1000n, // amount, in base units
+ ],
+ account: '0x...', // from address
+ })
-+ const hash = await walletClient.sendTransaction(request);
++ const hash = await walletClient.writeContract(request);
```
#### Multicall
@@ -191,7 +189,7 @@ While contractkit didn't directly support multicall, you could use libraries suc
```ts
import Multicall from '@dopex-io/web3-multicall'
-const MULTICALL_ADDRESS = '0xcA11bde05977b3631167028862bE2a173976CA11' // same on mainnet and alfajores
+const MULTICALL_ADDRESS = '0xcA11bde05977b3631167028862bE2a173976CA11' // same address on every supported network
const multicall = new Multicall({
provider,
chainId,
@@ -231,8 +229,8 @@ With Viem's built in Celo transaction serializer and Celo block/transaction form
const account = privateKeyToAccount(PRIVATE_KEY)
- // ALFAJORES ADDRESS: Celo Mainnet can be fetched from the registry
- const USDmAddress = '0x874069Fa1Eb16D44d622F2e0Ca25eeA172369bC1'
+ // Celo mainnet (42220), USDm, 18 decimals
+ const USDmAddress = '0x765DE816845861e75A25fCA122bb6898B8B1282a'
const localAccountClient = createWalletClient({
account,
diff --git a/tooling/libraries-sdks/contractkit/notes-web3-with-contractkit.mdx b/tooling/libraries-sdks/contractkit/notes-web3-with-contractkit.mdx
index 8eca226411..492dfca15c 100644
--- a/tooling/libraries-sdks/contractkit/notes-web3-with-contractkit.mdx
+++ b/tooling/libraries-sdks/contractkit/notes-web3-with-contractkit.mdx
@@ -1,7 +1,7 @@
---
title: "Using Web3 from ContractKit"
sidebarTitle: "Using Web3 from ContractKit with Celo"
-og:description: How to use Web3 from ContractKit to read data from the Celo blockchain.
+description: How to use Web3 from ContractKit to read data from the Celo blockchain
---
How to use Web3 from ContractKit to read data from the Celo blockchain.
diff --git a/tooling/oracles/wit-oracle.mdx b/tooling/oracles/wit-oracle.mdx
index 547bbaaa1c..5124a8f304 100644
--- a/tooling/oracles/wit-oracle.mdx
+++ b/tooling/oracles/wit-oracle.mdx
@@ -1,5 +1,7 @@
---
title: "How to Use Wit/Oracle on Celo"
+sidebarTitle: "Wit/Oracle"
+description: How to read Witnet price feeds and on-chain randomness from a contract on Celo
---
The Witnet multichain decentralized oracle enables smart contracts to realize their true potential by giving them access to all sorts of valuable data sets, and by attesting and delivering that information securely thanks to its strong cryptoeconomic guarantees.
@@ -31,8 +33,8 @@ The Witnet Proxy contract is the easiest and most convenient way to consume Witn
The example below shows how to read the price of two different assets from the Witnet Price Router:
-```javascript
- // SPDX-License-Identifier: MIT
+```solidity
+// SPDX-License-Identifier: MIT
pragma solidity ^0.8.11;
import "witnet-solidity-bridge/contracts/interfaces/IWitnetPriceRouter.sol";
@@ -45,7 +47,7 @@ contract MyCeloContract {
* the network you are using! Please find available addresses here:
* https://docs.witnet.io/smart-contracts/witnet-data-feeds/addresses
*/
- constructor(IWitnetPriceRouter _router))
+ constructor(IWitnetPriceRouter _router) {
router = _router;
}
@@ -67,17 +69,17 @@ contract MyCeloContract {
}
```
-#### Javascript example
+#### Python example
You may also read the latest price of supported currency pairs from your **Web3** application by interacting directly with the Price Router contract:
-```javascript
+```python
web3 = Web3(Web3.HTTPProvider('https://forno.celo.org'))
-abi = '[{ "inputs": [{ "internalType": "bytes32", "name": "_id", "type": "bytes32" }], "name": "valueFor", "outputs": [{ "internalType": "int256", "name": "", "type": "int256" }, { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "", "type": "uint256" }], "stateMutability": "view", "type": "function" }]'
-addr = '' // copy from docs.witnet.io -> Celo price feeds
+abi = '[{ "inputs": [{ "internalType": "bytes4", "name": "_id", "type": "bytes4" }], "name": "valueFor", "outputs": [{ "internalType": "int256", "name": "", "type": "int256" }, { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "", "type": "uint256" }], "stateMutability": "view", "type": "function" }]'
+addr = '' # copy from docs.witnet.io -> Celo price feeds
contract = web3.eth.contract(address=addr, abi=abi)
-// get last value for "Price-CELO/USD-6"
-valueFor = contract.functions.valueFor().call("0x9ed884be")
+# last value for "Price-CELO/USD-6"
+valueFor = contract.functions.valueFor(bytes.fromhex('9ed884be')).call()
print("Price-CELO/USD-6:", valueFor[0])
print("> lastTimestamp:", valueFor[1])
print("> latestUpdateStatus:", valueFor[2])
@@ -92,7 +94,7 @@ A complete list of publicly available Witnet data feeds on Celo can be found in
## How to use WitnetRandomness
Witnet provides secure, unbiased, on-chain randomness on EVM-compatible chains (including Celo) via its WitnetRandomness contract.
-### ⚙️ How It Works
+### How it works
Crowd‑witnessed random seed generation
A randomized subset of Witnet nodes each generate secret random bytes, commit and later reveal them. These are deterministically aggregated into a tamper‑proof seed—unbiased and unpredictable as long as at least one witness is honest.
@@ -101,7 +103,7 @@ Copy the current randomness-contract address for your network from Witnet's [con
This very basic example shows how easy is to source random uint32 values into your own contracts:
-```javascript
+```solidity
// SPDX-License-Identifier: MIT
pragma solidity >=0.7.0 <0.9.0;
diff --git a/tooling/overview/migrate/from-ethereum.mdx b/tooling/overview/migrate/from-ethereum.mdx
index f4550365ef..674ce82b95 100644
--- a/tooling/overview/migrate/from-ethereum.mdx
+++ b/tooling/overview/migrate/from-ethereum.mdx
@@ -1,6 +1,6 @@
---
title: Celo for Ethereum Developers
-og:description: Overview of the similarities and differences between the Celo and Ethereum blockchains.
+description: Overview of the similarities and differences between the Celo and Ethereum blockchains
---
Overview of the similarities and differences between the Celo and Ethereum blockchains.
@@ -11,16 +11,16 @@ Overview of the similarities and differences between the Celo and Ethereum block
For a general overview of the Celo network and architecture, see [the Celo Overview page](/home/index).
-## What is Celo's Relationship to Ethereum?
+## Celo's relationship to Ethereum
-Celo is an Ethereum Layer 2 solution. Since the migration, Celo is an OP stack based L2 on top of Ethereum, extending it by adding fee abstraction, 1 second block finality and a variety of local stablecons. Ethereum’s L2 landscape is becoming a melting pot of philosophies and Celo adds a [values-driven, inclusivity-focused layer](https://app.t2.world/article/cm1eqxyh8151217321mcesuw528v) to that mix, enriching Ethereum's pluralistic fabric.
+Celo is an Ethereum Layer 2 solution. Since the migration, Celo is an OP stack based L2 on top of Ethereum, extending it by adding fee abstraction, 1-second blocks and a range of local stablecoins. Ethereum’s L2 landscape is becoming a melting pot of philosophies and Celo adds a [values-driven, inclusivity-focused layer](https://app.t2.world/article/cm1eqxyh8151217321mcesuw528v) to that mix, enriching Ethereum's pluralistic fabric.
In terms of programmability, Celo is similar to Ethereum. Both networks run the Ethereum Virtual Machine (EVM) to support smart contract functionality.
This means that all programming languages, developer tooling and standards that target the EVM are relevant for both Celo and Ethereum.
Developers building on Celo can write smart contracts in [Solidity](https://solidity.readthedocs.io/en/latest/), and
take advantage of smart contract standards that have already been developed for Ethereum.
-## The ERC-20 Token Standard
+## The ERC-20 token standard
The [ERC20 token standard](https://eips.ethereum.org/EIPS/eip-20) is a standard API for tokens within smart contracts.
This standard interface allows any tokens to be re-used by different applications.
@@ -55,7 +55,7 @@ event Approval(address indexed _owner, address indexed _spender, uint256 _value)
An **ERC20 compliant contract** must include the required functions and events at _minimum_.
It can include additional functions and events and still be ERC20 compliant.
-## The Celo Native Asset and Mento Stablecoins
+## The Celo native asset and Mento stablecoins
This interface is relevant for two important assets on the Celo network, the Celo native asset (CELO) and Mento stablecoins like USDm (Mento Dollar).
@@ -64,8 +64,7 @@ CELO and cGLD are the same thing. You can [view the CELO implementation here.](h
CELO has an ERC20 interface, so users can interact with CELO via the token standard, but it is important to note that not all CELO transfers are required to go through the token contract.
CELO can also be transferred by specifying the value field of a transaction, in the same way that ETH can be transferred in Ethereum.
-To properly monitor balance changing operations of CELO, it can be helpful to use [Celo Rosetta.](https://github.com/celo-org/rosetta)
-Celo Rosetta provides an easy way to obtain changes that are not easily queryable using the celo-blockchain RPC.
+To track every balance-changing operation you therefore need to follow native value transfers as well as ERC-20 `Transfer` events. See [token duality](/operate/specification/token-duality).
USDm (Mento Dollar) is implemented solely as a smart contract, so all USDm actions are mediated by the smart contract.
You can [view the implementation here.](https://celo.blockscout.com/address/0xaa933baf03cfc55b8e4e0d7de479bcc12f189352/contracts)
@@ -75,36 +74,35 @@ You can [view the implementation here.](https://celo.blockscout.com/address/0xaa
### Features exclusive to Celo
1. Celo allows users to pay transaction fees in cryptoassets other than the native asset. On Ethereum, users must pay transaction fees in Ether. For example, users can send USDm, and then pay any transaction fees in USDm as well.
-2. The Celo protocol uses EigenLayer as the data settlement layer. This allows blocks on Celo to be created in 1 seconds, as compared to ~12+ seconds on Ethereum. In addition, all blocks are finalized immediately, so there is no need to wait for more than 1 block confirmation to ensure that a transaction won't be reverted.
+2. Celo posts transaction data to [EigenDA](/operate/specification/eigenda) for data availability. Blocks are produced every second, against ~12 seconds on Ethereum. Finality follows the Ethereum L1 — see [finality](/operate/specification/finality) for what a given confirmation depth actually guarantees.
### Things to watch out for
1. As previously mentioned, CELO transfers are not required to happen via the ERC20 interface. A user's CELO balance may change without any interaction with the CELO contract, as they may transfer CELO natively.
-2. Celo supports a broad range of Ethereum-compatible transaction types to ensure seamless integration with existing Ethereum tooling. In addition to standard Ethereum tx types like legacy (type 0), EIP-2930 (type 1), and EIP-1559 (type 2), Celo also supports OP Stack-specific deposited transactions (type 126) and introduces its own Celo-native tx type (type 123) to enable features like Fee Abstraction. While most Ethereum transactions work out of the box on Celo, developers can also take advantage of extended functionality such as paying gas fees in ERC-20 tokens. For a more detailed overview, check out the full breakdown of supported (transaction types)[/what-is-celo/using-celo/protocol/transaction/transaction-types].
+2. Celo supports a broad range of Ethereum-compatible transaction types to ensure seamless integration with existing Ethereum tooling. In addition to standard Ethereum tx types like legacy (type 0), EIP-2930 (type 1), and EIP-1559 (type 2), Celo also supports OP Stack-specific deposited transactions (type 126) and introduces its own Celo-native tx type (type 123) to enable features like Fee Abstraction. While most Ethereum transactions work out of the box on Celo, developers can also take advantage of extended functionality such as paying gas fees in ERC-20 tokens. For a more detailed overview, check out the full breakdown of supported [transaction types](/home/protocol/transactions/transaction-types).
1) Mnemonic seed phrases can derive different accounts depending on the key derivation path used. While Ethereum wallets typically use the path `m/44'/60'/0'/0`, Celo defines its own path as `m/44'/52752'/0'/0`. Despite this, **most Celo wallets—including Valora—default to the Ethereum derivation path**, except in the case of some legacy accounts. Ledger Wallet, when used with the **Celo Ledger app**, strictly uses the Celo path. Tools like the **Celo CLI and the Celo Ledger app**, however, offer flexibility and allow users to specify either path explicitly.
2) The Valora wallet uses two types of accounts: externally owned accounts and meta-transaction wallets. There are important consequences for wallet developers and dapp developers building on Celo as Valora is one of the main interfaces for Celo users. You can find more information about [Valora accounts here](/home/celo-l1).
-## Deploying Ethereum Contracts to Celo
+## Deploying Ethereum contracts to Celo
Celo runs the EVM which means that smart contracts written for Ethereum can easily be deployed to Celo, the main difference being that you just need to connect to a Celo node instead of an Ethereum node. You can connect to your own Celo node or to a Celo node service provider like [Quicknode](https://www.quicknode.com/chains/celo).
-## Protocol Differences
+## Protocol differences
### OPCODES & Block headers
With the move to an L2, Celo now supports the same OPCODES and Block headers as Ethereum.
-### Precompiled Contracts
+### Precompiled contracts
-Celo includes all of the precompiled contracts in Ethereum, but also adds additional contracts. [Here](https://github.com/celo-org/celo-blockchain/blob/v1.3.2/core/vm/contracts.go#L157) is the list of Celo precompiled contracts as of Celo version 1.3.2. You can find the latest updates by selecting the most recent release tag.
+Celo includes all of the Ethereum precompiled contracts and adds a few of its own. The current list is in [`core/vm/celo_contracts.go`](https://github.com/celo-org/op-geth/blob/celo-rebase-17/core/vm/celo_contracts.go) in `celo-org/op-geth`.
-### Core Contract Calls
+### Core contract calls
-The blockchain client makes some core contract calls at the end of a block, outside of transactions. Many are done on epoch blocks ([epoch rewards](/home/protocol/epoch-rewards/index), [validator elections](/home/protocol/staking/validator-elections), etc.), but not all. For example, the [gas price minimum](/operate/specification/transaction-fees) update can happen on any block.
-Logs created by these contract changes are included in a single additional receipt in that block, which references the block hash as its transaction hash, even though there is no transaction with this hash. If no logs were created by such calls in that block, no receipt is added.
+Celo runs some protocol logic in core contracts rather than in the client — [epoch rewards](/home/protocol/epoch-rewards/index) and [validator elections](/home/protocol/staking/validator-elections) among them. If you index Celo, read those contracts rather than assuming every state change arrives as a normal transaction.
### Node management APIs
diff --git a/tooling/overview/setup/development-chain.mdx b/tooling/overview/setup/development-chain.mdx
deleted file mode 100644
index b800e43965..0000000000
--- a/tooling/overview/setup/development-chain.mdx
+++ /dev/null
@@ -1,98 +0,0 @@
----
-title: "Local Development Chain with Protocol Contracts"
-sidebarTitle: "Celo Local Development Chain with Protocol Contracts"
-og:description: How to set up a Celo development blockchain that includes all of the core protocol contracts including identity and stability contracts.
----
-
-How to set up a Celo development blockchain that includes all of the [core protocol contracts](https://github.com/celo-org/celo-monorepo/tree/master/packages/protocol), including identity and stability contracts.
-
----
-
-## What to expect
-
-At the end of this tutorial, you will have a local Celo development blockchain running exposed at `http://localhost:7545` and will be able to connect to it like any other local node. We will also go over how to inspect the development blockchain using the [Celo CLI tool](/cli/) and the [ContractKit](/developer/contractkit/).
-
-Running the development Celo blockchain is helpful because it greatly speeds up development time. You will start with 10 accounts pre-funded with CELO and all transactions on the network are virtually instant.
-
-You can run the development Celo blockchain in several ways:
-
-### Use the celo-devchain NPM package
-
-The easiest is to use a "pre-generated" devchain from the [celo-devchain](https://github.com/celo-org/celo-devchain) NPM package. For that all you have to do is:
-
-```sh
-> npm install --save-dev @celo/celo-devchain
-> npx celo-devchain --port 7545
-
-or
-
-> yarn add --dev @celo/celo-devchain
-> yarn run celo-devchain --port 7545
-```
-
-### Initialize your own devchain from the monorepo
-
-If you prefer, you can initialize your own devchain and build it from scratch by following the instructions on [how to generate new chain data](https://github.com/celo-org/celo-devchain/blob/main/README.md) and running the chain you generated.
-
-Once you custom chain data is generated, you can run it locally with the following command:
-
-``` bash
-> npx celo-devchain --file
-```
-
-## Interacting with the chain
-
-### **Inspecting the chain**
-
-Now that we have a Celo development chain running, we probably want to know what accounts we have access to, how much cGLD and USDm they have as well as the addresses of the deployed protocol contracts.
-
-We can use the [Celo CLI tool](/cli/) for this, or we can use the [ContractKit](/developer/contractkit/) npm package in a node script.
-
-### **Celo CLI**
-
-You can install the CLI using npm by running `npm install -g @celo/celocli`. You can see the [package details here](https://www.npmjs.com/package/@celo/celocli). Once it is installed, you should be able to access the tool from the terminal by running `$ celocli`. Try `$ celocli help`.
-
-The CLI will connect to the node at [http://localhost:8545](http://localhost:8545) by default. To connect to port 7545 you can run
-`$ celocli config:set -n http://localhost:7545`, and then check the connection by running `$ celocli node:get`.
-
-You can see the accounts available on the Celo development chain by running`$ celocli account:list`. You should see something like:
-
-```text
-[ '0x5409ED021D9299bf6814279A6A1411A7e866A631',
- '0x6Ecbe1DB9EF729CBe972C83Fb886247691Fb6beb',
- '0xE36Ea790bc9d7AB70C55260C66D52b1eca985f84',
- '0xE834EC434DABA538cd1b9Fe1582052B880BD7e63',
- '0x78dc5D2D739606d31509C31d654056A45185ECb6',
- '0xA8dDa8d7F5310E4A9E24F8eBA77E091Ac264f872',
- '0x06cEf8E666768cC40Cc78CF93d9611019dDcB628',
- '0x4404ac8bd8F9618D27Ad2f1485AA1B2cFD82482D',
- '0x7457d5E02197480Db681D3fdF256c7acA21bDc12',
- '0x91c987bf62D25945dB517BDAa840A6c661374402' ]
-```
-
-If you try to check the balance of the first account with `$ celocli account:balance 0x5409ED021D9299bf6814279A6A1411A7e866A631` you might encounter an error saying that the node is not currently synced. You can silence this by adding this environment variable to the terminal `$ export NO_SYNCCHECK=true`. Running the command again will print:
-
-```text
-All balances expressed in units of 10^-18.
-gold: 9.9999999693185872e+25
-lockedGold: 0
-usd: 5e+22
-total: 1.00004973043691287703791575e+26
-pending: 0
-```
-
-### ContractKit + Node.js
-
-You can also use the [ContractKit](/developer/contractkit/) to access the local node in a node.js script.
-
-As an example, try running [this script](https://gist.github.com/critesjosh/35ba7b1c2fe41934308cb243b003001c) in an npm project with contractkit installed.
-
-The linked gist is called getInfo.js. Run it with `$ node getInfo.js` This will print some of the Celo blockchain information.
-
-You are now prepared to start developing, transacting and deploying contracts on your own Celo development blockchain!
-
-### Using Ethereum developer tools with Celo
-
-You can connect the development chain to a tool like [Remix](https://remix.ethereum.org/) to begin interacting with it. Keep in mind that these tools are built primarily for Ethereum development and are compatible with Celo because Celo is similar to Ethereum. The two blockchains have similar block architectures and both run the Ethereum Virtual Machine \(EVM\) for executing smart contracts.
-
-The main difference between Celo and Ethereum that dapp developers need to keep in mind is that Celo has a slightly different transaction object than Ethereum. Celo requires one additional field in a transaction object, a `feeCurrency`. When Remix is connected to a locally running Celo node, the local node will fill these fields with default values \(if the fields are empty\). The node will sign the Celo transaction and broadcast it to the network.
diff --git a/tooling/overview/setup/mac.mdx b/tooling/overview/setup/mac.mdx
deleted file mode 100644
index 23a34ce6bb..0000000000
--- a/tooling/overview/setup/mac.mdx
+++ /dev/null
@@ -1,257 +0,0 @@
----
-title: "Using Mac"
-sidebarTitle: "Celo Local Development Environment Using Mac"
-og:description: How to set up a local development environment for Celo using Mac.
----
-
-How to set up a local development environment for Celo using Mac.
-
----
-
-
-While many commands will be the same, you may need to follow the instructions for your specific OS when installing software. The Celo docs have some resources for [Windows development](/tooling/overview/setup/windows).
-
-
-Before building on Celo, you need to set up a development environment to make sure you have the proper tools to build an application. This setup includes a combination of general development tools, Celo specific tools, and mobile development tools.
-
-## Web2 Prerequisites
-
-### Xcode
-
-Xcode is Apple's integrated development environment for macOS, used to develop software for macOS, iOS, iPadOS, watchOS, and tvOS.
-
-While Xcode falls under the Celo Prerequisites, Xcode takes a long time to download, which is why it is first on this list. It's best to start this download first, or even start downloading it before going to bed (depending on your internet connection).
-
-### Node, NPM and NVM
-
-### Node
-
-[Node](https://nodejs.org/en/) is a JavaScript runtime that allows you to execute JS code outside a web browser. It is an open-source server environment and runs on various platforms.
-
-### NPM
-
-`npm` stands for Node Package Manager and [is the world's largest software registry](https://docs.npmjs.com/about-npm). npm is what you'll use for installing published JS packages. npm comes bundled with Node, so you won't need to install it separately.
-
-### NVM
-
-`nvm` stands for Node Version Manager. Different projects often require different versions of Node, and nvm makes it easy to switch between those versions. This is recommended if you plan to develop a lot of JS-based applications and [npm also recommends nvm](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm). For Windows users, there are **nodist** and **nvm-windows**.
-
-#### Install Node and npm via nvm
-
-```shell
-curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.0/install.sh | bash
-```
-
-Verify the installation by running:
-
-```shell
-command -v nvm
-```
-
-which should output nvm.
-
-You can now install Node with `nvm install `.
-
-
-You can switch node versions using
-
-```shell
-nvm use
-```
-
-
-### Homebrew
-
-[Homebrew](https://brew.sh/) is a way of managing packages on macOS.
-
-**Install Homebrew**
-
-```shell
-/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
-```
-
-Get the latest packages
-
-```shell
-brew update
-```
-
-### Yarn
-
-`yarn` is a package manager similar to `npm`. For the most part, they do the same job and projects will let you know in the `README` or `package.json` which package manager they recommend using. Usually, you can use either or, but you should not use both in the same project. Running the [Celo Development Blockchain](https://www.notion.so/Celo-Tech-Talk-Building-your-First-DApp-Part-1-40bb23cffd0c4414986c5c2e85b2007a#7c24c82b38a443a49ec10dbf850c94c7) requires `yarn`, so you can install it now.
-
-#### Install yarn
-
-Option 1: Since you already have `npm` installed, you can use it to install `yarn`
-
-```shell
-npm install -g yarn
-```
-
-This will install the Yarn global binary.
-
-
-The `-g` is short for `--global`. This flag means you are installing this package on your system and it will be accessible from the cli no matter what project you are in.
-
-
-Option 2: Install `yarn` with Homebrew
-
-```shell
-# Update brew if you haven't recently
-$ brew update
-
-# Install yarn
-$ brew install yarn
-```
-
-### Expo
-
-[Expo](https://expo.dev/) is a framework and a platform for universal React applications. It lets you build mobile applications for both iOS and Android while using the same JavaScript/TypeScript codebase. This means that you don't need to be a "mobile developer" to build mobile apps!
-
-#### Install Expo
-
-Since you already setup `npm`, you can now install the `expo-cli` package.
-
-```shell
-npm install -g expo-cli
-```
-
-### Docker
-
-Docker is an application focused on build and deployment tools. It allows developers to build and share containerized apps. Rather than making the developer manually install a bunch of packages, a dev can just download a Docker image and start it and all the application installation and setup will be taken care of for them.
-
-#### Install Docker
-
-You might need to install [Docker Desktop for your OS](https://docs.docker.com/get-docker/).
-
-Once you've done that, you can access `docker` via your cli.
-
-```shell
-docker --version
-```
-
-## Celo Prerequisites
-
-### Local Development Blockchain
-
-See [Local Development Chain w/ Protocol Contracts](/tooling/overview/setup/development-chain) for how to get started with developing on a local test environment.
-
-### Celo CLI
-
-The [Celo CLI](/cli/) is a command-line tool for interacting with the Celo Protocol smart contracts. Some of the things you can do with it include looking at accounts, checking balances, and signing transactions.
-
-**Install Celo CLI**
-
-```shell
-npm install -g @celo/celocli
-
-... # lots of logs
-
-+ @celo/celocli@x.x.xx
-added x packages from x contributors in x.xs
-```
-
-
-Installation can take over a minute, so be patient depending on your internet connection.
-
-
-### iOS
-
-#### Xcode
-
-Xcode allows you to build and deploy the Celo Wallet. If you do not have an iOS device, Xcode can emulate one. To install this, you need an Apple Developer account (free), but you don't need to be part of the Apple Developer Program (costs money) to download Xcode.
-
-**Install Xcode**
-
-Download Xcode from the [Apple Developer website](https://developer.apple.com/download/). It is massive (10.6 GB), so we will start this first so it can be downloaded while we do everything else.
-
-Once this is done downloading, install it.
-
-**Cocopods, Bundler**
-
-Navigate to the iOS directory of the mobile package (/celo-monorepo/packages/mobile/ios) and run the following to install [cocoapods](https://cocoapods.org/) and [bundler](https://bundler.io/).
-
-```shell
-# install cocopods and bundler if you don't already have it
-$ gem install cocoapods # you might need to run with sudo if this fails
-$ gem install bundler
-
-# download the project dependencies
-$ bundle install
-
-# run inside mobile/ios
-$ bundle exec pod install
-```
-
-If your machine does not recognize the `gem` command, you may need to [download Ruby](https://rubyinstaller.org/) first.
-
-### Android
-
-#### Java
-
-Java allows you to build and deploy the mobile app to Android devices.
-
-**Install Java**
-
-Install by running the following:
-
-```shell
-$ brew install cask
-$ brew tap homebrew/cask-versions
-$ brew install homebrew/cask-versions/adoptopenjdk8
-```
-
-#### Android Dev Tools
-
-Install the Android SDK and platform-tools
-
-```
-$ brew install android-sdk
-$ brew install android-platform-tools
-```
-
-Next, install [Android Studio](https://developer.android.com/studio) and add the [Android NDK](https://developer.android.com/studio/projects/install-ndk).
-
-
-These paths may differ on your machine. You can find the path to the SDK and NDK via the [Android Studio menu](https://stackoverflow.com/questions/40520324/how-to-find-the-path-to-ndk).
-
-
-```shell
-export ANDROID_HOME=/usr/local/share/android-sdk
-export ANDROID_NDK=/usr/local/share/android-ndk
-export ANDROID_SDK_ROOT=/usr/local/share/android-sdk
-# this is an optional gradle configuration that should make builds faster
-export GRADLE_OPTS='-Dorg.gradle.daemon=true -Dorg.gradle.parallel=true -Dorg.gradle.jvmargs="-Xmx4096m -XX:+HeapDumpOnOutOfMemoryError"'
-```
-
-Then install the Android 29 platform
-
-```
-sdkmanager 'platforms;android-29
-```
-
-#### Android Emulator
-
-For the same reason you installed the emulator iOS (you may or may not have an Android device), you can also install the Android emulator.
-
-**Install Emulator Manager**
-
-One Android emulator option is Genymotion.
-
-```
-brew install genymotion
-```
-
-Under OSX High Sierra and later, you'll get a message that you need to [approve it in System Preferences > Security & Privacy > General.](https://developer.apple.com/library/content/technotes/tn2459/_index.html)
-
-Do that, and then repeat the line above.
-
-Then make sure the ADB path is set correctly in Genymotion — set Preferences > ADB > Use custom Android SDK tools to /usr/local/share/android-sdk (same as \$ANDROID_HOME)
-
-### Extras
-
-#### Solidity support for VSCode
-
-[Solidity support for VSCode](https://marketplace.visualstudio.com/items?itemName=JuanBlanco.solidity) (or your preferred IDE/text editor)
-
-Celo smart contracts are written in Solidity. While Solidity syntax is very similar to JavaScript/TypeScript, there are some differences and JS syntax support will not like Solidity files. Installing an extension on your IDE will be a big help as you develop smart contracts.
\ No newline at end of file
diff --git a/tooling/overview/setup/overview.mdx b/tooling/overview/setup/overview.mdx
deleted file mode 100644
index 202f4b89c6..0000000000
--- a/tooling/overview/setup/overview.mdx
+++ /dev/null
@@ -1,14 +0,0 @@
----
-title: Setup Environment
-og:description: Set up your Celo development environment.
----
-
-
-Set up your Celo development environment.
-
----
-
-- [Using Mac](/tooling/overview/setup/mac)
-- [Using Windows](/tooling/overview/setup/windows)
-- [Using Replit](/tooling/overview/setup/replit)
-- [Testnet Wallet](/tooling/overview/setup/wallet)
diff --git a/tooling/overview/setup/replit.mdx b/tooling/overview/setup/replit.mdx
deleted file mode 100644
index 198caed69d..0000000000
--- a/tooling/overview/setup/replit.mdx
+++ /dev/null
@@ -1,154 +0,0 @@
----
-title: "Deploy on Celo with Replit"
-sidebarTitle: "Deploy with Replit"
-og:description: How to deploy a smart contract to Celo testnet, Mainnet, or a local network using Replit.
----
-
-How to deploy a smart contract to Celo testnet, Mainnet, or a local network using [Replit](https://replit.com/).
-
----
-
-## Introduction to Replit
-
-[Replit](https://replit.com/) is a coding platform that lets you write code and host apps. It also has many educational features built-in, making it great for teachers and learners too. Every repl you create is a fully functional development and production environment. [Hosting from your editor](https://amasad.me/hosting) makes it easy to iterate quickly on your work, collaborate with others, and get feedback.
-
-[Replit added Solidity](https://blog.replit.com/solidity) to its available programming languages, giving all of the features and functionality Replit provides to Web3 developers creating smart contracts. In this guide, you’ll learn how to make use of these features to build and deploy a smart contract on Celo.
-
-
-To learn more about the features available to you as a smart contract developer with Replit, visit the [Replit documentation](https://docs.replit.com/).
-
-
-## Prerequisites
-
-To deploy on Celo using Replit, you don’t need any local environment. You should have a wallet available with testnet funds so that you can deploy and test transactions.
-
-- [Set up a Development Test Wallet](/tooling/overview/setup/wallet)
-- [Create a Replit account](https://replit.com/~)
-
-If you are new to Replit, it will also help to review the [Solidity announcement](https://blog.replit.com/solidity) and [Replit documentation](https://docs.replit.com/).
-
-## Create a Repl
-
-After creating your Replit account, your home screen will include a dashboard where you can view projects, create projects, manage your account, and do many other things. You can get started by creating a new Repl.
-
-- Choose + **Create Repl** from the left panel or + in the top right corner of the screen
-- Select the **Solidity starter (beta)** template and give your project a title
-- Click + **Create Repl** to create your project
-
-
-
-
-
-## Explore the Workspace
-
-By creating a project, you now have a fully functional online IDE that allows you to edit, view, and deploy your smart contracts. It also creates a front-end for your smart contract that you can publish to an easily sharable URL. Read [Solidity on Replit](https://blog.replit.com/solidity) for an overview of some of these features.
-
-
-
-
-
-
-The README provides an overview of the workspace and gives details on how to make the most of your Replit experience. Read this to help get more familiar with your workspace.
-
-
-## Deploy on Celo
-
-Deploying on Celo with Replit is easy. If you don’t have a wallet with funds, complete [Set up a Development Test Wallet](/tooling/overview/setup/wallet) so that you are prepared to deploy and interact with your smart contract.
-
-- Select **Run** to install all relevant packages, start up the contract deployment UI, and compile your **contract.sol** file
-
-
-
-
-
-- Select **Connect wallet**, select your account, then choose **Connect**.
-
-
-
-
-
-- Select the contract you would like to deploy from the dropdown (ex. MathTest, SimpleStorage).
-- To deploy this contract, select **Deploy** and confirm the transaction from your wallet.
-
-You can now interact with your contract using the provided user interface or from a sharable URL shown on the interface.
-
-
-
-
-
-## Verify Contract Deployment
-
-To view your deployed contract, copy your **account address** navigate to the [Celo explorer](https://celo.blockscout.com/), and search for your account (verify that you are searching the correct network).
-
-- View the most recently deployed contract to find additional information on your deployment.
-
-
-
-
-
-
-Learn more about exploring the Celo network and smart contract details in BlockScout [here](https://docs.blockscout.com/).
-
-
-## Update your dApp
-
-Your dApp is now live and can be shared with the world. You can use this workspace to edit and redeploy your dApp at any time. Here are a few tips you can use to help improve your dApp.
-
-**Front-end updates**
-
-Using **tools > ui.jsx** you can make changes to the front end of your dApp. To start, you can update the on-screen text from **Ethereum** to **Celo** and **ETH** to **CELO**.
-
-- Use the files panel to navigate to **tools > ui.jsx**.
-
-
-
-
-
-- Update **Replit & Ethereum** to read **Replit & Celo** on (will be around lines 446 and 528).
-- Update **ETH** to **CELO** next to the wallet address (will be around line 701).
-
-
-
-
-
-After making these basic changes, users will be able to determine that they are interacting with a Celo dApp. They can use the sharable URL to visit your dApp and make transactions from their wallet.
-
-- Select **Version Control** from the left panel and click **Connect to GitHub**.
-
-
-
-
-
-- Name your GitHub Repo, select your preferences, and click **Create GitHub repository**.
-- After your GitHub Repo is created, click the Repo link to go to your new repository.
-
-
-
-
-
-You can now manage any additional changes using GitHub from the user interface provided by Replit.
-
-## Publish to Replit
-
-Among many other features, Replit allows you to publish your projects to a personal profile. After publishing, projects will show up on your spotlight page for others to explore, interact with, clone, and collaborate.
-
-- Select the **project title** at the top of the screen.
-- Complete your project name and description and click **Publish**.
-
-
-
-
-
-- Add a cover image, tags (try a **Celo** tag), and additional details for your project.
-
-
-
-
-
-- After publishing, navigate to the **Spotlight page** to view your project.
-
-Your project is now available for other developers to view, share, fork, and comment on.
-
-
-Learn more at [Replit.com](https://replit.com/) and in the [Replit documentation](https://docs.replit.com/). Share new projects using **#Celo** and search other **#Celo** tags to find the latest Replit dApps deployed on Celo.
-
\ No newline at end of file
diff --git a/tooling/overview/setup/wallet.mdx b/tooling/overview/setup/wallet.mdx
deleted file mode 100644
index 1507a06a66..0000000000
--- a/tooling/overview/setup/wallet.mdx
+++ /dev/null
@@ -1,100 +0,0 @@
----
-title: Setup Testnet Wallets
-og:description: How to create and fund testnet wallets to use for developing Celo dApps.
----
-
-How to create and fund testnet wallets to use for developing Celo dApps. Make sure to never use the same wallet for development, where you hold your real-life funds.
-
----
-
-## Getting Started
-
-While developing and deploying dApps on Celo, it’s helpful to have a wallet prepared with funds to pay for any transactions you make on the blockchain. These can be set up using either real or test funds, and this allows application developers and users to interact with Celo applications more easily.
-
-
-This guide will focus on funding an account on MetaMask with Celo ([Celo Sepolia Testnet](/build-on-celo/network-overview) tokens). You can also use the [Celo Extension Wallet](/wallet/) if you prefer. Additionally, you can fund your wallet with real Celo if you would like to deploy to the Celo Mainnet.
-
-
-## Download a Wallet
-
-When deploying a dApp, you will need to pay for transactions that write data to the Celo blockchain. This is done using a wallet funded with Celo on your preferred network.
-
-- Download [MetaMask](https://metamask.io/) for your browser
-- If using MetaMask, [Connect MetaMask to Celo](/wallet/metamask/use) ([video](https://www.youtube.com/watch?v=JLHeCb01fzs)) to access Celo network options from your wallet
-
-## Create your Account
-
-You are now able to fund an account that you can access using your browser extension wallet. You can do this using accounts you create with the wallet or from the [Celo CLI](/cli/).
-
-### Using a wallet
-
-MetaMask allows you to easily create and manage accounts. This provides you with a quick way to create and fund an account to use when interacting with your dApp.
-
-- From your MetaMask extension, select **Celo (Sepolia Tesnet)**
-
-{/*  */}
-
-- Choose wallet **Settings**, select **Create Account**, name your account, and select **Create**
-
-{/*  */}
-
-- View your account details and copy your account address from the top center of the user interface
-
-{/*  */}
-
-
-Skip to [this step](#fund-your-account) to fund your account.
-
-
-
-### Using Celo CLI
-
-Install `celocli` by running
-
-```bash
-npm install -g @celo/celocli
-```
-
-#### Create an Account
-
-```bash
-celocli account:new
-```
-
-Creating an account will return its account details as shown below (details will be specific to your account).
-
-```shell
-mnemonic: turtle cash neutral drift brisk young swallow raw payment drill mail wear penalty vibrant entire adjust near chapter mistake size angry planet slam demand
-accountAddress: 0x5986ac413fA0C4A0379A674Cb986A59a962FC84e
-privateKey: 8cab22c2bb08f0d20bd9e1109a156e87219d63a2c0b40b027483decf194bd787
-publicKey: 024baaae61bab2a6e16ccb008c78dddb7132fc48d082e2a6166f8cc52d8d7a5289
-address: 0x5986ac413fA0C4A0379A674Cb986A59a962FC84e
-```
-
-
-Skip to [this step](#import-account-to-wallet-for-options-2--3) to connect your account to your wallet.
-
-
-## Import Account to Wallet (for Options 2 & 3)
-
-If you created an account using option 2 or 3, you can now import these accounts to your wallet.
-
-- Open your wallet browser extension from your browser
-- Select **Settings** > **Import Account**
-- Copy the **private key** from your local account, paste it into the window provided, and select **Import**
-
-{/*  */}
-
-## Fund your Account
-
-No matter where you created your accounts, you can send them testnet funds using your **Account Address** and the testnet faucet.
-
-- Navigate to the [Celo Sepolia Faucet](https://faucet.celo.org/celo-sepolia)
-- Copy your address from your terminal or wallet
-- Paste this address into the **Testnet Faucet**, complete the **Captcha**, and click **Get Started**
-
-
-
-
-
-Wait for the transaction to process to view the funds in your account.
diff --git a/tooling/overview/setup/windows.mdx b/tooling/overview/setup/windows.mdx
deleted file mode 100644
index 3b09b9190b..0000000000
--- a/tooling/overview/setup/windows.mdx
+++ /dev/null
@@ -1,74 +0,0 @@
----
-title: "Using Windows"
-sidebarTitle: "Celo Local Envorinment using Windows"
-og:description: How to set up a local development environment for Celo using Windows.
----
-
-How to set up a local development environment for Celo using Windows.
-
----
-
-
-Many popular tools and resources for blockchain development are written for developers working on UNIX machines. It is common for developers working on Windows to encounter errors that are not covered in the documentation and have no luck with Google. Fortunately, Microsoft makes it easy to run a UNIX machine directly from a Windows desktop with the [Windows Subsystem for Linux](https://docs.microsoft.com/en-us/windows/wsl/faq).
-
-
-### **Getting set up with Windows**
-
-Open PowerShell as an administrator and run
-
-```text
-Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
-```
-
-Restart your computer when prompted.
-
-Next, install a Linux distribution from the Microsoft Store. When developing this guide, we chose [Ubuntu](https://www.microsoft.com/en-us/p/ubuntu-1804-lts/9n9tngvndl3q?rtc=1&activetab=pivot:overviewtab).
-
-Set up your Linux distro by setting a username and password then update and upgrade the packages by running the following command in the terminal:
-
-```shell
-sudo apt update && sudo apt upgrade
-```
-
-You can view the source documentation for setting up the Linux distro [here](https://learn.microsoft.com/en-us/windows/wsl/) and the Microsoft documentation for setting up the Windows Subsystem for Linux [here](https://docs.microsoft.com/en-us/windows/wsl/install-win10?WT.mc_id=smashingmag-article-buhollan).
-
-### Set up the Linux Environment
-
-Now that you have Linux installed, let’s install [nvm](https://github.com/nvm-sh/nvm) and [yarn](https://yarnpkg.com/). Nvm \(node version manager\) makes it easy to install and manage different versions of Node.js. The following instructions are from the [celo-org/developer-tooling contributing guide](https://github.com/celo-org/developer-tooling/blob/88cbd54f1/CONTRIBUTING.md#installing-nodejs).
-
-Run the following commands in the Linux terminal.
-
-```bash
-# Installing Nvm
-curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.0/install.sh | bash
-source ~/.bashrc
-
-# Setting up the desired Nvm version
-nvm install x
-nvm alias default x
-```
-
-Running `$ node -v` in the terminal should print a node version if it is installed correctly.
-
-Yarn is a package manager similar to npm. The [celo-monorepo](https://github.com/celo-org/celo-monorepo/) uses yarn to build and manage packages. Install yarn with the following command.
-
-```bash
-# Installing Yarn - https://yarnpkg.com/en/docs/install#debian-stable
-curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
-echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
-sudo apt-get update && sudo apt-get install yarn
-```
-
-Test that yarn is installed by running `$ yarn --version`.
-
-### Developing with WSL
-
-You can now start working on your projects in your Linux environment. Install [the WSL VS Code extension](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-wsl) for a seamless integration between VS Code and WSL.
-
-Be aware that networking will be different depending on which version of WSL you are using. The details of managing network interfaces goes beyond the scope of this guide, but you can [learn more here](https://adamtheautomator.com/windows-subsystem-for-linux/#developing-on-wsl-with-visual-studio-code-vs-code-).
-You are good to go! If you have any questions, [join our Discord server](https://chat.celo.org) and just ask.
-
-### Additional Resources
-
-- [**Windows Subsystem for Linux Installation Guide for Windows 10**](https://docs.microsoft.com/en-us/windows/wsl/install-win10?WT.mc_id=smashingmag-article-buhollan)
-- [**WSL: Ultimate Guide**](https://adamtheautomator.com/windows-subsystem-for-linux/#developing-on-wsl-with-visual-studio-code-vs-code-)
\ No newline at end of file
diff --git a/tooling/testnets/celo-sepolia/disclaimer.mdx b/tooling/testnets/celo-sepolia/disclaimer.mdx
deleted file mode 100644
index 61d94c24c4..0000000000
--- a/tooling/testnets/celo-sepolia/disclaimer.mdx
+++ /dev/null
@@ -1,22 +0,0 @@
----
-title: Celo Sepolia Testnet Disclaimer
-og:description: Important considerations, warnings, and legal regulations for users of the Celo Sepolia Testnet.
----
-
-Important considerations, warnings, and legal regulations for users of the Celo Sepolia Testnet.
-
----
-
-## Terms and Conditions
-
-By using, and contributing to, the Celo Sepolia Testnet, you \(the User\) agree to these terms and acknowledge and agree that the Celo protocol and platform is in development and that use of the Celo Sepolia Testnet is entirely at the User's sole risk. You also agree to adhere to the [Celo Community Code of Conduct](https://celo.org/code-of-conduct).
-
-The User acknowledges and agrees that they have an adequate understanding of the risks associated with use of the Celo Sepolia Testnet and that all information and materials published, distributed or otherwise made available on the Celo Sepolia Testnet are provided for non-commercial, personal use only. This includes test CELO, test Celo Dollars, and any other stable value asset test units, which have no economic value and are provided only for the purpose of testing on the Celo Sepolia Testnet.
-
-All content provided on the Celo Sepolia Testnet is subject to the License included and is provided on an 'AS IS' and 'AS AVAILABLE' basis, without any representations or warranties of any kind. All implied terms are excluded to the fullest extent permitted by law. No party involved in, or having contributed to the development of, the Celo Sepolia Testnet including any of their affiliates, directors, employees, contractors, service providers or agents \(the Parties Involved\) accepts any responsibility or liability to the User or any third parties in relation to any materials or information accessed or downloaded via the Celo Sepolia Testnet. The User acknowledges and agrees that the Parties Involved are not responsible for any damage to the User's computer systems, loss of data, or any other loss or damage resulting \(directly or indirectly\) from use of the Celo Sepolia Testnet.
-
-To the fullest extent permitted by law, in no event shall the Parties Involved have any liability whatsoever to any person for any direct or indirect loss, liability, cost, claim, expense or damage of any kind, whether in contract or in tort, including negligence or otherwise, arising out of or related to the use of all or part of the Celo Sepolia Testnet.
-
-The Celo Labs software is not subject to the EAR based on Section 734.7 of the U.S. Export Administration Regulations \("EAR", 15 CFR Parts 730-774\) and Section 742.15\(b\) of the EAR, which applies to software containing or designed for use with encryption software that is publicly available as open-source. However, products developed using the Celo Labs software may be subject to the EAR or local laws/regulations. The User is responsible for compliance with U.S. and local country export/import laws and regulations.
-
-Celo Labs software may not be exported/reexported, either directly or indirectly, to any destination subject to U.S. embargoes or trade sanctions unless formally authorized by the U.S. Government. The embargoed destinations are subject to change and the scope of what is included in the embargo is specific to each embargoed country. For the most current information on U.S. embargoed and sanctioned countries, see the [Treasury Department regulations](https://www.treasury.gov/resource-center/sanctions/Programs/Pages/Programs.aspx).
\ No newline at end of file
diff --git a/tooling/testnets/celo-sepolia/index.mdx b/tooling/testnets/celo-sepolia/index.mdx
index 06870f017a..baaa2b003a 100644
--- a/tooling/testnets/celo-sepolia/index.mdx
+++ b/tooling/testnets/celo-sepolia/index.mdx
@@ -51,4 +51,20 @@ For developers currently using Alfajores, consider the following when migrating
## Network Configuration
-For detailed network configuration including RPC endpoints, contract addresses, and P2P peer information, see the [Network Config & Assets](/operate/operators/network-config#celo-sepolia) page.
\ No newline at end of file
+For detailed network configuration including RPC endpoints, contract addresses, and P2P peer information, see the [Network Config & Assets](/operate/operators/network-config#celo-sepolia) page.
+
+## Terms and conditions
+
+
+ By using, and contributing to, the Celo Sepolia Testnet, you \(the User\) agree to these terms and acknowledge and agree that the Celo protocol and platform is in development and that use of the Celo Sepolia Testnet is entirely at the User's sole risk. You also agree to adhere to the [Celo Community Code of Conduct](https://celo.org/code-of-conduct).
+
+ The User acknowledges and agrees that they have an adequate understanding of the risks associated with use of the Celo Sepolia Testnet and that all information and materials published, distributed or otherwise made available on the Celo Sepolia Testnet are provided for non-commercial, personal use only. This includes test CELO, test Celo Dollars, and any other stable value asset test units, which have no economic value and are provided only for the purpose of testing on the Celo Sepolia Testnet.
+
+ All content provided on the Celo Sepolia Testnet is subject to the License included and is provided on an 'AS IS' and 'AS AVAILABLE' basis, without any representations or warranties of any kind. All implied terms are excluded to the fullest extent permitted by law. No party involved in, or having contributed to the development of, the Celo Sepolia Testnet including any of their affiliates, directors, employees, contractors, service providers or agents \(the Parties Involved\) accepts any responsibility or liability to the User or any third parties in relation to any materials or information accessed or downloaded via the Celo Sepolia Testnet. The User acknowledges and agrees that the Parties Involved are not responsible for any damage to the User's computer systems, loss of data, or any other loss or damage resulting \(directly or indirectly\) from use of the Celo Sepolia Testnet.
+
+ To the fullest extent permitted by law, in no event shall the Parties Involved have any liability whatsoever to any person for any direct or indirect loss, liability, cost, claim, expense or damage of any kind, whether in contract or in tort, including negligence or otherwise, arising out of or related to the use of all or part of the Celo Sepolia Testnet.
+
+ The Celo Labs software is not subject to the EAR based on Section 734.7 of the U.S. Export Administration Regulations \("EAR", 15 CFR Parts 730-774\) and Section 742.15\(b\) of the EAR, which applies to software containing or designed for use with encryption software that is publicly available as open-source. However, products developed using the Celo Labs software may be subject to the EAR or local laws/regulations. The User is responsible for compliance with U.S. and local country export/import laws and regulations.
+
+ Celo Labs software may not be exported/reexported, either directly or indirectly, to any destination subject to U.S. embargoes or trade sanctions unless formally authorized by the U.S. Government. The embargoed destinations are subject to change and the scope of what is included in the embargo is specific to each embargoed country. For the most current information on U.S. embargoed and sanctioned countries, see the [Treasury Department regulations](https://www.treasury.gov/resource-center/sanctions/Programs/Pages/Programs.aspx).
+
\ No newline at end of file
diff --git a/tooling/wallets/coinbase-wallet.mdx b/tooling/wallets/coinbase-wallet.mdx
deleted file mode 100644
index 97efd99795..0000000000
--- a/tooling/wallets/coinbase-wallet.mdx
+++ /dev/null
@@ -1,73 +0,0 @@
----
-title: Coinbase Wallet Programmatic Setup on Celo
-og:description: How dApp developers can use Coinbase Wallet to interact with the Celo network.
----
-
-## Adding a Celo Network to Coinbase Wallet
-
-To add a Celo Network to your dApp, you can use Coinbase's RPC API's `wallet_addEthereumChain` method. \([See documentation](https://docs.base.org/identity/smart-wallet/technical-reference/sdk/CoinbaseWalletProvider/wallet_addEthereumChain)\).
-
-Here is a JavaScript snippet you can use:
-
-```jsx
-await window.ethereum.request({
- method: 'wallet_addEthereumChain',
- params: [],
-});
-```
-
-Where it says `INSERT_NETWORK_PARAMS_HERE`, please replace with any of the following constants, depending on which network you'd like to connect to.
-
-### Mainnet
-
-```jsx
-const CELO_PARAMS = {
- chainId: "0xa4ec",
- chainName: "Celo",
- nativeCurrency: { name: "Celo", symbol: "CELO", decimals: 18 },
- rpcUrls: ["https://forno.celo.org"],
- blockExplorerUrls: ["https://celo.blockscout.com/"],
- iconUrls: ["future"],
-};
-```
-
-### Celo Sepolia
-
-```jsx
-const CELO_SEPOLIA_PARAMS = {
- chainId: "0xAA044C",
- chainName: "Celo Sepolia",
- nativeCurrency: { name: "Celo", symbol: "CELO", decimals: 18 },
- rpcUrls: ["https://forno.celo-sepolia.celo-testnet.org/"],
- blockExplorerUrls: ["https://celo-sepolia.blockscout.com/"],
- iconUrls: ["future"],
-};
-```
-
-## Adding Tokens \(e.g. USDm, EURm\)
-
-To watch an asset on a Celo netowork \(e.g. USDm, EURm\) in your dApp, you can use Coinbase's RPC API's `wallet_watchAsset` method. \([See documentation](https://docs.base.org/identity/smart-wallet/technical-reference/sdk/CoinbaseWalletProvider/wallet_watchAsset)\).
-
-Here is a JavaScript snippet you can use:
-
-```jsx
-await window.ethereum.request({
- method: "wallet_watchAsset",
- params: {
- type: "ERC20",
- options: {
- address: "",
- symbol: "",
- decimals: 18,
- },
- iconUrls: ["future"],
- },
-});
-```
-
-- Where it says `INSERT_ADDRESS_HERE`, please replace with any of the following constants, depending on which network and which asset you'd like to connect to.
-- Where it says `INSERT_SYMBOL_HERE`, please replace with the correct symbol for the asset you'd like to watch. For Mento Dollar, it's `USDm` and for Mento Euro, it's `EURm`.
-
-
-See [Stablecoin Contracts](/tooling/contracts/stablecoin-contracts) for the token addresses you can add to Coinbase Wallet.
-
diff --git a/tooling/wallets/ledger/eip712-workaround.mdx b/tooling/wallets/ledger/eip712-workaround.mdx
index b329d93768..194e63b736 100644
--- a/tooling/wallets/ledger/eip712-workaround.mdx
+++ b/tooling/wallets/ledger/eip712-workaround.mdx
@@ -1,6 +1,6 @@
---
title: Ledger EIP-712 Signing Workaround
-og:description: How to sign EIP-712 typed data with Ledger using the Eth Recovery app.
+description: How to sign EIP-712 typed data with Ledger using the Eth Recovery app
sidebarTitle: "EIP-712 Workaround"
---