glam

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

GLAM Protocol Skill

GLAM Protocol 使用指南

GLAM provides programmable investment infrastructure on Solana: vaults with access control, DeFi integrations, and tokenization.
GLAM在Solana上提供可编程的投资基础设施:具备访问控制、DeFi集成和代币化功能的金库。

Quick Start

快速开始

bash
undefined
bash
undefined

Install CLI

安装CLI

npm install -g @glamsystems/glam-cli
npm install -g @glamsystems/glam-cli

Configure (~/.config/glam/config.json)

配置(~/.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
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
undefined
glam-cli vault create ./vault-template.json glam-cli vault set <VAULT_STATE_PUBKEY> glam-cli integration enable JupiterSwap KaminoLend glam-cli vault view
undefined

Critical: Integration Enablement

重要提示:集成启用

You MUST enable integrations BEFORE using them. This is the most common error.
Available:
JupiterSwap
,
DriftProtocol
,
KaminoLend
,
KaminoVaults
,
KaminoFarms
,
DriftVaults
,
SplToken
,
CCTP
,
GlamMint
,
Marinade
(staging),
StakePool
(staging),
SanctumSingle
(staging),
SanctumMulti
(staging),
StakeProgram
(staging).
Staging integrations require
--bypass-warning
.

**使用集成前必须先启用它们。**这是最常见的错误。
可用集成:
JupiterSwap
DriftProtocol
KaminoLend
KaminoVaults
KaminoFarms
DriftVaults
SplToken
CCTP
GlamMint
Marinade
(测试阶段)、
StakePool
(测试阶段)、
SanctumSingle
(测试阶段)、
SanctumMulti
(测试阶段)、
StakeProgram
(测试阶段)。
测试阶段的集成需要添加
--bypass-warning
参数。

Workflows

工作流程

Tokenized Vault Setup

代币化金库设置

bash
glam-cli vault create ./tokenized-vault-template.json
glam-cli vault set <VAULT_STATE_PUBKEY>
glam-cli integration enable JupiterSwap DriftProtocol KaminoLend
glam-cli manage price                          # Set initial NAV price
glam-cli jupiter set-max-slippage 100          # Configure swap policy
bash
glam-cli vault create ./tokenized-vault-template.json
glam-cli vault set <VAULT_STATE_PUBKEY>
glam-cli integration enable JupiterSwap DriftProtocol KaminoLend
glam-cli manage price                          # 设置初始资产净值价格
glam-cli jupiter set-max-slippage 100          # 配置兑换滑点政策

Optional: delegate trading permissions (protocol-scoped)

可选:委托交易权限(按协议范围)

glam-cli delegate grant <TRADER_PUBKEY> SwapAny --protocol JupiterSwap glam-cli delegate grant <TRADER_PUBKEY> Deposit Withdraw CreateModifyOrders CancelOrders --protocol DriftProtocol
glam-cli delegate grant <TRADER_PUBKEY> SwapAny --protocol JupiterSwap glam-cli delegate grant <TRADER_PUBKEY> Deposit Withdraw CreateModifyOrders CancelOrders --protocol DriftProtocol

Optional: set timelock (24 hours)

可选:设置时间锁(24小时)

glam-cli timelock set 86400
undefined
glam-cli timelock set 86400
undefined

Drift Trading

Drift 交易

bash
glam-cli integration enable DriftProtocol
glam-cli drift-protocol init-user              # Required once
glam-cli drift-protocol deposit 0 1000         # Deposit USDC collateral
glam-cli drift-protocol perp long 0 1 0        # Open position
bash
glam-cli integration enable DriftProtocol
glam-cli drift-protocol init-user              # 仅需执行一次
glam-cli drift-protocol deposit 0 1000         # 存入USDC保证金
glam-cli drift-protocol perp long 0 1 0        # 开多仓

Kamino Lending

Kamino 借贷

bash
glam-cli integration enable KaminoLend
glam-cli kamino-lend init                      # Required once
glam-cli kamino-lend deposit \
  7u3HeHxYDLhnCoErrtycNokbQYbWGzLs6JSDqGAv5PfF \
  EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v \
  1000

bash
glam-cli integration enable KaminoLend
glam-cli kamino-lend init                      # 仅需执行一次
glam-cli kamino-lend deposit \
  7u3HeHxYDLhnCoErrtycNokbQYbWGzLs6JSDqGAv5PfF \
  EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v \
  1000

Decision Tree

决策树

GoalIntegrationCommand
Swap tokens
JupiterSwap
jupiter swap
Lend for yield
KaminoLend
kamino-lend deposit
Stake SOL (liquid)
Marinade
(staging)
marinade --bypass-warning stake
Stake SOL (LST)
StakePool
/
SanctumSingle
/
SanctumMulti
(staging)
lst --bypass-warning stake <pool> <amount>
Stake SOL (native)
StakeProgram
(staging)
stake --bypass-warning list / deactivate / withdraw
Kamino vaults
KaminoVaults
kamino-vaults deposit
Drift vaults
DriftVaults
drift-vaults deposit
Trade perps
DriftProtocol
drift-protocol init-user
deposit
perp
Trade spot
DriftProtocol
drift-protocol init-user
deposit
spot
Tokenized vault
vault create
manage price
→ investors
invest subscribe
Manage share tokensSDK only:
client.mint.*
(freeze, issue, burn, forceTransfer)
Bridge USDC
CCTP
cctp bridge-usdc <amount> <domain> <dest>
(0=ETH, 1=AVAX, 2=OP, 3=ARB, 6=BASE, 7=POLYGON)
Timelock
timelock set <seconds>

目标集成服务命令
代币兑换
JupiterSwap
jupiter swap
出借获取收益
KaminoLend
kamino-lend deposit
质押SOL(流动性)
Marinade
(测试阶段)
marinade --bypass-warning stake
质押SOL(LST)
StakePool
/
SanctumSingle
/
SanctumMulti
(测试阶段)
lst --bypass-warning stake <pool> <amount>
质押SOL(原生)
StakeProgram
(测试阶段)
stake --bypass-warning list / deactivate / withdraw
Kamino金库
KaminoVaults
kamino-vaults deposit
Drift金库
DriftVaults
drift-vaults deposit
交易永续合约
DriftProtocol
drift-protocol init-user
deposit
perp
交易现货
DriftProtocol
drift-protocol init-user
deposit
spot
代币化金库
vault create
manage price
→ 投资者执行
invest subscribe
管理份额代币仅支持SDK:
client.mint.*
(冻结、发行、销毁、强制转账)
跨链桥接USDC
CCTP
cctp bridge-usdc <amount> <domain> <dest>
(0=ETH, 1=AVAX, 2=OP, 3=ARB, 6=BASE, 7=POLYGON)
设置时间锁
timelock set <seconds>

Common Errors

常见错误

ErrorSolution
"Signer is not authorized"Check
vault view
for owner; grant delegate if needed
"Integration not enabled"
integration enable <NAME>
"Asset not in allowlist"
vault allowlist-asset <MINT>
"User not initialized"
drift-protocol init-user
or
kamino-lend init
"No route found"Try smaller amount; check token liquidity
"Slippage exceeded"Increase
--slippage-bps
or reduce amount
"Insufficient collateral"
drift-protocol deposit
more
"Account is frozen"SDK:
client.mint.setTokenAccountsStates()
"Missing jupiter_api_key"Add
jupiter_api_key
to config.json
See troubleshooting for detailed solutions.

错误信息解决方法
"Signer is not authorized"检查
vault view
中的所有者信息;必要时授予委托权限
"Integration not enabled"执行
integration enable <NAME>
"Asset not in allowlist"执行
vault allowlist-asset <MINT>
"User not initialized"执行
drift-protocol init-user
kamino-lend init
"No route found"尝试减少金额;检查代币流动性
"Slippage exceeded"提高
--slippage-bps
参数值或减少交易金额
"Insufficient collateral"执行
drift-protocol deposit
存入更多保证金
"Account is frozen"使用SDK:
client.mint.setTokenAccountsStates()
"Missing jupiter_api_key"在config.json中添加
jupiter_api_key
字段
详细解决方案请参考故障排查

Common Mints

常见代币地址

TokenAddress
SOL
So11111111111111111111111111111111111111112
USDC
EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v
USDT
Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB
mSOL
mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So
jitoSOL
J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn

代币地址
SOL
So11111111111111111111111111111111111111112
USDC
EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v
USDT
Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB
mSOL
mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So
jitoSOL
J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn

SDK Quick Start

SDK快速开始

typescript
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,
});

