# JAM Structure 雜項筆記 Work Package 總體流程 1. Work Package 的產生: 外部參與者 (例如平行鏈、dApp) 提交到 JAM 網路。 2. Authorization (chap 8): 驗證 Work package 是否權限在指定的 core 上執行。 3. 分配 Work Package: JAM 系統會將 work package 分配給 core 進行處理。 4. Refinement (chap 11): Core 中的驗證者節點會共同執行 work package 中的每個 work item。 5. 生成 Work Report(chap 11): 將每個 work item 的執行結果整合到一個 work report 中。 6. 提交 Work Report(chap 12): Core 會將生成的 work report 提交到 JAM 網路。 7. 驗證 Work Report(chap 12): JAM 網路中的其他驗證者節點會驗證 work report 的有效性和正確性。 8. Accumulation (累積)(chap 12): 如果 work report 通過驗證,系統會執行 accumulation 過程,將 work report 的結果整合到鏈上狀態。 9. 狀態更新(chap 12): Accumulation 完成後,鏈上狀態會被更新,反映 work package 的執行結果。 ```mermaid graph TD; A[Work Package 產生] --> B{Authorization} B -- 授權成功 --> C[分配 Work Package] B -- 授權失敗 --> D((停止)) C --> E[Refinement] E --> F[提交 Work Report] F --> G{Auditting 驗證 Work Report} G -- 驗證成功 --> H[Accumulation] G -- 驗證失敗 --> D H --> I[上鏈狀態更新] ``` ![image](https://hackmd.io/_uploads/rkle5dVVkx.png) ```mermaid graph TD; A[開始] --> B{計算最新的區塊時間戳 τ'}; B --> C{計算最新的區塊歷史信息 β†}; C --> D{計算區塊歷史信息 β'}; D --> E{計算 Safrole 協議的狀態 γ'}; E --> F{計算最新的熵累加器 η'}; F --> G{計算最新的活動驗證器密鑰 κ'}; G --> H{計算最新的待用驗證器密鑰 λ'}; H --> I{計算最新的判斷狀態 ψ'}; I --> J{計算第一次更新的待處理報告 ρ†}; J --> K{計算第二次更新的待處理報告 ρ‡}; K --> L{計算最新的待處理報告 ρ'}; L --> M{計算可用的工作報告 W*}; M --> N{計算新的累積隊列 ϑ'、累積歷史 ξ'、服務狀態 δ‡、權限狀態 χ'、待處理驗證器密鑰 ι'、授權隊列 φ' 服務累積 C}; N --> O{計算最新的服務狀態 δ'}; O --> P{計算最新的核心授權池 α'}; P --> Q{計算最新的驗證器統計信息 π'}; Q --> R[結束]; ``` Block production 大致流程 ```mermaid graph TD; C[收集驗證者的 Bandersnatch 公鑰] C --> E[生成 Ring-VRF] E --> F[驗證者使用私鑰對 Ring-VRF 簽名生成 ticket] F --> G[提交 ticket 到網絡] G --> H[驗證 ticket 並排序] H --> I[生成 slot key sequence γ_s] I --> K[區塊生產者在下個 epoch 使用 γ_s 中對應的金鑰密封區塊] ``` Assurance 的運作機制ㄧ 1. Guarantee 生成: 驗證者節點執行 work package 後,會生成 work report 並對其簽名,生成 Guarantee。 2. Assurance 生成: 其他驗證者節點會檢查這個 Guarantee 和 work report,如果確認其正確性,則會生成 Assurance,也就是對 Guarantee 的確認。 3. 提交 Assurance: 驗證者節點將 Assurance 提交到 JAM 網路。 4. Accumulate: 當一個 work report 收到足夠多的 Assurance (例如 2-of-3 或 3-of-5),它就準備被 Accumulate 到鏈上狀態。 Auditing 和 Judging 是 Refinement 階段的一部分,它們會在 work package 執行完成後,work report 生成之前執行。 它們的作用是驗證 work report 的正確性,確保只有正確的 work report 才會被提交到 JAM 網路進行累積。