|
|
|
@ -52,7 +52,7 @@ La spécification couvre la conception, le développement, et l'application prat
|
|
|
|
|
|
|
|
|
|
## 3. <a name='Documentsderfrence'></a>3. Documents de référence
|
|
|
|
|
|
|
|
|
|
Voir [Doc_references.md](Doc_references.md).
|
|
|
|
|
Voir [_Doc_references.md](_Doc_references.md).
|
|
|
|
|
|
|
|
|
|
## 4. <a name='CommunauxRequestPcdetRequestPrd'></a>Commun aux `RequestPcd` et RequestPrd
|
|
|
|
|
|
|
|
|
@ -92,10 +92,10 @@ Les `Item` ainsi échangés via les `RequestPcd` sont vérifiés par les `Reques
|
|
|
|
|
|
|
|
|
|
La création d'un `RequestPcd` suit plusieurs étapes :
|
|
|
|
|
|
|
|
|
|
1. **Chargement de la dernière version de la liste ( RequestPcd)**: Récupération de la dernière version de la liste du type d'`Item` à partir de la source de données, telle qu'une base de données ou un système de stockage.
|
|
|
|
|
2. **Mise à jour**: Ajouts et modifications eventuelles des `Item`
|
|
|
|
|
3. **Chiffrement des attributs**: Chiffrement des attributs de chaque Item selon les règles de confidentialité et de partage des clés (cf. [Specs-Security.md](Specs-Security.md)).
|
|
|
|
|
4. **Chiffrement du RequestPcd**: Chiffrement du `RequestPcd` avec la clé `ProcessKey` du `ItemProcess` concerné.
|
|
|
|
|
1. Récupération de la dernière version de la liste du type d'`Item` à partir de la source de données, telle qu'une base de données ou un système de stockage.
|
|
|
|
|
2. Ajouts et modifications eventuelles des `Item`
|
|
|
|
|
3. Chiffrement des attributs de chaque Item selon les règles de confidentialité et de partage des clés (cf. [Specs-Security.md](Specs-Security.md)).
|
|
|
|
|
4. Chiffrement du `RequestPcd` avec la clé `ProcessKey` du `ItemProcess` concerné.
|
|
|
|
|
5. Traitements communs aux `RequestPcd` et RequestPrd
|
|
|
|
|
|
|
|
|
|
### 5.2. <a name='Rception-1'></a>Réception
|
|
|
|
@ -146,15 +146,16 @@ Tous les échanges sont complétés de l'empreinte du device de l'emetteur envoy
|
|
|
|
|
|
|
|
|
|
La création d'un `RequestPrd` suit plusieurs étapes :
|
|
|
|
|
|
|
|
|
|
1. **Chargement des clés de chiffrement confidentiel'**: Récupération des clés de chiffrement confidentiel des attributs des items d'un RequestPcd.
|
|
|
|
|
2. **Chiffrement du RequestPrd**: Chiffrement du `RequestPrd` avec la clé `ProcessKey` du `ItemProcess` concerné.
|
|
|
|
|
3. **Création de l'adresse SP**: Création d'une`adresse SP` SP pour le partage de la `KeyConfidential` et pour l'horodatage du hash du `RequestPrd` dans la side chain.
|
|
|
|
|
4. **Création du message**: Création du `message` contenant le `RequestPrd` chiffré, la preuve de travail, l'adresse de faucet
|
|
|
|
|
5. **Sélection des relais pour le message**: Sélection de 4 relais pour le message selon l'historique des pings et des réponses retournées.
|
|
|
|
|
6. **Sélection des noeuds de signet pour la transaction silent Payment (SP) \***: (Sauf `RequestPRDKeyBackup`) Sélection de 4 noeuds de signet pour l'envoi de la`transaction SP`.
|
|
|
|
|
7. **Chiffrement des données confidentielles du `request_prd`**: Chiffrement des données confidentielles du `request_prd` avec la `KeyConfidential` de la`transaction SP`.
|
|
|
|
|
8. **Envoi du message**: Envoi du message aux relais
|
|
|
|
|
9. **Envoi de la transaction**: envoi de la transaction aux noeuds de signet à travers un `RequestPrdMessage` pour la publication de la`transaction SP` avec le hash du `RequestPrd` dans l'attribut `request_prd_reference_hash`.
|
|
|
|
|
1. Récupération des clés de chiffrement confidentiel des attributs des items d'un RequestPcd.
|
|
|
|
|
2. Chiffrement du `RequestPrd` avec la clé `ProcessKey` du `ItemProcess` concerné.
|
|
|
|
|
3. Création d'une`adresse SP` SP pour le partage de la `KeyConfidential` et pour l'horodatage du hash du `RequestPrd` dans la side chain.
|
|
|
|
|
4. Création du `message` contenant le `RequestPrd` chiffré, la preuve de travail, l'adresse de faucet
|
|
|
|
|
5. Sélection de 4 relais pour le message selon l'historique des pings et des réponses retournées.
|
|
|
|
|
6. Sélection de 4 noeuds de signet pour l'envoi de la`transaction SP`.
|
|
|
|
|
7. Chiffrement des données confidentielles du `request_prd` avec la `KeyConfidential` de la`transaction SP`.
|
|
|
|
|
8. Envoi du message aux relais
|
|
|
|
|
9. Envoi de la transaction aux noeuds de signet à travers un `RequestPrdMessage` pour la publication de la`transaction SP` avec le hash du `RequestPrd` dans l'attribut `request_prd_reference_hash`.
|
|
|
|
|
10. Mis à jour du cache avec les nouveaux `RequestPrd` envoyé (pas de mis en cache du `RequestPrdMessage`)
|
|
|
|
|
|
|
|
|
|
Voir [Silent-Payment-Specs.md](Silent-Payment-Specs.md).
|
|
|
|
|
|
|
|
|
@ -170,8 +171,9 @@ La réception d'un `RequestPcd` suit plusieurs étapes :
|
|
|
|
|
6. Recherche de l'`Item` associé via `item_reference_hash` et attente si nécessaire et traitement de celui ci.
|
|
|
|
|
7. (Sauf `RequestPRDKeyBackup`) Déchiffrage des attributs confidentiels notés `<attribut>_enc_by_shared_secret` depuis la `KeyConfidential` de la`transaction SP` correspondante via hash du `RequestPrd` dans l'output `2` de la transaction.
|
|
|
|
|
8. Mise à jour du cache pour les traitement des RequestPrd.
|
|
|
|
|
9. Validation des conditions définies dans le `ItemProcess` pour ce d'`Item` avec le `Role` correspondant dans le `ItemProcess` et dans ce rôles les conditions pour ce type de `RequestPrd` (dans l'attribut `request_prd_type`) telles que définies dans [Specs-Process-Roles-Specs.md](Specs-Process-Roles-Specs.md).
|
|
|
|
|
10. Traitements spécifiques au type de RequestPrd.
|
|
|
|
|
9. Voir `RequestPrdConfirm` création et envoi (sauf pour les `RequestPrdConfirm` et les `RequestPrdKeyBackup` et les `RequestPrdMessage` ayant un `raw_transaction_list` non vide).
|
|
|
|
|
10. Validation des conditions définies dans le `ItemProcess` pour ce d'`Item` avec le `Role` correspondant dans le `ItemProcess` et dans ce rôles les conditions pour ce type de `RequestPrd` (dans l'attribut `request_prd_type`) telles que définies dans [Specs-Process-Roles-Specs.md](Specs-Process-Roles-Specs.md).
|
|
|
|
|
11. Traitements spécifiques au type de RequestPrd.
|
|
|
|
|
|
|
|
|
|
## 7. <a name='RequestPrdList-DemandedeListesRequestPcd'></a>RequestPrdList - Demande de Listes ( RequestPcd)
|
|
|
|
|
|
|
|
|
@ -179,20 +181,18 @@ Utile pour les utilisateurs cherchant à consulter ou à explorer des listes de
|
|
|
|
|
|
|
|
|
|
### 7.1. <a name='Crationetenvoi-1'></a>Création et envoi
|
|
|
|
|
|
|
|
|
|
Traitements des `RequestPrd`, avec le `type_request` spécifique à `RequestPrdList`.
|
|
|
|
|
1. Traitements des `RequestPrd`, avec le `type_request` spécifique à `RequestPrdList` et envoi vers tous les `members` concernés par le `ItemProcess` pour le `Role` correspondant dans le `item_name`
|
|
|
|
|
2. Attente du `RequestPrdResponse` avec le `RequestPcd` demandés.
|
|
|
|
|
3. voir `RequestPrdResponse` réception.
|
|
|
|
|
4. Voir `RequestPcd` réception.
|
|
|
|
|
|
|
|
|
|
### 7.2. <a name='Rception-1'></a>Réception
|
|
|
|
|
|
|
|
|
|
La réception d'un `RequestPrdList` suit plusieurs étapes :
|
|
|
|
|
|
|
|
|
|
1. Traitements des `RequestPrd`
|
|
|
|
|
2. Création et envoi d'un `RequestPrdConfirm` pour confirmer la réception du `RequestPrdList` et envoie de la`transaction SP` associée avec
|
|
|
|
|
3. Recherche en cache de la dernière version de la liste du type d'`Item` concerné.
|
|
|
|
|
4. Création et envoi d'un `RequestPcd` avec la dernière version de la liste du type d'`Item` concerné.
|
|
|
|
|
5. Création et envoi à l'émetteur du `RequestPrdList` d'un `RequestPrdRResponse` avec :
|
|
|
|
|
5.1. le hash du `RequestPcd` envoyé dans l'attribut `RequestPcd_reference_hash`
|
|
|
|
|
5.2. le hash du `RequestPrdList` reçu dans l'attribut `request_prd_origin_hash`
|
|
|
|
|
6. Mise à jour du cache avec les nouveaux `RequestPcd` et `RequestPrdResponse` et `RequestPrdConfirm` envoyés.
|
|
|
|
|
2. Recherche en cache de la dernière version de la liste du type d'`Item` concerné.
|
|
|
|
|
3. Voir `RequestPcd` Création et envoi vers l'émetteur du `RequestPrdList`.
|
|
|
|
|
|
|
|
|
|
## 8. <a name='RequestPrdMessage-EnvoideMessages'></a>RequestPrdMessage - Envoi de Messages
|
|
|
|
|
|
|
|
|
@ -206,17 +206,17 @@ Les `RequestPrdMessage` répondent aux `RequestPrdMessage` sauf en cas d'envoi d
|
|
|
|
|
|
|
|
|
|
### 8.1. <a name='Crationetenvoi-1'></a>Création et envoi
|
|
|
|
|
|
|
|
|
|
Traitements des `RequestPrd`, avec le `type_request` spécifique à `RequestPrdMessage`.
|
|
|
|
|
1. Traitements des `RequestPrd`, avec le `type_request` spécifique à `RequestPrdMessage` vers l'emméteur du `RequestPrdMessage`.
|
|
|
|
|
2. Attente du `RequestPrdMessage` éventuel (sauf en cas d'envoi d'une `transaction SP`).
|
|
|
|
|
3. Le cas échéant : voir `RequestPrdMessage` Réception
|
|
|
|
|
|
|
|
|
|
### 8.2. <a name='Rception-1'></a>Réception
|
|
|
|
|
|
|
|
|
|
La réception d'un `RequestPrdMessage` suit plusieurs étapes :
|
|
|
|
|
|
|
|
|
|
1. Traitements des `RequestPrd`
|
|
|
|
|
2. Création et envoi d'un `RequestPrdConfirm` pour confirmer la réception du `RequestPrdList`.
|
|
|
|
|
3. Notificaiton et attente du retour de l'utilisateur (valeur de la signature et message de réponse)
|
|
|
|
|
4. Le cas échéant : création et envoi à l'émetteur du `RequestPrdMessage` d'un `RequestPrdMessage` avec :
|
|
|
|
|
5.1. le hash du `RequestPrdMessage` reçu dans l'attribut `request_prd_origin_hash`
|
|
|
|
|
2. Notification et attente du retour de l'utilisateur (valeur de la signature et message de réponse)
|
|
|
|
|
3. Le cas échéant : voir `RequestPrdMessage` création et envoi vers l'emméteur du `RequestPrdMessage`.
|
|
|
|
|
|
|
|
|
|
## 9. <a name='RequestPrdUpdate-MisesJourdeRequestPcd'></a>RequestPrdUpdate - Mises à Jour de RequestPcd
|
|
|
|
|
|
|
|
|
@ -232,10 +232,20 @@ Les `RequestPrdUpdate` signalent au réseau via l'attribut `RequestPcd_new_versi
|
|
|
|
|
|
|
|
|
|
### 9.1. <a name='Crationetenvoi-1'></a>Création et envoi
|
|
|
|
|
|
|
|
|
|
Traitements des RequestPrd, avec le `type_request` spécifique à `RequestPrdUpdate`.
|
|
|
|
|
1. Traitements des RequestPrd, avec le `type_request` spécifique à `RequestPrdUpdate`, création d'une nouvelle version de `RequestPcd` et envoi (vers tous les `members` concernés par le `ItemProcess` pour le `Role` correspondant dans le `item_name`)
|
|
|
|
|
2. Attente des `RequestPrdResponse` de l'ensemble des `members` concernés (`Role` correspondant dans le `ItemProcess` ).
|
|
|
|
|
3. Voir `RequestPrdResponse` Réception
|
|
|
|
|
4. Voir `RequestPcd` Réception.
|
|
|
|
|
|
|
|
|
|
### 9.2. <a name='Rception-1'></a>Réception
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
La réception d'un `RequestPrdUpdate` suit plusieurs étapes :
|
|
|
|
|
|
|
|
|
|
1. Traitements des `RequestPrd`
|
|
|
|
|
2. Notification et attente du retour de l'utilisateur (valeur de la signature et message de réponse)
|
|
|
|
|
3. Voir `RequestPrdResponse` création et envoi vers tous les membres de tous les roles du `ItemProcess`.
|
|
|
|
|
|
|
|
|
|
## 10. <a name='RequestPrdConfirm-ConfirmationdeRception'></a>RequestPrdConfirm - Confirmation de Réception
|
|
|
|
|
|
|
|
|
|
Le `RequestPrdConfirm` est utilisé pour confirmer la réception et le traitement de demandes ou de transactions, jouant un rôle crucial dans la validation des actions au sein du réseau.
|
|
|
|
@ -246,10 +256,12 @@ Les `RequestPrdList`, `RequestPrdUpdate`, `RequestPrdMessage`, `RequestPrdRespon
|
|
|
|
|
|
|
|
|
|
### 10.1. <a name='Crationetenvoi-1'></a>Création et envoi
|
|
|
|
|
|
|
|
|
|
Traitements des RequestPrd, avec le `type_request` spécifique à `RequestPrdConfirm`.
|
|
|
|
|
1. Traitements des RequestPrd, avec le `type_request` spécifique à `RequestPrdConfirm` envoi vers l'emméteur du `RequestPrd`.
|
|
|
|
|
|
|
|
|
|
### 10.2. <a name='Rception-1'></a>Réception
|
|
|
|
|
|
|
|
|
|
Traitements des `RequestPrd`, pas de traitement suppplémentaire.
|
|
|
|
|
|
|
|
|
|
## 11. <a name='RequestPrdResponse-RpondreuneDemande'></a>RequestPrdResponse - Répondre à une Demande
|
|
|
|
|
|
|
|
|
|
Le `RequestPrdResponse` permet de répondre spécifiquement à des `RequestPrd` reçus, facilitant un échange interactif d'informations ou de décisions entre les parties.
|
|
|
|
@ -262,11 +274,15 @@ Aussi le moyen de demander des moyens de paiement ou de dépot ou de preuve, pui
|
|
|
|
|
|
|
|
|
|
### 11.1. <a name='Crationetenvoi-1'></a>Création et envoi
|
|
|
|
|
|
|
|
|
|
Traitements des RequestPrd, avec le `type_request` spécifique à `RequestPrdResponse`.
|
|
|
|
|
1. Traitements des RequestPrd, avec le `type_request` spécifique à `RequestPrdResponse` et envoi en fonction du type de `RequestPrd` d'origine.
|
|
|
|
|
2. Pas de traitement supplémentaire.
|
|
|
|
|
|
|
|
|
|
### 11.2. <a name='Rception-1'></a>Réception
|
|
|
|
|
|
|
|
|
|
## 12. <a name='RequestPrdKeyHelloBakcup'></a>RequestPrdKeyHelloBakcup
|
|
|
|
|
1. Traitements des `RequestPrd`
|
|
|
|
|
2. Notification de l'utilisateur.
|
|
|
|
|
|
|
|
|
|
## 12. <a name='RequestPrdKeyHelloBakcup'></a>RequestPrdKeyBakcup
|
|
|
|
|
|
|
|
|
|
Le RequestPrdKeyHelloBakcup permet de demander la stockage de nouveaux shards associés à une `pre-id` .
|
|
|
|
|
|
|
|
|
@ -292,5 +308,6 @@ Traitements des RequestPrd, avec le `type_request` spécifique à `RequestPrdKey
|
|
|
|
|
|
|
|
|
|
## 15. <a name='Todo'></a>Todo
|
|
|
|
|
|
|
|
|
|
* [ ] Extraits de code illustrant l'utilisation des `RequestPcd` et `RequestPrd` dans des scénarios réels.
|
|
|
|
|
* [ ] Ajouter un tableau : transaction SP, confirmation attendue, réponse attendue, création vers, réponse vers.
|
|
|
|
|
* [ ] Compléter RequestPrdKeyHelloBakcup et RequestPrdKeyHello
|
|
|
|
|
* [ ] Diagrammes de séquences
|
|
|
|
|