Skip to content

Commit fac549d

Browse files
committed
update
1 parent c6d7c6e commit fac549d

File tree

1 file changed

+62
-132
lines changed

1 file changed

+62
-132
lines changed

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

Lines changed: 62 additions & 132 deletions
Original file line numberDiff line numberDiff line change
@@ -18,160 +18,44 @@ 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-
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

4346
1. **Deploy EVM token and pool** on Ethereum Sepolia
4447
1. **Create governed SPL tokens** with Squads as mint authority
4548
1. **Establish dual-layer multisig** (Squads → SPL multisig transfer)
46-
1. **Configure cross-chain pools** with autonomous operations
49+
1. **Configure cross-chain pools**
4750
1. **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

378308
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

Comments
 (0)