Skip to content

Commit 8338cc5

Browse files
committed
spl token multisig
1 parent 348bcf9 commit 8338cc5

File tree

1 file changed

+55
-21
lines changed

1 file changed

+55
-21
lines changed

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

Lines changed: 55 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -69,11 +69,11 @@ In this tutorial, you will:
6969

7070
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#path-a-full-self-service-mint-authority-controlled):
7171

72-
- **Mint Authority Control**: You control the token mint authority
73-
- **Self-Service Registration**: Use `owner_propose_administrator` directly
74-
- **Self-Serve Mode**: Initialize from Chainlink-deployed programs
75-
- **BurnMint Pools**: Burn tokens on source, mint on destination
76-
- **Direct Transfer**: Complete mint authority transferred to Pool Signer PDA
72+
- **Mint Authority Control**: You control the token mint authority
73+
- **Self-Service Registration**: Use `owner_propose_administrator` directly
74+
- **Self-Serve Mode**: Initialize from Chainlink-deployed programs
75+
- **BurnMint Pools**: Burn tokens on source, mint on destination
76+
- **Direct Transfer**: Complete mint authority transferred to Pool Signer PDA
7777
- ⚠️ **Development Focus**: Suitable for development and testing environments
7878

7979
</Aside>
@@ -98,8 +98,13 @@ The critical component for this tutorial is the **Chainlink-deployed Pool Progra
9898
In this step, you will use Hardhat tasks to deploy an ERC20 token contract and a corresponding burn and mint token pool on Ethereum Sepolia. The tasks interact with the `BurnMintERC20` contract for token deployment and the `BurnMintTokenPool` contract for pool creation.
9999

100100
<Aside type="note" title="Terminal Check">
101-
**Ensure you are in Terminal 2** (Smart Contract Examples - Hardhat directory): ```bash pwd # Should show:
102-
.../smart-contract-examples/ccip/cct/hardhat ```
101+
**Ensure you are in Terminal 2** (Smart Contract Examples - Hardhat directory):
102+
103+
```bash
104+
pwd
105+
# Should show: .../smart-contract-examples/ccip/cct/hardhat
106+
```
107+
103108
</Aside>
104109

105110
### Deploy ERC20 Token
@@ -271,7 +276,14 @@ npx hardhat acceptAdminRole \
271276
In this step, you will use the `spl-token` CLI tool to create an SPL token mint on Solana Devnet and then use Solana Starter Kit scripts to initialize the CCIP pool configuration and deploy the token pool program.
272277

273278
<Aside type="note" title="Terminal Switch">
274-
**Switch to Terminal 1** (Solana Starter Kit directory): ```bash pwd # Should show: .../solana-starter-kit ```
279+
280+
**Switch to Terminal 1** (Solana Starter Kit directory):
281+
282+
```bash
283+
pwd
284+
# Should show: .../solana-starter-kit
285+
```
286+
275287
</Aside>
276288

