Surfpool 101

測試依賴跨程序調用(CPI)的 Solana 程序,傳統上需要開發者從主網導出賬戶和程序,然後將它們上傳到本地驗證器。
這個過程對於少量賬戶來說是可行的,但在測試像 Jupiter 這樣的複雜程序的 CPI 時,這些程序可能依賴於超過 40 個賬戶和 8 個以上的程序,這就完全不可行了。
Surfpool 通過以下功能解決了這個問題,讓開發者能夠使用按需獲取的主網賬戶在本地模擬程序:
自定義系統變量:時間旅行(在任何歷史槽位或時間戳測試您的程序)、暫停時鐘或停止區塊生成
修改賬戶數據:設置 SOL 供應量(總量、流通量和非流通量)、在程序之間轉移賬戶數據,或更新賬戶核心數據和代幣賬戶信息
分析鏈上數據:分析交易的計算單元、賬戶變更和執行細節,然後通過簽名、UUID 或標籤檢索詳細的分析報告
什麼是 Surfpool
Surfpool 是一個全面的 SDK 和工具套件,而 Surfnet 是它創建的本地 Solana 網絡。可以將 Surfpool 視為您的開發環境,而 Surfnet 則是運行在其中的區塊鏈網絡。
Surfnet 是 solana-test-validator 的即插即用替代品,專為提供最佳 Solana 開發者體驗而設計。
由 TxTx 團隊開發的 Surfpool,無縫地將基礎設施即代碼集成到基於 Anchor 的項目中,實現可重現、可審計且安全的部署,適用於任何 Solana 網絡——無論是私有還是公共。
第一步
運行 Surfnet 所需的一切都包含在 Surfpool SDK 中。由於安裝因操作系統而異,請參考官方的安裝頁面來完成您的特定設置。
安裝 Surfpool SDK 後,使用以下指令啟動 Surfnet:
surfpool start這會在標準本地驗證器埠(http://127.0.0.1:8899)上啟動 Surfnet,並顯示終端用戶介面,內容包括:
時段與時代(Slots and Epoch):目前執行的時段每 400 毫秒自動處理一次。使用 Tab 手動前進到下一個時段,或使用 空格鍵 暫停/恢復自動區塊生成。
交易日誌:帶有時間戳的活動流,顯示所有執行的交易內容。
如需基於瀏覽器的體驗,請連接到 Surfpool Studio:此連結。
部署程式
設置好 Surfnet 後,部署您的程式並開始構建。
Anchor 程式:使用 anchor deploy,並將您的 Anchor.toml 配置為 [programs.localnet]。
Pinocchio 程式:通過 Solana CLI 部署,並將您的配置設置為 localnet:solana program deploy ./target/deploy/your_program.so --program-id ./target/deploy/your_program-keypair.json
測試程式
部署到 localnet 後,通過定位本地驗證器連接到 Surfnet:
import { Connection } from "@solana/web3.js";
const connection = new Connection("http://localhost:8899", "confirmed");