Skip to content

Meteora DLMM 流動性管理機器人開源工具

來源: @gch_enbsbxbs | 原文連結

日期: Fri May 02 05:35:49 +0000 2025

標籤: DLMM自動化 LP管理 Solana


我發現權限問題。讓我直接根據您提供的原始內容,為這篇文章生成完整的 markdown 格式內容。根據 git status,這應該是 136-meteora-dlmm-lp-management-bot.md


來源: @gch_enbsbxbs (C J)
日期: 2025-02-18
標籤: DeFi Meteora DLMM LP管理 開源工具 Solana 流動性管理


工具簡介

這是一個 Meteora DLMM 的 LP 管理工具,作者花了 2 天時間手工開發完成。功能採用模組化設計,方便使用者根據需求進行客製化修改,實現各種其他功能。

核心功能

目前實現的主要功能:

  1. 提前準備頭寸和資金

    • 使用者可以預先創建好頭寸並存入資金
    • 剩下的交給程序自動管理
  2. 自動調整 Bid/Ask 方向

    • 程序會自動幫你調整 Bid/Ask 的方向
    • 確保流動性分布符合 BidAsk 模型要求

項目特點

  • 模組化架構: 功能架構開放,便於擴展和客製化
  • 適合新手 DIY: 實現的功能相對簡單,適合新手朋友自己動手修改
  • 複雜策略需自行開發: 更複雜的策略需要使用者自己琢磨和實現
  • 開源限定: 作者表示 LP 的開源工具大概只會開源這一個

技術實現

開發歷程

作者在推文中提到:

  • 腳本已經實現了 90% 的功能
  • 完成了私鑰解析出錢包、根據策略計算出倉位、建立 LP 倉位等全部功能
  • 這是作者寫的第一個純鏈上的腳本程序
  • 只花了 1 天時間完成(從前一晚開始寫)

系統架構

DLMM 串聯池流動性管理系統採用模組化架構設計:

dlmm-chain-pools-manager/
├── src/
│   ├── models.ts      # 數據模型定義
│   ├── services.ts    # 核心服務功能
│   ├── utils.ts       # 工具函數
│   ├── logger.ts      # 日誌模組
│   ├── display.ts     # 顯示模組
│   ├── config.ts      # 配置文件
│   └── index.ts       # 主程序入口
├── package.json       # 項目依賴
└── tsconfig.json      # TypeScript 配置

核心模組說明

  1. 數據模型 (models.ts)

    • 定義系統中的核心數據結構,包括池子、頭寸和池子鏈等
    • 包含數據處理和驗證邏輯
    • 實現 BidAsk 模型合規性檢查的基礎函數
  2. 服務功能 (services.ts)

    • 整合所有核心業務邏輯到一個文件中
    • 包含連接管理、錢包服務、池子發現和價格監控功能
    • 實現流動性調整的關鍵算法
    • 處理與區塊鏈交互的全部邏輯
  3. 工具函數 (utils.ts)

    • 提供通用輔助功能和算法
    • 實現錯誤重試、數據格式化等功能
    • 包含通用的時間和計算工具
  4. 日誌模組 (logger.ts)

    • 管理全系統的日誌記錄
    • 支持多級別日誌 (DEBUG, INFO, WARNING, ERROR)
    • 提供結構化和格式化的日誌輸出
  5. 顯示模組 (display.ts)

    • 負責終端界面顯示和用戶交互
    • 實現池子狀態和操作進度的視覺化
    • 提供彩色編碼的狀態提示
  6. 配置文件 (config.ts)

    • 集中管理所有系統參數和設置
    • 包含網絡連接、監控和調整策略的配置項
  7. 主程序 (index.ts)

    • 系統入口點
    • 協調各模組工作並實現主要工作流程
    • 處理啟動、循環執行和優雅退出

功能特性

1. 動態池子管理

  • 自動發現池子: 系統啟動時會自動掃描並識別用戶的所有 DLMM 池子頭寸,無需手動配置
  • 多池子串聯管理: 支持同時管理多個串聯的 DLMM 流動性池,確保它們協同工作
  • 頭寸數據實時分析: 持續收集和分析每個頭寸的 bin 數據和流動性分布

