From 12509febc8ebff5d761bd30c8be105a70e7668f1 Mon Sep 17 00:00:00 2001 From: Agustina Aldasoro Date: Wed, 26 Aug 2026 12:41:07 -0300 Subject: [PATCH 1/5] Add Token Mint Authority Doc --- .../svm/token-mint-authority.mdx | 73 +++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 src/content/ccip/concepts/cross-chain-token/svm/token-mint-authority.mdx diff --git a/src/content/ccip/concepts/cross-chain-token/svm/token-mint-authority.mdx b/src/content/ccip/concepts/cross-chain-token/svm/token-mint-authority.mdx new file mode 100644 index 00000000000..9d676679b54 --- /dev/null +++ b/src/content/ccip/concepts/cross-chain-token/svm/token-mint-authority.mdx @@ -0,0 +1,73 @@ +--- +section: ccip +date: Last Modified +title: "Cross-Chain Token Standard - Token Mint Authority" +metadata: + description: "Complete guide to CCIP Token Pools for SVM chains like Solana. Covers deployment approaches (self-serve, self-deployed, custom), decimal compatibility decisions, standard pool implementation (BurnMint, LockRelease), and custom pool development requirements." + excerpt: "Token pools, SVM, Solana, deployment approaches, self-serve mode, BurnMint, LockRelease, decimal compatibility, decimal precision, mint authority, liquidity management, PDAs, custom pools, Token-2022, SPL tokens, cross-chain transfers, CCIP Router, rate limiting, instructions" + datePublished: "2025-05-19" + lastModified: "2025-05-19" +--- + +import { Aside, ClickToZoom } from "@components" +import CcipCommon from "@features/ccip/CcipCommon.astro" + +This applies only for Burn And Mint Token Pools onboarded in CCIP + +## Mint Authority on Solana + +For CCIP to work, the token pool program onboarded must be able to mint tokens. Because of that, the pool signer PDA of the token pool program must be the mint authority. +A PDA has no private key. Therefore, no individual, wallet, or external system can directly sign as this mint authority. Only the program from which the PDA was derived can authorize it to sign, and only while executing an instruction on Solana. + +### How minting works + +1. CCIP verifies and executes the incoming cross-chain message. +1. The token pool program validates that the transfer is authorized and satisfies its configured controls. +1. The token pool program invokes the Solana Token Program to mint the token. +1. During this invocation, the Solana runtime allows the token pool program to sign on behalf of its mint-authority PDA. +1. The Token Program verifies that this PDA matches the mint authority configured on the token mint before issuing any tokens. +1. The mint authority cannot sign arbitrary transactions independently. It can only participate as a signer through the token pool program’s defined execution paths. + +### Why the address appears as “off-curve” +PDAs are intentionally generated outside the Ed25519 cryptographic curve. This guarantees that no corresponding private key can exist. + +Solana derives a PDA deterministically from: + +- A program address +- A defined set of seeds +- A bump value + +*Only the program used in this derivation* can cause the PDA to be recognized as a signer by the Solana runtime. This is part of Solana’s native security model, documented in [Solana’s PDA documentation](https://solana.com/docs/core/pda). + +Therefore, the mint authority appearing as `“off-curve”` is expected and does not indicate an unknown or inaccessible private key. + +### Why the PDA may not appear as an initialized account + +A PDA does not need to hold data or be initialized as an on-chain account to act as a program signer. + +Creating an account at the PDA address would allocate storage and assign an account owner, but it would not change: + +- Which program derived the PDA +- Which program can sign for it +- The program logic governing minting +- The security of the mint authority + +Initializing it only to improve explorer visibility would therefore add operational state without providing an additional security guarantee. Some explorers also cannot infer a PDA’s originating program or derivation seeds from the address alone. + +## Token Multisig as Mint Authority + +It can happen that the token needs to have another address able to mint, so when that's the case a Token Multisig Mint Authority needs to be used. + +The mint authority is an [SPL Token Multisig account](https://www.solana-program.com/docs/token#multisig-usage). It defines a set of authorized signers and the number of signatures required to approve minting. + +### How CCIP Minting Works + +When a token is transferred to Solana through CCIP: +1. CCIP verifies and executes the incoming cross-chain message. +1. The token pool program validates the transfer and its configuration. +1. The token pool invokes the SPL Token Program to mint the token. +1. The token pool program signs for its token pool signer PDA. +1. The SPL Token Program verifies that the PDA is an authorized signer of the mint-authority multisig. +1. The multisig’s configured signing requirements are applied before minting is authorized. + +_The CCIP token pool can therefore participate in token minting without storing or managing a private key._ From 3dac4949925d2dee6ba4cea6f156ae6860d634cc Mon Sep 17 00:00:00 2001 From: Agustina Aldasoro Date: Wed, 26 Aug 2026 14:21:09 -0300 Subject: [PATCH 2/5] Add to the index --- src/content/ccip/concepts/cross-chain-token/svm/index.mdx | 1 + 1 file changed, 1 insertion(+) diff --git a/src/content/ccip/concepts/cross-chain-token/svm/index.mdx b/src/content/ccip/concepts/cross-chain-token/svm/index.mdx index 88fd3936d7f..fd103019649 100644 --- a/src/content/ccip/concepts/cross-chain-token/svm/index.mdx +++ b/src/content/ccip/concepts/cross-chain-token/svm/index.mdx @@ -19,6 +19,7 @@ This section provides detailed guidance for integrating tokens with Chainlink CC - **[Architecture](/ccip/concepts/cross-chain-token/svm/architecture)**: Understand the specific architecture for CCTs on SVM chains. - **[Tokens](/ccip/concepts/cross-chain-token/svm/tokens)**: Learn about the requirements and compatibility for your SPL tokens. - **[Token Pools](/ccip/concepts/cross-chain-token/svm/token-pools)**: Explore the different types of token pool programs and how to use them. +- **[Token Mint Authority](/ccip/concepts/cross-chain-token/svm/token-mint-authority)**: Understand Solana Token Mint Authority in BnM Token Pool. - **[Integration Guide](/ccip/concepts/cross-chain-token/svm/integration-guide)**: Determine your integration path based on mint authority control and deployment preferences. Includes decision tree and touch points with Chainlink governance. - **[Registration and Administration](/ccip/concepts/cross-chain-token/svm/registration-administration)**: Details on registering your token with CCIP and managing administrative roles on SVM. - **[Upgradability](/ccip/concepts/cross-chain-token/svm/upgradability)**: Information on upgrading token pool programs. From e89dfd035d3f1e8afa4ff214885477e7a8ca7408 Mon Sep 17 00:00:00 2001 From: Agustina Aldasoro Date: Wed, 26 Aug 2026 16:42:38 -0300 Subject: [PATCH 3/5] Add to sidebar --- src/config/sidebar/ccip-dynamic.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/config/sidebar/ccip-dynamic.ts b/src/config/sidebar/ccip-dynamic.ts index 793c5904d6d..36298dd6cfe 100644 --- a/src/config/sidebar/ccip-dynamic.ts +++ b/src/config/sidebar/ccip-dynamic.ts @@ -276,6 +276,11 @@ export const CCIP_SIDEBAR_CONTENT: SectionEntry[] = [ url: "ccip/concepts/cross-chain-token/svm/token-pools", chainTypes: ["solana"], }, + { + title: "Token Mint Authority", + url: "ccip/concepts/cross-chain-token/svm/token-mint-authority", + chainTypes: ["solana"], + }, { title: "Integration Guide", url: "ccip/concepts/cross-chain-token/svm/integration-guide", From e20145b741975c1d17e33b13ee6579bb6a0b6bcb Mon Sep 17 00:00:00 2001 From: Agustina Aldasoro Date: Thu, 27 Aug 2026 11:09:14 -0300 Subject: [PATCH 4/5] Fix style --- .../svm/token-mint-authority.mdx | 4 +- src/content/ccip/llms-full.txt | 69 +++++++++++++++++++ 2 files changed, 72 insertions(+), 1 deletion(-) diff --git a/src/content/ccip/concepts/cross-chain-token/svm/token-mint-authority.mdx b/src/content/ccip/concepts/cross-chain-token/svm/token-mint-authority.mdx index 9d676679b54..2250b9fbcf4 100644 --- a/src/content/ccip/concepts/cross-chain-token/svm/token-mint-authority.mdx +++ b/src/content/ccip/concepts/cross-chain-token/svm/token-mint-authority.mdx @@ -29,6 +29,7 @@ A PDA has no private key. Therefore, no individual, wallet, or external system c 1. The mint authority cannot sign arbitrary transactions independently. It can only participate as a signer through the token pool program’s defined execution paths. ### Why the address appears as “off-curve” + PDAs are intentionally generated outside the Ed25519 cryptographic curve. This guarantees that no corresponding private key can exist. Solana derives a PDA deterministically from: @@ -37,7 +38,7 @@ Solana derives a PDA deterministically from: - A defined set of seeds - A bump value -*Only the program used in this derivation* can cause the PDA to be recognized as a signer by the Solana runtime. This is part of Solana’s native security model, documented in [Solana’s PDA documentation](https://solana.com/docs/core/pda). +_Only the program used in this derivation_ can cause the PDA to be recognized as a signer by the Solana runtime. This is part of Solana’s native security model, documented in [Solana’s PDA documentation](https://solana.com/docs/core/pda). Therefore, the mint authority appearing as `“off-curve”` is expected and does not indicate an unknown or inaccessible private key. @@ -63,6 +64,7 @@ The mint authority is an [SPL Token Multisig account](https://www.solana-program ### How CCIP Minting Works When a token is transferred to Solana through CCIP: + 1. CCIP verifies and executes the incoming cross-chain message. 1. The token pool program validates the transfer and its configuration. 1. The token pool invokes the SPL Token Program to mint the token. diff --git a/src/content/ccip/llms-full.txt b/src/content/ccip/llms-full.txt index 58058cde303..237e5734d5c 100644 --- a/src/content/ccip/llms-full.txt +++ b/src/content/ccip/llms-full.txt @@ -4611,6 +4611,74 @@ All standard token pools (BurnMint, LockRelease) automatically call [`to_svm_tok --- +# Cross-Chain Token Standard - Token Mint Authority +Source: https://docs.chain.link/ccip/concepts/cross-chain-token/svm/token-mint-authority +Last Updated: 2025-05-19 + +This applies only for Burn And Mint Token Pools onboarded in CCIP + +## Mint Authority on Solana + +For CCIP to work, the token pool program onboarded must be able to mint tokens. Because of that, the pool signer PDA of the token pool program must be the mint authority. +A PDA has no private key. Therefore, no individual, wallet, or external system can directly sign as this mint authority. Only the program from which the PDA was derived can authorize it to sign, and only while executing an instruction on Solana. + +### How minting works + +1. CCIP verifies and executes the incoming cross-chain message. +2. The token pool program validates that the transfer is authorized and satisfies its configured controls. +3. The token pool program invokes the Solana Token Program to mint the token. +4. During this invocation, the Solana runtime allows the token pool program to sign on behalf of its mint-authority PDA. +5. The Token Program verifies that this PDA matches the mint authority configured on the token mint before issuing any tokens. +6. The mint authority cannot sign arbitrary transactions independently. It can only participate as a signer through the token pool program’s defined execution paths. + +### Why the address appears as “off-curve” + +PDAs are intentionally generated outside the Ed25519 cryptographic curve. This guarantees that no corresponding private key can exist. + +Solana derives a PDA deterministically from: + +- A program address +- A defined set of seeds +- A bump value + +*Only the program used in this derivation* can cause the PDA to be recognized as a signer by the Solana runtime. This is part of Solana’s native security model, documented in [Solana’s PDA documentation](https://solana.com/docs/core/pda). + +Therefore, the mint authority appearing as `“off-curve”` is expected and does not indicate an unknown or inaccessible private key. + +### Why the PDA may not appear as an initialized account + +A PDA does not need to hold data or be initialized as an on-chain account to act as a program signer. + +Creating an account at the PDA address would allocate storage and assign an account owner, but it would not change: + +- Which program derived the PDA +- Which program can sign for it +- The program logic governing minting +- The security of the mint authority + +Initializing it only to improve explorer visibility would therefore add operational state without providing an additional security guarantee. Some explorers also cannot infer a PDA’s originating program or derivation seeds from the address alone. + +## Token Multisig as Mint Authority + +It can happen that the token needs to have another address able to mint, so when that's the case a Token Multisig Mint Authority needs to be used. + +The mint authority is an [SPL Token Multisig account](https://www.solana-program.com/docs/token#multisig-usage). It defines a set of authorized signers and the number of signatures required to approve minting. + +### How CCIP Minting Works + +When a token is transferred to Solana through CCIP: + +1. CCIP verifies and executes the incoming cross-chain message. +2. The token pool program validates the transfer and its configuration. +3. The token pool invokes the SPL Token Program to mint the token. +4. The token pool program signs for its token pool signer PDA. +5. The SPL Token Program verifies that the PDA is an authorized signer of the mint-authority multisig. +6. The multisig’s configured signing requirements are applied before minting is authorized. + +*The CCIP token pool can therefore participate in token minting without storing or managing a private key.* + +--- + # Cross-Chain Token Standard - Integration Guide (SVM) Source: https://docs.chain.link/ccip/concepts/cross-chain-token/svm/integration-guide @@ -68783,6 +68851,7 @@ This section provides detailed guidance for integrating tokens with Chainlink CC - **[Architecture](/ccip/concepts/cross-chain-token/svm/architecture)**: Understand the specific architecture for CCTs on SVM chains. - **[Tokens](/ccip/concepts/cross-chain-token/svm/tokens)**: Learn about the requirements and compatibility for your SPL tokens. - **[Token Pools](/ccip/concepts/cross-chain-token/svm/token-pools)**: Explore the different types of token pool programs and how to use them. +- **[Token Mint Authority](/ccip/concepts/cross-chain-token/svm/token-mint-authority)**: Understand Solana Token Mint Authority in BnM Token Pool. - **[Integration Guide](/ccip/concepts/cross-chain-token/svm/integration-guide)**: Determine your integration path based on mint authority control and deployment preferences. Includes decision tree and touch points with Chainlink governance. - **[Registration and Administration](/ccip/concepts/cross-chain-token/svm/registration-administration)**: Details on registering your token with CCIP and managing administrative roles on SVM. - **[Upgradability](/ccip/concepts/cross-chain-token/svm/upgradability)**: Information on upgrading token pool programs. From 5be210a7256bcf6e0256769a240464e9a0125365 Mon Sep 17 00:00:00 2001 From: Agustina Aldasoro Date: Thu, 27 Aug 2026 11:27:30 -0300 Subject: [PATCH 5/5] Update snapshot --- .../__tests__/__snapshots__/ccip-dynamic.test.ts.snap | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/sidebar/__tests__/__snapshots__/ccip-dynamic.test.ts.snap b/src/config/sidebar/__tests__/__snapshots__/ccip-dynamic.test.ts.snap index faddf4bf9b5..6df57a8b3bc 100644 --- a/src/config/sidebar/__tests__/__snapshots__/ccip-dynamic.test.ts.snap +++ b/src/config/sidebar/__tests__/__snapshots__/ccip-dynamic.test.ts.snap @@ -344,6 +344,13 @@ exports[`CCIP Sidebar Configuration Snapshot should match the expected sidebar s "title": "Token Pools", "url": "ccip/concepts/cross-chain-token/svm/token-pools", }, + { + "chainTypes": [ + "solana", + ], + "title": "Token Mint Authority", + "url": "ccip/concepts/cross-chain-token/svm/token-mint-authority", + }, { "chainTypes": [ "solana",