@@ -18,160 +18,44 @@ import CcipCommon from "@features/ccip/CcipCommon.astro"
1818
1919This 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- 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.
2424
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 |
3130
32- ### Key Innovation: Dual-Layer Governance
31+ ** Key Innovation: Dual-Layer Governance**
3332
34- ** Separation of Concerns Architecture: **
33+ This tutorial implements ** dual-layer multisig governance ** that separates concerns:
3534
3635- ** Layer 1 (Squads)** : Controls CCIP administration, pool ownership, protocol configuration
3736- ** Layer 2 (SPL Multisig)** : Controls mint authority with Pool Signer PDA for autonomous operations
3837
39- ### Implementation Steps
38+ ** Production Benefits: **
4039
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:**
4245
43461 . ** Deploy EVM token and pool** on Ethereum Sepolia
44471 . ** Create governed SPL tokens** with Squads as mint authority
45481 . ** Establish dual-layer multisig** (Squads → SPL multisig transfer)
46- 1 . ** Configure cross-chain pools** with autonomous operations
49+ 1 . ** Configure cross-chain pools**
47501 . ** Test bidirectional transfers** and validate governance
4851
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-
12252<Aside type = " caution" title = " SPL Token Multisig Limitations" >
12353 ** Critical Understanding** : The SPL token multisig demonstrated in this tutorial can ** ONLY execute SPL token
12454 instructions** (mint, burn, transfer, etc.). It ** cannot execute arbitrary transactions** or general governance
12555 operations like transferring CCIP admin roles or pool ownership. This is why we implement dual-layer governance:
12656 Squads handles arbitrary governance operations while SPL multisig handles only token-specific operations.
12757</Aside >
12858
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-
17559## Prerequisites
17660
17761### System Requirements
@@ -373,6 +257,52 @@ For detailed setup guidance, see the [Squads Documentation](https://docs.squads.
373257
374258</Aside >
375259
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+
376306## Phase 1: EVM Chain Setup (Ethereum Sepolia)
377307
378308In 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