x402的v2版本
作者:YQ,編譯:Block UNIcorn
x402 協議v2版本基於生產部署經驗,代表著一次根本性的架構變革(有興趣可以自行到 x402 的基金會觀看:https://Www.x402.org/writing/x402-v2-launch)。 在處理了超過 1 億筆交易後,團隊識別出了關鍵的摩擦點,並圍繞三個目標重新設計了協議:清晰的層級分離、與區塊鏈無關的可擴展性以及符合 Web 標準。
v2版本中的變化
傳統代理支付 vs x402代理支付
傳統的支付流程需要多個手動步驟和人工干預。 x402 通過實現自主、即時支付來消除了摩擦。
v2版本的架構改進
統一的支付接口
v2版本默認支持多鏈支付。 單個 API 即可在 Base、Solana 或任何受支持的區塊鏈上接受 USDC 支付,而無需修改代碼。
網絡標識符:採用CAIP-2
v1版本使用了自定義網絡標識符,例如 “base-sePOLia” 和 “base”。 v2版本採用了 CAIP-2(鏈無關改進提案 2),格式為 "namespace:reference"。 這使得它能夠支持任何區塊鏈,甚至非區塊鏈支付系統。
支付需求重構
v1版本在每個支付選項中都重複了資源元數據。 如果服務器接受了三種代幣,它會重複三次 URL、描述和內容類型。 v2版本將其提取到一個共享資源對像中,從而減小了消息大小並消除了不一致性。
擴展
v2版本引入了一個正式的擴展系統,用於獨立於核心支付機制運行的可選功能。 每個擴展都有一個包含擴展特定數據的 info 對象和一個通過 JSON Schema 定義結構的 schema 對象。
顯式的支付選擇
v1版本使用字段匹配啟發式方法來確定客戶端選擇了哪個支付選項。 v2版本通過一個包含完整所選支付要求的 “accepted” 字段,使選擇過程更加明確。
HTTP傳輸更新
符合RFC 6648標準
IETF 棄用了 HTTP 標頭的 “X-” 前綴,因為實驗性標頭往往會成為事實上的標準,但卻始終被標記為實驗性。 v2版本移除了這些前綴,並將支付要求從響應體移至標頭。 為什麼要移至標頭? 將協議元數據與應用程序內容分離,使得服務器能夠為瀏覽器返回自定義 HTML 付費牆,同時在標頭中保持機器可讀的支付要求。 這提高了中間件兼容性和框架集成性。
SDK重構
從硬編碼到模塊化
v1版本的SDK將區塊鏈特定的邏輯嵌入到嵌套的 if/else 鏈中。 添加新的區塊鏈需要修改核心文件並發布新的SDK版本。 v2版本引入了三個接口,實現了即插即用的區塊鏈支持。
構建器模式註冊
開發者使用 CAIP-2 通配符註冊區塊鏈實現。 SDK 會根據網絡模式將操作路由到正確的實現。 通配符模式匹配:eip155:* 匹配所有 evm 鏈 • solana:* 匹配所有 Solana 網絡 • eip155:8453 特指 Base 主網
基於 Lambda 的策略引擎
v1版本中錢包類型和支付方案是硬編碼的。 v2版本引入了可組合的策略函數,用於運行時支付授權。
鉤子系統
v1版本在驗證之後、結算之前執行業務邏輯。 如果結算失敗,服務器已經執行了不可逆操作(文件傳輸、API 調用、數據庫寫入)。 v2版本引入了六個生命週期鉤子。
配置
v2版本中間件支持基於路由的配置,並提供回調函數以進行運行時決策。
Facilitator API 增強功能
能力通告
/support 端點現在通告三個關鍵功能:按協議版本分組的受支持支付類型、用於結算操作的簽名地址以及已實現的擴展。
自動發現
發現擴展允許服務暴露結構化元數據以實現自動索引。 Facilitator 可以抓取支持 x402 協議的端點,無需手動提交即可維護最新的價格目錄。
遷移策略
v2版本通過命名空間隔離保持向後兼容性。 facilitator 和服務器可以同時支持這兩個版本。 客戶端通過 x402Version 字段指定版本偏好,實現會響應匹配的協議版本。