specs messages & desc removed from data specs (doc)

This commit is contained in:
NicolasCantu 2024-03-20 00:11:31 +01:00
parent 8c6332e034
commit 38d1f42dfe
2 changed files with 846 additions and 914 deletions

View File

@ -88,6 +88,96 @@ L'utilisateur fournit aux relais une adresse SP (Silent Payment) dite de faucet
L'utilisateur reçoit en retour une transaction Silent Payment (SP) contenant des jetons sur l'adresse dite de faucet `faucet_sp_address`, cette transaction inclut un output supplémentaire avec le hash du message de type `MessageConnect` ou `Message` correspondant.
### Objets `MessageGeneric` contenu dans les types `Message` et `MessageConnect`
`MessageGeneric` fournit une structure générale pour les messages, incluant les pairs partagés et les processus, et des détails comme les défis de PoW, soutenant des besoins de communication diversifiés. Les attributs ont les fonctions suivantes :
* **`shared_peer_list`** : Une liste de pairs partagés, représentée par des objets `SharedPeer`. Cette liste sert à partager les pairs entre les relais et les clients et les relais entre eux.
* **`shared_process_list`** : Une liste de processus partagés, représentée par des objets `SharedProcess`. Cette liste sert à partager les processus entre les relais et les clients et les relais entre eux.
* **`faucet_sp_address`** : L'adresse pour recevoir les fonds du faucet (indispensable pour pouvoir crééer des requètes Silent Payment).
* **`pow`** : Représente un défi de Preuve de Travail (PoW), représentée par un objet `Pow`.
* **`raw_transaction_list`** : Liste de transactions à diffuser.
La structure `Pow` détaille un défi de Preuve de Travail, incluant le hash des données, le timestamp et le nonce, pour garantir un effort computationnel à des fins de sécurité. Les attributs ont les fonctions suivantes :
* **`data_hash`** : Le hash des données pour lesquelles le PoW est résolu, il s'agit du hash de l'attribut `request_enc` du message pour les messages de type `Message`, pour les messages de type `MessageConnect` il s'agit du hash de l'attribut `faucet_sp_address`.
* **`timestamp`** : Un timestamp associé à la solution PoW qui fait parti dans la chaine à résoudre.
* **`nonce`** : Une valeur de nonce utilisée dans le calcul du PoW.
* **`pattern`** : Le motif des premiers caractères qui doivent être répétés autant de fois que la difficulté l'indique.
* **`difficulty`** : Le niveau de difficulté du défi PoW.
La structure `SharedProcess` identifie un processus partagé au sein du système, aidant à la gestion et la coordination des processus collaboratifs.
* **`process_list`** : Une liste d'`ItemProcess` partagée. Cette liste sert à partager les processus entre les relais et les clients et les relais entre eux.
La structure `SharedPeer` spécifie un pair au sein du réseau. Les attributs ont les fonctions suivantes :
* **`domain`** : Le domaine associé au pair partagé.
* **`address_ip`** : L'adresse IP du pair partagé.
* **`relay`** : Représente un `Relay` dans le réseau.
* **`l1_node`** : Représente un `L1Node` dans le réseau.
* **`l1_miner`** : Représente un `L1Miner` dans le réseau.
* **`l2_node_list`** : Représente des `L2Node` dans le réseau.
Représente un `Relay` dans le réseau. Les attributs ont les fonctions suivantes :
* **`address_port`** : L'adresse du port du relais.
* **`data_max_size`** : Taille maximale des données que le relais peut traiter.
* **`pow_difficulty`** : Le niveau de difficulté pour la Preuve de Travail requise par le relais.
* **`pow_pattern`** : Le motif utilisé pour la Preuve de Travail.
* **`pow_prefix`** : Le préfixe utilisé pour la Preuve de Travail.
* **`pow_timeout`** : Délai d'attente maximum pour consider le pow comme valide.
La structure `L1Node` détaille un nœud blockchain de niveau 1 pour la validation et le relais des transaction. Les attributs ont les fonctions suivantes :
* **`address_port`** : L'adresse du port du nœud.
* **`explorer_base_url`** : L'URL de base de l'explorateur.
* **`l2_mining`** : Représente un `L2Mining` dans le réseau.
* **`l2_certif`** : Représente un `L2Certif` dans le réseau.
* **`reward_received_tx_list`** : Liste des transactions de récompense reçues par ce noeud.
* **`reward_send_tx_list`** : Liste des transactions de récompense dépensées par ce noeud.
* **`anchorage_tx_list`** : Liste des transactions d'ancrage dépensées par ce noeud.
* **`spend_key`** : [PRIVE] cet attribut n'est pas partager dans le message, c'est la clé privée pour dépenser les fonds de ce noeud.
* **`scan_key`** : [PRIVE] cet attribut n'est pas partager dans le message, c'est la clé privée pour détecter les transaction Silent Payment les fonds de ce noeud.
La structure `L1NodeMining` détaille un nœud blockchain de niveau 1 (Layer 1) se concentrant sur les opérations minières. Les attributs ont les fonctions suivantes :
* **`block_mined_list`** : Liste des blocs extraits.
* **`spend_key`** : [PRIVE] cet attribut n'est pas partager dans le message, c'est la clé privée pour dépenser les fonds de ce noeud.
* **`scan_key`** : [PRIVE] cet attribut n'est pas partager dans le message, c'est la clé privée pour détecter les transaction Silent Payment les fonds de ce noeud.
La structure `L2Node` représente un nœud blockchain de niveau 2 (Layer 2) pour la validation et le relais des transaction. Les attributs ont les fonctions suivantes :
* **`address_port`** : L'adresse du port du nœud.
* **`explorer_base_url`** : L'URL de base de l'explorateur.
* **`reward_received_tx_list`** : Liste des transactions de récompense reçues par ce noeud.
* **`anchorage_tx_list`** : Liste des transactions d'ancrage dépensées par ce noeud.
* **`nbits`** : Nombre de bits propre de calibrage de la blockchain.
* **`magic_number`** : Le nombre magique propre à la blochain.
* **`challenge`** : Le script de signature des blocs.
* **`spend_key`** : [PRIVE] cet attribut n'est pas partager dans le message, c'est la clé privée pour dépenser les fonds de ce noeud.
* **`scan_key`** : [PRIVE] cet attribut n'est pas partager dans le message, c'est la clé privée pour détecter les transaction Silent Payment les fonds de ce noeud.
La structure `L2NodeMining` détaille un nœud blockchain de niveau 2 (Layer 2) se concentrant sur les opérations minières. Les attributs ont les fonctions suivantes :
* **`sp_address_minig_reward`** : Adresse de récompense SP pour l'exploitation minière.
* **`sp_address_refunder`** : Adresse SP rembourseur.
* **`block_hash_mined_list`** : Liste des hashes de blocs extraits.
* **`spend_key`** : [PRIVE] cet attribut n'est pas partager dans le message, c'est la clé privée pour dépenser les fonds de ce noeud.
* **`scan_key`** : [PRIVE] cet attribut n'est pas partager dans le message, c'est la clé privée pour détecter les transaction Silent Payment les fonds de ce noeud.
La structure `L2Certif` spécifie une certification de niveau 2. Les attributs ont les fonctions suivantes :
* **`sp_address_certif_l1`** : Adresse de certification de niveau 1.
* **`block_certified_list`** : Liste des blocs certifiés de types `BlockCertif`.
* **`spend_key`** : [PRIVE] cet attribut n'est pas partager dans le message, c'est la clé privée pour dépenser les fonds de ce noeud.
* **`scan_key`** : [PRIVE] cet attribut n'est pas partager dans le message, c'est la clé privée pour détecter les transaction Silent Payment les fonds de ce noeud.
La structure `BlockCertif` spécifie un bloc certifié. Les attributs ont les fonctions suivantes :
* **`l2_block_hash_list`** : Liste des hashes de blocs.
* **`l1_tx`** : Transaction de niveau 1.
## 6. <a name='Traitementsparlesclients'></a>7. Traitements par les clients
### 6.1. <a name='ConnexiondunclientsalistederelaisvialesmessagesdetypeMessageConnect'></a>7.1. Connexion d'un client à sa liste de relais via les messages de type `MessageConnect`
@ -116,14 +206,22 @@ Les connexions utilisent le protocole WebSocket avec ou sans SSL (URL commençan
L'utilisateur parcourt sa liste de relais et envoie un message de type `MessageConnect` au format JSON (voir [Specs-Datamodel.md](Specs-Datamodel.md)) à chaque relais pour se connecter. Il partage ainsi sa liste de relais et sa liste de `ItemProcess`. Il n'y a pas de retour attendu pour ce message.
Objet de type `MessageConnect`. Les attributs ont les fonctions suivantes :
* ***message** : Contient le `MessageGeneric`
### 6.2. <a name='EnvoideRequestPcdsurlesrelaisvialesmessagesdetypeMessage'></a>7.2. Envoi de `Request` sur les relais via les messages de type `Message`
![MessageSend.png](diagrams/MessageSend.png "MessageSend.")
![PeerSendScore.png](diagrams/PeerSendScore.png "PeerSendScore.")
### 6.4. <a name='TraitementdesmessagesdetypeMessageparlesclients'></a>7.4. Traitement des messages de type `Message` par les clients
Objet de type `Message`, Les attributs ont les fonctions suivantes :
* **`message`** : Contient le `MessageGeneric`
* **`request_enc`** : Contient le `RequestPcd` ou un `RequestPrd` chiffré par la `ProcessKey`
### 6.4. <a name='TraitementdesmessagesdetypeMessageparlesclients'></a>7.4. Traitement des messages de type `Message` par les clients
![PeerReceivedScore.png](diagrams/PeerReceivedScore.png "PeerReceivedScore.")

File diff suppressed because it is too large Load Diff