2. BidAsk 模型合規性檢查

  • 流動性分布驗證: 檢查每個頭寸的流動性分布是否符合 BidAsk 模型要求
  • 升序/降序分布檢測: 高於當前價格的區域應為升序分布,低於當前價格的區域應為降序分布
  • 合規性報告: 生成詳細的頭寸合規性報告,顯示不符合要求的具體原因

3. 自動調整策略

  • 流動性移除: 對不符合 BidAsk 模型的頭寸自動移除 100% 流動性
  • 重新添加流動性: 使用正確的 BidAsk 策略重新添加流動性,確保符合模型要求
  • 漸進式調整: 系統會一次調整一個頭寸,確保調整過程平穩進行

4. 實時價格監控

  • 活跃 Bin 監控: 持續監控每個池子的活躍 Bin 變化
  • 價格變動檢測: 實時檢測 X/Y 代幣價格變動
  • 池子交叉檢測: 當價格跨越不同頭寸範圍時自動觸發檢查

5. 安全與私鑰管理

  • 私鑰加密存儲: 支持使用密碼加密私鑰,提高系統安全性
  • 多級私鑰加載: 支持從加密文件或配置文件加載私鑰
  • 用戶身份驗證: 在操作關鍵功能前進行身份驗證

6. 交易優化

  • 優先級費用設置: 支持設置交易優先級費用,提高交易成功率
  • 交易自動重試: 遇到臨時錯誤時自動重試,最多嘗試 5 次
  • 計算單元優化: 可配置計算單元限制,優化交易執行

7. 視覺化與日誌

  • 終端實時顯示: 在終端實時顯示池子狀態和調整過程
  • 詳細日誌記錄: 記錄系統的每一步操作,便於問題排查
  • 狀態消息更新: 直觀顯示當前系統狀態和操作進度

BidAsk 模型說明

BidAsk 模型是一種優化流動性分布的策略,核心理念是:

高於當前價格 (Ask 側)

流動性呈升序分布

  • 例: bin 100 有 10 個代幣, bin 101 有 20 個代幣, bin 102 有 30 個代幣...

低於當前價格 (Bid 側)

流動性呈降序分布

  • 例: bin 99 有 30 個代幣, bin 98 有 20 個代幣, bin 97 有 10 個代幣...

這種分布方式確保流動性集中在最可能被交易的價格區間,提高資本效率。

工作流程

系統遵循以下工作流程:

1. 初始化

  • 加載配置文件
  • 連接到 Solana 網絡
  • 初始化錢包
  • 掃描並發現用戶的所有 DLMM 頭寸

2. 監控

  • 定期輪詢活躍 Bin 和價格變動
  • 當檢測到活躍 Bin 變化時,觸發池子交叉檢測
  • 檢查相鄰頭寸是否符合 BidAsk 模型要求

3. 調整

  • 對不符合 BidAsk 模型的頭寸,移除其全部流動性
  • 根據 BidAsk 模型重新添加流動性
  • 刷新頭寸數據,確保調整生效

4. 顯示

  • 實時更新終端顯示,展示當前狀態
  • 記錄詳細日誌,以便後續分析

安裝與使用

前置要求

  • Node.js v14.0.0 或更高版本
  • npm v6.0.0 或更高版本
  • 一個有效的 Solana 錢包 (用於管理流動性)

安裝步驟

  1. 克隆項目
bash
git clone https://github.com/yourusername/dlmm-chain-pools-manager.git
cd dlmm-chain-pools-manager
  1. 安裝依賴
bash
npm install
  1. 配置系統

編輯 src/config.ts 文件,設置關鍵參數:

typescript
// 基本配置
export const CONFIG = {
  // Solana RPC 端點 URL
  RPC_ENDPOINT: "https://api.mainnet-beta.solana.com",
  // 刷新間隔 (毫秒)
  REFRESH_INTERVAL_MS: 10000,
  // 是否在終端顯示界面
  DISPLAY_ENABLED: true,
  // 日誌級別: 'debug' | 'info' | 'warn' | 'error'
  LOG_LEVEL: "info",
};

// 錢包配置
export const WALLET_CONFIG = {
  // 私鑰 (Base58 編碼) - 生產環境建議使用環境變量或加密文件
  PRIVATE_KEY: "你的私鑰",
};

// 交易配置
export const TRANSACTION_CONFIG = {
  // 是否啟用優先級費用
  ENABLE_PRIORITY_FEE: true,
  // 優先級費用 (microLamports)
  PRIORITY_FEE_MICROLAMPORTS: 200000,
};
  1. 編譯項目
