Skip to content

Commit bc03454

Browse files
committed
update
1 parent 63d0706 commit bc03454

File tree

8 files changed

+1088
-1052
lines changed

8 files changed

+1088
-1052
lines changed

src/config/sidebar.ts

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1151,6 +1151,10 @@ export const SIDEBAR: Partial<Record<Sections, SectionEntry[]>> = {
11511151
title: "EVM",
11521152
url: "ccip/getting-started/evm",
11531153
},
1154+
{
1155+
title: "Solana",
1156+
url: "ccip/getting-started/svm",
1157+
},
11541158
],
11551159
},
11561160
{
@@ -1176,7 +1180,7 @@ export const SIDEBAR: Partial<Record<Sections, SectionEntry[]>> = {
11761180
url: "ccip/service-limits/evm",
11771181
},
11781182
{
1179-
title: "SVM",
1183+
title: "Solana",
11801184
url: "ccip/service-limits/svm",
11811185
},
11821186
{
@@ -1241,7 +1245,7 @@ export const SIDEBAR: Partial<Record<Sections, SectionEntry[]>> = {
12411245
],
12421246
},
12431247
{
1244-
title: "SVM",
1248+
title: "Solana",
12451249
url: "ccip/concepts/architecture/onchain/svm",
12461250
children: [
12471251
{
@@ -1311,7 +1315,7 @@ export const SIDEBAR: Partial<Record<Sections, SectionEntry[]>> = {
13111315
],
13121316
},
13131317
{
1314-
title: "SVM",
1318+
title: "Solana",
13151319
url: "ccip/concepts/cross-chain-token/svm",
13161320
children: [
13171321
{
@@ -1355,7 +1359,7 @@ export const SIDEBAR: Partial<Record<Sections, SectionEntry[]>> = {
13551359
url: "ccip/concepts/best-practices/evm",
13561360
},
13571361
{
1358-
title: "SVM",
1362+
title: "Solana",
13591363
url: "ccip/concepts/best-practices/svm",
13601364
},
13611365
],
@@ -1481,15 +1485,15 @@ export const SIDEBAR: Partial<Record<Sections, SectionEntry[]>> = {
14811485
],
14821486
},
14831487
{
1484-
title: "SVM",
1488+
title: "Solana",
14851489
url: "ccip/tutorials/svm",
14861490
children: [
14871491
{
14881492
title: "Implement CCIP Receiver",
14891493
url: "ccip/tutorials/svm/receivers",
14901494
},
14911495
{
1492-
title: "SVM as Source",
1496+
title: "Solana as Source",
14931497
url: "ccip/tutorials/svm/source",
14941498
children: [
14951499
{
@@ -1507,7 +1511,7 @@ export const SIDEBAR: Partial<Record<Sections, SectionEntry[]>> = {
15071511
],
15081512
},
15091513
{
1510-
title: "SVM as Destination",
1514+
title: "Solana as Destination",
15111515
url: "ccip/tutorials/svm/destination",
15121516
children: [
15131517
{
@@ -1537,7 +1541,7 @@ export const SIDEBAR: Partial<Record<Sections, SectionEntry[]>> = {
15371541
url: "ccip/tutorials/svm/cross-chain-tokens/spl-token-multisig-tutorial",
15381542
},
15391543
{
1540-
title: "Production Multisig Governance",
1544+
title: "BurnMint: Production Multisig Governance",
15411545
url: "ccip/tutorials/svm/cross-chain-tokens/production-multisig-tutorial",
15421546
},
15431547
],
@@ -1596,7 +1600,7 @@ export const SIDEBAR: Partial<Record<Sections, SectionEntry[]>> = {
15961600
],
15971601
},
15981602
{
1599-
title: "SVM",
1603+
title: "Solana",
16001604
url: "ccip/api-reference/svm",
16011605
children: [
16021606
{

src/content/ccip/getting-started/index.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,4 +32,4 @@ Check the [CCIP Directory](/ccip/directory) for a list of supported blockchains.
3232
Choose your starting point based on your blockchain platform:
3333

3434
- [Getting Started with CCIP on EVM Chains](/ccip/getting-started/evm) - Learn how to deploy sender/receiver contracts and send messages between EVM chains
35-
- SVM guides can be found [here](/ccip/tutorials/svm).
35+
- [Getting Started with CCIP on Solana (SVM)](/ccip/getting-started/svm)
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
---
2+
section: ccip
3+
date: Last Modified
4+
title: "Getting Started with Chainlink CCIP on Solana (SVM)"
5+
metadata:
6+
description: "Get started with Chainlink CCIP on Solana: essential guides and resources to integrate cross‑chain messaging and token transfers with SVM chains."
7+
excerpt: "Chainlink CCIP, Cross-chain interoperability, Getting started, SVM chains, Solana, Blockchain integration, Cross-chain dApps, Token bridges, Cross-chain messaging, SPL Tokens, Token-2022"
8+
datePublished: "2025-08-22"
9+
lastModified: "2025-08-22"
10+
whatsnext: { "SVM Tutorials": "/ccip/tutorials/svm", "CCIP Directory": "/ccip/directory" }
11+
---
12+
13+
## Solana (SVM) Support in CCIP
14+
15+
Chainlink CCIP supports Solana through the Solana Virtual Machine (SVM), enabling cross-chain interoperability between Solana and other blockchain families including EVM chains.
16+
17+
## What You Can Build with CCIP on Solana
18+
19+
- **Cross-Chain Token Transfers**: Transfer tokens from/to Solana
20+
- **Cross-Chain Data Messaging**: Send arbitrary data between Solana programs and smart contracts on other chains
21+
- **Programmable Token Transfers**: Combine token transfers with messaging to trigger specific actions on destination chains
22+
- **Cross-Chain Token (CCT) Standard**: Enable your tokens in CCIP to be transferred to/from Solana
23+
24+
## Getting Started with Solana CCIP
25+
26+
SVM tutorials can be found [here](/ccip/tutorials/svm).

src/content/ccip/tutorials/svm/cross-chain-tokens/direct-mint-authority.mdx

Lines changed: 28 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,30 @@ This comprehensive tutorial demonstrates how to create and configure cross-chain
2525

2626
This tutorial implements the **direct mint authority transfer** variant of **Path A** from the [CCIP Cross-Chain Token Integration Guide](/ccip/concepts/cross-chain-token/svm/integration-guide). This approach is designed for development and testing environments where you transfer complete mint authority to the Pool Signer PDA for simplified setup.
2727

28+
### Cross-Chain Token Architecture
29+
30+
This tutorial implements the **[Burn and Mint](/ccip/concepts/cross-chain-token/overview#burn-and-mint)** token handling mechanism between Solana Devnet and Ethereum Sepolia. You'll deploy **two BurnMint pools** (one on each chain) that work together to maintain consistent token supply across chains.
31+
32+
**How Burn and Mint Works:**
33+
34+
1. **Source Chain**: Burns tokens from sender's account
35+
1. **CCIP Protocol**: Transmits message cross-chain
36+
1. **Destination Chain**: Mints equivalent tokens to the receiver
37+
38+
### Component Overview
39+
2840
| Component | Implementation | Authority Model |
2941
| -------------------- | ----------------------------------- | -------------------------------------- |
3042
| **Ethereum Sepolia** | ERC20 token with CCIP BurnMint pool | Multiple minters: EOA + Pool |
3143
| **Solana Devnet** | SPL token with CCIP BurnMint pool | Single mint authority: Pool Signer PDA |
3244

45+
### Authority Model Differences
46+
47+
- **Ethereum**: Your EOA + Pool both have mint privileges (multiple minters supported)
48+
- **Solana**: Pool Signer PDA has exclusive mint authority (single authority constraint)
49+
50+
For complete details on token handling mechanisms, see [Token Handling Mechanisms](/ccip/concepts/cross-chain-token/overview#token-handling-mechanisms).
51+
3352
<Aside type="caution" title="Development Environment Approach">
3453

3554
**Important**: This tutorial transfers mint authority directly to the Pool Signer PDA for simplicity. This approach is
@@ -60,23 +79,6 @@ For deeper technical implementation details, refer to:
6079
- **[Solana Starter Kit README](https://github.com/smartcontractkit/solana-starter-kit/blob/main/README.md)**: SVM command details
6180
- **[Smart Contract Examples README](https://github.com/smartcontractkit/smart-contract-examples/blob/main/ccip/cct/hardhat/README.md)**: EVM implementation guide
6281

63-
## What You'll Implement
64-
65-
This tutorial implements the **[Burn and Mint](/ccip/concepts/cross-chain-token/overview#burn-and-mint)** token handling mechanism between Solana Devnet and Ethereum Sepolia. You'll deploy **two BurnMint pools** (one on each chain) that work together to maintain consistent token supply across chains.
66-
67-
**How Burn and Mint Works:**
68-
69-
1. **Source Chain**: Burns tokens from sender's account
70-
1. **CCIP Protocol**: Transmits message cross-chain
71-
1. **Destination Chain**: Mints equivalent tokens to the receiver
72-
73-
**Authority Model Differences:**
74-
75-
- **Ethereum**: Your EOA + Pool both have mint privileges (multiple minters supported)
76-
- **Solana**: Pool Signer PDA has exclusive mint authority (single authority constraint)
77-
78-
For complete details on token handling mechanisms, see [Token Handling Mechanisms](/ccip/concepts/cross-chain-token/overview#token-handling-mechanisms).
79-
8082
## Phase 1: Ethereum Sepolia Token Setup
8183

8284
In this phase, you'll deploy and configure your ERC20 token with CCIP BurnMint pools on Ethereum Sepolia.
@@ -504,6 +506,15 @@ Set the token mint variable:
504506

505507
<Fragment slot="panel.1">
506508

509+
<Aside type="note" title="CCIP BurnMint Pool Program">
510+
The CCIP BurnMint pool program is a self-service pool program that allows you to create a pool for your token.
511+
You can find the program ID in the CCIP Directory for:
512+
513+
- [Solana Devnet](/ccip/directory/testnet/chain/solana-devnet)
514+
- [Solana Mainnet](/ccip/directory/mainnet/chain/solana-mainnet)
515+
516+
</Aside>
517+
507518
```bash
508519
# REPLACE with your actual token mint address
509520
export SOL_TOKEN_MINT="<INSERT_YOUR_MINT_ADDRESS_HERE>"

src/content/ccip/tutorials/svm/cross-chain-tokens/production-multisig-tutorial.mdx

Lines changed: 54 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
section: ccip
33
date: Last Modified
4-
title: "Cross-Chain Tokens with Production Multisig Governance"
4+
title: "Cross-Chain Token Setup: BurnMint with Production Multisig Governance"
55
isIndex: false
66
metadata:
77
description: "Build enterprise-grade cross-chain SPL, Token-2022 tokens with dual-layer multisig governance. Production-ready Chainlink CCIP implementation using Squads + SPL multisig."
@@ -18,17 +18,31 @@ import CcipCommon from "@features/ccip/CcipCommon.astro"
1818

1919
This tutorial implements **production-grade cross-chain tokens** using Chainlink CCIP with **dual-layer multisig governance** between Solana Devnet and Ethereum Sepolia. You'll build a **production-ready governance architecture** following **Path A** from the [CCIP Cross-Chain Token Integration Guide](/ccip/concepts/cross-chain-token/svm/integration-guide#path-a-full-self-service-mint-authority-controlled).
2020

21-
## What You will Build
21+
## What You Will Build
2222

23-
This tutorial builds a cross-chain token with enterprise-grade governance using Chainlink CCIP between Solana Devnet and Ethereum Sepolia.
23+
This tutorial implements the **production multisig governance** variant of **Path A** from the [CCIP Cross-Chain Token Integration Guide](/ccip/concepts/cross-chain-token/svm/integration-guide). This approach is designed for **production environments** with enterprise-grade dual-layer governance.
2424

25-
| Component | Implementation | Security Model |
25+
### Cross-Chain Token Architecture
26+
27+
This tutorial implements the **[Burn and Mint](/ccip/concepts/cross-chain-token/overview#burn-and-mint)** token handling mechanism between Solana Devnet and Ethereum Sepolia with **dual-layer multisig governance**. You'll deploy **two BurnMint pools** (one on each chain) that work together to maintain consistent token supply across chains while providing enterprise-grade security controls.
28+
29+
**How Burn and Mint Works:**
30+
31+
1. **Source Chain**: Burns tokens from sender's account
32+
1. **CCIP Protocol**: Transmits message cross-chain
33+
1. **Destination Chain**: Mints equivalent tokens to the receiver
34+
35+
For complete details on token handling mechanisms, see [Token Handling Mechanisms](/ccip/concepts/cross-chain-token/overview#token-handling-mechanisms).
36+
37+
### Component Overview
38+
39+
| Component | Implementation | Authority Model |
2640
| ------------------------ | ------------------------------------ | ------------------------- |
2741
| **Ethereum Sepolia** | ERC20 token with CCIP BurnMint pool | EOA-controlled (tutorial) |
2842
| **Solana Devnet** | SPL token with dual-layer governance | Squads + SPL multisig |
2943
| **Cross-Chain Transfer** | Bidirectional token transfers | Autonomous operations |
3044

31-
**Key Innovation: Dual-Layer Governance**
45+
### Dual-Layer Governance Architecture
3246

3347
This tutorial implements **dual-layer multisig governance** that separates concerns:
3448

@@ -41,14 +55,6 @@ This tutorial implements **dual-layer multisig governance** that separates conce
4155
- **Operational Autonomy**: Pool Signer PDA enables autonomous cross-chain transfers
4256
- **Administrative Control**: Squads provides enterprise-grade governance
4357

44-
**Implementation Path:**
45-
46-
1. **Deploy EVM token and pool** on Ethereum Sepolia
47-
1. **Create governed SPL tokens** with Squads as mint authority
48-
1. **Establish dual-layer multisig** (Squads → SPL multisig transfer)
49-
1. **Configure cross-chain pools**
50-
1. **Test bidirectional transfers** and validate governance
51-
5258
<Aside type="caution" title="SPL Token Multisig Limitations">
5359
**Critical Understanding**: The SPL token multisig demonstrated in this tutorial can **ONLY execute SPL token
5460
instructions** (mint, burn, transfer, etc.). It **cannot execute arbitrary transactions** or general governance
@@ -303,6 +309,19 @@ Variables use prefixes to prevent confusion across repositories:
303309
| `SOL_*` | Solana addresses | `SOL_TOKEN_MINT`, `SOL_POOL_ADDRESS` |
304310
| `CCIP_*` | Protocol constants | `CCIP_POOL_PROGRAM`, `CCIP_ROUTER_PROGRAM` |
305311

312+
## Tutorial Approach
313+
314+
This tutorial provides step-by-step instructions with detailed explanations of what each command does and why. You'll work primarily in Terminal 1 (Solana) with occasional switches to Terminal 2 (EVM).
315+
316+
**Environment Variable Management**: This tutorial uses phase-based variable files (e.g., `~/.phase1_vars`, `~/.ccip_complete_vars`) to eliminate manual variable re-entry when switching between terminals. Each phase saves its variables to files that subsequent phases can load automatically.
317+
318+
For detailed implementation code explanations, refer to the comprehensive READMEs in both repositories:
319+
320+
- **[Solana Starter Kit README](https://github.com/smartcontractkit/solana-starter-kit/blob/main/README.md)**: Detailed explanations of all SVM commands and implementation
321+
- **[Smart Contract Examples README](https://github.com/smartcontractkit/smart-contract-examples/blob/main/ccip/cct/hardhat/README.md)**: Comprehensive EVM implementation guide
322+
323+
The READMEs contain detailed technical explanations, troubleshooting guides, and advanced configuration options.
324+
306325
## Phase 1: EVM Chain Setup (Ethereum Sepolia)
307326

308327
In this phase, you will deploy ERC20 tokens and configure CCIP BurnMint pools on Ethereum Sepolia. This setup is identical across all Path A variants and provides the foundation for cross-chain operations.
@@ -705,6 +724,15 @@ pwd
705724

706725
Set up CCIP constants on Solana Devnet (DO NOT CHANGE THESE)
707726

727+
<Aside type="note" title="CCIP BurnMint Pool Program">
728+
The CCIP BurnMint pool program is a self-service pool program that allows you to create a pool for your token.
729+
You can find the program ID in the CCIP Directory for:
730+
731+
- [Solana Devnet](/ccip/directory/testnet/chain/solana-devnet)
732+
- [Solana Mainnet](/ccip/directory/mainnet/chain/solana-mainnet)
733+
734+
</Aside>
735+
708736
```bash
709737
export CCIP_POOL_PROGRAM="41FGToCmdaWa1dgZLKFAjvmx6e6AjVTX7SVRibvsMGVB"
710738
export CCIP_ROUTER_PROGRAM="Ccip842gzYHhvdDkSyi2YVCoAWPbYJoApMFzSxQroE9C"
@@ -1431,7 +1459,19 @@ This creates an **SPL Token Multisig** account that will control your token's mi
14311459
- **Threshold**: 1 (either signer can authorize mint operations)
14321460
- **Hybrid Control**: Enables both automated CCIP operations and human governance
14331461
1434-
**Execute this transaction through Squads and set the variable for the next step:**
1462+
<Aside type="note" title="Squads Execution Required">
1463+
1464+
**Execute this base58 transaction in Squads UI:**
1465+
1466+
- **Import**: Copy the base58 output → Squads UI → "Add instruction""Import base58 encoded tx"
1467+
- **Review**: Verify transaction details and parameters
1468+
- **Simulate**: Simulate the transaction to ensure it will succeed
1469+
- **Approve**: Obtain required threshold signatures
1470+
- **Execute**: Complete the transaction execution
1471+
1472+
</Aside>
1473+
1474+
**After execution, set the variable for the next step:**
14351475
14361476
<Tabs client:visible>
14371477
<Fragment slot="tab.1">Set Variable</Fragment>

0 commit comments

Comments
 (0)