@@ -18,160 +18,44 @@ import CcipCommon from "@features/ccip/CcipCommon.astro"
18
18
19
19
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 ) .
20
20
21
- ## What You Will Build
21
+ ## What You will Build
22
22
23
- Upon completion, you will have:
23
+ This tutorial builds a cross-chain token with enterprise-grade governance using Chainlink CCIP between Solana Devnet and Ethereum Sepolia.
24
24
25
- | Component | Implementation | Security Model |
26
- | ------------------------- | ------------------------------------ | --------------------------- |
27
- | ** Ethereum Sepolia** | ERC20 token with CCIP BurnMint pool | EOA-controlled (tutorial) |
28
- | ** Solana Devnet** | SPL token with dual-layer governance | Squads + SPL multisig |
29
- | ** Cross-Chain Bridge** | Bidirectional token transfers | Autonomous operations |
30
- | ** Architecture (Solana)** | Production-ready setup | Enterprise-grade governance |
25
+ | Component | Implementation | Security Model |
26
+ | ------------------------ | ------------------------------------ | ------------------------- |
27
+ | ** Ethereum Sepolia** | ERC20 token with CCIP BurnMint pool | EOA-controlled (tutorial) |
28
+ | ** Solana Devnet** | SPL token with dual-layer governance | Squads + SPL multisig |
29
+ | ** Cross-Chain Transfer** | Bidirectional token transfers | Autonomous operations |
31
30
32
- ### Key Innovation: Dual-Layer Governance
31
+ ** Key Innovation: Dual-Layer Governance**
33
32
34
- ** Separation of Concerns Architecture: **
33
+ This tutorial implements ** dual-layer multisig governance ** that separates concerns:
35
34
36
35
- ** Layer 1 (Squads)** : Controls CCIP administration, pool ownership, protocol configuration
37
36
- ** Layer 2 (SPL Multisig)** : Controls mint authority with Pool Signer PDA for autonomous operations
38
37
39
- ### Implementation Steps
38
+ ** Production Benefits: **
40
39
41
- You will:
40
+ - ** Comprehensive Security** : Two independent governance layers
41
+ - ** Operational Autonomy** : Pool Signer PDA enables autonomous cross-chain transfers
42
+ - ** Administrative Control** : Squads provides enterprise-grade governance
43
+
44
+ ** Implementation Path:**
42
45
43
46
1 . ** Deploy EVM token and pool** on Ethereum Sepolia
44
47
1 . ** Create governed SPL tokens** with Squads as mint authority
45
48
1 . ** Establish dual-layer multisig** (Squads → SPL multisig transfer)
46
- 1 . ** Configure cross-chain pools** with autonomous operations
49
+ 1 . ** Configure cross-chain pools**
47
50
1 . ** Test bidirectional transfers** and validate governance
48
51
49
- ** Path A Production Governance Options:**
50
-
51
- - ** Direct Transfer** : Transfer mint authority directly to Pool Signer PDA - suitable for development and testing ([ see tutorial] ( /ccip/tutorials/svm/cross-chain-tokens/direct-mint-authority ) )
52
- - ** Educational Multisig** : Learn SPL token multisig concepts - foundation for understanding ([ see tutorial] ( /ccip/tutorials/svm/cross-chain-tokens/spl-token-multisig-tutorial ) )
53
- - ** Production Governance** (this tutorial): Implement enterprise-grade dual-layer multisig with Squads governance
54
-
55
- ## Technical Architecture
56
-
57
- Before proceeding with implementation, it's crucial to understand the ** dual-layer multisig governance** architecture that provides enterprise-grade security.
58
-
59
- ### Production Dual-Layer Multisig Architecture
60
-
61
- This tutorial implements ** dual-layer multisig governance** that separates concerns between protocol administration and token operations:
62
-
63
- ``` mermaid
64
- graph TB
65
- subgraph "Layer 1: Squads Multisig Governance"
66
- SM["Squads Multisig<br/>🏛️ Protocol Administration"]
67
- TAR["CCIP Token Admin<br/>Registry Roles"]
68
- PO["CCIP Pool<br/>Ownership"]
69
- CS["Cross-chain<br/>Settings"]
70
- PA["Protocol-level<br/>Functions"]
71
-
72
- SM --> TAR
73
- SM --> PO
74
- SM --> CS
75
- SM --> PA
76
- end
77
-
78
- subgraph "Layer 2: SPL Token Multisig"
79
- SPL["SPL Token Multisig<br/>🔐 Mint Authority Control"]
80
- PDA["Pool Signer PDA<br/>⚡ Autonomous Operations"]
81
- SMG["Squads Multisig<br/>🏛️ Governance Control"]
82
-
83
- SPL --> PDA
84
- SPL --> SMG
85
- end
86
-
87
- subgraph "Cross-Chain Operations"
88
- CCT["Cross-Chain<br/>Token Transfers"]
89
- AUTO["Autonomous<br/>Pool Operations"]
90
- end
91
-
92
- SM -.-> SMG
93
- PDA --> AUTO
94
- AUTO --> CCT
95
- PA --> CCT
96
-
97
- classDef governance fill:#e1f5fe,stroke:#0277bd,stroke-width:2px
98
- classDef autonomous fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
99
- classDef operations fill:#e8f5e8,stroke:#2e7d32,stroke-width:2px
100
-
101
- class SM,SMG,TAR,PO,CS,PA governance
102
- class PDA,AUTO autonomous
103
- class SPL,CCT operations
104
- ```
105
-
106
- ### Why Dual-Layer Architecture
107
-
108
- ** Separation of Concerns** :
109
-
110
- - ** Layer 1 (Squads)** : Controls all CCIP protocol operations, pool configuration, and administrative functions
111
- - ** Layer 2 (SPL Multisig)** : Controls token mint authority with autonomous pool operations
112
-
113
- ** Production Benefits** :
114
-
115
- - ** Comprehensive Security** : Two independent governance layers with different security models
116
- - ** Operational Autonomy** : Pool Signer PDA enables autonomous cross-chain transfers
117
- - ** Administrative Control** : Squads provides enterprise-grade governance for all configuration changes
118
- - ** Scalable Architecture** : Suitable for mainnet deployment with proper governance procedures
119
-
120
- This tutorial focuses on ** mainnet-ready governance architecture** , demonstrating how to implement comprehensive security controls while maintaining autonomous cross-chain token transfers through BurnMint token pools.
121
-
122
52
<Aside type = " caution" title = " SPL Token Multisig Limitations" >
123
53
** Critical Understanding** : The SPL token multisig demonstrated in this tutorial can ** ONLY execute SPL token
124
54
instructions** (mint, burn, transfer, etc.). It ** cannot execute arbitrary transactions** or general governance
125
55
operations like transferring CCIP admin roles or pool ownership. This is why we implement dual-layer governance:
126
56
Squads handles arbitrary governance operations while SPL multisig handles only token-specific operations.
127
57
</Aside >
128
58
129
- ## Tutorial Approach
130
-
131
- This tutorial implements ** production-grade cross-chain tokens** using a ** three-terminal workflow** across specialized repositories:
132
-
133
- | Terminal | Repository | Purpose | Commands |
134
- | -------------- | --------------------------------------------------------------------------------------------------------------------------- | -------------------------------- | ------------- |
135
- | ** Terminal 1** | [ CCIP Solana base58 Generator] ( https://github.com/smartcontractkit/ccip-solana-base58-generator ) | Generate governance transactions | ` pnpm bs58 ` |
136
- | ** Terminal 2** | [ Smart Contract Examples (Hardhat)] ( https://github.com/smartcontractkit/smart-contract-examples/tree/main/ccip/cct/hardhat ) | Deploy EVM components | ` npx hardhat ` |
137
- | ** Terminal 3** | [ Solana Starter Kit] ( https://github.com/smartcontractkit/solana-starter-kit ) | Test cross-chain transfers | ` yarn ` |
138
-
139
- ### Key Implementation Notes
140
-
141
- - ** Terminal 1** generates base58-encoded transactions for Squads multisig governance
142
- - ** Terminal 2** uses EOA for tutorial simplicity; production deployments should use multisig wallets (e.g., Safe)
143
- - ** Terminal 3** validates end-to-end cross-chain functionality
144
-
145
- ### base58 Transaction Execution Workflow
146
-
147
- ** Transaction Generation & Validation:**
148
-
149
- 1 . ** CLI Simulation** : Each base58 transaction is automatically simulated during generation
150
- 1 . ** Error Handling** : If simulation fails, error logs appear in terminal - ** do not upload failed transactions to Squads**
151
- 1 . ** Success Indicator** : Successful simulation shows transaction preview and base58 output
152
-
153
- ** Squads Multisig Execution Process:**
154
-
155
- 1 . ** Propose** : A signer imports the base58 transaction into Squads UI → "Add instruction" → "Import base58 encoded tx" → ** Initiate Transaction**
156
- 1 . ** Approve** : Required threshold (M) of signers review and approve the transaction
157
- 1 . ** Simulate** (Recommended): Before execution, signers can simulate through Squads interface to preview onchain effects
158
- 1 . ** Execute** : After threshold approval, any signer can execute the transaction
159
-
160
- <Aside type = " note" title = " Security Best Practice" >
161
- ** Always Simulate Before Execution** : Use Squads' built-in simulation feature before executing transactions. This
162
- shows exactly what will happen onchain and is critical for validating complex governance operations before commitment.
163
- </Aside >
164
-
165
- ### Environment Variables
166
-
167
- Variables use prefixes to prevent confusion across repositories:
168
-
169
- | Prefix | Usage | Examples |
170
- | -------- | ------------------ | ------------------------------------------ |
171
- | ` ETH_* ` | Ethereum addresses | ` ETH_TOKEN_ADDRESS ` , ` ETH_POOL_ADDRESS ` |
172
- | ` SOL_* ` | Solana addresses | ` SOL_TOKEN_MINT ` , ` SOL_POOL_ADDRESS ` |
173
- | ` CCIP_* ` | Protocol constants | ` CCIP_POOL_PROGRAM ` , ` CCIP_ROUTER_PROGRAM ` |
174
-
175
59
## Prerequisites
176
60
177
61
### System Requirements
@@ -373,6 +257,52 @@ For detailed setup guidance, see the [Squads Documentation](https://docs.squads.
373
257
374
258
</Aside >
375
259
260
+ ## Tutorial Approach
261
+
262
+ This tutorial implements production-grade cross-chain tokens using a three-terminal workflow across specialized repositories:
263
+
264
+ | Terminal | Repository | Purpose | Commands |
265
+ | -------------- | --------------------------------------------------------------------------------------------------------------------------- | -------------------------------- | ------------- |
266
+ | ** Terminal 1** | [ CCIP Solana base58 Generator] ( https://github.com/smartcontractkit/ccip-solana-base58-generator ) | Generate governance transactions | ` pnpm bs58 ` |
267
+ | ** Terminal 2** | [ Smart Contract Examples (Hardhat)] ( https://github.com/smartcontractkit/smart-contract-examples/tree/main/ccip/cct/hardhat ) | Deploy EVM components | ` npx hardhat ` |
268
+ | ** Terminal 3** | [ Solana Starter Kit] ( https://github.com/smartcontractkit/solana-starter-kit ) | Test cross-chain transfers | ` yarn ` |
269
+
270
+ ### Key Implementation Notes
271
+
272
+ - ** Terminal 1** generates base58-encoded transactions for Squads multisig governance
273
+ - ** Terminal 2** uses EOA for tutorial simplicity; production deployments should use multisig wallets (e.g., Safe)
274
+ - ** Terminal 3** validates end-to-end cross-chain functionality
275
+
276
+ ### base58 Transaction Execution Workflow
277
+
278
+ ** Transaction Generation and Validation:**
279
+
280
+ 1 . ** CLI Simulation** : Each base58 transaction is automatically simulated during generation
281
+ 2 . ** Error Handling** : If simulation fails, error logs appear in terminal - do not upload failed transactions to Squads
282
+ 3 . ** Success Indicator** : Successful simulation shows transaction preview and base58 output
283
+
284
+ ** Squads Multisig Execution Process:**
285
+
286
+ 1 . ** Propose** : A signer imports the base58 transaction into Squads UI → "Add instruction" → "Import base58 encoded tx" → ** Initiate Transaction**
287
+ 2 . ** Approve** : Required threshold (M) of signers review and approve the transaction
288
+ 3 . ** Simulate** (Recommended): Before execution, signers can simulate through Squads interface to preview onchain effects
289
+ 4 . ** Execute** : After threshold approval, any signer can execute the transaction
290
+
291
+ <Aside type = " note" title = " Security Best Practice" >
292
+ Always simulate before execution using Squads' built-in simulation feature. This shows exactly what will happen
293
+ onchain and is critical for validating complex governance operations before commitment.
294
+ </Aside >
295
+
296
+ ### Environment Variables
297
+
298
+ Variables use prefixes to prevent confusion across repositories:
299
+
300
+ | Prefix | Usage | Examples |
301
+ | -------- | ------------------ | ------------------------------------------ |
302
+ | ` ETH_* ` | Ethereum addresses | ` ETH_TOKEN_ADDRESS ` , ` ETH_POOL_ADDRESS ` |
303
+ | ` SOL_* ` | Solana addresses | ` SOL_TOKEN_MINT ` , ` SOL_POOL_ADDRESS ` |
304
+ | ` CCIP_* ` | Protocol constants | ` CCIP_POOL_PROGRAM ` , ` CCIP_ROUTER_PROGRAM ` |
305
+
376
306
## Phase 1: EVM Chain Setup (Ethereum Sepolia)
377
307
378
308
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.
0 commit comments