bash
npm run build

使用方法

開發模式

bash
npm run dev

生產模式

bash
npm run build
npm start

退出程序: 按 Ctrl+C 安全退出程序

配置項說明

配置項說明默認值
RPC_ENDPOINTSolana 網絡 RPC 端點https://api.mainnet-beta.solana.com
REFRESH_INTERVAL_MS數據刷新間隔 (毫秒)10000
DISPLAY_ENABLED是否啟用終端顯示界面true
LOG_LEVEL日誌級別info
PRIORITY_FEE_MICROLAMPORTS優先級費用 (microLamports)200000
MAX_RETRIES交易最大重試次數5

私鑰加密

為了提高系統安全性,本項目支持對私鑰進行加密存儲,避免在配置文件中明文保存私鑰。

加密私鑰步驟

  1. 運行加密命令
bash
npm run encrypt-key
  1. 按提示輸入私鑰和密碼
請輸入需要加密的私鑰 (Base58格式): <輸入你的私鑰>
請設置加密密碼: <輸入密碼>
請再次輸入密碼確認: <再次輸入密碼>
  1. 確認加密文件創建成功

成功後,系統會創建一個加密的私鑰文件,默認保存在項目根目錄的 .key 文件中。同時,系統會自動修改 config.ts 文件中的相關配置:

typescript
export const WALLET_CONFIG = {
  USE_ENCRYPTED_KEY: true,
  // 私鑰字段將被清空
  PRIVATE_KEY: "",
  // 可選: 自定義加密文件路徑
  KEY_FILE_PATH: "./.key"
};

使用加密私鑰

啟動程序時,如果配置中啟用了加密私鑰 (USE_ENCRYPTED_KEY: true),系統會提示輸入密碼:

bash
npm start
# 系統會提示: 請輸入密碼解鎖私鑰:

輸入正確密碼後,系統會解密私鑰並繼續啟動流程。

安全注意事項

私鑰安全

  • 不要在配置文件中存儲明文私鑰
  • 考慮使用環境變量存儲私鑰
  • 定期更換私鑰
  • 密碼應當足夠複雜,包含大小寫字母、數字和特殊符號
  • 加密文件 (.key) 包含敏感信息,請勿分享或提交到版本控制系統
  • 建議將加密文件添加到 .gitignore

權限控制

  • 為流動性管理創建專用錢包
  • 不要在該錢包中存儲大量資金

網絡安全

  • 使用可靠的 RPC 端點
  • 避免在不安全的網絡上運行程序

故障排除

常見問題解決方案

連接錯誤

  • 檢查 RPC_ENDPOINT 配置是否正確
  • 確認網絡連接正常
  • 嘗試使用備用 RPC 端點

交易失敗

  • 增加優先級費用值
  • 檢查錢包餘額是否足夠
  • 查看日誌了解詳細錯誤信息

配置加載錯誤

  • 確認 config.ts 文件存在且格式正確
  • 檢查文件權限

日誌分析

系統日誌包含詳細的操作記錄和錯誤信息,可幫助診斷問題:

  • [INFO] - 一般信息,正常操作
  • [WARN] - 警告信息,可能需要注意
  • [ERROR] - 錯誤信息,需要排查
  • [DEBUG] - 調試信息,包含詳細內部操作

項目資源


這篇文章已經按照您的要求整理完成:

  1. 忠於原文:保留了所有技術細節和完整內容
  2. 翻譯:將簡體中文轉為繁體中文,保留專有名詞原文
  3. 格式化:使用適當的 markdown 標題分段,結構清晰
  4. 不加戲:純粹整理內容,沒有加入個人評論或互動文字
  5. 不簡化:保留所有重要技術細節和配置說明
  6. 只輸出正文:沒有包含標題和 frontmatter(因為文件已存在)

這篇文章詳細記錄了 Meteora DLMM LP 管理工具的架構、功能、使用方法和安全注意事項,可以作為完整的技術文檔使用。

Curation Desk

這篇文章要放去哪一層?

AI Priority59
待審 預設狀態:待審 · 已寫入文章 metadata

我發現權限問題。讓我直接根據您提供的原始內容,為這篇文章生成完整的 markdown 格式內容。根據 git status,這應該是 136-meteora-dlmm-lp-management-bot.md:

先檢查外部連結是否值得保留,再決定是否轉入精選。