怎麼保證五種語言一致
- 提交前自動比對各語言的動作清單、路由類型標註與版本號。
- Python 綁定由腳本從 Go 產生,並驗證產生結果沒有被手改。
- 加密相關的格式(信箱、群組、檔案憑據、備份、節點目錄)有共用的測試向量,Go、Dart、Python 三端逐位元組比對。
GProtocol 用五種語言維護同一份協定定義:動作常數、訊息結構、錯誤 key 與版本號。Go 是主來源,其餘語言與之逐項對齊。
| 語言 | 套件名 | 內容 | 狀態 |
|---|---|---|---|
| Go | gather-gprotocol/go | 常數、訊息結構、版本判斷與簽章原文拼接等輔助函式 | 節點在用 |
| Dart | gather_protocol | 常數與型別,帶 JSON 序列化 | 應用在用 |
| Java | top.gather.protocol | 常數與型別 | 僅定義 |
| JavaScript | @gather-network/gather-protocol | 常數、型別與訊息工廠函式 | 僅定義 |
| Python | gather_protocol | 動作與常數,由 Go 版本自動產生 | 僅定義 |
信箱、群組、檔案憑據與備份四部分的加密格式另有 Python 參考實作,用來產生和驗證測試向量。各語言的協定庫本身不包含加密、網路或用戶端實作。
協定定義庫和第三方開發文件目前尚未公開發布。開放計畫確定後,我們會在這裡公布取得方式與文件。