关于 glam
glam 是面向 Solana 投资基础设施开发者的技能,介绍 GLAM CLI 与 SDK 的使用,涵盖带访问控制的金库、DeFi 集成和代币化。
主要功能
- 01创建和管理金库
- 02启用并使用 DeFi 集成
- 03管理委托权限与资产白名单
- 04执行交换、借贷、质押和跨链操作
适用场景
- 01配置代币化金库及初始价格
- 02通过 KaminoLend 存入资产
- 03使用 JupiterSwap 交换代币
- 04通过 CCTP 跨链转移 USDC
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ sendaifun/ skills --skill glam安装后在 Claude Code 中输入/glam确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
evaluations.jsondocs/troubleshooting.mdexamples/EXAMPLES.mdresources/concepts.mdresources/cli/advanced.mdalt.mddelegate.mdinvest.mdjupiter.mdkamino-farms.mdkamino-lend.mdkamino-vaults.mdlst.mdmanage.mdstaking.mdtransfer.mdvault.mdresources/sdk/client.mdintegrations.mdix-mapper.mdmint.mdmultisig.md详细介绍
GLAM 协议技能
GLAM 在 Solana 上提供可编程的投资基础设施:带访问控制的金库、DeFi 集成和代币化。
快速开始
# Install CLI
npm install -g @glamsystems/glam-cli
# Configure (~/.config/glam/config.json)
cat > ~/.config/glam/config.json << 'EOF'
{
"keypair_path": "~/.config/solana/id.json",
"json_rpc_url": "https://api.mainnet-beta.solana.com"
}
EOF
# Create vault, set active, enable integrations, verify
glam-cli vault create ./vault-template.json
glam-cli vault set <VAULT_STATE_PUBKEY>
glam-cli integration enable JupiterSwap KaminoLend
glam-cli vault view
重要:启用集成
使用集成之前,必须先启用它们。 这是最常见的错误。
可用集成:JupiterSwap、KaminoLend、KaminoVaults、KaminoFarms、SplToken、CCTP、GlamMint、Marinade(staging)、StakePool(staging)、SanctumSingle(staging)、SanctumMulti(staging)、StakeProgram(staging)。
staging 集成需要使用 --bypass-warning。
工作流
代币化金库设置
glam-cli vault create ./tokenized-vault-template.json
glam-cli vault set <VAULT_STATE_PUBKEY>
glam-cli integration enable JupiterSwap KaminoLend
glam-cli manage price # Set initial NAV price
glam-cli jupiter set-max-slippage 100 # Configure swap policy
# Optional: delegate trading permissions (protocol-scoped)
glam-cli delegate grant <TRADER_PUBKEY> SwapAny --protocol JupiterSwap
# Optional: set timelock (24 hours)
glam-cli timelock set 86400
Kamino 借贷
glam-cli integration enable KaminoLend
glam-cli kamino-lend init # Required once
glam-cli kamino-lend deposit \
7u3HeHxYDLhnCoErrtycNokbQYbWGzLs6JSDqGAv5PfF \
EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v \
1000
决策树
| 目标 | 集成 | 命令 |
|---|---|---|
| 兑换代币 | JupiterSwap | jupiter swap |
| 出借赚取收益 | KaminoLend | kamino-lend deposit |
| 质押 SOL(流动质押) | Marinade(staging) | marinade --bypass-warning stake |
| 质押 SOL(LST) | StakePool / SanctumSingle / SanctumMulti(staging) | lst --bypass-warning stake <pool> <amount> |
| 质押 SOL(原生) | StakeProgram(staging) | stake --bypass-warning list / deactivate / withdraw |
| Kamino 金库 | KaminoVaults | kamino-vaults deposit |
| 代币化金库 | — | vault create → manage price → 投资者 invest subscribe |
| 管理份额代币 | — | 仅限 SDK:client.mint.*(freeze、issue、burn、forceTransfer) |
| 跨链桥接 USDC | CCTP | cctp bridge-usdc <amount> <domain> <dest>(0=ETH,1=AVAX,2=OP,3=ARB,6=BASE,7=POLYGON) |
| 时间锁 | — | timelock set <seconds> |
常见错误
| 错误 | 解决方案 |
|---|---|
| "Signer is not authorized" | 检查 vault view 中的所有者;如有需要,授予代理权限 |
| "Integration not enabled" | integration enable <NAME> |
| "Asset not in allowlist" | vault allowlist-asset <MINT> |
| "User not initialized" | kamino-lend init |
| "No route found" | 尝试更小的金额;检查代币流动性 |
| "Slippage exceeded" | 增大 --slippage-bps 或减少金额 |
| "Account is frozen" | SDK:client.mint.setTokenAccountsStates() |
| "Missing jupiter_api_key" | 将 jupiter_api_key 添加到 config.json |
详细解决方案请参阅故障排除。
常见 Mint 地址
| 代币 | 地址 |
|---|---|
| SOL | So11111111111111111111111111111111111111112 |
| USDC | EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v |
| USDT | Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB |
| mSOL | mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So |
| jitoSOL | J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn |
SDK 快速入门
import {
GlamClient,
WSOL,
USDC,
getProgramAndBitflagByProtocolName,
} from "@glamsystems/glam-sdk";
import { BN } from "@coral-xyz/anchor";
const client = new GlamClient({ wallet });
// Create vault
const { vaultPda } = await client.vault.create({
name: "My Vault",
assets: [WSOL, USDC],
});
// Enable Jupiter integration
const perms = getProgramAndBitflagByProtocolName();
const [program, bitflag] = perms["JupiterSwap"];
await client.access.enableProtocols(vaultPda, program, parseInt(bitflag, 2));
// Swap
await client.jupiterSwap.swap(vaultPda, {
inputMint: USDC,
outputMint: WSOL,
amount: new BN(100_000_000),
slippageBps: 50,
});
有关高级代理指令映射(将标准 Solana 指令转换为 GLAM 代理指令),请参阅 ix-mapper SDK 参考。
参考
评论
支持 Markdown