Pass + Doc
This commit is contained in:
38
docs/diagrams/02_node_claim.mmd
Normal file
38
docs/diagrams/02_node_claim.mmd
Normal file
@@ -0,0 +1,38 @@
|
||||
sequenceDiagram
|
||||
title Node Claim — Pair A publie son PeerRecord (claimInfo + publishPeerRecord)
|
||||
|
||||
participant DBA as DB Pair A (oc-lib)
|
||||
participant NodeA as Node A
|
||||
participant IndexerA as Indexer (partagé)
|
||||
participant DHT as DHT Kademlia
|
||||
participant NATSA as NATS A
|
||||
|
||||
NodeA->>DBA: NewRequestAdmin(PEER).Search(SELF)
|
||||
DBA-->>NodeA: existing peer (DID_A) ou nouveau UUID
|
||||
|
||||
NodeA->>NodeA: LoadKeyFromFilePrivate() → priv A
|
||||
NodeA->>NodeA: LoadKeyFromFilePublic() → pub A
|
||||
NodeA->>NodeA: crypto.MarshalPublicKey(pub A) → pubBytes
|
||||
|
||||
NodeA->>NodeA: Build PeerRecord A {<br/> Name, DID, PubKey,<br/> PeerID: PeerID_A,<br/> APIUrl: hostname,<br/> StreamAddress: /ip4/.../tcp/4001/p2p/PeerID_A,<br/> NATSAddress, WalletAddress<br/>}
|
||||
|
||||
NodeA->>NodeA: sha256(json(rec)) → hash
|
||||
NodeA->>NodeA: priv.Sign(hash) → signature
|
||||
NodeA->>NodeA: rec.ExpiryDate = now + 150s
|
||||
|
||||
loop Pour chaque StaticIndexer (Indexer A, B, …)
|
||||
NodeA->>IndexerA: TempStream /opencloud/record/publish/1.0
|
||||
NodeA->>IndexerA: json.Encode(PeerRecord A signé)
|
||||
|
||||
IndexerA->>IndexerA: Verify signature
|
||||
IndexerA->>IndexerA: Check heartbeat stream actif pour PeerID_A
|
||||
IndexerA->>DHT: PutValue("/node/"+DID_A, PeerRecord A)
|
||||
DHT-->>IndexerA: ok
|
||||
end
|
||||
|
||||
NodeA->>NodeA: rec.ExtractPeer(DID_A, DID_A, pub A)
|
||||
NodeA->>NATSA: SetNATSPub(CREATE_RESOURCE, {PEER, Peer A JSON})
|
||||
NATSA->>DBA: Upsert Peer A (SearchAttr: peer_id)
|
||||
DBA-->>NATSA: ok
|
||||
|
||||
NodeA-->>NodeA: *peer.Peer A (SELF)
|
||||
Reference in New Issue
Block a user