Skip to content

feat: facelift#18

Merged
MalteHerrmann merged 13 commits intomainfrom
facelift
Sep 4, 2025
Merged

feat: facelift#18
MalteHerrmann merged 13 commits intomainfrom
facelift

Conversation

@boojamya
Copy link
Copy Markdown
Contributor

@boojamya boojamya commented Feb 20, 2025

Search box will need a follow up PR because the repo needs to be public.

[Update]
Un-drafting this PR as a starting point. As more documentation and pages are developed, we can expand with additional PRs.

Summary by CodeRabbit

  • New Features

    • Launched a revamped Docusaurus documentation site with improved theming, dark mode and new UI components (buttons, collapsibles).
    • Added mainnet and testnet genesis artifacts.
  • Documentation

    • Added extensive docs: chain upgrades, endpoints, wallets, faucets, governance/PoA, node operation (state sync, snapshot, full archive), modules, FAQs and welcome content.
    • Reorganized metadata, sidebars and README.
  • Chores

    • Updated package/config for Docusaurus, refreshed ignore rules, introduced PR build and spell-check workflows; original deployment workflow disabled.

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Feb 20, 2025

Caution

Review failed

The pull request is closed.

Walkthrough

Migrates the docs site from Next/Nextra to Docusaurus, adds many new MDX docs and site config, introduces Docusaurus-specific UI components and styles, adds mainnet/testnet genesis files, replaces/disabled the previous GitHub Pages deploy workflow, and adds CI workflows for PR test builds and spell-checking.

Changes