typescript
import {
  GlamClient,
  WSOL,
  USDC,
  getProgramAndBitflagByProtocolName,
} from "@glamsystems/glam-sdk";
import { BN } from "@coral-xyz/anchor";

const client = new GlamClient({ wallet });

// 创建金库
const { vaultPda } = await client.vault.create({
  name: "My Vault",
  assets: [WSOL, USDC],
});

// 启用Jupiter集成
const perms = getProgramAndBitflagByProtocolName();
const [program, bitflag] = perms["JupiterSwap"];
await client.access.enableProtocols(vaultPda, program, parseInt(bitflag, 2));

// 执行兑换
await client.jupiterSwap.swap(vaultPda, {
  inputMint: USDC,
  outputMint: WSOL,
  amount: new BN(100_000_000),
  slippageBps: 50,
});

Reference

参考资料

  • CLI: vault, delegate, jupiter, drift-protocol, kamino-lend, kamino-vaults, kamino-farms, drift-vaults, staking, lst, invest, manage, transfer, advanced, alt
  • SDK: client, integrations, mint, multisig
  • Other: concepts, examples, troubleshooting
  • Docs: https://docs.glam.systems/
  • CLIvault, delegate, jupiter, drift-protocol, kamino-lend, kamino-vaults, kamino-farms, drift-vaults, staking, lst, invest, manage, transfer, advanced, alt
  • SDKclient, integrations, mint, multisig
  • 其他concepts, examples, troubleshooting
  • 文档https://docs.glam.systems/