提案ノードの提案とノードの割り当ての処理について
フローチャート:
code:example.mmd
graph TD
subgraph Network登録
A1アカウント作成: 鍵ペア生成
A2公開鍵からPeerId生成
A3PeerIdをDHTへ登録
A1 --> A2 --> A3
end
subgraph 提案Nodeの選出
B1ユーザーがContentIdを生成
B2ContentIdと条件をUniversal Networkへ送信
B3誰に問い合わせるか未決定
B4ContentIdに近いPeerIdを探索
B5提案ノードを発見
B1 --> B2 --> B3 --> B4 --> B5
end
subgraph 割り当てnodeの選出
C1条件を満たすノードを探索
C2発見したノードを提案ノードへ送信
C310台のノードを選出
C410台の中からN個をランダム選出
C5選出されたノードが同期開始
C6Content Nodeが構築
C1 --> C2 --> C3 --> C4 --> C5 --> C6
end
A3 --> B1
B5 --> C1
シーケンス図:
code:example.mmd
sequenceDiagram
participant UserA
participant UniversalNetwork
participant ProposalNode
participant AllocationNodes
participant UserB
UserA->>UserA: 1.アカウント作成(鍵の生成)
UserA->>UniversalNetwork: 1.2PeerIdの登録
UserB->>UniversalNetwork: 2.1コンテンツのハッシュ値 (ContentId) 送信
UniversalNetwork-->>UniversalNetwork: 2.2DHT内のContentIdに近いPeerIdを探索
UniversalNetwork-->>UniversalNetwork: 2.3提案ノード発見する
UniversalNetwork-->>ProposalNode: 2.4提案ノードとして選出
UserB->>UniversalNetwork: 3.1条件に合うノードの探索要求
UniversalNetwork-->>UniversalNetwork: 3.2割り当て可能なノードを探索
UniversalNetwork->>ProposalNode: 3.3条件を満たすノードリストを返す
ProposalNode->>ProposalNode: 4.1 10台の中からN台をランダム選出
ProposalNode-->>AllocationNodes: 4.2選ばれたノードを通知
AllocationNodes-->>AllocationNodes: 4.3ノード間の同期を開始
AllocationNodes -->>UserB: 5.1 Networkの構築完了の通知