277289
### Create SPL Token
@@ -295,8 +307,15 @@ yarn svm:token:create
295307
```
296308

297309
<Aside type="note" title="Custom Configuration">
298-
You can customize the token by adding parameters: ```bash yarn svm:token:create \ --name "Cross Chain Token" \
299-
--symbol "CCT" \ --uri "https://your-ipfs-url/metadata.json" ```
310+
You can customize the token by adding parameters:
311+
312+
```bash
313+
yarn svm:token:create \
314+
--name "Cross Chain Token" \
315+
--symbol "CCT" \
316+
--uri "https://your-ipfs-url/metadata.json"
317+
```
318+
300319
</Aside>
301320

302321
</Fragment>
@@ -391,10 +410,7 @@ Mint Address: EL4xtGMgYoYtM4FcFnehiQJZFM2AsfqdFikgZK2y9GCo
391410
</Fragment>
392411
</Tabs>
393412

394-
<Aside type="note" title="Token Mint Address">
395-
Save your token mint address from the output. For this tutorial, we will use:
396-
`EL4xtGMgYoYtM4FcFnehiQJZFM2AsfqdFikgZK2y9GCo`
397-
</Aside>
413+
Save your token mint address from the output.
398414

399415
```bash
400416
# Set your token mint address (replace with your actual mint address)
@@ -1001,8 +1017,13 @@ Last Updated: 1970-01-01T00:00:00.000Z
10011017
### Configure Ethereum → Solana
10021018
10031019
<Aside type="note" title="Terminal Switch">
1004-
**Switch to Terminal 2** (Smart Contract Examples - Hardhat directory): ```bash pwd # Should show:
1005-
.../smart-contract-examples/ccip/cct/hardhat ```
1020+
**Switch to Terminal 2** (Smart Contract Examples - Hardhat directory):
1021+
1022+
```bash
1023+
pwd
1024+
# Should show: .../smart-contract-examples/ccip/cct/hardhat
1025+
```
1026+
10061027
</Aside>
10071028
10081029
First, set the environment variables needed for this terminal session:
@@ -1138,8 +1159,13 @@ Pool registration works differently on each platform:
11381159
### Ethereum Sepolia Pool Registration
11391160
11401161
<Aside type="note" title="Terminal Check">
1141-
**Ensure you are in Terminal 2** (Smart Contract Examples - Hardhat directory): ```bash pwd # Should show:
1142-
.../smart-contract-examples/ccip/cct/hardhat ```
1162+
**Ensure you are in Terminal 2** (Smart Contract Examples - Hardhat directory):
1163+
1164+
```bash
1165+
pwd
1166+
# Should show: .../smart-contract-examples/ccip/cct/hardhat
1167+
```
1168+
11431169
</Aside>
11441170
11451171
In this step, you will use the `setPool` Hardhat task to register the BurnMint token pool with the token in Ethereum's TokenAdminRegistry contract. This function sets the pool contract address for the token, enabling it for CCIP cross-chain transfers. Only the token administrator can call this function.
@@ -1178,7 +1204,13 @@ npx hardhat setPool \
11781204
### Solana Devnet Pool Registration
11791205
11801206
<Aside type="note" title="Terminal Switch">
1181-
**Switch to Terminal 1** (Solana Starter Kit directory): ```bash pwd # Should show: .../solana-starter-kit ```
1207+
**Switch to Terminal 1** (Solana Starter Kit directory):
1208+
1209+
```bash
1210+
pwd
1211+
# Should show: .../solana-starter-kit
1212+
```
1213+
11821214
</Aside>
11831215
11841216
Solana pool registration is a multi-step process: create an Address Lookup Table (ALT), transfer mint authority, and register the pool. The ALT contains all necessary accounts for CCIP operations, and the `set_pool` instruction links this ALT to the token in the Router's TokenAdminRegistry.
@@ -1446,7 +1478,8 @@ This phase demonstrates bidirectional token transfers using the burn-mint mechan
14461478
### Transfer Direction 1: Solana → Ethereum
14471479
14481480
<Aside type="note" title="Terminal Environment">
1449-
**Ensure you are in Terminal 1** (Solana Starter Kit directory) for Solana → Ethereum transfers.
1481+
**Stay in Terminal 1** (Solana Starter Kit directory) for all transfer directions. The Solana Starter Kit supports
1482+
both Solana → Ethereum and Ethereum → Solana transfers, so you can execute all commands from the same terminal.
14501483
</Aside>
14511484
14521485
#### Prepare for Testing
@@ -1713,7 +1746,8 @@ https://explorer.solana.com/tx/5KVJnX4KN7GS76F67wWpX5fZ8sQkWWQM6fvWnPFirKxLEecKj
17131746
### Transfer Direction 2: Ethereum → Solana
17141747
17151748
<Aside type="note" title="Terminal Environment">
1716-
**Switch to Terminal 2** (Smart Contract Examples - Hardhat directory) for Ethereum → Solana transfers.
1749+
**Continue in Terminal 1** (Solana Starter Kit directory). No need to switch terminals - the Solana Starter Kit
1750+
handles Ethereum → Solana transfers as well.
17171751
</Aside>
17181752
17191753
#### Execute Transfer

0 commit comments

Comments
 (0)