Cohort / File(s) Summary
CI workflows
.github/workflows/deploy.yaml, .github/workflows/test-deploy.yml, .github/workflows/spell-check.yaml
Existing Pages deploy workflow was commented out/disabled. Added test-deploy.yml to run Node 18 + Yarn build on PRs and spell-check.yaml to run codespell against ./docs and README.md.
Build system & config
package.json, docusaurus.config.js, sidebars.js, next.config.js, theme.config.tsx, .prettierignore, .gitignore
Replaced Next/Nextra config with Docusaurus config and sidebar; updated package name, scripts, dependencies (Docusaurus + React 19), browserslist and Node >=18 engines; removed Next-specific files and reworked .gitignore; .prettierignore deleted.
Docs: new Docusaurus content
README.md, docs/... (chain-upgrades/, endpoints/, jester/, modules/, poa/, running-your-own-node/, wallets.mdx, index.mdx, faucet.mdx, etc.)
Added extensive MDX documentation, categories, module docs, governance, network docs, node-running guides, and landing content for Docusaurus.
Docs: removed legacy pages
pages/... (e.g., pages/index.mdx, pages/cctp/*, pages/modules/*, pages/network/*, _meta.json files)
Removed legacy Next/Nextra page files and metadata previously under pages/.
Genesis files
genesis_files/mainnet/genesis.json, genesis_files/testnet/genesis.json
Added full genesis JSON files for mainnet (noble-1) and testnet (grand-1).
UI components & theme
src/components/* (Button.js, Collapse.js, GitHubButton.js, PolkachuIcon.js), src/theme/MDXComponents.js, src/css/custom.css, src/pages/index.js.bak, src/pages/index.module.css
Added custom MDX Button mapping, Collapse and GitHubButton components, Polkachu icon, CSS overrides (fonts, color tokens, dark mode), and a sample homepage JS/CSS assets.

Sequence Diagram(s)

sequenceDiagram
  autonumber
  actor Dev as Developer (opens PR)
  participant GH as GitHub Actions
  participant Runner as Runner (ubuntu-latest)
  participant Node as Node 18 + Yarn
  participant Docus as Docusaurus build

  Dev->>GH: Open PR targeting main
  activate GH
  GH->>Runner: start workflows (test-deploy, spell-check)
  Runner->>Node: setup Node 18 (actions/setup-node)
  Node->>Node: yarn install --frozen-lockfile
  Node->>Docus: yarn build
  Docus-->>GH: build completes (artifacts in ./build)
  Runner->>Runner: run codespell on ./docs, README.md
  deactivate GH
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

Suggested reviewers

  • 0xstepit
  • boojamya

Poem

I hop through docs with whiskers bright,
New burrows carved in Docusaurus light.
CI checks spelling, builds on each PR,
Genesis seeds planted near and far.
Thump—our docs hop-start anew, hooray! 🐇✨


📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

💡 Knowledge Base configuration:

  • MCP integration is disabled by default for public repositories
  • Jira integration is disabled by default for public repositories
  • Linear integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between 980427f and ae4d477.

📒 Files selected for processing (2)
  • .github/workflows/deploy.yaml (1 hunks)
  • src/css/custom.css (1 hunks)
✨ Finishing Touches
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch facelift

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

CodeRabbit Commands (Invoked using PR/Issue comments)

Type @coderabbitai help to get the list of available commands.

Other keywords and placeholders

  • Add @coderabbitai ignore or @coderabbit ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Status, Documentation and Community

  • Visit our Status Page to check the current availability of CodeRabbit.
  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@boojamya boojamya marked this pull request as ready for review February 22, 2025 00:33
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 8

🧹 Nitpick comments (26)
genesis_files/testnet/genesis.json (1)

1590-1608: Documentation & Consistency Check:
It would be beneficial to cross-reference these genesis parameters with the documentation (e.g. in docs/chain-upgrades/testnet.mdx) to ensure consistency. Providing a brief explanation of key parameters in your documentation might help end users and operators understand the genesis configuration better.

docs/wallets.mdx (3)

7-7: Consider using "Non-custodial" without hyphen for consistency

The standard spelling is "noncustodial" as one word without a hyphen, which would align with industry terminology.

-## Non-custodial:
+## Noncustodial:
🧰 Tools
🪛 LanguageTool

[misspelling] ~7-~7: This word is normally spelled as one.
Context: ...medImage from '@theme/ThemedImage'; ## Non-custodial:

...

(EN_COMPOUNDS_NON_CUSTODIAL)


9-28: Ensure consistent image handling for wallet logos

There's an inconsistency in how wallet logos are displayed - Keplr uses ThemedImage for dark/light mode variants while Leap uses a standard img tag.

Consider using ThemedImage for Leap as well for consistent theme support:

  <div className="wallet-container">
    <a href="https://leapwallet.io/" target="_blank" rel="noopener noreferrer">
-      <img src="/img/leap_wallet.png" alt="leap wallet logo" width="65" />
+      <ThemedImage
+        sources={{
+          light: '/img/leap_wallet.png',
+          dark: '/img/leap_wallet.png', // You'll need to create a dark theme version
+        }}
+        alt="leap wallet logo"
+        width="65px"
+      />
    </a>
  </div>

33-39: Add explanations for CLI command parameters

The CLI commands would benefit from brief explanations of the parameters to help new users understand what they're typing.

Add parameter descriptions:

 ```sh
 # Create new wallet
-nobled keys add <KEY-NAME>
+nobled keys add <KEY-NAME> # Replace <KEY-NAME> with a name for your wallet
 
 # Recover wallet
-nobled keys add <KEY-NAME> --recover
+nobled keys add <KEY-NAME> --recover # This will prompt for your mnemonic seed phrase

</blockquote></details>
<details>
<summary>docs/modules/dollar.mdx (3)</summary><blockquote>

`21-21`: **Fix typo in USDN description**

There's a minor typo in the description of USDN functionality.

```diff
-The module provides mechanisms for minting, burning, transferring, querying USDN-.
+The module provides mechanisms for minting, burning, transferring, and querying USDN.

26-26: Provide timeline for IBC transfer support

The documentation mentions that IBC transfers aren't supported yet, but doesn't provide any timeline or roadmap information.

Consider adding more context:

-Users can transfer USDN on Noble chain between accounts. Note: IBC transfers are not supported yet
+Users can transfer USDN on Noble chain between accounts. Note: IBC transfers are not supported in the current release but are planned for a future update.

54-58: Align table columns for better readability

The table formatting could be improved for better readability.

-| Vault Name | Vault Type | Description |
-|:------------|-------------|-------------|
-| Points | `staking` | Earns Points for users |
-| Yield | `flexible` | Earns additional yield for users |
+| Vault Name | Vault Type   | Description                    |
+|:-----------|:-------------|:-------------------------------|
+| Points     | `staking`    | Earns Points for users         |
+| Yield      | `flexible`   | Earns additional yield for users |
🧰 Tools
🪛 LanguageTool

[uncategorized] ~55-~55: A punctuation mark might be missing here.
Context: ...-----------|-------------|-------------| | Points | staking | Earns Points for ...

(AI_EN_LECTOR_MISSING_PUNCTUATION)

docs/running-your-own-node/state-sync.mdx (2)

68-68: Fix grammar in the node start instruction

There's a grammatical error in the startup instruction.

-Start your node, it should be begin syncing!
+Start your node, it should begin syncing!
🧰 Tools
🪛 LanguageTool

[grammar] ~68-~68: There may an error in the verb form ‘be begin’.
Context: ...sync.sh Start your node, it should be begin syncing! sh nobled start ``` ## Mo...

(MD_BE_NON_VBP)


41-59: Include a check for jq dependency

The script uses jq for JSON parsing but doesn't verify that it's installed.

Add a check for the jq dependency:

 #!/bin/bash
 
+# Check for jq dependency
+if ! command -v jq &> /dev/null; then
+    echo "Error: jq is not installed. Please install it before running this script."
+    echo "Ubuntu: apt-get install jq"
+    echo "macOS: brew install jq"
+    exit 1
+fi
+
 NOBLE_RPC="https://rpc.noble.xyz:443"
 POLKA_RPC="https://noble-rpc.polkachu.com:443"
README.md (5)

5-5: Fix heading hierarchy

The document jumps from H1 to H3 without using H2 first, which breaks the logical hierarchy.

-### Installation
+## Installation
🧰 Tools
🪛 markdownlint-cli2 (0.17.2)

5-5: Heading levels should only increment by one level at a time
Expected: h2; Actual: h3

(MD001, heading-increment)


7-9: Specify language for code block and remove $ prefix

The code block should specify a language and avoid using $ prefixes in commands without showing output.

-```
-$ yarn
-```
+```bash
+yarn
+```
🧰 Tools
🪛 markdownlint-cli2 (0.17.2)

7-7: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)


8-8: Dollar signs used before commands without showing output
null

(MD014, commands-show-output)


11-15: Apply consistent code block formatting throughout

Similar to the previous comment, maintain consistent formatting for code blocks.

-### Local Development
+## Local Development
 
-```sh
-$ yarn start
+```bash
+yarn start

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 markdownlint-cli2 (0.17.2)</summary>

14-14: Dollar signs used before commands without showing output
null

(MD014, commands-show-output)

</details>

</details>

---

`19-23`: **Fix code block formatting for build command**

Maintain consistent formatting for all code blocks.

```diff
-### Build
+## Build
 
-```
-$ yarn build
+```bash
+yarn build

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 markdownlint-cli2 (0.17.2)</summary>

21-21: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)

---

22-22: Dollar signs used before commands without showing output
null

(MD014, commands-show-output)

</details>

</details>

---

`1-26`: **Enhance README with deployment and contribution information**

The README provides basic setup but lacks information about deployment and how to contribute.

Consider adding more sections:

```diff
 This command generates static content into the `build` directory and can be served using any static contents hosting service.
+
+## Deployment
+
+This site is automatically deployed to GitHub Pages when changes are pushed to the main branch.
+
+## Contributing
+
+Contributions are welcome! Please feel free to submit a Pull Request.
+
+1. Fork the repository
+2. Create your feature branch (`git checkout -b feature/amazing-feature`)
+3. Commit your changes (`git commit -m 'Add some amazing feature'`)
+4. Push to the branch (`git push origin feature/amazing-feature`)
+5. Open a Pull Request
🧰 Tools
🪛 markdownlint-cli2 (0.17.2)

5-5: Heading levels should only increment by one level at a time
Expected: h2; Actual: h3

(MD001, heading-increment)


7-7: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)


8-8: Dollar signs used before commands without showing output
null

(MD014, commands-show-output)


14-14: Dollar signs used before commands without showing output
null

(MD014, commands-show-output)


21-21: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)


22-22: Dollar signs used before commands without showing output
null

(MD014, commands-show-output)

src/components/Collapse.js (2)

7-23: Extract inline styles to improve maintainability

Using inline styles makes the component harder to maintain and update. Consider extracting them.

Move styles to a separate object or CSS module:

 const Collapse = ({ summary, children }) => {
   const [isOpen, setIsOpen] = useState(false);
 
+  const styles = {
+    container: { 
+      marginBottom: '10px', 
+      border: '1px solid #ddd', 
+      borderRadius: '5px', 
+      padding: '10px' 
+    },
+    button: {
+      background: 'none',
+      border: 'none',
+      fontSize: '16px',
+      fontWeight: 'bold',
+      cursor: 'pointer',
+      display: 'flex',
+      alignItems: 'center'
+    },
+    content: { 
+      marginTop: '10px' 
+    }
+  };
+
   return (
-    <div style={{ marginBottom: '10px', border: '1px solid #ddd', borderRadius: '5px', padding: '10px' }}>
+    <div style={styles.container}>
       <button
         onClick={() => setIsOpen(!isOpen)}
-        style={{
-          background: 'none',
-          border: 'none',
-          fontSize: '16px',
-          fontWeight: 'bold',
-          cursor: 'pointer',
-          display: 'flex',
-          alignItems: 'center'
-        }}
+        style={styles.button}
       >
         {isOpen ? '▼' : '▶'} <span dangerouslySetInnerHTML={{ __html: summary }} />
       </button>
-      {isOpen && <div style={{ marginTop: '10px' }}>{children}</div>}
+      {isOpen && <div style={styles.content}>{children}</div>}
     </div>
   );
 };
🧰 Tools
🪛 Biome (1.9.4)

[error] 20-20: Avoid passing content using the dangerouslySetInnerHTML prop.

Setting content using code can expose users to cross-site scripting (XSS) attacks

(lint/security/noDangerouslySetInnerHtml)


3-3: Add prop validation for component

The component lacks prop type validation which could help prevent errors.

Add PropTypes for better type checking:

 import React, { useState } from 'react';
+import PropTypes from 'prop-types';
 
 const Collapse = ({ summary, children }) => {
   // Component implementation...
 };
 
+Collapse.propTypes = {
+  summary: PropTypes.oneOfType([PropTypes.string, PropTypes.node]).isRequired,
+  children: PropTypes.node.isRequired,
+};
+
 export default Collapse;
docs/modules/cctp/index.mdx (1)

23-27: Consider Minor Grammar Enhancements.
The ordered list in the introduction (e.g. “User burns funds on source chain” and “User receives minted funds on destination chain”) might read better with definite articles (“the source chain” and “the destination chain”) to improve clarity.

🧰 Tools
🪛 LanguageTool

[uncategorized] ~23-~23: You might be missing the article “the” here.
Context: ...on chain route: 1. User burns funds on source chain 2. A Circle service observes and ...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[uncategorized] ~26-~26: You might be missing the article “the” here.
Context: ... chain 4. User receives minted funds on destination chain ![](./images/cctp-high-level.png...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)

src/css/custom.css (2)

30-38: Pseudo-Icon Styles are Clear and Responsive.
The .pseudo-icon rules (including hover effects) are implemented cleanly. As a good-to-have improvement, you might consider using CSS variables for the padding and margin values if they are reused elsewhere.


72-84: Launch-Express Button Styles are Consistent.
The styles for .launch-express (across both light and dark themes) are well defined. Consider adding focus styles to improve accessibility for keyboard users.

docs/modules/cctp/mint_forward.mdx (2)

42-48: Review Tip Block Formatting for Consistency.
Within the tip block, ensure punctuation is consistent. For example, on line 44: "Note that this needs to be supplied as hex (0x14)." verify that the punctuation matches the style used throughout the document.

🧰 Tools
🪛 LanguageTool

[uncategorized] ~44-~44: A punctuation mark might be missing here.
Context: ...case of the dYdX Testnet, this would be [channel-20][Testnet dYdX Channel], so *...

(AI_EN_LECTOR_MISSING_PUNCTUATION)


50-56: Simplify Parameter Descriptions for Improved Readability.
The explanation for destinationBech32Prefix is somewhat wordy. A streamlined version (e.g., "This parameter defines the Bech32 prefix for the destination chain. Encode it as a padded bytes32 value (see Encoding).") might make the documentation easier to digest.

🧰 Tools
🪛 LanguageTool

[style] ~53-~53: Consider a shorter alternative to avoid wordiness.
Context: ...he chain funds are being forwarded to. In order to align ourselves with the CCTP standard,...

(IN_ORDER_TO_PREMIUM)

docs/modules/authority.mdx (1)

18-18: Simplify Wording for Clarity
The sentence “Each module has the ability to assign the Authority module as its authority” can be simplified for brevity. Consider changing it to “Each module can assign the Authority module as its authority.”

-Each module has the ability to assign the `Authority` module as its authority.
+Each module can assign the `Authority` module as its authority.
🧰 Tools
🪛 LanguageTool

[style] ~18-~18: The phrase ‘has the ability to’ might be wordy. Consider using “can”.
Context: ...d operations on the chain. Each module has the ability to assign the Authority module as its au...

(HAS_THE_ABILITY_TO)

docs/index.mdx (2)

13-23: Inline Styling: Consider Refactoring for Reusability
The inline style block defining the background image and related properties works as expected. Over time, if these styles are reused or become more complex, consider moving them to a CSS module or a dedicated styling file for better maintainability.

🧰 Tools
🪛 LanguageTool

[uncategorized] ~22-~22: Loose punctuation mark.
Context: ...a(0,0,0,1) 70%, rgba(0,0,0,0) 100%)' }}> <h1 style={{ textAlign: 'center', p...

(UNLIKELY_OPENING_PUNCTUATION)


29-32: Punctuation Improvement in Descriptive Text
In the sentence describing Noble’s interoperability, a comma after “Cosmos ecosystem” would improve readability. For example:

-Noble ensures seamless interoperability across the Cosmos ecosystem enabling fast and secure transactions.
+Noble ensures seamless interoperability across the Cosmos ecosystem, enabling fast and secure transactions.
🧰 Tools
🪛 LanguageTool

[uncategorized] ~31-~31: A comma might be missing here.
Context: ...less interoperability across the Cosmos ecosystem enabling fast and secure transactions. ...

(AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)

docs/running-your-own-node/full-archive.mdx (1)

36-36: Spelling Consistency: Use Hyphenation for Compound Adjectives
In the sentence “Be ready, this is a tedious and time consuming process as you are starting from block 0!”, the compound adjective “time consuming” should be hyphenated as “time-consuming” for clarity.

-Be ready, this is a tedious and time consuming process as you are starting from block 0!
+Be ready, this is a tedious and time-consuming process as you are starting from block 0!
🧰 Tools
🪛 LanguageTool

[misspelling] ~36-~36: This word is normally spelled with a hyphen.
Context: ...enesis Be ready, this is a tedious and time consuming process as you are starting from block ...

(EN_COMPOUNDS_TIME_CONSUMING)

docs/governance/index.mdx (1)

15-17: Punctuation for Improved Readability
In the sentence about parameter changes, consider adding a comma before “as it would not require...” to improve clarity. For example:

-The NMM has the ability to initiate parameter changes. This authority is distinct from the upgrade functionality as it would not require the Noble validators to run a new chain binary.
+The NMM has the ability to initiate parameter changes. This authority is distinct from the upgrade functionality, as it would not require the Noble validators to run a new chain binary.
🧰 Tools
🪛 LanguageTool

[uncategorized] ~16-~16: Possible missing comma found.
Context: ... authority is distinct from the upgrade functionality as it would not require the Noble valid...

(AI_HYDRA_LEO_MISSING_COMMA)

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 23f2528 and 2c55f67.

⛔ Files ignored due to path filters (30)
  • bun.lockb is excluded by !**/bun.lockb
  • docs/modules/cctp/images/cctp-e2e.png is excluded by !**/*.png
  • docs/modules/cctp/images/cctp-high-level.png is excluded by !**/*.png
  • docs/modules/cctp/images/cctp-noble.png is excluded by !**/*.png
  • docs/modules/cctp/images/troubleshoot1:9.png is excluded by !**/*.png
  • docs/modules/cctp/images/troubleshoot2:9.png is excluded by !**/*.png
  • docs/modules/cctp/images/troubleshoot3:9.png is excluded by !**/*.png
  • docs/modules/cctp/images/troubleshoot4:9.png is excluded by !**/*.png
  • docs/modules/cctp/images/troubleshoot5:9.png is excluded by !**/*.png
  • docs/modules/cctp/images/troubleshoot6:9.png is excluded by !**/*.png
  • docs/modules/cctp/images/troubleshoot7:9.png is excluded by !**/*.png
  • docs/modules/cctp/images/troubleshoot8:9.png is excluded by !**/*.png
  • docs/modules/cctp/images/troubleshoot9:9.png is excluded by !**/*.png
  • docs/modules/images/eure_banner.png is excluded by !**/*.png
  • docs/modules/images/forwarding_swimlane_cex_to_ibc_v1_1.jpg is excluded by !**/*.jpg
  • docs/modules/images/usdn_banner.png is excluded by !**/*.png
  • docs/modules/images/usdy_banner.png is excluded by !**/*.png
  • docs/modules/images/usyc_banner.png is excluded by !**/*.png
  • package-lock.json is excluded by !**/package-lock.json
  • static/img/bg.png is excluded by !**/*.png
  • static/img/coins/usdc.svg is excluded by !**/*.svg
  • static/img/favicon.ico is excluded by !**/*.ico
  • static/img/full_logo_dark.png is excluded by !**/*.png
  • static/img/full_logo_light.png is excluded by !**/*.png
  • static/img/keplr_dark.png is excluded by !**/*.png
  • static/img/keplr_light.png is excluded by !**/*.png
  • static/img/leap_wallet.png is excluded by !**/*.png
  • static/img/logo.svg is excluded by !**/*.svg
  • static/img/usdn_banner.png is excluded by !**/*.png
  • yarn.lock is excluded by !**/yarn.lock, !**/*.lock
📒 Files selected for processing (78)
  • .github/workflows/deploy.yaml (0 hunks)
  • .github/workflows/deploy.yml (1 hunks)
  • .github/workflows/test-deploy.yml (1 hunks)
  • .gitignore (1 hunks)
  • .prettierignore (0 hunks)
  • README.md (1 hunks)
  • docs/chain-upgrades/_category_.json (1 hunks)
  • docs/chain-upgrades/mainnet.mdx (1 hunks)
  • docs/chain-upgrades/testnet.mdx (1 hunks)
  • docs/endpoints/_category_.json (1 hunks)
  • docs/endpoints/mainnet.mdx (1 hunks)
  • docs/endpoints/testnet.mdx (1 hunks)
  • docs/faucet.mdx (1 hunks)
  • docs/governance/index.mdx (1 hunks)
  • docs/index.mdx (1 hunks)
  • docs/jester/faq.mdx (1 hunks)
  • docs/jester/index.mdx (1 hunks)
  • docs/modules/aura.mdx (1 hunks)
  • docs/modules/authority.mdx (1 hunks)
  • docs/modules/blockibc.mdx (1 hunks)
  • docs/modules/cctp/burn.mdx (1 hunks)
  • docs/modules/cctp/index.mdx (1 hunks)
  • docs/modules/cctp/manual_relaying.mdx (1 hunks)
  • docs/modules/cctp/mint.mdx (1 hunks)
  • docs/modules/cctp/mint_forward.mdx (3 hunks)
  • docs/modules/cctp/module_interface.mdx (1 hunks)
  • docs/modules/dollar.mdx (1 hunks)
  • docs/modules/fiattokenfactory.mdx (1 hunks)
  • docs/modules/florin.mdx (1 hunks)
  • docs/modules/forwarding.mdx (1 hunks)
  • docs/modules/globalfee.mdx (1 hunks)
  • docs/modules/halo.mdx (1 hunks)
  • docs/modules/index.mdx (1 hunks)
  • docs/modules/swap.mdx (1 hunks)
  • docs/modules/wormhole.mdx (1 hunks)
  • docs/poa/index.mdx (1 hunks)
  • docs/poa/validatorSet.mdx (1 hunks)
  • docs/running-your-own-node/full-archive.mdx (1 hunks)
  • docs/running-your-own-node/index.mdx (1 hunks)
  • docs/running-your-own-node/snapshot.mdx (1 hunks)
  • docs/running-your-own-node/state-sync.mdx (1 hunks)
  • docs/wallets.mdx (1 hunks)
  • docusaurus.config.js (1 hunks)
  • genesis_files/mainnet/genesis.json (1 hunks)
  • genesis_files/testnet/genesis.json (1 hunks)
  • next.config.js (0 hunks)
  • package.json (1 hunks)
  • pages/_meta.json (0 hunks)
  • pages/cctp/_meta.json (0 hunks)
  • pages/cctp/contract_addresses.mdx (0 hunks)
  • pages/cctp/index.mdx (0 hunks)
  • pages/index.mdx (0 hunks)
  • pages/modules/_meta.json (0 hunks)
  • pages/modules/globalfee.mdx (0 hunks)
  • pages/modules/tariff.mdx (0 hunks)
  • pages/modules/tokenfactory.mdx (0 hunks)
  • pages/network/_meta.json (0 hunks)
  • pages/network/multisig.mdx (0 hunks)
  • pages/network/resources.mdx (0 hunks)
  • pages/network/running.mdx (0 hunks)
  • pages/network/upgrades.mdx (0 hunks)
  • pages/network/upgrades/_meta.json (0 hunks)
  • pages/network/upgrades/argon.mdx (0 hunks)
  • pages/network/upgrades/krypton.mdx (0 hunks)
  • pages/network/upgrades/neon.mdx (0 hunks)
  • pages/network/upgrades/numus.mdx (0 hunks)
  • pages/network/upgrades/radon.mdx (0 hunks)
  • pages/network/upgrades/xenon.mdx (0 hunks)
  • sidebars.js (1 hunks)
  • src/components/Button.js (1 hunks)
  • src/components/Collapse.js (1 hunks)
  • src/components/GitHubButton.js (1 hunks)
  • src/components/PolkachuIcon.js (1 hunks)
  • src/css/custom.css (1 hunks)
  • src/pages/index.js.bak (1 hunks)
  • src/pages/index.module.css (1 hunks)
  • src/theme/MDXComponents.js (1 hunks)
  • theme.config.tsx (0 hunks)
💤 Files with no reviewable changes (25)
  • .prettierignore
  • pages/network/upgrades/xenon.mdx
  • pages/network/upgrades/krypton.mdx
  • pages/_meta.json
  • pages/network/upgrades/_meta.json
  • pages/network/upgrades/numus.mdx
  • pages/network/upgrades.mdx
  • pages/network/running.mdx
  • pages/modules/_meta.json
  • pages/cctp/index.mdx
  • pages/network/upgrades/neon.mdx
  • pages/network/_meta.json
  • next.config.js
  • pages/cctp/contract_addresses.mdx
  • .github/workflows/deploy.yaml
  • pages/network/upgrades/radon.mdx
  • pages/network/resources.mdx
  • pages/modules/tokenfactory.mdx
  • pages/cctp/_meta.json
  • pages/network/upgrades/argon.mdx
  • pages/network/multisig.mdx
  • pages/index.mdx
  • pages/modules/globalfee.mdx
  • theme.config.tsx
  • pages/modules/tariff.mdx
🚧 Files skipped from review as they are similar to previous changes (36)
  • docs/modules/wormhole.mdx
  • docs/faucet.mdx
  • docs/running-your-own-node/index.mdx
  • docs/modules/swap.mdx
  • src/theme/MDXComponents.js
  • docs/modules/florin.mdx
  • docs/modules/cctp/module_interface.mdx
  • src/pages/index.module.css
  • src/pages/index.js.bak
  • docs/endpoints/category.json
  • docs/endpoints/mainnet.mdx
  • docs/modules/aura.mdx
  • docs/modules/halo.mdx
  • docs/running-your-own-node/snapshot.mdx
  • docs/chain-upgrades/testnet.mdx
  • docs/chain-upgrades/mainnet.mdx
  • docs/modules/fiattokenfactory.mdx
  • docs/jester/index.mdx
  • sidebars.js
  • docs/modules/globalfee.mdx
  • docs/poa/validatorSet.mdx
  • src/components/GitHubButton.js
  • docs/modules/cctp/manual_relaying.mdx
  • docs/modules/blockibc.mdx
  • docs/modules/cctp/burn.mdx
  • docs/modules/forwarding.mdx
  • docs/endpoints/testnet.mdx
  • docs/jester/faq.mdx
  • docs/poa/index.mdx
  • docusaurus.config.js
  • .gitignore
  • src/components/Button.js
  • src/components/PolkachuIcon.js
  • docs/modules/index.mdx
  • docs/modules/cctp/mint.mdx
  • docs/chain-upgrades/category.json
🧰 Additional context used
🪛 LanguageTool
docs/modules/authority.mdx

[style] ~18-~18: The phrase ‘has the ability to’ might be wordy. Consider using “can”.
Context: ...d operations on the chain. Each module has the ability to assign the Authority module as its au...

(HAS_THE_ABILITY_TO)


[uncategorized] ~32-~32: A comma may be missing after the conjunctive/linking adverb ‘However’.
Context: ...ity execute <FILE.json> --from nmm ``` However the modules primary use case will likel...

(SENT_START_CONJUNCTIVE_LINKING_ADVERB_COMMA)


[uncategorized] ~33-~33: It seems likely that a singular genitive (’s) apostrophe is missing.
Context: ...<FILE.json> --from nmm ``` However the modules primary use case will likely be used fo...

(AI_HYDRA_LEO_APOSTROPHE_S_XS)

docs/index.mdx

[uncategorized] ~22-~22: Loose punctuation mark.
Context: ...a(0,0,0,1) 70%, rgba(0,0,0,0) 100%)' }}> <h1 style={{ textAlign: 'center', p...

(UNLIKELY_OPENING_PUNCTUATION)


[uncategorized] ~31-~31: A comma might be missing here.
Context: ...less interoperability across the Cosmos ecosystem enabling fast and secure transactions. ...

(AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)

docs/governance/index.mdx

[uncategorized] ~16-~16: Possible missing comma found.
Context: ... authority is distinct from the upgrade functionality as it would not require the Noble valid...

(AI_HYDRA_LEO_MISSING_COMMA)


[grammar] ~20-~20: Probable usage error. Use “and” after ‘both’.
Context: ...blish IBC connections that have expired as well as sever IBC connections. Any such action ...

(BOTH_AS_WELL_AS)

docs/modules/cctp/index.mdx

[uncategorized] ~23-~23: You might be missing the article “the” here.
Context: ...on chain route: 1. User burns funds on source chain 2. A Circle service observes and ...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[uncategorized] ~26-~26: You might be missing the article “the” here.
Context: ... chain 4. User receives minted funds on destination chain ![](./images/cctp-high-level.png...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)

docs/modules/cctp/mint_forward.mdx

[uncategorized] ~44-~44: A punctuation mark might be missing here.
Context: ...case of the dYdX Testnet, this would be [channel-20][Testnet dYdX Channel], so *...

(AI_EN_LECTOR_MISSING_PUNCTUATION)


[style] ~53-~53: Consider a shorter alternative to avoid wordiness.
Context: ...he chain funds are being forwarded to. In order to align ourselves with the CCTP standard,...

(IN_ORDER_TO_PREMIUM)

docs/modules/dollar.mdx

[uncategorized] ~55-~55: A punctuation mark might be missing here.
Context: ...-----------|-------------|-------------| | Points | staking | Earns Points for ...

(AI_EN_LECTOR_MISSING_PUNCTUATION)


[style] ~78-~78: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... nobled q dollar vaults paused Query for aggregated vault statistics, includ...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)

docs/running-your-own-node/full-archive.mdx

[misspelling] ~36-~36: This word is normally spelled with a hyphen.
Context: ...enesis Be ready, this is a tedious and time consuming process as you are starting from block ...

(EN_COMPOUNDS_TIME_CONSUMING)

docs/running-your-own-node/state-sync.mdx

[grammar] ~68-~68: There may an error in the verb form ‘be begin’.
Context: ...sync.sh Start your node, it should be begin syncing! sh nobled start ``` ## Mo...

(MD_BE_NON_VBP)

docs/wallets.mdx

[misspelling] ~7-~7: This word is normally spelled as one.
Context: ...medImage from '@theme/ThemedImage'; ## Non-custodial:

...

(EN_COMPOUNDS_NON_CUSTODIAL)

🪛 Checkov (3.2.334)
genesis_files/testnet/genesis.json

[HIGH] 724-725: IBM Cloud IAM Key

(CKV_SECRET_7)


[HIGH] 846-847: IBM Cloud IAM Key

(CKV_SECRET_7)


[HIGH] 968-969: IBM Cloud IAM Key

(CKV_SECRET_7)


[HIGH] 1273-1274: IBM Cloud IAM Key

(CKV_SECRET_7)


[HIGH] 1334-1335: IBM Cloud IAM Key

(CKV_SECRET_7)


[HIGH] 1395-1396: IBM Cloud IAM Key

(CKV_SECRET_7)

genesis_files/mainnet/genesis.json

[HIGH] 932-933: IBM Cloud IAM Key

(CKV_SECRET_7)


[HIGH] 993-994: IBM Cloud IAM Key

(CKV_SECRET_7)


[HIGH] 1359-1360: IBM Cloud IAM Key

(CKV_SECRET_7)


[HIGH] 1420-1421: IBM Cloud IAM Key

(CKV_SECRET_7)


[HIGH] 1680-1681: IBM Cloud IAM Key

(CKV_SECRET_7)


[HIGH] 1775-1776: IBM Cloud IAM Key

(CKV_SECRET_7)

🪛 YAMLlint (1.35.1)
.github/workflows/deploy.yml

[error] 47-47: no new line character at the end of file

(new-line-at-end-of-file)

.github/workflows/test-deploy.yml

[error] 24-24: no new line character at the end of file

(new-line-at-end-of-file)

🪛 markdownlint-cli2 (0.17.2)
README.md

5-5: Heading levels should only increment by one level at a time
Expected: h2; Actual: h3

(MD001, heading-increment)


7-7: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)


8-8: Dollar signs used before commands without showing output
null

(MD014, commands-show-output)


14-14: Dollar signs used before commands without showing output
null

(MD014, commands-show-output)


21-21: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)


22-22: Dollar signs used before commands without showing output
null

(MD014, commands-show-output)

🪛 Biome (1.9.4)
src/components/Collapse.js

[error] 20-20: Avoid passing content using the dangerouslySetInnerHTML prop.

Setting content using code can expose users to cross-site scripting (XSS) attacks

(lint/security/noDangerouslySetInnerHtml)

🔇 Additional comments (25)
genesis_files/mainnet/genesis.json (2)

1-2026: General Genesis File Review (Mainnet):
The new mainnet genesis JSON is comprehensive and follows the expected schema for a blockchain’s initial state. The metadata (genesis_time, chain_id, initial_height), the consensus parameters, and the detailed application state (covering authentication, bank, distribution, staking, etc.) all appear to be set correctly. Please verify that the values (for example, the chain_id "noble-1" and the provided parameters) match your network configuration expectations.

🧰 Tools
🪛 Checkov (3.2.334)

[HIGH] 932-933: IBM Cloud IAM Key

(CKV_SECRET_7)


[HIGH] 993-994: IBM Cloud IAM Key

(CKV_SECRET_7)


[HIGH] 1359-1360: IBM Cloud IAM Key

(CKV_SECRET_7)


[HIGH] 1420-1421: IBM Cloud IAM Key

(CKV_SECRET_7)


[HIGH] 1680-1681: IBM Cloud IAM Key

(CKV_SECRET_7)


[HIGH] 1775-1776: IBM Cloud IAM Key

(CKV_SECRET_7)


2025-2026: Final Check on File Structure:
Ensure that the final closing braces and overall JSON formatting adhere to your parser’s requirements and that no extraneous whitespace or trailing commas will cause issues during genesis file ingestion.

genesis_files/testnet/genesis.json (1)

1-1608: General Genesis File Review (Testnet):
The testnet genesis file is well structured and mirrors the comprehensive format seen in the mainnet version. Key parameters like the genesis_time, chain_id "grand-1", consensus parameters, and the detailed application state (including sections for auth, bank, staking, distribution, and more) are clearly defined. Please review the account and validator configurations for alignment with your testnet deployment objectives.

🧰 Tools
🪛 Checkov (3.2.334)

[HIGH] 724-725: IBM Cloud IAM Key

(CKV_SECRET_7)


[HIGH] 846-847: IBM Cloud IAM Key

(CKV_SECRET_7)


[HIGH] 968-969: IBM Cloud IAM Key

(CKV_SECRET_7)


[HIGH] 1273-1274: IBM Cloud IAM Key

(CKV_SECRET_7)


[HIGH] 1334-1335: IBM Cloud IAM Key

(CKV_SECRET_7)


[HIGH] 1395-1396: IBM Cloud IAM Key

(CKV_SECRET_7)

.github/workflows/test-deploy.yml (1)

1-24: Workflow Setup Looks Solid.
This new GitHub Actions workflow correctly checks out the repository, sets up Node.js (v18) with Yarn caching, installs dependencies using a frozen lockfile, and builds the website. Verify that the build command (yarn build) produces the expected results in your test environment.

🧰 Tools
🪛 YAMLlint (1.35.1)

[error] 24-24: no new line character at the end of file

(new-line-at-end-of-file)

docs/modules/cctp/index.mdx (2)

1-7: Metadata Block is Well-Defined.
The metadata header clearly lists tags and a description for the CCTP module documentation. Consider adding additional fields (e.g. an author or version) if future traceability is needed.


28-37: Image and Link References Are Correct.
The image inclusion (![](./images/cctp-high-level.png)) and references for contract addresses appear appropriate. Just ensure that the referenced image exists at the specified path and is optimized for web delivery.

src/css/custom.css (6)

1-7: Global CSS Documentation is Clear.
The file header comment explains that any CSS included here is global and outlines Infima’s integration. This provides useful context for anyone reviewing these styles.


8-16: CSS Variable Definitions Are Well-Organized.
Defining theme colors under the :root selector ensures a consistent design system throughout the application. No issues found; these values appear consistent with a standard color palette.


18-28: Dark Mode Variables Configured Appropriately.
The dark mode overrides supply lighter color values, which is beneficial for readability. Consider running an accessibility contrast check to confirm that these colors meet guidelines.


49-55: GitHub Icon Styling is Handled Well.
Both the default and dark-themed versions for .github-icon::before correctly use inline SVGs. Verify that the SVG data remains optimized and valid.


57-70: Web Icon Presentation is Consistent.
The .web-icon classes include proper background properties (positioning, size, and repeat settings) to ensure good visual rendering.


91-100: Flexbox Layout for Wallet Containers is Effective.
The flex properties applied to .wallets-container and .wallet-container provide a clear and responsive layout for wallet elements.

docs/modules/cctp/mint_forward.mdx (2)

1-5: Metadata Section is Well-Formed.
The metadata at the top provides clear tagging and a description for the document. This sets a solid foundation for the rest of the content.


167-167: Image Path Update Verified.
The use of ![](./images/cctp-e2e.png) reflects the updated directory structure correctly. Ensure the image exists at this new location and is appropriately sized.

.github/workflows/deploy.yml (2)

1-30: Build Job Configuration is Solid.
The build job properly sets up Node.js (v18), installs dependencies, builds the website, and uploads the build artifact. This structure aligns well with your deployment requirements.


31-46: Deploy Job is Configured Correctly.
The deploy job sets the necessary permissions, establishes the deployment environment, and uses the official actions/deploy-pages@v4 action. Please double-check that the build artifact path is referenced correctly downstream.

docs/modules/authority.mdx (2)

1-7: Frontmatter and Metadata: Looks Good
The frontmatter metadata (tags, description, etc.) is well structured and clear.


8-17: Component Import and Introductory Content: Approved
The import of the GitHubButton component and the introductory section are clear and correctly implemented.

docs/index.mdx (1)

1-7: Frontmatter and Page Metadata: Approved
The frontmatter (slug, title, sidebar position, etc.) is well configured and clear.

docs/running-your-own-node/full-archive.mdx (1)

1-5: Frontmatter and Document Title: Approved
The frontmatter and title information are clearly set up, making it easy to locate and reference this documentation page.

docs/governance/index.mdx (2)

1-9: Governance Overview: Clear and Comprehensive
The introductory section clearly outlines the role of the Noble Maintenance Multisig (NMM) and its core functions.


20-24: Overall Structure and Clarity: Approved
The remainder of the governance document is comprehensive and clearly outlines the structure and functionality of the NMM.

🧰 Tools
🪛 LanguageTool

[grammar] ~20-~20: Probable usage error. Use “and” after ‘both’.
Context: ...blish IBC connections that have expired as well as sever IBC connections. Any such action ...

(BOTH_AS_WELL_AS)

package.json (3)

1-15: Package Configuration Update: Well Executed
The updates to the package name, version, and the new Docusaurus-related scripts are appropriate. The scripts now support development, building, and deployment of the documentation site.


16-25: Dependencies and DevDependencies: Verify Compatibility
The dependencies have been successfully transitioned from Next.js/Nextra to Docusaurus with updated versions for React, Docusaurus core, and related packages. One point to verify: the use of "react": "^19.0.0" and "react-dom": "^19.0.0" is a major upgrade. Ensure that these versions are compatible with Docusaurus and that no breaking changes affect the documentation site.


26-44: Browserslist and Engines: Approved
The addition of the browserslist and engines fields improves clarity on supported environments. These additions are aligned with current best practices.

Comment thread docs/modules/dollar.mdx
Comment thread docs/running-your-own-node/state-sync.mdx
Comment thread src/components/Collapse.js
Comment thread src/components/Collapse.js
Comment thread src/css/custom.css Outdated
Comment thread .github/workflows/deploy.yml Outdated
Comment thread docs/modules/authority.mdx
Comment thread docs/governance/index.mdx
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

♻️ Duplicate comments (1)
docs/running-your-own-node/state-sync.mdx (1)

41-59: 🛠️ Refactor suggestion

State Sync Script Enhancement Needed.
The state_sync.sh script effectively sets up variables and automates the configuration update but lacks error handling for the external API calls. For example, if the curl request fails or returns empty data, the subsequent commands may produce invalid values. Consider adding error checking for both LATEST_HEIGHT and TRUST_HASH as shown below:

-LATEST_HEIGHT=$(curl -s $NOBLE_RPC/block | jq -r .result.block.header.height); \
+LATEST_HEIGHT=$(curl -s $NOBLE_RPC/block | jq -r .result.block.header.height)
+if [ -z "$LATEST_HEIGHT" ]; then
+  echo "Error: Failed to fetch latest block height. Check your internet connection or RPC endpoint."
+  exit 1
+fi

And similarly for TRUST_HASH.

🧹 Nitpick comments (4)
docs/running-your-own-node/state-sync.mdx (1)

68-68: Grammar Correction Needed.
The sentence "Start your node, it should be begin syncing!" contains a grammatical error. Consider revising it to "Start your node; it should begin syncing!" or "Start your node, and it should begin syncing!"

🧰 Tools
🪛 LanguageTool

[grammar] ~68-~68: There may an error in the verb form ‘be begin’.
Context: ...sync.sh Start your node, it should be begin syncing! sh nobled start ``` ⚠️ If...

(MD_BE_NON_VBP)

src/css/custom.css (3)

62-68: Web Icon Styling
The .web-icon::before rule embeds an SVG and sets properties for display, position, and size.

A minor nitpick: the background-repeat property is set to no-repeat no-repeat, which is redundant. A single no-repeat is sufficient.

Proposed diff:

-  background-repeat: no-repeat no-repeat;
+  background-repeat: no-repeat;

70-75: Dark Mode Web Icon
The dark theme block for .web-icon::before mirrors the light mode styling and correctly sets the SVG for dark backgrounds.

Similar to the light mode block, the background-repeat property is redundantly specified as no-repeat no-repeat. A single no-repeat is recommended.

Proposed diff:

-  background-repeat: no-repeat no-repeat;
+  background-repeat: no-repeat;

91-94: Hover State for Launch Express
The hover effect on .launch-express effectively changes the background color and applies -webkit-text-fill-color. For broader browser compatibility, consider also setting the standard color property if needed.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 2c55f67 and f1623a6.

⛔ Files ignored due to path filters (2)
  • static/img/banner_dark.png is excluded by !**/*.png
  • static/img/banner_light.png is excluded by !**/*.png
📒 Files selected for processing (3)
  • docs/index.mdx (1 hunks)
  • docs/running-your-own-node/state-sync.mdx (1 hunks)
  • src/css/custom.css (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • docs/index.mdx
🧰 Additional context used
🪛 LanguageTool
docs/running-your-own-node/state-sync.mdx

[grammar] ~68-~68: There may an error in the verb form ‘be begin’.
Context: ...sync.sh Start your node, it should be begin syncing! sh nobled start ``` ⚠️ If...

(MD_BE_NON_VBP)

🔇 Additional comments (25)
docs/running-your-own-node/state-sync.mdx (12)

1-5: Front Matter Metadata Looks Good.
The metadata is clearly defined with a descriptive title, summary, and the sidebar position.


7-8: Introduction Text Validity.
The introductory text succinctly explains the purpose of state sync and its benefits.


10-12: Section Header and Instruction Clarity.
The "How To" heading and the preliminary instructions are clear and direct.


14-17: Initialization Command Inconsistency.
The code block instructs:

# Note: if syncing testnet, change the chain-id to `grand-1`
nobled init <moniker> --chain-id noble-1

However, the comment indicates that for testnet the chain-id should be grand-1, while the command uses noble-1. Please verify and update the chain id as needed to prevent confusion.


19-23: Reset State Command.
The command to reset state using nobled comet unsafe-reset-all --keep-addr-book is clearly presented and correct.


25-37: Configuration File Instructions.
The instructions for modifying the config.toml file are well structured. The use of a placeholder (...) is acceptable, provided users know which sections require configuration.


39-40: Script Introduction.
The introduction to the state sync script is concise and correctly references additional information via the [^1] footnote.


61-66: Script Execution Command Verification.
The instructions and commands to set the execute permissions and run the script are accurate and clear.


70-72: Node Start Command Verification.
The command block for starting the node (nobled start) is correctly provided.


74-76: Persistent Peers Note Clarity.
The tip regarding adding peers to the persistent_peers section in the config.toml enhances troubleshooting guidance and is clearly written.


77-80: Additional Resources Section.
The "More Info" section effectively directs users to further documentation on the Cosmos SDK core, providing a valuable resource for in-depth understanding.


81-82: Reference Footnote.
The footnote [^1] is correctly formatted and provides a helpful external reference.

src/css/custom.css (13)

1-5: File Header Documentation
The introductory comment clearly explains the purpose of the file and notes that Infima is bundled by default. This is helpful for future maintenance.


7-7: Google Fonts Import
The import for the 'Play' font from Google Fonts is correctly implemented.


9-21: Global CSS Variable Declarations
The :root block effectively defines custom properties for fonts and a detailed color palette. This approach promotes consistency across the application.


23-33: Dark Mode Theme Overrides
The dark mode variables override the primary palette appropriately. Please verify that these colors satisfy accessibility contrast guidelines.


35-39: Pseudo Icon Styling
The .pseudo-icon class correctly sets the opacity, padding, and margin to style icons. Clear and concise.


41-43: Pseudo Icon Hover Effect
Increasing the opacity on hover provides a simple yet effective visual cue for interactivity.


45-52: Pseudo Icon ::before Setup
The pseudo-element is properly configured with content, dimensions, and background-repeat. Maintaining this consistency ensures a predictable icon appearance.


54-56: GitHub Icon SVG Integration
Embedding the GitHub icon SVG as a data URL is a smart choice to reduce extra HTTP requests. Ensure that the SVG remains optimized.


58-60: Dark Mode GitHub Icon
The dark mode override for the GitHub icon correctly adjusts the SVG fill for better contrast in dark themes.


77-82: Launch Express Dark Mode Styling
The styles for .launch-express in dark mode (background color, border-radius, margin, and transition) are clear. No issues were found here.


84-89: Launch Express Light Mode Styling
The light mode styling for .launch-express is consistent with its dark mode counterpart. Confirm that the color contrast between the background and text remains sufficient in all states.


96-99: Wallets Container Layout
The .wallets-container uses Flexbox with an appropriate gap to manage layout spacing, ensuring a clean and responsive design.


101-105: Wallet Container Centering
Centering of content in .wallet-container with Flexbox properties (align-items and justify-content) is implemented correctly.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (11)
docs/modules/cctp/mint.mdx (2)

3-4: Normalize YAML indentation for tags.

The tags: list is indented with four spaces; consider using two spaces for consistency with typical front-matter conventions:

-tags:
-    - USDC
+tags:
+  - USDC

11-11: Hyphenate compound adjective in header.

Change “## High level flow” to “## High-level flow” to reflect that “High-level” modifies “flow.”

🧰 Tools
🪛 LanguageTool

[uncategorized] ~11-~11: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ..., Avalanche, Optimism, or Arbitrum. ## High level flow - User calls smart contract to bu...

(EN_COMPOUND_ADJECTIVE_INTERNAL)

docs/modules/cctp/mint_forward.mdx (3)

2-4: Normalize YAML indentation for tags.

Consistent with other files, use two-space indentation for list items:

-tags: 
-    - USDC
+tags:
+  - USDC

13-13: Consistent terminology for attestation.

Here you use “issues attestations” (plural), whereas other docs say “issues attestation” (singular). For uniformity, pick one form across all CCTP docs.


52-54: Streamline phrasing in explanatory text.

“To align with the CCTP standard” reads more concisely than “In order to align ourselves with the CCTP standard”:

- In order to align ourselves with the CCTP standard, users are required...
+ To align with the CCTP standard, users are required...
🧰 Tools
🪛 LanguageTool

[style] ~53-~53: Consider a more concise word here.
Context: ...he chain funds are being forwarded to. In order to align ourselves with the CCTP standard,...

(IN_ORDER_TO_PREMIUM)

.github/workflows/spell-check.yaml (2)

20-22: Install codespell step is concise
Installing via pip install codespell is fine; consider pinning a version for reproducibility.


23-24: Add newline at end of file
YAML files should end with a newline character to satisfy new-line-at-end-of-file.

🧰 Tools
🪛 YAMLlint (1.37.1)

[error] 24-24: no new line character at the end of file

(new-line-at-end-of-file)

README.md (4)

1-4: Add alt text to logo image
Accessibility and markdownlint (MD045) require alt text on images. For example:

- <p align="center"><img src="./static/img/logo.svg" width="256" /></p>
+ <p align="center"><img src="./static/img/logo.svg" alt="Noble Chain Logo" width="256" /></p>
🧰 Tools
🪛 markdownlint-cli2 (0.17.2)

1-1: Images should have alternate text (alt text)
null

(MD045, no-alt-text)


8-9: Handle $ prompt in code blocks
Using $ without showing output triggers MD014. You can remove the prompt or add sample output:

- $ yarn
+ yarn
🧰 Tools
🪛 markdownlint-cli2 (0.17.2)

8-8: Dollar signs used before commands without showing output
null

(MD014, commands-show-output)


14-15: Handle $ prompt in code blocks
As above, consider removing the $ or including expected output:

- $ yarn start
+ yarn start
🧰 Tools
🪛 markdownlint-cli2 (0.17.2)

14-14: Dollar signs used before commands without showing output
null

(MD014, commands-show-output)


22-23: Handle $ prompt in code blocks
The same MD014 rule applies here; remove the $ prefix or show expected output:

- $ yarn build
+ yarn build
🧰 Tools
🪛 markdownlint-cli2 (0.17.2)

22-22: Dollar signs used before commands without showing output
null

(MD014, commands-show-output)

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 40b67c9 and e80f192.

📒 Files selected for processing (6)
  • .github/workflows/spell-check.yaml (1 hunks)
  • README.md (1 hunks)
  • docs/chain-upgrades/_category_.json (1 hunks)
  • docs/modules/cctp/mint.mdx (1 hunks)
  • docs/modules/cctp/mint_forward.mdx (3 hunks)
  • docs/modules/fiattokenfactory.mdx (2 hunks)
🚧 Files skipped from review as they are similar to previous changes (2)
  • docs/chain-upgrades/category.json
  • docs/modules/fiattokenfactory.mdx
🧰 Additional context used
🪛 YAMLlint (1.37.1)
.github/workflows/spell-check.yaml

[error] 24-24: no new line character at the end of file

(new-line-at-end-of-file)

🪛 markdownlint-cli2 (0.17.2)
README.md

1-1: Images should have alternate text (alt text)
null

(MD045, no-alt-text)


8-8: Dollar signs used before commands without showing output
null

(MD014, commands-show-output)


14-14: Dollar signs used before commands without showing output
null

(MD014, commands-show-output)


22-22: Dollar signs used before commands without showing output
null

(MD014, commands-show-output)

🪛 LanguageTool
docs/modules/cctp/mint.mdx

[uncategorized] ~11-~11: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ..., Avalanche, Optimism, or Arbitrum. ## High level flow - User calls smart contract to bu...

(EN_COMPOUND_ADJECTIVE_INTERNAL)

docs/modules/cctp/mint_forward.mdx

[uncategorized] ~44-~44: A punctuation mark might be missing here.
Context: ...case of the dYdX Testnet, this would be [channel-20][Testnet dYdX Channel], so *...

(AI_EN_LECTOR_MISSING_PUNCTUATION)


[style] ~53-~53: Consider a more concise word here.
Context: ...he chain funds are being forwarded to. In order to align ourselves with the CCTP standard,...

(IN_ORDER_TO_PREMIUM)

🔇 Additional comments (13)
docs/modules/cctp/mint.mdx (2)

1-6: Front-matter metadata addition looks good.

The new sidebar_position, tags, and description fields will help Docusaurus generate the sidebar and improve discoverability.


15-15: Typo fix verified.

The correction from “Cirle Iris API” to “Circle Iris API” is accurate and improves clarity.

docs/modules/cctp/mint_forward.mdx (1)

1-5: Verify presence of sidebar_position in front-matter.

Other module docs include sidebar_position to control ordering; this page’s metadata block lacks it. Please confirm that sidebars.js reflects the intended order or add sidebar_position here.

.github/workflows/spell-check.yaml (5)

1-2: Workflow name is clear
The name: Spell Check succinctly conveys the workflow’s purpose.


3-5: Workflow trigger is appropriate
Running on pull_request ensures spelling errors in documentation are caught before merging.


6-9: Job configuration looks good
Using ubuntu-latest with a single spellcheck job is adequate and keeps the workflow straightforward.


11-13: Checkout step is correctly configured
Pinning to actions/checkout@v4 will reliably pull the PR changes for linting.


15-18: Python setup step is configured correctly
Using actions/setup-python@v5 with python-version: '3.x' covers all current Python 3 releases.

README.md (5)

5-6: Installation section is clear
The "Installation" header and associated instructions are concise and easy to follow.


11-13: Local Development section is informative
The setup instructions for the development server are clear and accurate.


17-18: Live reload description is helpful
This note effectively explains that changes appear live without restarting the server.


19-20: Build section header is appropriate
The "Build" heading clearly introduces the production build instructions.


25-26: Build explanation is clear
The description succinctly covers serving the generated static site.

Copy link
Copy Markdown
Contributor

@0xstepit 0xstepit left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is an amazing work @boojamya! I believe there are a couple of things we could improve to better align the style with our website, and add more context to the sections you created. But anyways, this is great and I will merge it ASAP son we can start creating PRs on top of this new base! 🚀

Copy link
Copy Markdown
Contributor

@MalteHerrmann MalteHerrmann left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Awesome work!! Thanks so much for tackling this -- I left a bunch of comments but most of them are for myself to apply on a follow-up PR. I talked to John and Stefano and we're happy to merge this as-is and then do follow up improvements going forward.

Comment thread .github/workflows/deploy.yml Outdated
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: rename to .yaml to align with other CI and enable a proper diff between the setup actions

Comment thread .github/workflows/deploy.yml Outdated
Comment on lines +18 to +19
node-version: 18
cache: yarn
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

node 18 seems pretty out of date no? 🤔

Comment on lines +18 to +19
node-version: 18
cache: yarn
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ditto, why the old node version?

Comment on lines +1 to +10
name: Test deployment

on:
pull_request:
branches:
- main

jobs:
test-deploy:
name: Test deployment
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit, we're not really testing the deployment here, would prefer renaming to build

Suggested change
name: Test deployment
on:
pull_request:
branches:
- main
jobs:
test-deploy:
name: Test deployment
name: Build docs
on:
pull_request:
branches:
- main
jobs:
build:
name: Build docs

@@ -0,0 +1,36 @@
---
title: Mainnet
description: ""
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
description: ""
description: "Presents an overview of Noble mainnet upgrades."

Comment thread docs/wallets.mdx
Comment on lines +7 to +9
## Non-custodial:

<div className="wallets-container">
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

add some more text here

Comment thread docusaurus.config.js
Comment on lines +64 to +65
// Replace with your project's social card
image: 'img/docusaurus-social-card.jpg',
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is this a TODO:?

Using [Mintscan](https://mintscan.io/noble), you can easily find the user's account. Typically, this transaction should be on the first page of the user's address activity on a block explorer such as Mintscan.

![](./troubleshoot1:9.png)
![](./images/troubleshoot1:9.png)
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should definitely be screen captured with higher res

Comment thread docs/modules/index.mdx

Noble is built on top of the [Cosmos SDK](https://docs.cosmos.network/), which is a modular framework for building application-specific blockchains.

Below is the list of custom modules and middleware that are implemented in ✨Noble✨.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Below is the list of custom modules and middleware that are implemented in ✨Noble✨.
Below is the list of custom modules and middlewares that are implemented in ✨Noble✨.

Comment thread docs/jester/faq.mdx
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this can go on the index.mdx, two half full pages should a good full one :)

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 5

🧹 Nitpick comments (7)
docs/modules/cctp/index.mdx (7)

1-6: Add explicit title and ordering metadata for consistency and sidebar control.
Include title and (optionally) sidebar_position to ensure predictable nav ordering and SEO.

 ---
 tags: 
     - Module
     - USDC
-description: Circle's Cross-Chain Transfer Protocol (CCTP) module
+title: Circle CCTP (x/cctp)
+description: Circle's Cross-Chain Transfer Protocol (CCTP) module for Noble
+sidebar_position: 1
 ---

12-15: Minor heading polish.
Consider using a human-readable H1 while keeping the module path in the subtitle for clarity.

-# x/cctp
+# Circle CCTP
+
+_Module path: `x/cctp`_

19-21: Tighten copy and ensure the reference link renders as intended.
Small grammar touch-up; also make the bracketed text the actual link text.

-CCTP is Circle's [Cross-Chain Transfer Protocol] which primarily allows users to burn USDC tokens on one chain and mint them on another. It additionally allows general message passing.
+CCTP is Circle’s [Cross-Chain Transfer Protocol], enabling users to burn USDC on one chain and mint it on another. It also supports general message passing.

23-27: Numbered steps: add periods for consistency.
Punctuation improves readability in docs.

-1. User burns funds on source chain
-2. A Circle service observes and attests to this message
-3. Either the user or a third party relays the message and attestation to the destination chain
-4. User receives minted funds on destination chain
+1. User burns funds on source chain.
+2. A Circle service observes and attests to this message.
+3. Either the user or a third party relays the message and attestation to the destination chain.
+4. User receives minted funds on destination chain.

35-47: Verify mainnet addresses and domain IDs; consider linking each chain name to the authoritative docs.
These are high-risk to drift. Recommend cross-check and optionally annotate which artifact each address is for.

Would you like me to add per-row labels (e.g., “MessageTransmitter”) and deep links to the exact section in Circle docs once confirmed?


35-62: Optional: collapse long address tables to reduce page noise.
Improves scannability on mobile.

-### Mainnet
+<details>
+<summary><strong>Mainnet addresses</strong></summary>
+
+### Mainnet
@@
-### Testnet
+### Testnet
@@
-| Unichain Sepolia  |   10   | [0x8ed94B8dAd2Dc5453862ea5e316A8e71AAed9782](https://unichain-sepolia.blockscout.com/address/0x8ed94B8dAd2Dc5453862ea5e316A8e71AAed9782)  |
+| Unichain Sepolia  |   10   | [0x8ed94B8dAd2Dc5453862ea5e316A8e71AAed9782](https://unichain-sepolia.blockscout.com/address/0x8ed94B8dAd2Dc5453862ea5e316A8e71AAed9782)  |
+
+</details>

30-33: Add an admonition to encourage verification before use in production.
Reduce support load by setting expectations.

 Below are the primary CCTP endpoints by chain:
@@
 Note: Addresses can change. Always verify against Circle’s official docs before using in production.
 For a full overview of all CCTP deployments refer to [Circle's official documentation].
+
+:::tip
+Before deploying, verify the domain ID and address against Circle’s docs and a block explorer. Contracts/programs may be upgraded or re-deployed.
+:::
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

💡 Knowledge Base configuration:

  • MCP integration is disabled by default for public repositories
  • Jira integration is disabled by default for public repositories
  • Linear integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between e80f192 and 980427f.

📒 Files selected for processing (1)
  • docs/modules/cctp/index.mdx (1 hunks)
🧰 Additional context used
🪛 LanguageTool
docs/modules/cctp/index.mdx

[grammar] ~8-~8: There might be a mistake here.
Context: ...rom '@site/src/components/GitHubButton'; import DocCardList from '@theme/DocCardL...

(QB_NEW_EN)

🔇 Additional comments (3)
docs/modules/cctp/index.mdx (3)

8-9: Imports look correct for Docusaurus v2.
Using theme DocCardList and a local GitHubButton is standard for category index pages.


65-65: DocCardList placement LGTM.
This will render child docs as cards under the index page.


35-62: Double-check repeated testnet address reuse across chains.
Same address appears for multiple Sepolia networks; may be intentional (CREATE2) or a copy-paste slip.

If intentional, add a footnote explaining why the same address is used across chains to avoid confusion.

Comment on lines +1 to +68
---
tags:
- Module
- USDC
description: Circle's Cross-Chain Transfer Protocol (CCTP) module
---

import GitHubButton from '@site/src/components/GitHubButton';
import DocCardList from '@theme/DocCardList';


# x/cctp

<GitHubButton repoUrl="https://github.com/circlefin/noble-cctp"/>


## What is CCTP?

CCTP is Circle's [Cross-Chain Transfer Protocol] which primarily allows users to burn USDC tokens on one chain and mint them on another. It additionally allows general message passing.

The simple transfer flow is the same for every source/destination chain route:

1. User burns funds on source chain
2. A Circle service observes and attests to this message
3. Either the user or a third party relays the message and attestation to the destination chain
4. User receives minted funds on destination chain

![](./images/cctp-high-level.png)

Below you can find a list of relevant CCTP contract addresses.
For a full overview of all CCTP deployments refer to [Circle's official documentation].

### Mainnet

| Chain | Domain | Address |
| :-------- | :----: | ------: |
| Ethereum | 0 | [0xbd3fa81b58ba92a82136038b25adec7066af3155](https://etherscan.io/address/0xbd3fa81b58ba92a82136038b25adec7066af3155) |
| Avalanche | 1 | [0x6b25532e1060ce10cc3b0a99e5683b91bfde6982](https://snowtrace.io/address/0x6b25532e1060ce10cc3b0a99e5683b91bfde6982) |
| OP Mainnet | 2 | [0x2B4069517957735bE00ceE0fadAE88a26365528f](https://optimistic.etherscan.io/address/0x2b4069517957735be00cee0fadae88a26365528f) |
| Arbitrum | 3 | [0x19330d10D9Cc8751218eaf51E8885D058642E08A](https://arbiscan.io/address/0x19330d10D9Cc8751218eaf51E8885D058642E08A) |
| Solana | 5 | [CCTPiPYPc6AsJuwueEnWgSgucamXDZwBd53dQ11YiKX3](https://solscan.io/account/CCTPiPYPc6AsJuwueEnWgSgucamXDZwBd53dQ11YiKX3) |
| Base | 6 | [0x1682Ae6375C4E4A97e4B583BC394c861A46D8962](https://basescan.org/address/0x1682Ae6375C4E4A97e4B583BC394c861A46D8962) |
| Polygon PoS | 7 | [0x9daF8c91AEFAE50b9c0E69629D3F6Ca40cA3B3FE](https://polygonscan.com/address/0x9daf8c91aefae50b9c0e69629d3f6ca40ca3b3fe) |
| Sui | 8 | [0x2aa6c5d56376c371f88a6cc42e852824994993cb9bab8d3e6450cbe3cb32b94e](https://suiscan.xyz/mainnet/object/0x2aa6c5d56376c371f88a6cc42e852824994993cb9bab8d3e6450cbe3cb32b94e/tx-blocks) |
| Aptos | 9 | [0x9bce6734f7b63e835108e3bd8c36743d4709fe435f44791918801d0989640a9d](https://explorer.aptoslabs.com/account/0x9bce6734f7b63e835108e3bd8c36743d4709fe435f44791918801d0989640a9d/transactions?network=mainnet) |
| Unichain | 10 | [0x4e744b28E787c3aD0e810eD65A24461D4ac5a762](https://uniscan.xyz/address/0x4e744b28E787c3aD0e810eD65A24461D4ac5a762) |

### Testnet

| Chain | Domain | Address |
| :-------- | :----: | ------: |
| Ethereum Sepolia | 0 | [0x9f3B8679c73C2Fef8b59B4f3444d4e156fb70AA5](https://sepolia.etherscan.io/address/0x9f3B8679c73C2Fef8b59B4f3444d4e156fb70AA5) |
| Avalanche Fuji | 1 | [0xeb08f243E5d3FCFF26A9E38Ae5520A669f4019d0](https://testnet.snowtrace.io/address/0xeb08f243e5d3fcff26a9e38ae5520a669f4019d0) |
| OP Sepolia | 2 | [0x9f3B8679c73C2Fef8b59B4f3444d4e156fb70AA5](https://sepolia-optimism.etherscan.io/address/0x9f3b8679c73c2fef8b59b4f3444d4e156fb70aa5) |
| Arbitrum Sepolia | 3 | [0x9f3B8679c73C2Fef8b59B4f3444d4e156fb70AA5](https://sepolia.arbiscan.io/address/0x9f3b8679c73c2fef8b59b4f3444d4e156fb70aa5) |
| Solana Devnet | 5 | [CCTPiPYPc6AsJuwueEnWgSgucamXDZwBd53dQ11YiKX3](https://solscan.io/account/CCTPiPYPc6AsJuwueEnWgSgucamXDZwBd53dQ11YiKX3) |
| Base Sepolia | 6 | [0x9f3B8679c73C2Fef8b59B4f3444d4e156fb70AA5](https://base-sepolia.blockscout.com/address/0x9f3B8679c73C2Fef8b59B4f3444d4e156fb70AA5) |
| Polygon PoS Amoy | 7 | [0x9f3B8679c73C2Fef8b59B4f3444d4e156fb70AA5](https://www.oklink.com/amoy/address/0x9f3b8679c73c2fef8b59b4f3444d4e156fb70aa5) |
| Sui Testnet | 8 | 0x31cc14d80c175ae39777c0238f20594c6d4869cfab199f40b69f3319956b8beb |
| Aptos Testnet | 9 | 0x5f9b937419dda90aa06c1836b7847f65bbbe3f1217567758dc2488be31a477b9 |
| Unichain Sepolia | 10 | [0x8ed94B8dAd2Dc5453862ea5e316A8e71AAed9782](https://unichain-sepolia.blockscout.com/address/0x8ed94B8dAd2Dc5453862ea5e316A8e71AAed9782) |

---

<DocCardList />

[Cross-Chain Transfer Protocol]: https://www.circle.com/cross-chain-transfer-protocol
[Circle's official documentation]: https://developers.circle.com/stablecoins/evm-smart-contracts No newline at end of file
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Verification agent

🧩 Analysis chain

Offer to run a quick external verification of addresses and domain IDs.
I can prepare a checklist against Circle’s docs and explorers.


🌐 Web query:

Find Circle’s official CCTP “Contract addresses” documentation and confirm the MessageTransmitter (and, where relevant, TokenMessenger/Program IDs) for: Ethereum, Avalanche, OP Mainnet, Arbitrum, Solana, Base, Polygon PoS, Sui, Aptos, Unichain, and the listed testnets (Sepolia, Fuji, OP/Arb Sepolia, Solana Devnet, Base Sepolia, Amoy, Sui/Aptos testnets, Unichain Sepolia). Also confirm the domain ID mapping (0..10).

💡 Result:

Summary (sources: Circle docs)

Domain ID mapping (0–10)

  • 0 = Ethereum. [1][6]
  • 1 = Avalanche. [1][6]
  • 2 = OP (Optimism). [1][6]
  • 3 = Arbitrum. [1][6]
  • 4 = (no Circle CCTP domain listed / unused). [6]
  • 5 = Solana. [3][6]
  • 6 = Base. [1][2]
  • 7 = Polygon PoS. [1][2]
  • 8 = Sui. [4]
  • 9 = Aptos. [5]
  • 10 = Unichain. [1][2]

Contract / program addresses (as published by Circle)

EVM chains — TokenMessenger (CCTP V1) and MessageTransmitter (CCTP V1) / TokenMessengerV2 note

  • Ethereum (domain 0)
    • TokenMessenger (V1): 0xBd3fa81B58Ba92a82136038B25aDec7066af3155. [1]
    • MessageTransmitter (V1): 0x0a992d191deec32afe36203ad87d7d289a738f81. [2]
    • (V2 TokenMessengerV2 shared addr shown on Circle docs). [1][2]
  • Avalanche (domain 1)
    • TokenMessenger (V1): 0x6B25532e1060CE10cc3B0A99e5683b91BFDe6982. [1]
    • MessageTransmitter (V1): 0x8186359af5f57fbb40c6b14a588d2a59c0c29880. [2]
  • OP Mainnet (domain 2)
    • TokenMessenger (V1): 0x2B4069517957735bE00ceE0fadAE88a26365528f. [1]
    • MessageTransmitter (V1): 0x4d41f22c5a0e5c74090899e5a8fb597a8842b3e8. [2]
  • Arbitrum (domain 3)
    • TokenMessenger (V1): 0x19330d10D9Cc8751218eaf51E8885D058642E08A. [1]
    • MessageTransmitter (V1): 0xC30362313FBBA5cf9163F0bb16a0e01f01A896ca. [2]
  • Base (domain 6)
    • TokenMessenger (V1): 0x1682Ae6375C4E4A97e4B583BC394c861A46D8962. [1]
    • MessageTransmitter (V1): 0xAD09780d193884d503182aD4588450C416D6F9D4. [2]
  • Polygon PoS (domain 7)
    • TokenMessenger (V1): 0x9daF8c91AEFAE50b9c0E69629D3F6Ca40cA3B3FE. [1]
    • (MessageTransmitter V1 address listed in protocol docs or V2 shared address; see Circle pages). [1][2]
  • Unichain (domain 10)
    • TokenMessenger (V1): 0x4e744b28E787c3aD0e810eD65A24461D4ac5a762. [1]
    • (MessageTransmitter / V2 addresses: see Circle EVM pages). [1][2]

Note on CCTP V2: Circle documents a single TokenMessengerV2 address used across many EVM mainnets (0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d in Circle docs) — see EVM V2 page. [2]

Non-EVM chains / programs

  • Solana (domain 5)
    • MessageTransmitter program: CCTPmbSD7gX1bxKPAmg77w8oFzNFpaQiQUWD43TKaecd.
    • TokenMessengerMinter program: CCTPiPYPc6AsJuwueEnWgSgucamXDZwBd53dQ11YiKX3. [3]
  • Sui (domain 8)
    • MessageTransmitter package (mainnet): 0x08d87d37ba49e785dde270a83f8e979605b03dc552b5548f26fdf2f49bf7ed1b.
    • TokenMessengerMinter package (mainnet): 0x2aa6c5d56376c371f88a6cc42e852824994993cb9bab8d3e6450cbe3cb32b94e. [4]
    • (Testnet package IDs also published). [4]
  • Aptos (domain 9)
    • MessageTransmitter package (mainnet): 0x177e17751820e4b4371873ca8c30279be63bdea63b88ed0f2239c2eea10f1772.
    • TokenMessengerMinter package (mainnet): 0x9bce6734f7b63e835108e3bd8c36743d4709fe435f44791918801d0989640a9d. [5]
    • (Testnet package / object IDs are published separately). [5]

Testnets (as listed by Circle)

  • Ethereum Sepolia (domain 0): Message/MessageTransmitter testnet addresses published. Example Sepolia MessageTransmitter: 0x80537e4e8bAb73D21096baa3a8c813b45CA0b7c9. [1]
  • Avalanche Fuji (domain 1): 0xeAf1DB5E3eb86FEbD8080368a956622b62Dcb78f (Message testnet). [1]
  • OP Sepolia (domain 2): 0xffbeA106ce4A3CdAfcC82BAebeD78C81814e32Ed (Message testnet). [1]
  • Arbitrum Sepolia (domain 3): 0x70fAB9868cd54E12C7d87196424d6E0ca21be534 (Message testnet). [1]
  • Base Sepolia (domain 6): 0x8E52a9e76148185536F0f0779749Cc895E5f70dC (Message testnet). [1]
  • Polygon PoS Amoy (domain 7): (testnet Message address listed — same as Base Sepolia in Circle docs). [1]
  • Solana Devnet (domain 5): Solana devnet programs match mainnet program IDs (Circle publishes devnet IDs). [3]
  • Sui / Aptos testnets: Circle publishes package IDs for testnets (see Sui/Aptos pages). [4][5]
  • Unichain Sepolia (domain 10): 0x1Fae490d95dDcFFD70728AF5024C524ed303a2e3 (Message testnet). [1]

References (Circle docs)

  • CCTP EVM contracts & addresses (TokenMessenger / TokenMessengerV2): Circle developers pages. [1][2]
  • Protocol Contracts — MessageTransmitter / TokenMinter addresses: Circle protocol docs. [2]
  • Solana CCTP Programs (mainnet/devnet program IDs): Circle Solana docs. [3]
  • Sui package IDs (mainnet & testnet): Circle Sui docs. [4]
  • Aptos package & object IDs (mainnet & testnet): Circle Aptos docs. [5]
  • Supported chains & domain listing: Circle supported blockchains / domain mapping. [6]

If you want, I can export this as a CSV or paste a per-chain single-line table with the exact addresses and the specific Circle doc links for each entry.


Fix CCTP testnet addresses & add missing MessageTransmitter program IDs

  • In docs/modules/cctp/index.mdx Testnet table, replace the placeholder 0x9f3B86… entries for Ethereum Sepolia (0), OP Sepolia (2), Arbitrum Sepolia (3), Base Sepolia (6) and Polygon PoS Amoy (7) with their actual MessageTransmitter V1 addresses:
    • Ethereum Sepolia: 0x80537e4e8bAb73D21096baa3a8c813b45CA0b7c9
    • OP Sepolia: 0xffbeA106ce4A3CdAfcC82BAebeD78C81814e32Ed
    • Arbitrum Sepolia: 0x70fAB9868cd54E12C7d87196424d6E0ca21be534
    • Base Sepolia & Polygon PoS Amoy: 0x8E52a9e76148185536F0f0779749Cc895E5f70dC
  • Replace Unichain Sepolia (10) with 0x1Fae490d95dDcFFD70728AF5024C524ed303a2e3
  • Confirm & update Sui (8) and Aptos (9) testnet package/object IDs against Circle’s published testnet values
  • Add Solana MessageTransmitter program ID (CCTPmbSD7gX1bxKPAmg77w8oFzNFpaQiQUWD43TKaecd) alongside the existing TokenMessengerMinter program ID
🧰 Tools
🪛 LanguageTool

[grammar] ~8-~8: There might be a mistake here.
Context: ...rom '@site/src/components/GitHubButton'; import DocCardList from '@theme/DocCardL...

(QB_NEW_EN)

🤖 Prompt for AI Agents
In docs/modules/cctp/index.mdx lines 1–68, the Testnet table contains
placeholder/incorrect addresses and is missing MessageTransmitter program IDs;
replace the 0x9f3B86… placeholders for Ethereum Sepolia (0), OP Sepolia (2),
Arbitrum Sepolia (3), Base Sepolia (6) and Polygon PoS Amoy (7) with the
provided MessageTransmitter V1 addresses (Ethereum Sepolia:
0x80537e4e8bAb73D21096baa3a8c813b45CA0b7c9; OP Sepolia:
0xffbeA106ce4A3CdAfcC82BAebeD78C81814e32Ed; Arbitrum Sepolia:
0x70fAB9868cd54E12C7d87196424d6E0ca21be534; Base Sepolia & Polygon PoS Amoy:
0x8E52a9e76148185536F0f0779749Cc895E5f70dC), replace Unichain Sepolia (10) with
0x1Fae490d95dDcFFD70728AF5024C524ed303a2e3, verify and update Sui (8) and Aptos
(9) testnet package/object IDs to match Circle’s published testnet values, and
add the Solana MessageTransmitter program ID
(CCTPmbSD7gX1bxKPAmg77w8oFzNFpaQiQUWD43TKaecd) next to the existing
TokenMessengerMinter entry in the Solana row.

3. Either the user or a third party relays the message and attestation to the destination chain
4. User receives minted funds on destination chain

![](./images/cctp-high-level.png)
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Add descriptive alt text for accessibility.
Empty alt text harms screen-reader users.

-![](./images/cctp-high-level.png)
+![CCTP high-level transfer flow](./images/cctp-high-level.png)
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
![](./images/cctp-high-level.png)
![CCTP high-level transfer flow](./images/cctp-high-level.png)
🤖 Prompt for AI Agents
In docs/modules/cctp/index.mdx around line 28, the image tag uses an empty alt
attribute which is inaccessible; replace the current markdown image line with
one that includes a concise, descriptive alt text summarizing the image (e.g.,
"CCTP high-level architecture diagram showing token bridge flow between chains
and relayer components") so screen readers can convey the content, and ensure
the alt text focuses on the essential visual information rather than decorative
details.

Comment on lines +30 to +33
Below you can find a list of relevant CCTP contract addresses.
For a full overview of all CCTP deployments refer to [Circle's official documentation].

### Mainnet
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Verification agent

❓ Verification inconclusive

Clarify which contract/program each address refers to and warn about staleness.
Without naming (MessageTransmitter, TokenMessenger, Program ID, etc.), readers can misapply addresses. Also, these can change; add a maintenance note.

-Below you can find a list of relevant CCTP contract addresses.
-For a full overview of all CCTP deployments refer to [Circle's official documentation].
+Below are the primary CCTP endpoints by chain:
+
+- EVM chains: `MessageTransmitter` contract address unless otherwise noted.
+- Solana: Program ID.
+- Sui/Aptos: Package/Object/Module identifiers as documented by Circle.
+
+Note: Addresses can change. Always verify against Circle’s official docs before using in production.
+For a full overview of all CCTP deployments refer to [Circle's official documentation].

Specify contract/program names and add staleness notice
docs/modules/cctp/index.mdx L30–33

  • Label each address by component (EVM: MessageTransmitter, Solana: Program ID, Sui/Aptos: package/module ID).
  • Add note: “Addresses may change – always verify against Circle’s official documentation before use.”
🤖 Prompt for AI Agents
docs/modules/cctp/index.mdx lines 30–33: Update the Mainnet addresses list to
label each entry by chain and component (e.g., EVM: MessageTransmitter, Solana:
Program ID, Sui/Aptos: package/module ID) so readers know what each address
represents, and add a staleness notice line saying “Addresses may change –
always verify against Circle’s official documentation before use.” Place the
notice prominently above or below the list and ensure each address line follows
the pattern "<Chain>: <Component>: <Address>" for clarity.

Comment on lines +48 to +62
### Testnet

| Chain | Domain | Address |
| :-------- | :----: | ------: |
| Ethereum Sepolia | 0 | [0x9f3B8679c73C2Fef8b59B4f3444d4e156fb70AA5](https://sepolia.etherscan.io/address/0x9f3B8679c73C2Fef8b59B4f3444d4e156fb70AA5) |
| Avalanche Fuji | 1 | [0xeb08f243E5d3FCFF26A9E38Ae5520A669f4019d0](https://testnet.snowtrace.io/address/0xeb08f243e5d3fcff26a9e38ae5520a669f4019d0) |
| OP Sepolia | 2 | [0x9f3B8679c73C2Fef8b59B4f3444d4e156fb70AA5](https://sepolia-optimism.etherscan.io/address/0x9f3b8679c73c2fef8b59b4f3444d4e156fb70aa5) |
| Arbitrum Sepolia | 3 | [0x9f3B8679c73C2Fef8b59B4f3444d4e156fb70AA5](https://sepolia.arbiscan.io/address/0x9f3b8679c73c2fef8b59b4f3444d4e156fb70aa5) |
| Solana Devnet | 5 | [CCTPiPYPc6AsJuwueEnWgSgucamXDZwBd53dQ11YiKX3](https://solscan.io/account/CCTPiPYPc6AsJuwueEnWgSgucamXDZwBd53dQ11YiKX3) |
| Base Sepolia | 6 | [0x9f3B8679c73C2Fef8b59B4f3444d4e156fb70AA5](https://base-sepolia.blockscout.com/address/0x9f3B8679c73C2Fef8b59B4f3444d4e156fb70AA5) |
| Polygon PoS Amoy | 7 | [0x9f3B8679c73C2Fef8b59B4f3444d4e156fb70AA5](https://www.oklink.com/amoy/address/0x9f3b8679c73c2fef8b59b4f3444d4e156fb70aa5) |
| Sui Testnet | 8 | 0x31cc14d80c175ae39777c0238f20594c6d4869cfab199f40b69f3319956b8beb |
| Aptos Testnet | 9 | 0x5f9b937419dda90aa06c1836b7847f65bbbe3f1217567758dc2488be31a477b9 |
| Unichain Sepolia | 10 | [0x8ed94B8dAd2Dc5453862ea5e316A8e71AAed9782](https://unichain-sepolia.blockscout.com/address/0x8ed94B8dAd2Dc5453862ea5e316A8e71AAed9782) |

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Fix Solana Devnet explorer link and standardize Sui/Aptos testnet links.

  • Solana Devnet links should include the cluster query.
  • Turn Sui/Aptos testnet entries into clickable explorer links for parity with others.
-| Solana Devnet     |   5    | [CCTPiPYPc6AsJuwueEnWgSgucamXDZwBd53dQ11YiKX3](https://solscan.io/account/CCTPiPYPc6AsJuwueEnWgSgucamXDZwBd53dQ11YiKX3)                   |
+| Solana Devnet     |   5    | [CCTPiPYPc6AsJuwueEnWgSgucamXDZwBd53dQ11YiKX3](https://solscan.io/account/CCTPiPYPc6AsJuwueEnWgSgucamXDZwBd53dQ11YiKX3?cluster=devnet)       |
-| Sui Testnet       |   8    | 0x31cc14d80c175ae39777c0238f20594c6d4869cfab199f40b69f3319956b8beb                                                                        |
-| Aptos Testnet     |   9    | 0x5f9b937419dda90aa06c1836b7847f65bbbe3f1217567758dc2488be31a477b9                                                                        |
+| Sui Testnet       |   8    | [0x31cc14d80c175ae39777c0238f20594c6d4869cfab199f40b69f3319956b8beb](https://suiscan.xyz/testnet/object/0x31cc14d80c175ae39777c0238f20594c6d4869cfab199f40b69f3319956b8beb) |
+| Aptos Testnet     |   9    | [0x5f9b937419dda90aa06c1836b7847f65bbbe3f1217567758dc2488be31a477b9](https://explorer.aptoslabs.com/account/0x5f9b937419dda90aa06c1836b7847f65bbbe3f1217567758dc2488be31a477b9?network=testnet) |
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
### Testnet
| Chain | Domain | Address |
| :-------- | :----: | ------: |
| Ethereum Sepolia | 0 | [0x9f3B8679c73C2Fef8b59B4f3444d4e156fb70AA5](https://sepolia.etherscan.io/address/0x9f3B8679c73C2Fef8b59B4f3444d4e156fb70AA5) |
| Avalanche Fuji | 1 | [0xeb08f243E5d3FCFF26A9E38Ae5520A669f4019d0](https://testnet.snowtrace.io/address/0xeb08f243e5d3fcff26a9e38ae5520a669f4019d0) |
| OP Sepolia | 2 | [0x9f3B8679c73C2Fef8b59B4f3444d4e156fb70AA5](https://sepolia-optimism.etherscan.io/address/0x9f3b8679c73c2fef8b59b4f3444d4e156fb70aa5) |
| Arbitrum Sepolia | 3 | [0x9f3B8679c73C2Fef8b59B4f3444d4e156fb70AA5](https://sepolia.arbiscan.io/address/0x9f3b8679c73c2fef8b59b4f3444d4e156fb70aa5) |
| Solana Devnet | 5 | [CCTPiPYPc6AsJuwueEnWgSgucamXDZwBd53dQ11YiKX3](https://solscan.io/account/CCTPiPYPc6AsJuwueEnWgSgucamXDZwBd53dQ11YiKX3) |
| Base Sepolia | 6 | [0x9f3B8679c73C2Fef8b59B4f3444d4e156fb70AA5](https://base-sepolia.blockscout.com/address/0x9f3B8679c73C2Fef8b59B4f3444d4e156fb70AA5) |
| Polygon PoS Amoy | 7 | [0x9f3B8679c73C2Fef8b59B4f3444d4e156fb70AA5](https://www.oklink.com/amoy/address/0x9f3b8679c73c2fef8b59b4f3444d4e156fb70aa5) |
| Sui Testnet | 8 | 0x31cc14d80c175ae39777c0238f20594c6d4869cfab199f40b69f3319956b8beb |
| Aptos Testnet | 9 | 0x5f9b937419dda90aa06c1836b7847f65bbbe3f1217567758dc2488be31a477b9 |
| Unichain Sepolia | 10 | [0x8ed94B8dAd2Dc5453862ea5e316A8e71AAed9782](https://unichain-sepolia.blockscout.com/address/0x8ed94B8dAd2Dc5453862ea5e316A8e71AAed9782) |
### Testnet
| Chain | Domain | Address |
| :-------- | :----: | ------: |
| Ethereum Sepolia | 0 | [0x9f3B8679c73C2Fef8b59B4f3444d4e156fb70AA5](https://sepolia.etherscan.io/address/0x9f3B8679c73C2Fef8b59B4f3444d4e156fb70AA5) |
| Avalanche Fuji | 1 | [0xeb08f243E5d3FCFF26A9E38Ae5520A669f4019d0](https://testnet.snowtrace.io/address/0xeb08f243e5d3fcff26a9e38ae5520a669f4019d0) |
| OP Sepolia | 2 | [0x9f3B8679c73C2Fef8b59B4f3444d4e156fb70AA5](https://sepolia-optimism.etherscan.io/address/0x9f3b8679c73c2fef8b59b4f3444d4e156fb70aa5) |
| Arbitrum Sepolia | 3 | [0x9f3B8679c73C2Fef8b59B4f3444d4e156fb70AA5](https://sepolia.arbiscan.io/address/0x9f3b8679c73c2fef8b59b4f3444d4e156fb70aa5) |
| Solana Devnet | 5 | [CCTPiPYPc6AsJuwueEnWgSgucamXDZwBd53dQ11YiKX3](https://solscan.io/account/CCTPiPYPc6AsJuwueEnWgSgucamXDZwBd53dQ11YiKX3?cluster=devnet) |
| Base Sepolia | 6 | [0x9f3B8679c73C2Fef8b59B4f3444d4e156fb70AA5](https://base-sepolia.blockscout.com/address/0x9f3B8679c73C2Fef8b59B4f3444d4e156fb70aa5) |
| Polygon PoS Amoy | 7 | [0x9f3B8679c73C2Fef8b59B4f3444d4e156fb70AA5](https://www.oklink.com/amoy/address/0x9f3b8679c73c2fef8b59b4f3444d4e156fb70aa5) |
| Sui Testnet | 8 | [0x31cc14d80c175ae39777c0238f20594c6d4869cfab199f40b69f3319956b8beb](https://suiscan.xyz/testnet/object/0x31cc14d80c175ae39777c0238f20594c6d4869cfab199f40b69f3319956b8beb) |
| Aptos Testnet | 9 | [0x5f9b937419dda90aa06c1836b7847f65bbbe3f1217567758dc2488be31a477b9](https://explorer.aptoslabs.com/account/0x5f9b937419dda90aa06c1836b7847f65bbbe3f1217567758dc2488be31a477b9?network=testnet) |
| Unichain Sepolia | 10 | [0x8ed94B8dAd2Dc5453862ea5e316A8e71AAed9782](https://unichain-sepolia.blockscout.com/address/0x8ed94B8dAd2Dc5453862ea5e316A8e71AAed9782) |
🤖 Prompt for AI Agents
In docs/modules/cctp/index.mdx around lines 48 to 62, the Solana Devnet row uses
a plain Solscan account link without the cluster query and Sui/Aptos rows are
plain addresses; update them to clickable explorer links for consistency:
replace the Solana link with Solscan including the cluster query parameter (e.g.
https://solscan.io/account/<SOL_ADDR>?cluster=devnet), convert the Sui Testnet
address into a clickable Sui explorer URL (e.g.
https://explorer.sui.io/address/<SUI_ADDR>?network=testnet or the project’s
preferred Sui explorer), and convert the Aptos Testnet address into a clickable
Aptos explorer URL (e.g.
https://explorer.aptoslabs.com/account/<APTOS_ADDR>?network=testnet), preserving
the same markdown table formatting and the visible short addresses.

Comment on lines +67 to +68
[Cross-Chain Transfer Protocol]: https://www.circle.com/cross-chain-transfer-protocol
[Circle's official documentation]: https://developers.circle.com/stablecoins/evm-smart-contracts No newline at end of file
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Verification agent

🧩 Analysis chain

Point reference link to Circle’s CCTP page (contract addresses section).
The current target (“evm-smart-contracts”) isn’t the canonical CCTP addresses page.

-[Circle's official documentation]: https://developers.circle.com/stablecoins/evm-smart-contracts
+[Circle's official documentation]: https://developers.circle.com/stablecoins/docs/cross-chain-transfer-protocol

If Circle has a dedicated “Contract addresses” anchor, link directly to it.


🏁 Script executed:

# Print the relevant lines around the documentation links in the CCTP index
sed -n '60,80p' docs/modules/cctp/index.mdx

Length of output: 591


Update Circle’s official documentation link to the canonical CCTP contract addresses page. Change it from the stablecoins path to the CCTP EVM Contracts and Interfaces URL for the authoritative Mainnet addresses (developers.circle.com)

-[Circle's official documentation]: https://developers.circle.com/stablecoins/evm-smart-contracts
+[Circle's official documentation]: https://developers.circle.com/cctp/evm-smart-contracts
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
[Cross-Chain Transfer Protocol]: https://www.circle.com/cross-chain-transfer-protocol
[Circle's official documentation]: https://developers.circle.com/stablecoins/evm-smart-contracts
[Cross-Chain Transfer Protocol]: https://www.circle.com/cross-chain-transfer-protocol
[Circle's official documentation]: https://developers.circle.com/cctp/evm-smart-contracts
🤖 Prompt for AI Agents
In docs/modules/cctp/index.mdx around lines 67 to 68, the "Circle's official
documentation" link currently points to the stablecoins path; update its URL to
the canonical CCTP EVM Contracts and Interfaces page
(https://developers.circle.com/cctp/evm-smart-contracts) so it references the
authoritative Mainnet contract addresses. Replace the existing link target with
the new CCTP URL and keep the link text unchanged.

@MalteHerrmann MalteHerrmann merged commit 6a65477 into main Sep 4, 2025
3 checks passed
This was referenced Sep 4, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants