Wording (doc)

This commit is contained in:
NicolasCantu 2024-03-25 14:24:33 +01:00
parent b1f8d433e0
commit 36ccee863f
49 changed files with 650 additions and 659 deletions

View File

@ -30,8 +30,8 @@ Cf. [Git SDK COMMON](https://git.4nk.com/4nk/sdk_common/doc)
* 12.1.1. [Gestion de la clé servant à l'ID `spend_recover`](#GestiondelaclservantlIDspend_recover)
* 12.1.2. [Backup de `Part2Enc`](#BackupdePart2Enc)
* 12.1.3. [Onboarding](#Onboarding-1)
* 12.2. [ItemMember complété des champs du process sélectionné et mise à jour de la liste des membres du process](#ItemMembercompltdeschampsduprocessslectionnetmisejourdelalistedesmembresduprocess)
* 12.3. [ItemProcess complété de l'address SP de l'utilisateur et mise à jour de la liste des version du process](#ItemProcesscompltdeladdressSPdelutilisateuretmisejourdelalistedesversionduprocess)
* 12.2. [Member complété des champs du process sélectionné et mise à jour de la liste des membres du process](#Membercompltdeschampsduprocessslectionnetmisejourdelalistedesmembresduprocess)
* 12.3. [Process complété de l'address SP de l'utilisateur et mise à jour de la liste des version du process](#ProcesscompltdeladdressSPdelutilisateuretmisejourdelalistedesversionduprocess)
* 12.4. [Réception des Pcd et PrdResponse en tenant compte des mises à jours (réception des clés de déchiffrement du role choisi dans le process sélectionné)](#RceptiondesPcdetPrdResponseentenantcomptedesmisesjoursrceptiondesclsdedchiffrementdurolechoisidansleprocessslectionn)
* 13. [Clés de révocation (`revoke`)](#Clsdervocationrevoke)
* 14. [Clés de third parties](#Clsdethirdparties)
@ -89,25 +89,25 @@ Voir [_Doc_references.md](_Doc_references.md).
## 7. <a name='Authentificationdesutilisateurs'></a>Authentification des utilisateurs
Les utilisateurs doivent pouvoir s'authentifier en utilisant un mot de passe et les données `exif` d'une image dite de login mise en cache dans IndexedDB pour les navigateurs et les applications mobiles, sinon en mémoire pour tous autres dispositifs dont l'IoT et une partie venant de membres choisi par les gestionnaires des membres des `ItemProcess` .
Les utilisateurs doivent pouvoir s'authentifier en utilisant un mot de passe et les données `exif` d'une image dite `recover` mise en cache dans IndexedDB (données chiffrées par le mot de passe cf. [Chiffrement AES quantique résistant (AES-GCM-256)](#ChiffrementAESquantiquersistantAES-GCM-256)) pour les navigateurs et les applications mobiles, sinon chiffré de la même manière mais en mémoire pour tous autres dispositifs dont l'IoT et une partie venant de membres choisi par les gestionnaires des membres des `Process` .
Le système utilisera les clés cryptographiques de Bitcoin pour une authentification sécurisée via un HD Wallet transparent, intégrant le concept de Silent Payments pour éviter la réutilisation d'adresses. Les annuaires présents par rôles dans les contrats sont des listes d'adresses Silent Payments avec leurs `third parties`.
Le système utilisera les clés cryptographiques de Bitcoin pour une authentification sécurisée via un HD Wallet transparent, intégrant le concept de Silent Payments pour éviter la réutilisation d'adresses. Les annuaires présents par rôles dans les contrats sont des listes d'adresses Silent Payments avec leurs `third parties` (autres device de confirmation des actions en `2FA`).
Les utilisateurs sont reconnus par une`adresse SP` dans un ou plusieurs rôles dans un `ItemProcess`. Ces `ItemProcess` préalablement publiés et relayés par les relais décrivent les conditions de validation des identités. Par process, les identités appelées techniquement `member`.
Les utilisateurs sont reconnus par une`adresse SP` dans un ou plusieurs rôles dans un `Process`. Ces `Process` préalablement publiés et relayés par les relais décrivent les conditions de validation des identités. Par process, les identités appelées techniquement `member`.
Chaque relais permet d'accéder à la liste des process, de créer, recomposer (`recover`) et révoquer (`revoke`) une identité, et de la compléter par `ItemProcess` dans lequel l'utilisateur a un rôle (`onboarding`).
Chaque relais permet d'accéder à la liste des process, de créer, recomposer (`recover`) et révoquer (`revoke`) une identité, et de la compléter par `Process` dans lequel l'utilisateur a un rôle (`onboarding`).
## 8. <a name='Connexionviadestiers'></a>Connexion via des tiers
Le système offrira la possibilité de se connecter via des services tiers (tels que OAuth2, avec Google, GitHub, etc.), permettant une intégration fluide avec les écosystèmes existants sans dégrader l'expérience utilisateur.
Pour cela, les flux de 4NK agissent en "proxy" transparent devant les flux API des services concernés, et les tokens d'accès sont ajoutés aux données de `member`. En parrallèle des flux existant, les hash des requêtes API et de leurs réponses sont signés des clés des parties prenantes pour une vérification de la conformité des données par rapport aux `ItemProcess` 4NK.
Pour cela, les flux de 4NK agissent en "proxy" transparent devant les flux API des services concernés, et les tokens d'accès sont ajoutés aux données de `member`. En parrallèle des flux existant, les hash des requêtes API et de leurs réponses sont signés des clés des parties prenantes pour une vérification de la conformité des données par rapport aux `Process` 4NK.
## 9. <a name='Fonctionnalitdercuprationdemotdepasse'></a>Fonctionnalité de récupération de mot de passe
En cas d'oubli de mot de passe, les utilisateurs pourront récupérer leur accès depuis une nouvelle identité (`recover`) après avoir révoqué l'ancienne identité, via un processus sécurisé, impliquant une vérification d'identité et l'échange de secrets chiffrés conformément aux protocoles établis.
En cas d'oubli de mot de passe, les utilisateurs pourront récupérer leur accès depuis une nouvelle identité (`recover`) après avoir révoqué l'ancienne identité, via un processus sécurisé, impliquant une vérification d'identité et l'échange de secrets chiffrés conformément aux protocoles établis depuis une adresse de révocation `revoke`.
Une image de révocation est générée à la création d'une identité pour pouvoir dépenser un UTXO dit alors de révocation, avec les flux `Pcd` et `Prd` correspondants.
Une image de révocation est générée à la création d'une identité pour pouvoir dépenser un UTXO dit alors de révocation pour signaler aux autres membres de `Process` de ne plus prendre en compte les transactions venant de l'adresse silent payment actuelle du membre.
## 10. <a name='Gestiondesessionbasesuruncache'></a>Gestion de session basée sur un cache
@ -117,8 +117,8 @@ Le système ne maintiendra pas de session traditionnelle sur le serveur. La navi
Les transactions SP ont besoin de 2 clés privées Bitcoin, l'une critique sur la dépense des jetons, l'autre qui lève la confidentialité (partageable dans certains cas) :
* **Clé de dépense** : la clé qui prouve sa détention par la capacité de dépenser un UTXO d'une transaction SP.
* **Clé de scan** : la clé qui permet de détecter qu'une transaction SP nous est destinée.
* **Clé de dépense 'spend'** : la clé qui prouve sa détention par la capacité de dépenser un UTXO d'une transaction SP.
* **Clé de scan 'scan'** : la clé qui permet de détecter qu'une transaction SP nous est destinée.
Il y a 3 paires de ces clés privées :
@ -150,7 +150,7 @@ Pour revoir ces jetons l'utilisateur doit générer les adresses sur lesquelles
A chaque nouveau message il génère de nouvelles addresses pour la clé qui va dépenser des jetons de signet. Soit une nouvelle adresse (publique) de la clé privée `spend_recover`.
Ces adresses apparaîtront dans l'attribut `faucet_sp_address` des messages envoyés aux relais.
Ces adresses apparaîtront dans l'attribut `faucet_sp_address` des messages envoyés aux relais cf [Messages-Specs.md](Messages-Specs.md Messages Specs) pour la générantion d'une wallet temporaire qui versera les fonds reçus du faucet sur l'adresse silent payment de l'utilisateur.
## 12. <a name='GestiondesclsdelidentitaussilesclsdestransactionsSP'></a>Gestion des clés de l'identité (aussi les clés des transactions SP)
@ -158,101 +158,57 @@ Ces adresses apparaîtront dans l'attribut `faucet_sp_address` des messages envo
#### 12.1.1. <a name='GestiondelaclservantlIDspend_recover'></a>Gestion de la clé servant à l'ID `spend_recover`
Les clés font 256 bits.
La clé privée `spend_recover` est la clé principale pour forger les identités.
Cette clé est d'abord décomposée, avant d'être partiellement distribuée. Voici les principales étapes :
1. Cette clé sera scindée en 2 parties (à la moitié de la longueur de leur représentation hexadécimale) :
1.1. `Part1`, de 128 bits c'est la partie qui sera chiffrée (AES-GCM 256 bits) par
le mot de passe "hashé" (SHA-256 d'un scrytp)
etc une seed de générée aléatoirement de 256 bits avec (concaténé)
pour obtenir la seed de chiffrement AES de 256 bits
et stockée en cache dans une image dite de login avec la seed générée aléatoirement de 256 bits.
En fonction des cas d'usage le mot de passe peut être remplacé par une seed de 256 bits directement et de meilleure entropie que le mot de passe.
Le cache stocke aussi la une autre seed générée aléatoirement de 256 bits pour la `Part2`
`Part1`, et les seeds générées aléatoirement sont stockées dans les données exif de l'image de login.
`Part1` est la partie locale :
* le mot de passe "hashé"
* et une seed de générée aléatoirement
* ajouté à l'une image de login
`Part2` est la partie distribuée :
* le mot de passe "hashé"
* une seed de générée aléatoirement répartie par un Shamir Secret Sharing, chiffrée pour chaque partie par le mot de passe et distribuées en 1 pour 1 aux membres actuels du rôle de gestionnaire des membres.
Encryption speudo code :
```
Une `pre-id` qui identifie l'utilisateur est générée par le hash (SHA 256) d'un scrypt de la `Part1` et du mot de passe de l'utilisateur.
```pseudo-code
part1_spend_recover_enc=aes(sha(scrypt((MDP+random_seed1), part1)
image1.addExif(part1_spend_recover_enc, random_seed1, random_seed2)
part2_spend_recover_enc_shards=sss(aes(SHA256'srcypt(MDP+random_seed2), part2), nMembers, 0.8)
imageLogin.addExif(part1_spend_recover_enc, random_seed1, random_seed2)
pre_id=sha256(part1_spend_recover_enc, MDP, random_seed)
```
1.2. `Part2`, de 128 bits,
le mot de passe "hashé" (SHA-256 d'un scrypt) avec (concaténé)
une seed de générée aléatoirement de 256 bits
pour obtenir la seed de chiffrement AES de 256 bits
et sera répartie par un Shamir Secret Sharing, chiffrée pour chaque partie par le mot de passe et distribuées en 1 pour 1 aux membres actuels du rôle de gestionnaire des membres.
Encryption speudo code :
```
part2_spend_recover_enc_shars=sss(aes(SHA256'srcypt(MDP+random_seed2), part2), nMembers, 0.8)
```
2. Une `pre-id` qui identifie l'utilisateur est générée par le hash (SHA 256) d'un scrypt de la `Part1` et du mot de passe de l'utilisateur.
Hash speudo code :
```
pre_id=sha256(part1_spend_recover_enc, MDP)
```
3. Création d'un `PrdList` par membre (1 shard par membre), par `Prd` :
3.1. Génération d'une clé de chiffrement dite `sp_shared_secret` qui sera transmise dans le Diffie-Hellman de la transaction SP.
3.2. Création d'un `ItemMember` à envoyer avec le `PrdList`.
4. Création des messages de type `Message` correspondant aux Prd, envoi des messages aux relais connectés.
Dans l'ordre on réalise donc les opérations suivantes donc :
1. Split de `spend_recover`.
2. Chiffrement AES de `Part1`.
3. Mise en cache de `Part1Enc`.
4. Création de la pre-id
5. Chiffrement AES de `Part2`.
6. Sharding de `Part2Enc`.
2. Création d'un `PrdList` par membre (1 shard par membre) par `Prd` cf [PRD-PCD](PRD-PCD-Specs.md PRD-PCD) :
#### 12.1.2. <a name='BackupdePart2Enc'></a>Backup de `Part2Enc`
Les relais initialisent le SDK (Wasm) par défaut avec une liste `SharedProcessList` de `SharedProcess` contenant l'`ItemProcess` choisi.
Les relais initialisent le SDK (Wasm) par défaut avec une liste `ProcessList` contenant `Process` choisi.
Chacun de des managers des membres sera responsable de d'associer un `shard` de `Part2Enc` à une `pre-id` et de revoyer des les shards dans un `PrdResponse` en réponse au `PrdList` envoyé.
Dans l'ordre on réalise donc les opérations suivantes pour chaque membres :
1. Création de `PrdList` à destination du membre
2. Création de `Message` du `PrdList` à destination du membre.
3. Envoi de la transaction SP du `Message` du `RequestList` à destination du membre.
4. Envoi du `Message` du `PrdList` à destination du membre.
5. Atttente de la réception des `PrdResponse` en réponse aux `PrdList` (confirmations).
6. Recomposition de la clé pour confirmation depuis les shards reçus dans les `PrdResponse`.
6.1. Déchiffrement par le mot de passe de `Part1Enc` depuis le cache.
6.2. Déchiffrement par secret partagé de chaque shard reçu dans `id_shard_info_confidential` des `PrdResponse` de chaque member du `Role` `Member`du `ItemProcess`.
6.3. Recomposition de `Part2Enc` et déchiffrement par le mot de passe
6.4. Concaténation de `Part1` et `Part2`
#### 12.1.3. <a name='Onboarding-1'></a>Onboarding
### 12.2. <a name='ItemMembercompltdeschampsduprocessslectionnetmisejourdelalistedesmembresduprocess'></a>ItemMember complété des champs du process sélectionné et mise à jour de la liste des membres du process
### 12.2. <a name='Membercompltdeschampsduprocessslectionnetmisejourdelalistedesmembresduprocess'></a>Member complété des champs du process sélectionné et mise à jour de la liste des membres du process
Le role `member` de l'`itemProcess` sélectionné contient un `Item` avec des `metadata_contract_public`, `metadata_role_confidential` et `metadata_private` contenant chacun une `render_template_list` dont le premier élément du tableau est le formulaire de création de l'identité pour champs concernés (publiques ou confidentiels ou privés).
Le role `member` de `Process` sélectionné contient un `Item` avec des `metadata_contract_public`, `metadata_role_confidential` et `metadata_private` contenant chacun une `render_template_list` dont le premier élément du tableau est le formulaire de création de l'identité pour champs concernés (publiques ou confidentiels ou privés).
Ces formulaires permettront de créé les champs attendus par `condition_attribute_encryption_list` dans le role `Member` de l'`ItemProcess` sélectionné, dans l`ItemMember` de l'utilisateur (champs dans `data` des attribut `metadata_contract_public`, `metadata_role_confidential` et `metadata_private` correpsondants).
Ces formulaires permettront de créé les champs attendus par `condition_attribute_encryption_list` dans le role `Member` de `Process` sélectionné, dans `Member` de l'utilisateur (champs dans `data` des attribut `metadata_contract_public`, `metadata_role_confidential` et `metadata_private` correpsondants).
Une fois l'`ItemMember` complété, il est ajouté à la liste des membres pour créer un nouveau `Pcd` envoyé pour mises à jours aux managers du rôle `Member` du `ItemProcess` sélectionné via un `PrdUpdate`.
Une fois `Member` complété, il est ajouté à la liste des membres pour créer un nouveau `Pcd` envoyé pour mises à jours aux managers du rôle `Member` du `Process` sélectionné via un `PrdUpdate`.
### 12.3. <a name='ItemProcesscompltdeladdressSPdelutilisateuretmisejourdelalistedesversionduprocess'></a>ItemProcess complété de l'address SP de l'utilisateur et mise à jour de la liste des version du process
### 12.3. <a name='ProcesscompltdeladdressSPdelutilisateuretmisejourdelalistedesversionduprocess'></a>Process complété de l'address SP de l'utilisateur et mise à jour de la liste des version du process
Pour le ou les roles sélectionnés, l'attribut `request_prd_sp_address_list` de `condition_prd_address_set_list` est complété par l'adresse SP de l'utilisateur.
Une fois l'`ItemProcess` complété, il est ajouté à la liste des membres pour créer un nouveau `Pcd` envoyé pour mises à jours aux managers du rôle `Process` du `ItemProcess` sélectionné via un `PrdUpdate`.
Une fois `Process` complété, il est ajouté à la liste des membres pour créer un nouveau `Pcd` envoyé pour mises à jours aux managers du rôle `Process` du `Process` sélectionné via un `PrdUpdate`.
### 12.4. <a name='RceptiondesPcdetPrdResponseentenantcomptedesmisesjoursrceptiondesclsdedchiffrementdurolechoisidansleprocessslectionn'></a>Réception des Pcd et PrdResponse en tenant compte des mises à jours (réception des clés de déchiffrement du role choisi dans le process sélectionné)
@ -260,13 +216,13 @@ Envoi d'un `PrdList` pour chaque membre de chaque rôle du process sélectionné
## 13. <a name='Clsdervocationrevoke'></a>Clés de révocation (`revoke`)
Les clés de l'image de révocation sont chiffrées par le mot de passe (ou pas, en option) et stockées directement dans les données exifs de l'image de révocation. Les adresses SP correspondantes sont aussi inscrites dans les données exif.
Les clés de l'image de révocation sont chiffrées par le mot de passe et stockées directement dans les données exifs de l'image de révocation.
L'envoi d'une révocation est identique à la création d'une nouvelle adresse via les `PrdList` mais la transaction SP est envoyée depuis l'adresse de révocation (la clé aura dû être chargée au préalable depuis l'interface).
## 14. <a name='Clsdethirdparties'></a>Clés de third parties
Au moment de l'update de l'`ItemMember` il est possible de charger des addresses SP de third parties pour lesquelles l'utilisateur a un rôle dans un `ItemProcess`. Ces adresses sont ajoutées avec les labels et éventuellement les empreintes des dispositifs correspondants dans l'objet `ItemMember`.
Au moment de l'update de `Member` il est possible de charger des addresses SP de third parties pour lesquelles l'utilisateur a un rôle dans un `Process`. Ces adresses sont ajoutées avec les labels et éventuellement les empreintes des dispositifs correspondants dans l'objet `Member`.
Les clés privées associées sont générées lors de l'update d'un membre, à la validation de l'update il est possible de télécharger des images correspondantes (clés + hash du process) dans une interface 2FA.
@ -288,7 +244,7 @@ Puis depuis la liste des membres du process, pour chacun des membres :
5. Attente de la validation (`PrdResponse`) du `PrdUpdate`.
6. Recomposition de la clé pour confirmation depuis les shards reçus dans les `PrdResponse`.
6.1. Déchiffrement par le mot de passe de `Part1Enc` depuis le cache.
6.2. Déchiffrement par secret partagé de chaque shard reçu dans `id_shard_info_confidential` des `PrdResponse` de chaque member du `Role` `Member`du `ItemProcess`.
6.2. Déchiffrement par secret partagé de chaque shard reçu dans `id_shard_info_confidential` des `PrdResponse` de chaque member du `Role` `Member`du `Process`.
6.3. Recomposition de `Part2Enc` et déchiffrement par le mot de passe
6.4. Concaténation de `Part1` et `Part2`
7. Réception des flux PCD et PRDResponse des gestionnaires des membres

View File

@ -19,7 +19,7 @@ Cf. [Git SDK COMMON](https://git.4nk.com/4nk/sdk_common/doc)
* 5.3. [MetaData - Gestion des Attributs d'Items](#MetaData-GestiondesAttributsdItems)
* 5.3.1. [Composition et Fonction](#CompositionetFonction-1)
* 5.3.2. [Cas d'utilisation](#Casdutilisation-1)
* 6. [ItemProcess](#ItemProcess)
* 6. [Process](#Process)
* 7. [Exemples de Code](#ExemplesdeCode)
* 8. [Todo](#Todo)
@ -46,8 +46,8 @@ Dans le système 4NK, les items représentent les entités ou les objets appelé
* **Process**: Définit un ensemble de règles et de procédures pour gérer des interactions spécifiques au sein du réseau.
* **Member**: Représente les utilisateurs ou entités participant à un processus.
* **Peer**: Identifie les nœuds ou participants du réseau qui aident à faciliter les communications et les transactions.
* **Artefact** : Un type d'objet générique personnalisable dans les `ItemProcess` , il peut y avoir une quantité infinie de type d'`artefacts` différents par `ItemProcess`.
* **Payments, Deposit, Commitment**: Représentent divers types de transactions ou d'engagements au sein du réseau, avec des règles et des attributs spécifiques.
* **Artefact** : Un type d'objet générique personnalisable dans les `Process` , il peut y avoir une quantité infinie de type d'`artefacts` différents par `Process`.
* **Payments, Deposit, commit**: Représentent divers types de transactions ou d'engagements au sein du réseau, avec des règles et des attributs spécifiques.
### 5.2. <a name='CompositionetFonction'></a> Composition et Fonction
@ -78,9 +78,9 @@ La structure MetaData joue un rôle crucial dans la définition des attributs et
La richesse et la diversité des métadonnées permettent une personnalisation et une spécification précises des items, soutenant des processus complexes, des contrats détaillés, et des interactions sécurisées au sein du réseau.
## 6. <a name='ItemProcess'></a>ItemProcess
## 6. <a name='Process'></a>Process
* **item**: Base de l'ItemProcess, liant les processus aux items spécifiques au sein du système.
* **item**: Base de l'Process, liant les processus aux items spécifiques au sein du système.
* **item_process_public_attribute_group**: Groupe d'attributs publics associés à un processus, définissant les règles, les rôles et les conditions d'exécution du processus.
## 7. <a name='ExemplesdeCode'></a>Exemples de Code

View File

@ -12,10 +12,10 @@ Cf. [Git SDK COMMON](https://git.4nk.com/4nk/sdk_common/doc)
* 3. [1. Objectif](#Objectif)
* 4. [2. Portée](#Porte)
* 5. [Documents de référence](#Documentsderfrence)
* 6. [4. Variable `SharedPeerList` du SDK (Wasm)](#VariableSharedPeerListduSDKWasm)
* 6. [4. Variable `PeerList` du SDK (Wasm)](#VariablePeerListduSDKWasm)
* 7. [6. Caractéristiques générales des messages de type `Message` et `MessageConnect`](#CaractristiquesgnralesdesmessagesdetypeMessageetMessageConnect)
* 7.1. [6.1. SharedPeerList](#SharedPeerList)
* 7.2. [6.2. SharedProcessList](#SharedProcessList)
* 7.1. [6.1. PeerList](#PeerList)
* 7.2. [6.2. ProcessList](#ProcessList)
* 7.3. [6.3. Taille des données](#Tailledesdonnes)
* 7.4. [6.4. Preuve de travail](#Preuvedetravail)
* 7.5. [6.5. Adresse SP de faucet](#AdresseSPdefaucet)
@ -64,27 +64,27 @@ Ce document concerne les messages de type `Message` et `MessageConnect` pour le
Voir [_Doc_references.md](_Doc_references.md).
## 6. <a name='VariableSharedPeerListduSDKWasm'></a>4. Variable `SharedPeerList` du SDK (Wasm)
## 6. <a name='VariablePeerListduSDKWasm'></a>4. Variable `PeerList` du SDK (Wasm)
La variable `SharedPeerList` du SDK (Wasm) est une liste de relais partagée avec les relais, constituant la première liste disponible, fournie en dur par le relais auquel on est connecté.
La variable `PeerList` du SDK (Wasm) est une liste de relais partagée avec les relais, constituant la première liste disponible, fournie en dur par le relais auquel on est connecté.
## 7. <a name='CaractristiquesgnralesdesmessagesdetypeMessageetMessageConnect'></a>6. Caractéristiques générales des messages de type `Message` et `MessageConnect`
### 7.1. <a name='SharedPeerList'></a>6.1. SharedPeerList
### 7.1. <a name='PeerList'></a>6.1. PeerList
`SharedPeerList` est une liste de relais partagée entre les relais et les clients, complétée au fur et à mesure de leur découverte de nouveaux relais.
`PeerList` est une liste de relais partagée entre les relais et les clients, complétée au fur et à mesure de leur découverte de nouveaux relais.
### 7.2. <a name='SharedProcessList'></a>6.2. SharedProcessList
### 7.2. <a name='ProcessList'></a>6.2. ProcessList
`SharedProcessList` est une liste de `ItemProcess` partagée entre les relais et les clients, complétée au fur et à mesure de leur découverte de nouveaux `ItemProcess`.
`ProcessList` est une liste de `Process` partagée entre les relais et les clients, complétée au fur et à mesure de leur découverte de nouveaux `Process`.
### 7.3. <a name='Tailledesdonnes'></a>6.3. Taille des données
Les objets `SharedPeer` spécifient la taille maximale des données pour les messages de type `Message` et `MessageConnect` dans l'attribut `data_max_size` du sous-attribut `relay`. Les messages excédant cette taille sont rejetés.
Les objets `Peer` spécifient la taille maximale des données pour les messages de type `Message` et `MessageConnect` dans l'attribut `data_max_size` du sous-attribut `relay`. Les messages excédant cette taille sont rejetés.
### 7.4. <a name='Preuvedetravail'></a>6.4. Preuve de travail
Les objets `SharedPeer` définissent les caractéristiques de la preuve de travail pour les messages de type `Message` et `MessageConnect` dans les attributs `pow_difficulty`, `pow_pattern`, `pow_prefix`, `pow_nonce`, `pow_timeout` du sous-attribut `relay`. Les messages ne respectant pas la preuve de travail sont rejetés.
Les objets `Peer` définissent les caractéristiques de la preuve de travail pour les messages de type `Message` et `MessageConnect` dans les attributs `pow_difficulty`, `pow_pattern`, `pow_prefix`, `pow_nonce`, `pow_timeout` du sous-attribut `relay`. Les messages ne respectant pas la preuve de travail sont rejetés.
### 7.5. <a name='AdresseSPdefaucet'></a>6.5. Adresse SP de faucet
@ -96,8 +96,8 @@ L'utilisateur reçoit en retour une transaction Silent Payments (SP) contenant d
`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.
* **`shared_peer_list`** : Une liste de pairs partagés, représentée par des objets `Peer`. 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 `Process`. 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 Payments).
* **`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.
@ -110,11 +110,11 @@ La structure `Pow` détaille un défi de Preuve de Travail, incluant le hash des
* **`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.
La structure `Process` 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.
* **`process_list`** : Une liste d'`Process` 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 :
La structure `Peer` 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é.
@ -194,7 +194,7 @@ L'utilisateur envoie un message de type `MessageConnect` à chaque relais pour s
Il y a des doublons de messages pour chaque relais, à la fois envoyés et reçus. Un arbitrage est possible pour confronter les données dans le temps et par origines. Les résultats permettent d'améliorer les listes de membres par un système de réputation calculable de manière autonome en rapport à sa propre expérience. L'arbitrage repose sur une réponse devant satisfaire au moins 80% de la même réponse que celle des relais connectés pour le même message. Les valeurs des arbitrages sont stockées dans le cache.
Pour se connecter, l'utilisateur récupère leurs caractéristiques depuis la liste de relais partagée `SharedPeerList` du SDK (Wasm) et depuis les listes de relais non partagées `private` et `public` du cache.
Pour se connecter, l'utilisateur récupère leurs caractéristiques depuis la liste de relais partagée `PeerList` du SDK (Wasm) et depuis les listes de relais non partagées `private` et `public` du cache.
Un ping (incluant la Preuve de Travail dans le délai) est réalisé sur chaque relais pour vérifier leur disponibilité, et les quatre premiers relais disponibles sont choisis. Les valeurs des pings sont stockées dans le cache pour chaque relais (historique des pings).
@ -208,7 +208,7 @@ Les connexions utilisent le protocole WebSocket avec ou sans SSL (URL commençan
![PeerSendScore.png](diagrams/PeerSendScore.png "PeerSendScore.")
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.
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 `Process`. Il n'y a pas de retour attendu pour ce message.
Objet de type `MessageConnect`. Les attributs ont les fonctions suivantes :
@ -229,7 +229,7 @@ Objet de type `Message`, Les attributs ont les fonctions suivantes :
![PeerReceivedScore.png](diagrams/PeerReceivedScore.png "PeerReceivedScore.")
Le client reçoit un nouveau message via le socket ouvert avec le relais et effectue divers contrôles, notamment le calcul du hash du message et sa vérification dans le cache. Les listes de relais (`SharedPeerList`) et de `ItemProcess` (`SharedProcessList`) sont mises à jour en conséquence. Le message est ensuite déchiffré avec la `ProcessKey` du `ItemProcess`, et d'autres contrôles sont réalisés. Les données pertinentes sont mises à jour dans le cache.
Le client reçoit un nouveau message via le socket ouvert avec le relais et effectue divers contrôles, notamment le calcul du hash du message et sa vérification dans le cache. Les listes de relais (`PeerList`) et de `Process` (`ProcessList`) sont mises à jour en conséquence. Le message est ensuite déchiffré avec la `ProcessKey` du `Process`, et d'autres contrôles sont réalisés. Les données pertinentes sont mises à jour dans le cache.
## 9. <a name='Traitementsparlesrelais'></a>8. Traitements par les relais
@ -239,11 +239,11 @@ Le client reçoit un nouveau message via le socket ouvert avec le relais et effe
![RelayMessageConnectReceived](diagrams/RelayMessageConnectReceived.png "RelayMessageConnectReceived")
À la réception d'un message de type `MessageConnect`, le relais enregistre le socket du client et réalise divers contrôles, y compris la vérification de la preuve de travail et la taille des données. Les listes de relais (`SharedPeerList`) et de `ItemProcess` (`SharedProcessList`) sont mises à jour. En retour, le relais envoie quelques jetons à l'adresse SP de faucet communiquée par le client et met à jour les données dans le cache.
À la réception d'un message de type `MessageConnect`, le relais enregistre le socket du client et réalise divers contrôles, y compris la vérification de la preuve de travail et la taille des données. Les listes de relais (`PeerList`) et de `Process` (`ProcessList`) sont mises à jour. En retour, le relais envoie quelques jetons à l'adresse SP de faucet communiquée par le client et met à jour les données dans le cache.
### 9.2. <a name='ConnexionaurseauderelaisvialesmessagesdetypeMessageConnectparlesrelais'></a>8.2. Connexion au réseau de relais via les messages de type `MessageConnect` par les relais
Les relais se connectent à de nouveaux relais en utilisant `MessageConnect`, partageant à leur tour leur liste de relais et de `ItemProcess`. Aucun retour n'est attendu pour ce message.
Les relais se connectent à de nouveaux relais en utilisant `MessageConnect`, partageant à leur tour leur liste de relais et de `Process`. Aucun retour n'est attendu pour ce message.
## 10. <a name='TraitementdesmessagesdetypeMessageparlesrelais'></a>9. Traitement des messages de type `Message` par les relais
@ -259,7 +259,7 @@ Bitcoin et les side chains utilisent divers protocoles pour la découverte de pa
### 11.1. <a name='ProtocoledeDcouvertedesPairs'></a>10.1. Protocole de Découverte des Pairs
Bitcoin facilite la découverte de nouveaux nœuds via des DNS seeds et une liste de nœuds codée en dur. 4NK utilise la `SharedPeerList` comme équivalent pour faciliter la découverte de relais dans le réseau.
Bitcoin facilite la découverte de nouveaux nœuds via des DNS seeds et une liste de nœuds codée en dur. 4NK utilise la `PeerList` comme équivalent pour faciliter la découverte de relais dans le réseau.
### 11.2. <a name='ProtocoledeTransmissiondesTransactions'></a>10.2. Protocole de Transmission des Transactions

View File

@ -56,20 +56,20 @@ Voir [_Doc_references.md](_Doc_references.md).
## 6. <a name='Dfinitions'></a>Définitions
* **Portable Contract Document (`Pcd`)**: Un format `JSON` chiffré conçu pour contenir des listes d'éléments d'un type spécifique, attachées à un processus (`process_hash`) et soumises aux règles de validation décrites dans le rôle correspondant à ce type d'`Item` dans le `ItemProcess` (`item_type`).
* **Portable Contract Document (`Pcd`)**: Un format `JSON` chiffré conçu pour contenir des listes d'éléments d'un type spécifique, attachées à un processus (`process_hash`) et soumises aux règles de validation décrites dans le rôle correspondant à ce type d'`Item` dans le `Process` (`item_type`).
* **Portable Request Document (`Prd`)**: Format `JSON` chiffré contenant les valeurs de signatures et les clés de déchiffrement nécessaires à l'exploitation (requêtes et validation) des `Pcd`. Les `PrdResponse` sont collectés pour vérifier le respect des conditions de l'`ItemProcess`. D'autres types de `Prd` incluent :
* **Portable Request Document (`Prd`)**: Format `JSON` chiffré contenant les valeurs de signatures et les clés de déchiffrement nécessaires à l'exploitation (requêtes et validation) des `Pcd`. Les `PrdResponse` sont collectés pour vérifier le respect des conditions de `Process`. D'autres types de `Prd` incluent :
* `PrdList`: Demande de listes d'`Item`. En réponse, une `Pcd` est reçue avec les `PrdResponse` correspondants.
* `PrdMessage`: Envoi de messages publics, confidentiels ou privés et/ou de transactions Silent Payments des autres `Prd` à diffuser sur le réseau des nœuds de la side chain. Les `PrdMessage` peuvent répondre les uns aux autres.
* `PrdUpdate`: Demande de mise à jour d'une liste d'`Item` (publiée via un `PCD`), qui sera déchiffrée et validée ou non par des `PrdResponse` en retour.
* `PrdConfirm`: Confirmation de la réception des `Prd` (à l'exception de `PrdConfirm` eux-même).
* `PrdResponse`: Réponse aux autres types de `Prd` (à l'exception de `PrdConfirm`, et `PrdMessage`).
* **Message**: Enveloppe commune pour les `Prd` et `Pcd` lors de leur transmission aux relais et de leur réception depuis les relais. Dans cette enveloppe les `Prd` et `Pcd` sont chiffrés par la `ProcessKey` de l'`ItemProcess` (cf. [Specs-Definition](SpecsDefinition.md)) et ajoutés au champs `RequestEnc`.
* **Message**: Enveloppe commune pour les `Prd` et `Pcd` lors de leur transmission aux relais et de leur réception depuis les relais. Dans cette enveloppe les `Prd` et `Pcd` sont chiffrés par la `ProcessKey` de `Process` (cf. [Specs-Definition](SpecsDefinition.md)) et ajoutés au champs `RequestEnc`.
* **KeyConfidential**: Clé AES-GCM-256 issue du `Diffie-Hellman` de la transaction Silent Payments correspondant à un `Prd`.
* **ProcessKey**: La clé publique de chiffrement d'un `ItemProcess` (trouvée dans un `ItemProcess`, dans son attribut `Item`, dans son attribut `metadata_contract_public`, dans son attribut `meta_data`, dans son attribut `key_list` au premier élément).
* **ProcessKey**: La clé publique de chiffrement d'un `Process` (trouvée dans un `Process`, dans son attribut `Item`, dans son attribut `metadata_contract_public`, dans son attribut `meta_data`, dans son attribut `key_list` au premier élément).
* **KeyRecover**: La clé privée de dépense de `recover` du signet, utilisée comme référence pour l'identité.
@ -91,7 +91,7 @@ Les `Prd` sont des demandes d'actions ou des réponses à ces demandes, interagi
* `PrdConfirm` : Répond à tous les autres types de `Prd` (à l'exception des `PrdConfirm` eux-mêmes).
* `PrdResponse` : Répond à tous les autres types de `Prd` (à l'exception des `PrdConfirm`, `PrdResponse` eux-mêmes). Dans le cas d'une réponse à un `PrdList` ou d'un `PrdUpdate`, le `PrdResponse` doit obligatoirement être accompagné d'un `Pcd`.
Selon le type de `Prd`, les demandes peuvent s'adresser à tous les membres de l'`ItemProcess`, aux gestionnaires du type d'`Item` concerné ou simplement à l'émetteur, selon :
Selon le type de `Prd`, les demandes peuvent s'adresser à tous les membres de `Process`, aux gestionnaires du type d'`Item` concerné ou simplement à l'émetteur, selon :
* `PrdList` : Envoyé aux gestionnaires du type d'`Item` concerné.
* `PrdMessage`, avec 2 cas de figure :
@ -118,9 +118,9 @@ Ce qui est résumé pour l'envoi :
| `request_type` | Notification user | `transaction SP` + `PrdMessage` | `Pcd` to send | `request_type` send to | `Pcd` reply waiting | `PrdResponse` reply waiting | `PrdConfirm` reply waiting |
|----------------------|-----------------------------------------------------------------------------------|----------------------------------------|----------------------|-----------------------------------------------------------------|----------------------------|------------------------------------|-----------------------------------|
| `PrdList` | No | Yes | No | all the members of the `item_name` `Role` into to `ItemProcess` | Yes | Yes | Yes |
| `PrdUpdate` | waiting `sig_value` | Yes | Yes | all the members of all `Role` into to `ItemProcess` | No | Yes | Yes |
| `PrdMessage` | waiting `sig_value` + `message_public`, `message_confidential`, `message_private` | if no `raw_transaction_list` | No | a member of the `ItemProcess` | No | No | if no `raw_transaction_list` |
| `PrdList` | No | Yes | No | all the members of the `item_name` `Role` into to `Process` | Yes | Yes | Yes |
| `PrdUpdate` | waiting `sig_value` | Yes | Yes | all the members of all `Role` into to `Process` | No | Yes | Yes |
| `PrdMessage` | waiting `sig_value` + `message_public`, `message_confidential`, `message_private` | if no `raw_transaction_list` | No | a member of the `Process` | No | No | if no `raw_transaction_list` |
| `PrdResponse` | waiting `sig_value` | Yes | No | See Received | No | No | Yes |
| `PrdConfirm` | (option) Waiting `code_confirm_confidential` | Yes | No | See Received | No | No | No |
@ -136,8 +136,8 @@ Ce qui est résumé Pour la réception :
| `request_type` | Notification user | `PrdConfirm` to send | `Pcd` to send | `PrdResponse` to send | `PrdResponse` reply waiting | `PrdConfirm` reply waiting (from `PrdResponse` send ) |
|----------------------|-----------------------------------|------------------------------|----------------------|-----------------------------------------------------------------|------------------------------------|---------------------------------------------------------------------|
| `PrdList` | No | Yes | Yes | all the members of the `item_name` `Role` into to `ItemProcess` | No | Yes |
| `PrdUpdate` | Prd | Yes | No | all the members of all `Role` into to `ItemProcess` | Yes (other members) | Yes |
| `PrdList` | No | Yes | Yes | all the members of the `item_name` `Role` into to `Process` | No | Yes |
| `PrdUpdate` | Prd | Yes | No | all the members of all `Role` into to `Process` | Yes (other members) | Yes |
| `PrdMessage` | Waiting `PrdMessage` reply | if no `raw_transaction_list` | No | No | No | No |
| `PrdResponse` | Prd | Yes | No | No | No | No |
| `PrdConfirm` | Prd | No | No | No | No | No |
@ -150,31 +150,31 @@ Schema :
Les `Metadata` des `Item` des `Pcd` et les attributs des `Pcd` et `Prd` sont chiffrés de la sorte :
* **Données publiques** : Utilisent un chiffrement symétrique basé sur la `ProcessKey` de l'`ItemProcess` (cf. [Specs-Definition](SpecsDefinition.md)). Ces données sont ainsi accessibles à tous pour le déchiffrement.
* **Données publiques** : Utilisent un chiffrement symétrique basé sur la `ProcessKey` de `Process` (cf. [Specs-Definition](SpecsDefinition.md)). Ces données sont ainsi accessibles à tous pour le déchiffrement.
* **Données confidentielles destinées aux membres d'un `role` spécifique d'un `ItemProcess` dans les Pcd** : Le chiffrement est réalisé symétriquement à partir d'une clé de chiffrement générée à la volée pour chaque champ et pour chaque item d'une liste d'un `Pcd`. Ces clés seront ensuite ajoutées aux `Prd` dans l'attribut `Pcd_keys_role_confidential_list_confidential`; lui même alors chiffré par la `KeyConfidential`.
* **Données confidentielles destinées aux membres d'un `role` spécifique d'un `Process` dans les Pcd** : Le chiffrement est réalisé symétriquement à partir d'une clé de chiffrement générée à la volée pour chaque champ et pour chaque item d'une liste d'un `Pcd`. Ces clés seront ensuite ajoutées aux `Prd` dans l'attribut `Pcd_keys_role_confidential_list_confidential`; lui même alors chiffré par la `KeyConfidential`.
* **Données confidentielles destinées aux membres d'un `role` spécifique d'un `ItemProcess` dans les Prd** : Utilisent un chiffrement symétrique basé sur les clés de chiffrement AES-GCM-256, générées à la volée dans les `Pcd` et transmises par le `Prd`, chiffrées par la `KeyConfidential` du Diffie-Hellman de la transaction Silent Payments associée à ce `Prd` (cf. [Specs-Definition](SpecsDefinition.md)) d'une transaction `SP`.
* **Données confidentielles destinées aux membres d'un `role` spécifique d'un `Process` dans les Prd** : Utilisent un chiffrement symétrique basé sur les clés de chiffrement AES-GCM-256, générées à la volée dans les `Pcd` et transmises par le `Prd`, chiffrées par la `KeyConfidential` du Diffie-Hellman de la transaction Silent Payments associée à ce `Prd` (cf. [Specs-Definition](SpecsDefinition.md)) d'une transaction `SP`.
* **Données privées** : Chiffrées symétriquement en utilisant la clé de dépense de connexion (`recover`) du signet (voir Login - Specs).
Principaux champs des `Request` contenus dans les `Pcd` et `Prd` chiffrés :
* **`request_type`** : Type de requête : `Pcd`, `PrdList`, `PrdMessage`, `PrdUpdate`, `PrdConfirm`, `PrdResponse`.
* **`item_name`** : Noms des items : `peer`, `member`, `process`, `Payments`, `deposit`, `commitment`, et les `artefact` personnalisés.
* **`item_name`** : Noms des items : `peer`, `member`, `process`, `Payments`, `deposit`, `commit`, et les `artefact` personnalisés.
* **`version`** : Version de la requête.
* **`process_hash`** : Hash de l'`ItemProcess` concerné.
* **`process_hash`** : Hash de `Process` concerné.
* **`request_pcd_reference_hash`** : Hash du `Pcd` auquel le `Prd` fait référence.
* **`request_pcd_origin_hash`** : Hash du `Pcd` à l'origine du `Prd`.
* **`request_prd_reference_hash`** : Hash du `Prd` auquel le `Prd` fait référence.
* **`request_prd_origin_hash`** : Hash du `Prd` à l'origine du `Prd`.
* **`item_reference_hash`** : Hash de l'`Item` auquel le `Pcd` fait référence.
* **`item_reference_hash`** : Hash de `Item` auquel le `Pcd` fait référence.
## 9. <a name='FonctiondesPcd'></a>Fonction des Pcd
Les Portable Contract Documents (`Pcd`) sont des documents au format `JSON` encapsulant des listes versionnées d'`Item`, dont les attributs sont chiffsrés selon trois niveaux de confidentialité : public, par rôles spécifiques, ou privé. (cf. [Specs-Security.md](Specs-Security.md)).
Les `Item` échangés via les `Pcd` sont soumis à une vérification par les `PrdResponse` dans le but de contrôler la validité de ces données et leur conformité avec les `ItemProcess` et les `member` du `Role` concerné.
Les `Item` échangés via les `Pcd` sont soumis à une vérification par les `PrdResponse` dans le but de contrôler la validité de ces données et leur conformité avec les `Process` et les `member` du `Role` concerné.
Principaux champs des `Pcd` :
@ -191,17 +191,17 @@ Principaux champs de la structure `Pagination` :
Principaux champs de la structure `PcdItemGenericEnc` :
* **`version`** : Version de l'`Item`.
* **`item_type`** : Type de l'`Item`.
* **`name`** : Nom de l'`Item`.
* **`request_pcd_item_enc_attribute_public_list`** : Liste d'objets `PcdItemEncAttributePublic` des attributs publics de l'`Item` chiffré.
* **`request_pcd_item_enc_attribute_role_confidential_list`** : Liste d'objets `PcdItemEncAttributeRoleConfidential` des attributs confidentiels de l'`Item` chiffré.
* **`request_pcd_item_enc_attribute_private_list`** : Liste d'objets `PcdItemEncAttributePrivate` des attributs privés de l'`Item` chiffré.
* **`version`** : Version de `Item`.
* **`item_type`** : Type de `Item`.
* **`name`** : Nom de `Item`.
* **`request_pcd_item_enc_attribute_public_list`** : Liste d'objets `PcdItemEncAttributePublic` des attributs publics de `Item` chiffré.
* **`request_pcd_item_enc_attribute_role_confidential_list`** : Liste d'objets `PcdItemEncAttributeRoleConfidential` des attributs confidentiels de `Item` chiffré.
* **`request_pcd_item_enc_attribute_private_list`** : Liste d'objets `PcdItemEncAttributePrivate` des attributs privés de `Item` chiffré.
Principaux champs de la structure `PcdItemEncAttributePublic` :
* **`attribute_name`** : Nom de l'attribut.
* **`data_enc`** : Données chiffrées par la clé `ProcessKey` de l'`ItemProcess` concerné.
* **`data_enc`** : Données chiffrées par la clé `ProcessKey` de `Process` concerné.
* **`key`** : [PRIVE] Clé de chiffrement, non partagée dans les messages. Données en clair.
* **`data`** : [PRIVE] Non partagé dans les messages. Données en clair.
@ -251,18 +251,18 @@ Schéma de finalisation de la réception d'un `Pcd` :
Les Portable Request Documents (Prd) sont des documents JSON qui encapsulent les valeurs de signatures et les clés de déchiffrement nécessaires à l'interprétation des `Pcd` via l'attribut `Pcd_keys_role_confidential_list_confidential`. Ils sont utilisés pour solliciter des actions spécifiques, telles que l'envoi de messages, la mise à jour des informations contractuelles, ou la confirmation de transactions.
Les clés permettant le chiffrement des attributs confidentiels par rôles des `Item` dans les `Pcd` sont elles-mêmes chiffrées dans les `Prd` au moyen du chiffrement du `Prd` par la clé `KeyConfidential` d'une `transaction SP` (cf. [Specs-Security.md](Specs-Security.md)). Ces clés sont uniquement distribuées aux `members` concernés par les `Item` des `Pcd` (rôles dans les `ItemProcess`).
Les clés permettant le chiffrement des attributs confidentiels par rôles des `Item` dans les `Pcd` sont elles-mêmes chiffrées dans les `Prd` au moyen du chiffrement du `Prd` par la clé `KeyConfidential` d'une `transaction SP` (cf. [Specs-Security.md](Specs-Security.md)). Ces clés sont uniquement distribuées aux `members` concernés par les `Item` des `Pcd` (rôles dans les `Process`).
Les `Prd` se déclinent en plusieurs types, tels que `PrdList`, `PrdMessage`, `PrdUpdate`, etc., correspondant à différentes actions comme l'envoi de messages, la mise à jour des informations contractuelles, ou la confirmation de transactions.
Principaux champs des `Prd` :
* **`request`** : cf la descripton de la structure `Request`.
* **`sig_value`** : Valeur de la signature (parmi les valeurs valant pour `OK`, `KO` ou `none` telles que définies dans l'`ItemProcess`).
* **`sig_value`** : Valeur de la signature (parmi les valeurs valant pour `OK`, `KO` ou `none` telles que définies dans `Process`).
* **`request_pcd_reference_keys_role_confidential_list_confidential`** : Clés de déchiffrement des attributs confidentiels des `Item` des `Pcd` chiffrées par la clé `KeyConfidential` d'une `transaction SP`.
* **`request_pcd_origin_hash_keys_role_confidential_list_confidential`** : Clés de déchiffrement des attributs confidentiels des `Item` des `Pcd` du `PCD` de référence, chiffrées par la clé `KeyConfidential` d'une `transaction SP`.
* **`message_public`** : Message public, chiffré par la clé `ProcessKey` du `ItemProcess` concerné.
* **`message_confidential`** : Message confidentiel, chiffré par la clé `ProcessKey` du `ItemProcess` concerné.
* **`message_public`** : Message public, chiffré par la clé `ProcessKey` du `Process` concerné.
* **`message_confidential`** : Message confidentiel, chiffré par la clé `ProcessKey` du `Process` concerné.
* **`message_private`** : Message privé, chiffré par la clé privée `KeyRecover`.
* **`sp_address_to`** : Adresse du destinataire.
* **`sp_address_from`** : Adresse de l'émetteur.
@ -273,13 +273,13 @@ Principaux champs des `Prd` :
* **`Payments_request_pcd_hash_list_confidential`** : Liste des `Pcd` d'`Item` de nom `paiement` chiffrée par la clé `KeyConfidential` d'une `transaction SP`.
* **`cap_request_pcd_hash_list_confidential`** : Liste des `Pcd` d'`Item` de nom `deposit` chiffrée par la clé `KeyConfidential` d'une `transaction SP` servant à la validation des paiements temporaires en attente du passage d'un cap.
* **`deposit_request_pcd_hash_list_confidential`** : Liste des `Pcd` d'`Item` de nom `deposit` chiffrée par la clé `KeyConfidential` d'une `transaction SP`.
* **`commitment_request_pcd_hash_list_confidential`** : Liste des `Pcd` d'`Item` de nom `commitment` chiffrée par la clé `KeyConfidential` d'une `transaction SP`.
* **`commit_request_pcd_hash_list_confidential`** : Liste des `Pcd` d'`Item` de nom `commit` chiffrée par la clé `KeyConfidential` d'une `transaction SP`.
* **`ask_Payments_method_confidential`** : Demande de méthode de paiement chiffrée par la clé `KeyConfidential` d'une `transaction SP`.
* **`ask_deposit_method_confidential`** : Demande de méthode de dépôt chiffrée par la clé `KeyConfidential` d'une `transaction SP`.
* **`ask_commitment_method_confidential`** : Demande de méthode d'engagement chiffrée par la clé `KeyConfidential` d'une `transaction SP`.
* **`ask_commit_method_confidential`** : Demande de méthode d'engagement chiffrée par la clé `KeyConfidential` d'une `transaction SP`.
* **`Payments_method_confidential`** : Méthode de paiement chiffrée par la clé `KeyConfidential` d'une `transaction SP`, en réponse à une demande.
* **`deposit_method_confidential`** : Méthode de dépôt chiffrée par la clé `KeyConfidential` d'une `transaction SP`, en réponse à une demande.
* **`commitment_method_confidential`** : Méthode d'engagement chiffrée par la clé `KeyConfidential` d'une `transaction SP`, en réponse à une demande.
* **`commit_method_confidential`** : Méthode d'engagement chiffrée par la clé `KeyConfidential` d'une `transaction SP`, en réponse à une demande.
* **`certif_key_confidential`** : Clé de certification chiffrée par la clé `KeyConfidential` d'une `transaction SP`.
* **`device_footprint_enc_by_sp_shared_secret`** : Empreinte du dispositif de l'émetteur, chiffrée par la clé `KeyConfidential` d'une `transaction SP`.
@ -304,16 +304,16 @@ Schéma de finalisation de la création d'un `Prd` :
La réception d'un `Prd` suit plusieurs étapes :
1. Parcours des `ItemProcess` pour trouver le `ItemProcess` correspondant au `process_hash` du `Prd`
2. Tentative de déchiffrement du `Prd` avec la clé `ProcessKey` du `ItemProcess` correspondant.
1. Parcours des `Process` pour trouver le `Process` correspondant au `process_hash` du `Prd`
2. Tentative de déchiffrement du `Prd` avec la clé `ProcessKey` du `Process` correspondant.
3. Recherche des `Pcd` en relation via `Pcd_reference_hash` et `Pcd_origin_hash`, attente si nécessaire et traitement de ceux-ci.
4. Vérification de la conformité des `Pcd` en relation.
5. Recherche des `Prd` en relation via `request_prd_reference_hash` et `request_prd_origin_hash`, attente si nécessaire et traitement de ceux-ci.
6. Vérification de la conformité des `Prd` en relation.
7. Recherche de l'`Item` associé via `item_reference_hash`, attente si nécessaire et traitement de celui-ci.
7. Recherche de `Item` associé via `item_reference_hash`, attente si nécessaire et traitement de celui-ci.
8. Déchiffrement voir Encryption.
9. Validation des conditions définies dans le `ItemProcess` pour cet `Item`, avec le `Role` correspondant dans le `ItemProcess`, et dans ces rôles, les conditions pour ce type de `Prd` (dans l'attribut `request_prd_type`)
10. Vérification du role de l'utilisateur courant dans le `ItemProcess` et dans le `Item` concerné.
9. Validation des conditions définies dans le `Process` pour cet `Item`, avec le `Role` correspondant dans le `Process`, et dans ces rôles, les conditions pour ce type de `Prd` (dans l'attribut `request_prd_type`)
10. Vérification du role de l'utilisateur courant dans le `Process` et dans le `Item` concerné.
11. Traitements spécifiques au type de `Prd`.
Schéma de finalisation de la réception d'un `Prd` :
@ -322,7 +322,7 @@ Schéma de finalisation de la réception d'un `Prd` :
## 11. <a name='PrdList-DemandedeListes'></a>PrdList - Demande de Listes
Utile pour les utilisateurs souhaitant consulter ou explorer des listes de contrats, de membres, ou d'autres items dans le réseau. Chaque `Pcd` liste des `Item` d'un même type, tels que les `ItemProcess`, les `ItemMember`, les `ItemPeer`, les `ItemPayments`, etc.
Utile pour les utilisateurs souhaitant consulter ou explorer des listes de contrats, de membres, ou d'autres items dans le réseau. Chaque `Pcd` liste des `Item` d'un même type, tels que les `Process`, les `Member`, les `Peer`, les `Payments`, etc.
Workflow:
@ -338,26 +338,26 @@ Principaux champs des `PrdList` :
Dans le cas d'une création de compte :
* **`item_member_enc_by_sp_shared_secret`** : Nouvel `ItemMember` temporaire,chiffrée par la clé `KeyConfidential` d'une `transaction SP`.
* **`item_member_enc_by_sp_shared_secret`** : Nouvel `Member` temporaire,chiffrée par la clé `KeyConfidential` d'une `transaction SP`.
L'`ItemMember` temporaire contient les métadonnées de type `Metadata` suivantes :
`Member` temporaire contient les métadonnées de type `Metadata` suivantes :
* **`MetadataProcessPublic` de type `ItemMemberPublicAttributeGroup`** :
* **`MetadataProcessPublic` de type `MemberPublicAttributeGroup`** :
* **`sp_address_public`** : Adresse publique de l'utilisateur, chiffré par la `ProcessKey` de l'`ItemProcess`.
* **`sp_address_revoke_public`** : Adresse publique de révocation de l'utilisateur, chiffré par la `ProcessKey` de l'`ItemProcess`.
* **`third_sp_address_list_public`** : Liste des adresses publiques de devices tiers, chiffré par la `ProcessKey` de l'`ItemProcess`.
* **`data_size_max`** : Taille maximale des données acceptée par l'utilisateur (par flux), chiffré par la `ProcessKey` de l'`ItemProcess`.
* **`Payments_method_list_public`** : Liste des méthodes de paiement acceptées par l'utilisateur, chiffré par la `ProcessKey` de l'`ItemProcess`.
* **`succession_process_hash`** : Hash du processus de succession de l'utilisateur (transmission de l'identité numérique et donc de tous les flux associés), chiffré par la `ProcessKey` de l'`ItemProcess`.
* **`device_footprint`** : Empreinte du dispositif de l'utilisateur, chiffré par la `ProcessKey` de l'`ItemProcess`.
* **`sp_address_public`** : Adresse publique de l'utilisateur, chiffré par la `ProcessKey` de `Process`.
* **`sp_address_revoke_public`** : Adresse publique de révocation de l'utilisateur, chiffré par la `ProcessKey` de `Process`.
* **`third_sp_address_list_public`** : Liste des adresses publiques de devices tiers, chiffré par la `ProcessKey` de `Process`.
* **`data_size_max`** : Taille maximale des données acceptée par l'utilisateur (par flux), chiffré par la `ProcessKey` de `Process`.
* **`Payments_method_list_public`** : Liste des méthodes de paiement acceptées par l'utilisateur, chiffré par la `ProcessKey` de `Process`.
* **`succession_process_hash`** : Hash du processus de succession de l'utilisateur (transmission de l'identité numérique et donc de tous les flux associés), chiffré par la `ProcessKey` de `Process`.
* **`device_footprint`** : Empreinte du dispositif de l'utilisateur, chiffré par la `ProcessKey` de `Process`.
* **`MetadataRoleConfidential` de type `ItemMemberRoleConfidentialAttributeGroup`** :
* **`MetadataRoleConfidential` de type `MemberRoleConfidentialAttributeGroup`** :
* **`shard_confidential`** : Shard de l'utilisateur, chiffré par la clé `KeyConfidential` d'une `transaction SP`.
* **`pre_id_confidential`** : Pré empreinte de l'identité numérique de l'utilisateur, chiffrée par la clé `KeyConfidential` d'une `transaction SP`.
* **`MetadataPrivate` de type `ItemMemberRolePrivateAttributeGroup`** :
* **`MetadataPrivate` de type `MemberRolePrivateAttributeGroup`** :
* **`priv_key_mainnet_spend`** : Clé de dépense de l'utilisateur, chiffrée par la clé privée du mainnet, chiffrée par `KeyRecover`.
* **`priv_key_mainnet_scan`** : Clé de scan de l'utilisateur, chiffrée par la clé privée du mainnet, chiffrée par `KeyRecover`.
@ -402,7 +402,7 @@ Basé sur le `Prd`, avec des ajouts pour spécifier les modifications demandées
Essentiel pour les utilisateurs ou les processus nécessitant de mettre à jour des informations contractuelles ou des attributs d'items, assurant la pertinence et l'actualité des données dans le système.
Par exemple, la mise à jour de la liste des membres permet d'ajouter de nouveaux utilisateurs à un `ItemProcess`, et la mise à jour de la liste des `ItemProcess` permet de leur affecter un nouveau `Role`.
Par exemple, la mise à jour de la liste des membres permet d'ajouter de nouveaux utilisateurs à un `Process`, et la mise à jour de la liste des `Process` permet de leur affecter un nouveau `Role`.
Les `PrdUpdate` signalent au réseau, via l'attribut `Pcd_new_version_hash`, les nouvelles versions des `Pcd`.

View File

@ -1,4 +1,4 @@
# `ItemProcess` et `Role` - Specifications
# `Process` et `Role` - Specifications
## 1. <a name='Autheursvalidationsdatesversionschangesandhistory'></a>Autheurs, validations, dates, versions, changement and historique
@ -27,7 +27,7 @@ Cf. [Git SDK COMMON](https://git.4nk.com/4nk/sdk_common/doc)
* 7.5.1. [Composition et Fonction](#CompositionetFonction-1)
* 7.5.2. [Cas d'utilisation](#Casdutilisation-1)
* 8. [Gestion des Engagements et Transactions](#GestiondesEngagementsetTransactions)
* 8.1. [RoleCommitment](#RoleCommitment)
* 8.1. [Rolecommit](#Rolecommit)
* 8.2. [RoleDeposit et RolePayments](#RoleDepositetRolePayments)
* 9. [Sécurisation des Communications](#ScurisationdesCommunications)
* 9.1. [Composition et Utilisation](#CompositionetUtilisation)
@ -40,7 +40,7 @@ Cf. [Git SDK COMMON](https://git.4nk.com/4nk/sdk_common/doc)
* 12. [ConditionPublish : conditions de publication](#ConditionPublish:conditionsdepublication)
* 13. [ConditionOrchestration : conditions d'orchestration des processus](#ConditionOrchestration:conditionsdorchestrationdesprocessus)
* 14. [ConditionPayments : conditions de paiement](#ConditionPayments:conditionsdepaiement)
* 15. [ConditionCommitment : conditions d'engagement](#ConditionCommitment:conditionsdengagement)
* 15. [Conditioncommit : conditions d'engagement](#Conditioncommit:conditionsdengagement)
* 16. [ConditionDeposit : conditions de dépôt de garantie](#ConditionDeposit:conditionsdedptdegarantie)
* 17. [ConditionCap : Conditions de passage d'un seuil minimum de paiements ou de déposits ou de d'engagement](#ConditionCap:Conditionsdepassagedunseuilminimumdepaiementsoudedpositsoudedengagement)
* 18. [TransactionMode](#TransactionMode)
@ -65,14 +65,14 @@ Voir [_Doc_references.md](_Doc_references.md).
## 6. <a name='RlesetSous-Rles'></a>Rôles et Sous-Rôles
Les rôles déterminent les permissions et les responsabilités des participants dans le système 4NK. Ils sont essentiels pour contrôler l'accès aux données et les autorisations au sein des `ItemProcess` . Les `rôles` principaux incluent :
Les rôles déterminent les permissions et les responsabilités des participants dans le système 4NK. Ils sont essentiels pour contrôler l'accès aux données et les autorisations au sein des `Process` . Les `rôles` principaux incluent :
* **RolePeer**: Conditions des listes de relais participants qui facilitent les communications et les transactions et des versions de ces listes.
* **RoleMember**: Conditions des listes des utilisateurs ou entités ayant une participation directe dans un processus spécifique et des versions de ces listes.
* **RoleProcess**: Conditions des listes des processus et des versions des listes.
* **RoleArtefact**: Définit les permissions et les interactions pour les artefacts au sein du réseau et des version de ces listes, par types d'artefacts.
Chaque rôle peut comporter des sous-rôles spécifiques, tels que `RolePayments`, `RoleDeposit`, et `RoleCommitment`, chacun avec des responsabilités et des interactions uniques dans le cadre des processus qu'ils soutiennent.
Chaque rôle peut comporter des sous-rôles spécifiques, tels que `RolePayments`, `RoleDeposit`, et `Rolecommit`, chacun avec des responsabilités et des interactions uniques dans le cadre des processus qu'ils soutiennent.
## 7. <a name='Prcisionssurlesrles'></a>Précisions sur les rôles
@ -139,9 +139,9 @@ Cette structure permet une personnalisation détaillée des rôles au sein du sy
## 8. <a name='GestiondesEngagementsetTransactions'></a>Gestion des Engagements et Transactions
Les engagements dans le système 4NK, tels que représentés par les structures RoleCommitment, RoleDeposit, et RolePayments, jouent un rôle crucial dans la formalisation des transactions et des obligations entre les parties.
Les engagements dans le système 4NK, tels que représentés par les structures Rolecommit, RoleDeposit, et RolePayments, jouent un rôle crucial dans la formalisation des transactions et des obligations entre les parties.
### 8.1. <a name='RoleCommitment'></a>RoleCommitment
### 8.1. <a name='Rolecommit'></a>Rolecommit
* **item_name**: Identifie l'engagement spécifique ou l'obligation prise par une partie.
* **role**: Définit les permissions, les conditions et les critères associés à cet engagement, assurant une exécution et une validation conformes aux attentes.
@ -161,7 +161,7 @@ La structure MetaData et ses sous-structures comme MetadataContractPublic, Metad
## 10. <a name='IntgrationetOrchestrationdesProcessus'></a>Intégration et Orchestration des Processus
L'ItemProcess et ItemProcessPublicAttributeGroup offrent un cadre pour l'intégration et l'orchestration des processus dans le système 4NK, permettant la définition, la gestion et l'exécution de workflows complexes de manière sécurisée et efficace.
L'Process et ProcessPublicAttributeGroup offrent un cadre pour l'intégration et l'orchestration des processus dans le système 4NK, permettant la définition, la gestion et l'exécution de workflows complexes de manière sécurisée et efficace.
## 11. <a name='ConditionPrdAddressSet'></a>Condition PrdAddressSet
@ -225,7 +225,7 @@ Les membres concernés sont identifiés par leurs `adresse SP`.
* (option) `Payments_method_list`: Liste des modes de paiement acceptés
* (option) `role_transaction` : voir `TransactionMode`
## 15. <a name='ConditionCommitment:conditionsdengagement'></a>ConditionCommitment : conditions d'engagement
## 15. <a name='Conditioncommit:conditionsdengagement'></a>Conditioncommit : conditions d'engagement
* (option) `role_artefact`
* (option) `role_transaction` : voir `TransactionMode`

View File

@ -15,14 +15,14 @@ Cf. [Git SDK COMMON](https://git.4nk.com/4nk/sdk_common/doc)
* 6. [Interface Client Web](#InterfaceClientWeb)
* 6.1. [Structure HTML de Base](#StructureHTMLdeBase)
* 6.2. [Page de création d'une identité numérique (create)](#Pagedecrationduneidentitnumriquecreate)
* 6.2.1. [Page de sélection de l'`ItemProcess` et des membres en charge de renvoyer les shards de la clé `recover`](#PagedeslectiondelItemProcessetdesmembresenchargederenvoyerlesshardsdelaclrecover)
* 6.2.2. [Page d'enrolement dans un `ItemProcess` (`onboarding`)](#PagedenrolementdansunItemProcessonboarding)
* 6.2.1. [Page de sélection de `Process` et des membres en charge de renvoyer les shards de la clé `recover`](#PagedeslectiondelProcessetdesmembresenchargederenvoyerlesshardsdelaclrecover)
* 6.2.2. [Page d'enrolement dans un `Process` (`onboarding`)](#PagedenrolementdansunProcessonboarding)
* 6.2.3. [Page de téléchargement des images de login des third parties](#Pagedetlchargementdesimagesdelogindesthirdparties)
* 6.3. [Page de récupération d'une identité numérique (`recover`)](#Pagedercuprationduneidentitnumriquerecover)
* 6.4. [Page de révocation d'une identité numérique (`revoke`)](#Pagedervocationduneidentitnumriquerevoke)
* 6.5. [Page de la liste des `ItemProcess`](#PagedelalistedesItemProcess)
* 6.6. [Page de Détail d'un `ItemProcess`](#PagedeDtaildunItemProcess)
* 6.7. [Page socle des `ItemProcess`](#PagesocledesItemProcess)
* 6.5. [Page de la liste des `Process`](#PagedelalistedesProcess)
* 6.6. [Page de Détail d'un `Process`](#PagedeDtaildunProcess)
* 6.7. [Page socle des `Process`](#PagesocledesProcess)
* 6.7.1. [4.7. Page de la liste d'un type d'`Item`](#PagedelalisteduntypedItem)
* 6.7.2. [4.7. Page de détail d'un `Item`](#PagededtaildunItem)
* 6.7.3. [4.7. Page de la liste des notifications](#Pagedelalistedesnotifications)
@ -43,7 +43,7 @@ Cf. [Git SDK COMMON](https://git.4nk.com/4nk/sdk_common/doc)
L'objectif de cette spécification est de définir les exigences et les fonctionnalités de l'interface client web pour l'authentification et l'identification des utilisateurs sur la plateforme 4NK Web5 Solution.
Tous les relais ont les mêmes pages, et partagent le SDK en Wasm de 4NK, leur liste d'`ItemPeer` et leur liste `ItemProcess`.
Tous les relais ont les mêmes pages, et partagent le SDK en Wasm de 4NK, leur liste d'`Peer` et leur liste `Process`.
## 4. <a name='Porte'></a>Portée
@ -105,9 +105,9 @@ Cadre HML commun aux pages des relais :
### 6.2. <a name='Pagedecrationduneidentitnumriquecreate'></a>Page de création d'une identité numérique (create)
#### 6.2.1. <a name='PagedeslectiondelItemProcessetdesmembresenchargederenvoyerlesshardsdelaclrecover'></a>Page de sélection de l'`ItemProcess` et des membres en charge de renvoyer les shards de la clé `recover`
#### 6.2.1. <a name='PagedeslectiondelProcessetdesmembresenchargederenvoyerlesshardsdelaclrecover'></a>Page de sélection de `Process` et des membres en charge de renvoyer les shards de la clé `recover`
#### 6.2.2. <a name='PagedenrolementdansunItemProcessonboarding'></a>Page d'enrolement dans un `ItemProcess` (`onboarding`)
#### 6.2.2. <a name='PagedenrolementdansunProcessonboarding'></a>Page d'enrolement dans un `Process` (`onboarding`)
#### 6.2.3. <a name='Pagedetlchargementdesimagesdelogindesthirdparties'></a>Page de téléchargement des images de login des third parties
@ -115,11 +115,11 @@ Cadre HML commun aux pages des relais :
### 6.4. <a name='Pagedervocationduneidentitnumriquerevoke'></a>Page de révocation d'une identité numérique (`revoke`)
### 6.5. <a name='PagedelalistedesItemProcess'></a>Page de la liste des `ItemProcess`
### 6.5. <a name='PagedelalistedesProcess'></a>Page de la liste des `Process`
### 6.6. <a name='PagedeDtaildunItemProcess'></a>Page de Détail d'un `ItemProcess`
### 6.6. <a name='PagedeDtaildunProcess'></a>Page de Détail d'un `Process`
### 6.7. <a name='PagesocledesItemProcess'></a>Page socle des `ItemProcess`
### 6.7. <a name='PagesocledesProcess'></a>Page socle des `Process`
#### 6.7.1. <a name='PagedelalisteduntypedItem'></a>4.7. Page de la liste d'un type d'`Item`

View File

@ -59,7 +59,7 @@ Une fois le `Prd` finalisé, une transaction SP est réalisée, dans cette trans
1.2. Le hash du `Prd`
1.3. Le hash du process
1.4. Le hash de la valeur de la signature (attribut `sig_value` du Prd)
1.5. Le hash de l'`item_name` de l'`Item` concerné (le cas échéant)
1.5. Le hash de `item_name` de `Item` concerné (le cas échéant)
1.6. Le hash du `Prd` d'origine associé au `Prd` (le cas échéant)
1.7. Le hash du `Pcd` d'origine associé au `Prd` (le cas échéant)
1.8. Le hash du `Pcd` de référence associé au `Prd` (le cas échéant)
@ -67,19 +67,19 @@ Une fois le `Prd` finalisé, une transaction SP est réalisée, dans cette trans
1.10. Le hash d'un `Amount`de dépôt (le cas échéant)
1.11. Un hash d'un engagement externe ou d'un `Number` (le cas échéant)
Pour des raison de confidentialité, le `Role` associé à l'`item_name` du `Prd` peut définir (option) un salt pour la génération des hashs dans l'attribut `sp_output_salt_enc`.
Pour des raison de confidentialité, le `Role` associé à `item_name` du `Prd` peut définir (option) un salt pour la génération des hashs dans l'attribut `sp_output_salt_enc`.
## 8. <a name='EnvoidelatransactionSP'></a>Envoi de la transaction SP
Afin d'améliorer la rélisience du broadcast des transactions, la transaction est envoyée à la fois :
1. Dans un `PrdMessage` à un membre du rôle `member` du `ItemProcess` concerné et
1. Dans un `PrdMessage` à un membre du rôle `member` du `Process` concerné et
2. Dans le `Message` du `PrdMessage` sur les relais
### 8.1. <a name='DansunPrdMessage'></a>Dans un `PrdMessage`
Dans l'attribut `raw_transaction_list` du `PrdMessage` associé à la transaction SP.
La transaction sera broadcastée par les noeuds de signet du membre du `Role` `member` du `ItemProcess` concerné qui a reçu ce message, il devra alors avoir un noeud de signet pour le broadcast.
La transaction sera broadcastée par les noeuds de signet du membre du `Role` `member` du `Process` concerné qui a reçu ce message, il devra alors avoir un noeud de signet pour le broadcast.
### 8.2. <a name='DansunMessageduPrdMessage'></a>Dans un `Message` du `PrdMessage`

View File

@ -11,36 +11,39 @@ Cf. [Git SDK COMMON](https://git.4nk.com/4nk/sdk_common/doc)
* 2. [Table des matières](#Tabledesmatires)
* 3. [Documents de référence](#Documentsderfrence)
* 4. [Choix des formats de données](#Choixdesformatsdedonnes)
* 4.1. [Strings](#Strings)
* 4.2. [Hexadécimales](#Hexadcimales)
* 4.3. [Tableaux de bytes](#Tableauxdebytes)
* 4.3.1. [8 Bytes (64 bits)](#Bytes64bits)
* 4.3.2. [16 Bytes (128 bits)](#Bytes128bits)
* 4.3.3. [32 Bytes (256 bits)](#32Bytes256bits)
* 4.3.4. [64 Bytes (512 bits)](#64Bytes512bits)
* 4.3.5. [Précautions générales pour la manipulation des tableaux de bytes](#Prcautionsgnralespourlamanipulationdestableauxdebytes)
* 4.4. [Format Base64](#FormatBase64)
* 4.5. [Différence entre Bytes et Bits](#DiffrenceentreBytesetBits)
* 4.6. [Little Endian et Big Endian](#LittleEndianetBigEndian)
* 4.7. [Conversions de données](#Conversionsdedonnes)
* 4.7.1. [Conversion entre Strings et Hexadécimales](#ConversionentreStringsetHexadcimales)
* 4.7.2. [Conversion entre Tableaux de Bytes et Format Base64](#ConversionentreTableauxdeBytesetFormatBase64)
* 4.7.3. [Conversion entre Bytes et Bits](#ConversionentreBytesetBits)
* 4.7.4. [Gestion de Little Endian et Big Endian](#GestiondeLittleEndianetBigEndian)
* 4.7.5. [Bonnes Pratiques Générales](#BonnesPratiquesGnrales)
* 5. [Gestion des erreurs](#Gestiondeserreurs)
* 6. [Journalisation et monitoring](#Journalisationetmonitoring)
* 7. [Tests](#Tests)
* 7.1. [Stratégie de test](#Stratgiedetest)
* 7.2. [Plan pour les tests unitaires](#Planpourlestestsunitaires)
* 7.3. [Plan d'intégration](#Plandintgration)
* 7.4. [Plan de charge](#Plandecharge)
* 8. [Outils et les librairies à utiliser](#Outilsetleslibrairiesutiliser)
* 9. [Critères d'acceptation](#Critresdacceptation)
* 10. [CI/CD](#CICD)
* 11. [Maintenance](#Maintenance)
* 12. [Exemples de Code](#ExemplesdeCode)
* 13. [Todo](#Todo)
* 4.1. [Strings](#Strings)
* 4.2. [Hexadécimales](#Hexadcimales)
* 4.3. [Tableaux de bytes](#Tableauxdebytes)
* 4.3.1. [8 Bytes (64 bits)](#Bytes64bits)
* 4.3.2. [16 Bytes (128 bits)](#Bytes128bits)
* 4.3.3. [32 Bytes (256 bits)](#32Bytes256bits)
* 4.3.4. [64 Bytes (512 bits)](#64Bytes512bits)
* 4.3.5. [Précautions générales pour la manipulation des tableaux de bytes](#Prcautionsgnralespourlamanipulationdestableauxdebytes)
* 4.4. [Format Base64](#FormatBase64)
* 4.5. [Différence entre Bytes et Bits](#DiffrenceentreBytesetBits)
* 4.6. [Little Endian et Big Endian](#LittleEndianetBigEndian)
* 4.7. [Conversions de données](#Conversionsdedonnes)
* 4.7.1. [Conversion entre Strings et Hexadécimales](#ConversionentreStringsetHexadcimales)
* 4.7.2. [Conversion entre Tableaux de Bytes et Format Base64](#ConversionentreTableauxdeBytesetFormatBase64)
* 4.7.3. [Conversion entre Bytes et Bits](#ConversionentreBytesetBits)
* 4.7.4. [Gestion de Little Endian et Big Endian](#GestiondeLittleEndianetBigEndian)
* 4.7.5. [Bonnes Pratiques Générales](#BonnesPratiquesGnrales)
* 5. [Recommandations entre l'usage de HashMap ou d'un Vec (en Rust)](#RecommandationsentrelusagedeHashMapoudunVecenRust)
* 5.1. [Utilisez un Vec si](#UtilisezunVecsi)
* 5.2. [Utilisez un HashMap si](#UtilisezunHashMapsi)
* 6. [Gestion des erreurs](#Gestiondeserreurs)
* 7. [Journalisation et monitoring](#Journalisationetmonitoring)
* 8. [Tests](#Tests)
* 8.1. [Stratégie de test](#Stratgiedetest)
* 8.2. [Plan pour les tests unitaires](#Planpourlestestsunitaires)
* 8.3. [Plan d'intégration](#Plandintgration)
* 8.4. [Plan de charge](#Plandecharge)
* 9. [Outils et les librairies à utiliser](#Outilsetleslibrairiesutiliser)
* 10. [Critères d'acceptation](#Critresdacceptation)
* 11. [CI/CD](#CICD)
* 12. [Maintenance](#Maintenance)
* 13. [Exemples de Code](#ExemplesdeCode)
* 14. [Todo](#Todo)
<!-- vscode-markdown-toc-config
numbering=true
@ -209,7 +212,39 @@ Aborder les conversions entre différents formats de données est essentiel dans
Les conversions entre différents formats de données sont omniprésentes en programmation. Une compréhension approfondie de ces opérations et une attention particulière aux détails peuvent grandement améliorer la robustesse et l'efficacité de vos applications.
## 5. <a name='Gestiondeserreurs'></a>Gestion des erreurs
## 5. <a name='RecommandationsentrelusagedeHashMapoudunVecenRust'></a>Recommandations entre l'usage de HashMap ou d'un Vec (en Rust)
En Rust, le choix entre l'utilisation d'un HashMap et d'un Vec dépend largement de la nature de vos données et de ce que vous cherchez à accomplir. Voici quelques points à considérer pour faire le bon choix :
### 5.1. <a name='UtilisezunVecsi'></a>Utilisez un Vec si
* **Les données sont accessées par index**: Vec est idéal lorsque vous travaillez avec une collection ordonnée d'éléments accessibles par leur index. L'accès, l'insertion et la suppression à la fin du vecteur sont très rapides.
* **Performance pour les petits ensembles de données**: Pour des petites collections, Vec peut être plus performant que HashMap en raison de la simplicité de sa structure de données et de son moindre coût en mémoire.
* **Vous avez besoin d'ordre**: Si l'ordre des éléments est important pour votre application, Vec maintient l'ordre d'insertion, tandis que HashMap ne le fait pas.
### 5.2. <a name='UtilisezunHashMapsi'></a>Utilisez un HashMap si
* **Recherche rapide par clé**: HashMap excelle lorsque vous avez besoin de chercher, d'insérer ou de supprimer des éléments en utilisant une clé. La complexité temporelle de ces opérations est en moyenne O(1), ce qui est particulièrement efficace pour de grands ensembles de données.
* **Accès par clé au Lieu de l'index**: Lorsque vos données sont mieux identifiées par des clés uniques (comme des noms d'utilisateur, des identifiants, etc.) plutôt que par des indices numériques.
* **Évitement des doublons pour les clés**: HashMap assure qu'il n'y a pas deux entrées avec la même clé, ce qui peut être essentiel pour certaines applications.
###  Recommandations Générales
* **Évaluez la taille de votre collection**: Pour des collections très petites, la différence de performance entre Vec et HashMap peut être négligeable, et d'autres facteurs, comme l'ordre des éléments ou la clarté du code, peuvent prévaloir.
* **Considérez l'évolutivité**: Si vous prévoyez que votre collection de données va croître de manière significative, il peut être judicieux de choisir la structure de données qui sera la plus efficace à long terme, même si elle est légèrement plus complexe ou moins performante pour des petites tailles.
* **Profiling et optimisation**: N'hésitez pas à utiliser des outils de profiling pour mesurer les performances réelles de votre application avec les deux structures de données. Ce qui est théoriquement plus rapide ne l'est pas toujours en pratique, en raison de l'overhead, de la localité de la mémoire, et d'autres facteurs systèmes.
* **Considération de la mémoire**: HashMap utilise plus de mémoire que Vec en raison de sa structure interne plus complexe. Si la mémoire est une contrainte, cela peut influencer votre choix.
En résumé, le choix entre Vec et HashMap en Rust doit être guidé par les spécificités de vos données et par les opérations que vous prévoyez d'effectuer. Prendre le temps de comprendre ces structures de données et leurs implications peut grandement affecter la performance et la clarté de votre code.
## 6. <a name='Gestiondeserreurs'></a>Gestion des erreurs
Les processus doivent continuer malgré des "sous" traitements/threads en échec et les fonctions doivent être `catch` si il y a une possiblité d'interuption.
@ -219,39 +254,39 @@ Tous les flux sont reçus par autant de relais et de membres de même rôles. Un
Les arrêts de la blockchain dans son ensemble n'entraînent pas d'interruption de service, car les horodatages sont non bloquants, l'impact est une diminution de la preuve le temps de "ré-ancrer" ce qui n'aurait pas pu l'être. L'arrêt de nœuds de la blockchain pourrait ralentir la propagation des informations dans les scénarios les plus critiques, sans impact majeur sur le fonctionnement.
Les arrêts des membres dans les `ItemProcess` dans leur ensemble n'entraînent pas d'interruption de service, les confirmations restent en attente, toujours relayées jusqu'au rétablissement des services. L'arrêt de membres des rôles critiques des `ItemProcess` pourrait empêcher le démarrage des services et pour les gestionnaires des membres, l'accès au réseau pour les utilisateurs n'ayant qu'un processus connu avec un rôle dedans. Cela n'entraîne pas une perte des données. Cette incapacité pourrait venir corrompre des signatures attendues dans un délai. Dans ce cas, le rôle "resolve" des `ItemProcess` est en charge de l'arbitrage pour la bonne restitution des actions.
Les arrêts des membres dans les `Process` dans leur ensemble n'entraînent pas d'interruption de service, les confirmations restent en attente, toujours relayées jusqu'au rétablissement des services. L'arrêt de membres des rôles critiques des `Process` pourrait empêcher le démarrage des services et pour les gestionnaires des membres, l'accès au réseau pour les utilisateurs n'ayant qu'un processus connu avec un rôle dedans. Cela n'entraîne pas une perte des données. Cette incapacité pourrait venir corrompre des signatures attendues dans un délai. Dans ce cas, le rôle "resolve" des `Process` est en charge de l'arbitrage pour la bonne restitution des actions.
Les parties prenantes ont tous les moyens organisationnels dans les process, pour procéder au bon redémarrage des services en cas de dégradations et de situations inattendues, avec le versionning des relais et des membres des rôles; ainsi que des conditions contractuelles avec leurs implications opérationnelles et possiblement économiques.
## 6. <a name='Journalisationetmonitoring'></a>Journalisation et monitoring
## 7. <a name='Journalisationetmonitoring'></a>Journalisation et monitoring
Tous les utilisateurs reçoivent les mêmes flux qu'ils se relaient et se restituent au démarrage, tous les flux ont une empreinte horodatée sur une timechain et peuvent être demandés unitairement entre parties, avec le même niveau de confidentialité par rôles. Les `Pcd` sont les listes à jour de l'état de validation de tous les éléments échangés, et les `Prd` sont toutes les signatures échangées sur les flux; en mémoire côté utilisateur, par "session" sur un nœud, pour un `ItemProcess` (possible de segmenter par zones et services).
Tous les utilisateurs reçoivent les mêmes flux qu'ils se relaient et se restituent au démarrage, tous les flux ont une empreinte horodatée sur une timechain et peuvent être demandés unitairement entre parties, avec le même niveau de confidentialité par rôles. Les `Pcd` sont les listes à jour de l'état de validation de tous les éléments échangés, et les `Prd` sont toutes les signatures échangées sur les flux; en mémoire côté utilisateur, par "session" sur un nœud, pour un `Process` (possible de segmenter par zones et services).
Le monitoring comme la journalisation, ne sont pas possibles et pas pertinents sur les relais qui ne sont pas critiques unitairement, tous les flux sont fongibles, chiffrés, anonymes, et peuvent passer par des relais non révélés. Cependant, l'optimisation des listes de pairs et de contrats, pourrait passer par un système de réputation qui nécessitera un historique. À ce stade, la gestion "qualitative" et "quantitative" des relais et des contrats est gérée en mémoire, non persistée et restaurée par chaque connexion à un nouveau pair.
La timechain permet de monitorer l'activité générale sur la side chain avec un nombre de jetons échangés (le même nombre à chaque message) et des ancrages critiques sont monitorables sur le mainnet publiquement par n'importe qui (mais non exploitable fonctionnellement). Ainsi seul le bon fonctionnement est monitorable, par tous, facilement, sans métadonnées exploitables pour ce qui est des usages qui restent donc confidentiels.
## 7. <a name='Tests'></a>Tests
## 8. <a name='Tests'></a>Tests
### 7.1. <a name='Stratgiedetest'></a>Stratégie de test
### 8.1. <a name='Stratgiedetest'></a>Stratégie de test
À l'issue du développement en ScrumBan, chaque ticket fait l'objet d'une revue de code, et d'un test par un testeur.
### 7.2. <a name='Planpourlestestsunitaires'></a>Plan pour les tests unitaires
### 8.2. <a name='Planpourlestestsunitaires'></a>Plan pour les tests unitaires
Les tests unitaires seront ajoutés par un testeur, ainsi toutes les fonctionnalités reçues auront un test unitaire.
### 7.3. <a name='Plandintgration'></a>Plan d'intégration
### 8.3. <a name='Plandintgration'></a>Plan d'intégration
L'intégration se réalise par sprint hebdomadaire.
L'ensemble des fonctionnalités livrées dans le sprint doivent être testées dans un parcours d'intégration écrit et testé par un testeur en fin de sprint.
### 7.4. <a name='Plandecharge'></a>Plan de charge
### 8.4. <a name='Plandecharge'></a>Plan de charge
Tous les 2 sprints, des tests aux limites sont définis et mis en œuvre par un testeur depuis la simulation des comportements des utilisateurs.
## 8. <a name='Outilsetleslibrairiesutiliser'></a>Outils et les librairies à utiliser
## 9. <a name='Outilsetleslibrairiesutiliser'></a>Outils et les librairies à utiliser
Respect des normes de syntaxe Rust.
@ -269,7 +304,7 @@ Utilisation de Visual Studio (pour le partage de configurations).
* **Librairies de tests** : Cargo test
## 9. <a name='Critresdacceptation'></a>Critères d'acceptation
## 10. <a name='Critresdacceptation'></a>Critères d'acceptation
Critères de validation pour que le système puisse être considéré comme prêt pour la production :
@ -283,15 +318,15 @@ Critères de validation pour que le système puisse être considéré comme prê
* Documentation manquante clairement précisée.
* Autres tests manquants clairement précisés.
## 10. <a name='CICD'></a>CI/CD
## 11. <a name='CICD'></a>CI/CD
GitLab CI : TBD
## 11. <a name='Maintenance'></a>Maintenance
## 12. <a name='Maintenance'></a>Maintenance
La liste des dépendances doit être maintenue dans le readme des projets, mise à jour à chaque fin de sprint.
Les tests de fin de sprint doivent intégrer une revue des dernières versions et alertes sur les librairies en dépendance.
## 12. <a name='ExemplesdeCode'></a>Exemples de Code
## 13. <a name='ExemplesdeCode'></a>Exemples de Code
## 13. <a name='Todo'></a>Todo
## 14. <a name='Todo'></a>Todo

View File

@ -12,32 +12,32 @@ Cf. [Git SDK COMMON](https://git.4nk.com/4nk/sdk_common/doc)
* 3. [Documents de référence](#Documentsderfrence)
* 4. [Methods](#Methods)
* 4.1. [DepositMethod](#DepositMethod)
* 4.2. [CommitmentMethod](#CommitmentMethod)
* 4.2. [commitMethod](#commitMethod)
* 4.3. [PaymentsMethod](#PaymentsMethod)
* 5. [Items](#Items)
* 5.1. [Item](#Item)
* 5.2. [ItemArtefact](#ItemArtefact)
* 5.3. [ItemMember](#ItemMember)
* 5.3.1. [ItemMemberPublicAttributeGroup](#ItemMemberPublicAttributeGroup)
* 5.3.2. [ItemMemberRoleConfidentialAttributeGroup](#ItemMemberRoleConfidentialAttributeGroup)
* 5.3.3. [ItemMemberRolePrivateAttributeGroup](#ItemMemberRolePrivateAttributeGroup)
* 5.4. [ItemCommitment](#ItemCommitment)
* 5.4.1. [ItemCommitmentRoleConfidentialAttributeGroup](#ItemCommitmentRoleConfidentialAttributeGroup)
* 5.4.2. [ItemCommitmentPrivateAttributeGroup](#ItemCommitmentPrivateAttributeGroup)
* 5.5. [ItemDeposit](#ItemDeposit)
* 5.5.1. [ItemDepositPublicAttributeGroup](#ItemDepositPublicAttributeGroup)
* 5.5.2. [ItemDepositRoleConfidentialAttributeGroup](#ItemDepositRoleConfidentialAttributeGroup)
* 5.5.3. [ItemDepositPrivateAttributeGroup](#ItemDepositPrivateAttributeGroup)
* 5.2. [Artefact](#Artefact)
* 5.3. [Member](#Member)
* 5.3.1. [MemberPublicAttributeGroup](#MemberPublicAttributeGroup)
* 5.3.2. [MemberRoleConfidentialAttributeGroup](#MemberRoleConfidentialAttributeGroup)
* 5.3.3. [MemberRolePrivateAttributeGroup](#MemberRolePrivateAttributeGroup)
* 5.4. [Commit](#Commit)
* 5.4.1. [CommitRoleConfidentialAttributeGroup](#CommitRoleConfidentialAttributeGroup)
* 5.4.2. [CommitPrivateAttributeGroup](#CommitPrivateAttributeGroup)
* 5.5. [Deposit](#Deposit)
* 5.5.1. [DepositPublicAttributeGroup](#DepositPublicAttributeGroup)
* 5.5.2. [DepositRoleConfidentialAttributeGroup](#DepositRoleConfidentialAttributeGroup)
* 5.5.3. [DepositPrivateAttributeGroup](#DepositPrivateAttributeGroup)
* 5.6. [ItemEnum](#ItemEnum)
* 5.7. [ItemPayments](#ItemPayments)
* 5.7.1. [ItemPaymentsPublicAttributeGroup](#ItemPaymentsPublicAttributeGroup)
* 5.7.2. [ItemPaymentsRoleConfidentialAttributeGroup](#ItemPaymentsRoleConfidentialAttributeGroup)
* 5.7.3. [ItemPaymentsPrivateAttributeGroup](#ItemPaymentsPrivateAttributeGroup)
* 5.8. [ItemPeer](#ItemPeer)
* 5.8.1. [ItemPeerPublicAttributeGroup](#ItemPeerPublicAttributeGroup)
* 5.8.2. [ItemPeerPrivateAttributeGroup](#ItemPeerPrivateAttributeGroup)
* 5.9. [ItemProcess](#ItemProcess)
* 5.9.1. [ItemProcessPublicAttributeGroup](#ItemProcessPublicAttributeGroup)
* 5.7. [Payments](#Payments)
* 5.7.1. [PaymentsPublicAttributeGroup](#PaymentsPublicAttributeGroup)
* 5.7.2. [PaymentsRoleConfidentialAttributeGroup](#PaymentsRoleConfidentialAttributeGroup)
* 5.7.3. [PaymentsPrivateAttributeGroup](#PaymentsPrivateAttributeGroup)
* 5.8. [Peer](#Peer)
* 5.8.1. [PeerPublicAttributeGroup](#PeerPublicAttributeGroup)
* 5.8.2. [PeerPrivateAttributeGroup](#PeerPrivateAttributeGroup)
* 5.9. [Process](#Process)
* 5.9.1. [ProcessPublicAttributeGroup](#ProcessPublicAttributeGroup)
* 6. [Encryption](#Encryption)
* 6.1. [KeyEncryption](#KeyEncryption)
* 6.2. [Aes256GcmIv96Bit](#Aes256GcmIv96Bit)
@ -46,8 +46,8 @@ Cf. [Git SDK COMMON](https://git.4nk.com/4nk/sdk_common/doc)
* 7.2. [MessageConnect](#MessageConnect)
* 7.3. [MessageGeneric](#MessageGeneric)
* 7.4. [Pow](#Pow)
* 7.5. [SharedProcess](#SharedProcess)
* 7.6. [SharedPeer](#SharedPeer)
* 7.5. [Process](#Process)
* 7.6. [Peer](#Peer)
* 8. [Relay](#Relay)
* 9. [L1Node](#L1Node)
* 9.1. [L1NodeMining](#L1NodeMining)
@ -80,7 +80,7 @@ Cf. [Git SDK COMMON](https://git.4nk.com/4nk/sdk_common/doc)
* 14.2. [Conditions](#Conditions)
* 14.2.1. [TransactionMode](#TransactionMode)
* 14.2.2. [ConditionPayments](#ConditionPayments)
* 14.2.3. [ConditionCommitment](#ConditionCommitment)
* 14.2.3. [Conditioncommit](#Conditioncommit)
* 14.2.4. [ConditionDeposit](#ConditionDeposit)
* 14.2.5. [ConditionOrchestration](#ConditionOrchestration)
* 14.2.6. [ConditionCap](#ConditionCap)
@ -89,7 +89,7 @@ Cf. [Git SDK COMMON](https://git.4nk.com/4nk/sdk_common/doc)
* 14.3. [RolesGroup](#RolesGroup)
* 14.3.1. [RoleArtefact](#RoleArtefact)
* 14.3.2. [RoleDeposit](#RoleDeposit)
* 14.3.3. [RoleCommitment](#RoleCommitment)
* 14.3.3. [Rolecommit](#Rolecommit)
* 14.3.4. [RoleMember](#RoleMember)
* 14.4. [RolePeer](#RolePeer)
* 14.4.1. [RolePayments](#RolePayments)
@ -100,8 +100,8 @@ Cf. [Git SDK COMMON](https://git.4nk.com/4nk/sdk_common/doc)
* 16. [Storage](#Storage)
* 16.1. [StoragePublic](#StoragePublic)
* 16.1.1. [StorageKeysPublic](#StorageKeysPublic)
* 16.1.2. [StorageItemPeerPublic](#StorageItemPeerPublic)
* 16.1.3. [StorageItemProcessPublic](#StorageItemProcessPublic)
* 16.1.2. [StoragePeerPublic](#StoragePeerPublic)
* 16.1.3. [StorageProcessPublic](#StorageProcessPublic)
* 16.1.4. [StorageMessagePublic](#StorageMessagePublic)
* 16.1.5. [StoragePcdPublic](#StoragePcdPublic)
* 16.1.6. [StoragePrdPublic](#StoragePrdPublic)
@ -149,7 +149,7 @@ Pseudo-code:
}
```
### 4.2. <a name='CommitmentMethod'></a>CommitmentMethod
### 4.2. <a name='commitMethod'></a>commitMethod
| Attribute Name | Type | Option |
| -------------- | ------------ | ------ |
@ -207,7 +207,7 @@ Pseudo-code:
}
```
### 5.2. <a name='ItemArtefact'></a>ItemArtefact
### 5.2. <a name='Artefact'></a>Artefact
| Attribute Name | Type | Option |
| ----------------------------------- | ----------------- | ------ |
@ -227,27 +227,27 @@ Pseudo-code:
}
```
### 5.3. <a name='ItemMember'></a>ItemMember
### 5.3. <a name='Member'></a>Member
| Attribute Name | Type | Option |
| ----------------------------------- | ---------------------------------------------- | ------ |
| `item` | ```Item``` | |
| `public_attribute_group` | ```ItemMemberPublicAttributeGroup``` | |
| `role_confidential_attribute_group` | ```ItemMemberRoleConfidentialAttributeGroup``` | |
| `private_attribute_group` | ```ItemMemberPrivateAttributeGroup``` | |
| `public_attribute_group` | ```MemberPublicAttributeGroup``` | |
| `role_confidential_attribute_group` | ```MemberRoleConfidentialAttributeGroup``` | |
| `private_attribute_group` | ```MemberPrivateAttributeGroup``` | |
Pseudo-code:
```json
{
"item": Item,
"public_attribute_group": ItemMemberPublicAttributeGroup,
"role_confidential_attribute_group": ItemMemberRoleConfidentialAttributeGroup,
"private_attribute_group": ItemMemberPrivateAttributeGroup
"public_attribute_group": MemberPublicAttributeGroup,
"role_confidential_attribute_group": MemberRoleConfidentialAttributeGroup,
"private_attribute_group": MemberPrivateAttributeGroup
}
```
#### 5.3.1. <a name='ItemMemberPublicAttributeGroup'></a>ItemMemberPublicAttributeGroup
#### 5.3.1. <a name='MemberPublicAttributeGroup'></a>MemberPublicAttributeGroup
| Attribute Name | Type | Option |
| ------------------------------ | ----------------- | ------ |
@ -277,7 +277,7 @@ Pseudo-code:
}
```
#### 5.3.2. <a name='ItemMemberRoleConfidentialAttributeGroup'></a>ItemMemberRoleConfidentialAttributeGroup
#### 5.3.2. <a name='MemberRoleConfidentialAttributeGroup'></a>MemberRoleConfidentialAttributeGroup
| Attribute Name | Type | Option |
| --------------------- | ------------ | ------ |
@ -293,7 +293,7 @@ Pseudo-code:
}
```
#### 5.3.3. <a name='ItemMemberRolePrivateAttributeGroup'></a>ItemMemberRolePrivateAttributeGroup
#### 5.3.3. <a name='MemberRolePrivateAttributeGroup'></a>MemberRolePrivateAttributeGroup
| Attribute Name | Type | Option |
| ------------------------ | ------------ | ------ |
@ -311,27 +311,27 @@ Pseudo-code:
}
```
### 5.4. <a name='ItemCommitment'></a>ItemCommitment
### 5.4. <a name='Commit'></a>Commit
| Attribute Name | Type | Option |
| ----------------------------------- | -------------------------------------------------- | ------ |
| `item` | ```Item``` | |
| `public_attribute_group` | ```ItemCommitmentPublicAttributeGroup``` | |
| `role_confidential_attribute_group` | ```ItemCommitmentRoleConfidentialAttributeGroup``` | |
| `private_attribute_group` | ```ItemCommitmentPrivateAttributeGroup``` | |
| `public_attribute_group` | ```CommitPublicAttributeGroup``` | |
| `role_confidential_attribute_group` | ```CommitRoleConfidentialAttributeGroup``` | |
| `private_attribute_group` | ```CommitPrivateAttributeGroup``` | |
Pseudo-code:
```json
{
"item": Item,
"public_attribute_group": ItemCommitmentPublicAttributeGroup,
"role_confidential_attribute_group": ItemCommitmentRoleConfidentialAttributeGroup,
"private_attribute_group": ItemCommitmentPrivateAttributeGroup
"public_attribute_group": CommitPublicAttributeGroup,
"role_confidential_attribute_group": CommitRoleConfidentialAttributeGroup,
"private_attribute_group": CommitPrivateAttributeGroup
}
```
#### 5.4.1. <a name='ItemCommitmentRoleConfidentialAttributeGroup'></a>ItemCommitmentRoleConfidentialAttributeGroup
#### 5.4.1. <a name='CommitRoleConfidentialAttributeGroup'></a>CommitRoleConfidentialAttributeGroup
| Attribute Name | Type | Option |
| --------------------------- | ----------------- | ------ |
@ -345,7 +345,7 @@ Pseudo-code:
}
```
#### 5.4.2. <a name='ItemCommitmentPrivateAttributeGroup'></a>ItemCommitmentPrivateAttributeGroup
#### 5.4.2. <a name='CommitPrivateAttributeGroup'></a>CommitPrivateAttributeGroup
| Attribute Name | Type | Option |
| ---------------------- | ----------------- | ------ |
@ -359,14 +359,14 @@ Pseudo-code:
}
```
##### 4.2.1. <a name='ItemCommitmentPublicAttributeGroup'></a>ItemCommitmentPublicAttributeGroup
##### 4.2.1. <a name='CommitPublicAttributeGroup'></a>CommitPublicAttributeGroup
| Attribute Name | Type | Option |
| ---------------------------------- | ----------------- | ------ |
| `for_sp_address_list` | ```Vec<String>``` | |
| `goal_list` | ```Vec<String>``` | |
| `provider_type` | ```String``` | |
| `commitment_request_pcd_hash_list` | ```Vec<String>``` | |
| `commit_request_pcd_hash_list` | ```Vec<String>``` | |
| `ref_item_hash_list` | ```Vec<String>``` | |
| `ref_request_pcd_hash_list` | ```Vec<String>``` | |
| `payload_public_list` | ```Vec<String>``` | |
@ -378,34 +378,34 @@ Pseudo-code:
"for_sp_address_list": [],
"goal_list": [],
"provider_type": "",
"commitment_request_pcd_hash_list": [],
"commit_request_pcd_hash_list": [],
"ref_item_hash_list": [],
"ref_request_pcd_hash_list": [],
"payload_public_list": []
}
```
### 5.5. <a name='ItemDeposit'></a>ItemDeposit
### 5.5. <a name='Deposit'></a>Deposit
| Attribute Name | Type | Option |
| ----------------------------------- | ----------------------------------------------- | ------ |
| `item` | ```Item``` | |
| `public_attribute_group` | ```ItemDepositPublicAttributeGroup``` | |
| `role_confidential_attribute_group` | ```ItemDepositRoleConfidentialAttributeGroup``` | |
| `private_attribute_group` | ```ItemDepositPrivateAttributeGroup``` | |
| `public_attribute_group` | ```DepositPublicAttributeGroup``` | |
| `role_confidential_attribute_group` | ```DepositRoleConfidentialAttributeGroup``` | |
| `private_attribute_group` | ```DepositPrivateAttributeGroup``` | |
Pseudo-code:
```json
{
"item": Item,
"public_attribute_group": ItemDepositPublicAttributeGroup,
"role_confidential_attribute_group": ItemDepositRoleConfidentialAttributeGroup,
"private_attribute_group": ItemDepositPrivateAttributeGroup
"public_attribute_group": DepositPublicAttributeGroup,
"role_confidential_attribute_group": DepositRoleConfidentialAttributeGroup,
"private_attribute_group": DepositPrivateAttributeGroup
}
```
#### 5.5.1. <a name='ItemDepositPublicAttributeGroup'></a>ItemDepositPublicAttributeGroup
#### 5.5.1. <a name='DepositPublicAttributeGroup'></a>DepositPublicAttributeGroup
| Attribute Name | Type | Option |
| --------------------------- | ----------------- | ------ |
@ -433,7 +433,7 @@ Pseudo-code:
}
```
#### 5.5.2. <a name='ItemDepositRoleConfidentialAttributeGroup'></a>ItemDepositRoleConfidentialAttributeGroup
#### 5.5.2. <a name='DepositRoleConfidentialAttributeGroup'></a>DepositRoleConfidentialAttributeGroup
| Attribute Name | Type | Option |
| ------------------------------ | ----------------- | ------ |
@ -449,7 +449,7 @@ Pseudo-code:
}
```
#### 5.5.3. <a name='ItemDepositPrivateAttributeGroup'></a>ItemDepositPrivateAttributeGroup
#### 5.5.3. <a name='DepositPrivateAttributeGroup'></a>DepositPrivateAttributeGroup
| Attribute Name | Type | Option |
| ---------------------- | ----------------- | ------ |
@ -466,42 +466,42 @@ Pseudo-code:
### 5.6. <a name='ItemEnum'></a>ItemEnum
* **```Process(ItemProcess)```**: Contains an item of type ItemProcess, representing a process.
* **```Peer(ItemPeer)```**: Contains an item of type ItemPeer, representing a peer.
* **```Member(ItemMember)```**: Contains an item of type ItemMember, representing a member.
* **```Payments(ItemPayments)```**: Contains an item of type ItemPayments, representing a Payments.
* **```Deposit(ItemDeposit)```**: Contains an item of type ItemDeposit, representing a deposit.
* **```Artefact(ItemArtefact)```**: Contains an item of type ItemArtefact, representing an artefact.
* **```Commitment(ItemCommitment)```**: Contains an item of type ItemCommitment, representing a commitment.
* **```Process(Process)```**: Contains an item of type Process, representing a process.
* **```Peer(Peer)```**: Contains an item of type Peer, representing a peer.
* **```Member(Member)```**: Contains an item of type Member, representing a member.
* **```Payments(Payments)```**: Contains an item of type Payments, representing a Payments.
* **```Deposit(Deposit)```**: Contains an item of type Deposit, representing a deposit.
* **```Artefact(Artefact)```**: Contains an item of type Artefact, representing an artefact.
* **```commit(Commit)```**: Contains an item of type Commit, representing a commit.
### 5.7. <a name='ItemPayments'></a>ItemPayments
### 5.7. <a name='Payments'></a>Payments
| Attribute Name | Type | Option |
| ----------------------------------- | ----------------------------------------------- | ------ |
| `item` | ```Item``` | |
| `public_attribute_group` | ```ItemPaymentsPublicAttributeGroup``` | |
| `role_confidential_attribute_group` | ```ItemPaymentsRoleConfidentialAttributeGroup``` | |
| `private_attribute_group` | ```ItemPaymentsPrivateAttributeGroup``` | |
| `public_attribute_group` | ```PaymentsPublicAttributeGroup``` | |
| `role_confidential_attribute_group` | ```PaymentsRoleConfidentialAttributeGroup``` | |
| `private_attribute_group` | ```PaymentsPrivateAttributeGroup``` | |
Pseudo-code:
```json
{
"item": Item,
"public_attribute_group": ItemPaymentsPublicAttributeGroup,
"role_confidential_attribute_group": ItemPaymentsRoleConfidentialAttributeGroup,
"private_attribute_group": ItemPaymentsPrivateAttributeGroup
"public_attribute_group": PaymentsPublicAttributeGroup,
"role_confidential_attribute_group": PaymentsRoleConfidentialAttributeGroup,
"private_attribute_group": PaymentsPrivateAttributeGroup
}
```
#### 5.7.1. <a name='ItemPaymentsPublicAttributeGroup'></a>ItemPaymentsPublicAttributeGroup
#### 5.7.1. <a name='PaymentsPublicAttributeGroup'></a>PaymentsPublicAttributeGroup
| Attribute Name | Type | Option |
| ---------------------------------- | ----------------- | ------ |
| `for_sp_address_list` | ```Vec<String>``` | |
| `goal_list` | ```Vec<String>``` | |
| `provider_type` | ```String``` | |
| `commitment_request_pcd_hash_list` | ```Vec<String>``` | |
| `commit_request_pcd_hash_list` | ```Vec<String>``` | |
| `order_request_pcd_hash_list` | ```Vec<String>``` | |
| `invoice_request_pcd_hash_list` | ```Vec<String>``` | |
| `pay_request_pcd_hash_list` | ```Vec<String>``` | |
@ -516,7 +516,7 @@ Pseudo-code:
```
#### 5.7.2. <a name='ItemPaymentsRoleConfidentialAttributeGroup'></a>ItemPaymentsRoleConfidentialAttributeGroup
#### 5.7.2. <a name='PaymentsRoleConfidentialAttributeGroup'></a>PaymentsRoleConfidentialAttributeGroup
| Attribute Name | Type | Option |
| ------------------------------ | ----------------- | ------ |
@ -530,7 +530,7 @@ Pseudo-code:
"for_sp_address_list": [],
"goal_list": [],
"provider_type": "",
"commitment_request_pcd_hash_list": [],
"commit_request_pcd_hash_list": [],
"order_request_pcd_hash_list": [],
"invoice_request_pcd_hash_list": [],
"pay_request_pcd_hash_list": [],
@ -541,7 +541,7 @@ Pseudo-code:
}
```
#### 5.7.3. <a name='ItemPaymentsPrivateAttributeGroup'></a>ItemPaymentsPrivateAttributeGroup
#### 5.7.3. <a name='PaymentsPrivateAttributeGroup'></a>PaymentsPrivateAttributeGroup
| Attribute Name | Type | Option |
| ---------------------- | ----------------- | ------ |
@ -557,14 +557,14 @@ Pseudo-code:
}
```
### 5.8. <a name='ItemPeer'></a>ItemPeer
### 5.8. <a name='Peer'></a>Peer
| Attribute Name | Type | Option |
| ------------------------- | ----------------------------------- | ------ |
| `item` | ```Item``` | |
| `layer_list` | ```Vec<String>``` | |
| `public_attribute_group` | ```ItemPeerPublicAttributeGroup``` | |
| `private_attribute_group` | ```ItemPeerPrivateAttributeGroup``` | |
| `public_attribute_group` | ```PeerPublicAttributeGroup``` | |
| `private_attribute_group` | ```PeerPrivateAttributeGroup``` | |
Pseudo-code:
@ -572,12 +572,12 @@ Pseudo-code:
{
"item": Item,
"layer_list": [],
"public_attribute_group": ItemPeerPublicAttributeGroup,
"private_attribute_group": ItemPeerPrivateAttributeGroup
"public_attribute_group": PeerPublicAttributeGroup,
"private_attribute_group": PeerPrivateAttributeGroup
}
```
#### 5.8.1. <a name='ItemPeerPublicAttributeGroup'></a>ItemPeerPublicAttributeGroup
#### 5.8.1. <a name='PeerPublicAttributeGroup'></a>PeerPublicAttributeGroup
| Attribute Name | Type | Option |
| ------------------------------ | ----------------- | ------ |
@ -613,7 +613,7 @@ Pseudo-code:
}
```
#### 5.8.2. <a name='ItemPeerPrivateAttributeGroup'></a>ItemPeerPrivateAttributeGroup
#### 5.8.2. <a name='PeerPrivateAttributeGroup'></a>PeerPrivateAttributeGroup
| Attribute Name | Type | Option |
| -------------- | ------------ | ------ |
@ -627,23 +627,23 @@ Pseudo-code:
}
```
### 5.9. <a name='ItemProcess'></a>ItemProcess
### 5.9. <a name='Process'></a>Process
| Attribute Name | Type | Option |
| ------------------------------------- | ------------------------------------- | ------ |
| `item` | ```Item``` | |
| `item_process_public_attribute_group` | ```ItemProcessPublicAttributeGroup``` | |
| `item_process_public_attribute_group` | ```ProcessPublicAttributeGroup``` | |
Pseudo-code:
```json
{
"item": {},
"item_process_public_attribute_group": ItemProcessPublicAttributeGroup
"item_process_public_attribute_group": ProcessPublicAttributeGroup
}
```
#### 5.9.1. <a name='ItemProcessPublicAttributeGroup'></a>ItemProcessPublicAttributeGroup
#### 5.9.1. <a name='ProcessPublicAttributeGroup'></a>ProcessPublicAttributeGroup
| Attribute Name | Type | Option |
| -------------- | ---------- | ------ |
@ -727,8 +727,8 @@ Pseudo-code:
| Attribute Name | Type | Option |
| ---------------------- | ------------------------ | ------ |
| `shared_peer_list` | ```Vec<SharedPeer>``` | |
| `shared_process_list` | ```Vec<SharedProcess>``` | |
| `shared_peer_list` | ```Vec<Peer>``` | |
| `shared_process_list` | ```Vec<Process>``` | |
| `faucet_sp_address` | ```String``` | |
| `pow` | ```Pow``` | |
| `raw_transaction_list` | ```Vec<String>``` | Yes |
@ -767,11 +767,11 @@ Pseudo-code:
}
```
### 7.5. <a name='SharedProcess'></a>SharedProcess
### 7.5. <a name='Process'></a>Process
| Attribute Name | Type | Option |
| -------------- | ------------------ | ------ |
| `process_list` | `Vec<ItemProcess>` | |
| `process_list` | `Vec<Process>` | |
Pseudo-code:
@ -781,7 +781,7 @@ Pseudo-code:
}
```
### 7.6. <a name='SharedPeer'></a>SharedPeer
### 7.6. <a name='Peer'></a>Peer
| Attribute Name | Type | Option |
| -------------- | -------------- | ------ |
@ -1250,14 +1250,14 @@ Pseudo-code:
| `role_name_to` | ```String``` | |
| `Payments_method_confidential` | ```String``` | Yes |
| `deposit_method_confidential` | ```String``` | Yes |
| `commitment_method_confidential` | ```String``` | Yes |
| `commit_method_confidential` | ```String``` | Yes |
| `Payments_request_pcd_hash_list_confidential` | ```Vec<String>``` | Yes |
| `cap_request_pcd_hash_list_confidential` | ```Vec<String>``` | Yes |
| `deposit_request_pcd_hash_list_confidential` | ```Vec<String>``` | Yes |
| `commitment_request_pcd_hash_list_confidential` | ```Vec<String>``` | Yes |
| `commit_request_pcd_hash_list_confidential` | ```Vec<String>``` | Yes |
| `ask_Payments_method_confidential` | ```String``` | Yes |
| `ask_deposit_method_confidential` | ```String``` | Yes |
| `ask_commitment_method_confidential` | ```String``` | Yes |
| `ask_commit_method_confidential` | ```String``` | Yes |
| `certif_key_confidential` | ```String``` | Yes |
| `device_footprint_enc_by_sp_shared_secret` | ```String``` | |
@ -1280,14 +1280,14 @@ Pseudo-code:
"role_name_to": "",
"Payments_method_confidential": "",
"deposit_method_confidential": "",
"commitment_method_confidential": "",
"commit_method_confidential": "",
"Payments_request_pcd_hash_list_confidential": [],
"cap_request_pcd_hash_list_confidential": [],
"deposit_request_pcd_hash_list_confidential": [],
"commitment_request_pcd_hash_list_confidential": [],
"commit_request_pcd_hash_list_confidential": [],
"ask_Payments_method_confidential": "",
"ask_deposit_method_confidential": "",
"ask_commitment_method_confidential": "",
"ask_commit_method_confidential": "",
"certif_key_confidential": "",
"device_footprint_enc_by_sp_shared_secret": ""
}
@ -1412,7 +1412,7 @@ Pseudo-code:
| `condition_publish_list` | ```Vec<ConditionPublish>``` | Yes |
| `condition_cap_list` | ```Vec<ConditionCap>``` | Yes |
| `condition_Payments_list` | ```Vec<ConditionPayments>``` | Yes |
| `condition_commitment_list` | ```Vec<ConditionCommitment>``` | Yes |
| `condition_commit_list` | ```Vec<Conditioncommit>``` | Yes |
| `condition_attribute_encryption_list` | ```Vec<String>``` | |
| `condition_orchestration_list` | ```Vec<ConditionOrchestration>``` | Yes |
| `role_succession` | ```String``` | Yes |
@ -1431,7 +1431,7 @@ Pseudo-code:
"condition_publish_list": [],
"condition_cap_list": [],
"condition_Payments_list": [],
"condition_commitment_list": [],
"condition_commit_list": [],
"condition_attribute_encryption_list": [],
"condition_orchestration_list": [],
"role_succession": "",
@ -1496,7 +1496,7 @@ Pseudo-code:
}
```
#### 14.2.3. <a name='ConditionCommitment'></a>ConditionCommitment
#### 14.2.3. <a name='Conditioncommit'></a>Conditioncommit
| Attribute Name | Type | Option |
| -------------------------- | ----------------------------------- | ------ |
@ -1709,7 +1709,7 @@ Pseudo-code:
}
```
#### 14.3.3. <a name='RoleCommitment'></a>RoleCommitment
#### 14.3.3. <a name='Rolecommit'></a>Rolecommit
| Attribute Name | Type | Option |
| -------------- | ------------ | ------ |
@ -1865,7 +1865,7 @@ Pseudo-code:
}
```
#### 16.1.2. <a name='StorageItemPeerPublic'></a>StorageItemPeerPublic
#### 16.1.2. <a name='StoragePeerPublic'></a>StoragePeerPublic
Pseudo-code:
@ -1873,12 +1873,12 @@ Pseudo-code:
[
{
"hash": "",
"peer: ItemPeer
"peer: Peer
}
]
```
#### 16.1.3. <a name='StorageItemProcessPublic'></a>StorageItemProcessPublic
#### 16.1.3. <a name='StorageProcessPublic'></a>StorageProcessPublic
Pseudo-code:
@ -1886,7 +1886,7 @@ Pseudo-code:
[
{
"hash": "",
"process: ItemProcess
"process: Process
}
]
```
@ -2104,7 +2104,7 @@ Pseudo-code:
| Attribute Name | Type | Option |
| -------------- | ------------------------------ | ------ |
| `hash_public` | ```String``` | |
| `shared_peer` | ```StorageSharedPeerPrivate``` | |
| `shared_peer` | ```StoragePeerPrivate``` | |
Pseudo-code:
@ -2112,12 +2112,12 @@ Pseudo-code:
[
{
"hash_public": "",
"shared_peer": StorageSharedPeerPrivate
"shared_peer": StoragePeerPrivate
}
]
```
##### StorageSharedPeerPrivate
##### StoragePeerPrivate
| Attribute Name | Type | Option |
| -------------- | ------------------------------- | ------ |
@ -2265,7 +2265,7 @@ Public:
| ------------------ | ----------------- | ------ |
| `hash` | ```String``` | |
| `confidential_key` | ```String``` | |
| `item` | ```ItemProcess``` | |
| `item` | ```Process``` | |
Private:
@ -2283,7 +2283,7 @@ Pseudo-code:
{
"hash": "",
"confidential_key": "",
"item": ItemProcess
"item": Process
}
],
"public": [{
@ -2357,14 +2357,14 @@ Pseudo-code:
| `message_private_decrypted` | ```String``` | |
| `Payments_method_decrypted` | ```String``` | |
| `deposit_method_decrypted` | ```String``` | |
| `commitment_method_decrypted` | ```String``` | |
| `commit_method_decrypted` | ```String``` | |
| `Payments_request_pcd_hash_list_decrypted` | ```Vec<String>``` | |
| `cap_request_pcd_hash_list_decrypted` | ```Vec<String>``` | |
| `deposit_request_pcd_hash_list_decrypted` | ```Vec<String>``` | |
| `commitment_request_pcd_hash_list_decrypted` | ```Vec<String>``` | |
| `commit_request_pcd_hash_list_decrypted` | ```Vec<String>``` | |
| `ask_Payments_method_[decrypted` | ```String``` | |
| `ask_deposit_method_decrypted` | ```String``` | |
| `ask_commitment_method_decrypted` | ```String``` | |
| `ask_commit_method_decrypted` | ```String``` | |
| `certif_key_decrypted` | ```String``` | |
| `device_footprint_decrypted` | ```String``` | |
| `item_member_decrypted` | ```String``` | |
@ -2384,14 +2384,14 @@ Pseudo-code:
"message_private_decrypted": "",
"Payments_method_decrypted": "",
"deposit_method_decrypted": "",
"commitment_method_decrypted": "",
"commit_method_decrypted": "",
"Payments_request_pcd_hash_list_decrypted": [],
"cap_request_pcd_hash_list_decrypted": [],
"deposit_request_pcd_hash_list_decrypted": [],
"commitment_request_pcd_hash_list_decrypted": [],
"commit_request_pcd_hash_list_decrypted": [],
"ask_Payments_method_[decrypted": "",
"ask_deposit_method_decrypted": "",
"ask_commitment_method_decrypted": "",
"ask_commit_method_decrypted": "",
"certif_key_decrypted": "",
"device_footprint_decrypted": "",
"item_member_decrypted": "",
@ -2413,14 +2413,14 @@ Pseudo-code:
| `message_private_decrypted` | ```String``` | Yes |
| `Payments_method_decrypted` | ```String``` | Yes |
| `deposit_method_decrypted` | ```String``` | Yes |
| `commitment_method_decrypted` | ```String``` | Yes |
| `commit_method_decrypted` | ```String``` | Yes |
| `Payments_request_pcd_hash_list_decrypted` | ```Vec<String>``` | Yes |
| `cap_request_pcd_hash_list_decrypted` | ```Vec<String>``` | Yes |
| `deposit_request_pcd_hash_list_decrypted` | ```Vec<String>``` | Yes |
| `commitment_request_pcd_hash_list_decrypted` | ```Vec<String>``` | Yes |
| `commit_request_pcd_hash_list_decrypted` | ```Vec<String>``` | Yes |
| `ask_Payments_method_[decrypted` | ```String``` | Yes |
| `ask_deposit_method_decrypted` | ```String``` | Yes |
| `ask_commitment_method_decrypted` | ```String``` | Yes |
| `ask_commit_method_decrypted` | ```String``` | Yes |
| `certif_key_decrypted` | ```String``` | Yes |
| `device_footprint_decrypted` | ```String``` | Yes |
| `shared_secret_key_decrypted` | ```Vec<StorageDecryptedSharedSecretKeyPrivate>``` | |
@ -2440,14 +2440,14 @@ Pseudo-code:
"message_private_decrypted": "",
"Payments_method_decrypted": "",
"deposit_method_decrypted": "",
"commitment_method_decrypted": "",
"commit_method_decrypted": "",
"Payments_request_pcd_hash_list_decrypted": [],
"cap_request_pcd_hash_list_decrypted": [],
"deposit_request_pcd_hash_list_decrypted": [],
"commitment_request_pcd_hash_list_decrypted": [],
"commit_request_pcd_hash_list_decrypted": [],
"ask_Payments_method_[decrypted": "",
"ask_deposit_method_decrypted": "",
"ask_commitment_method_decrypted": "",
"ask_commit_method_decrypted": "",
"certif_key_decrypted": "",
"device_footprint_decrypted": "",
"sig_value":"",
@ -2488,14 +2488,14 @@ Pseudo-code:
| `message_private_decrypted` | ```String``` | Yes |
| `Payments_method_decrypted` | ```String``` | Yes |
| `deposit_method_decrypted` | ```String``` | Yes |
| `commitment_method_decrypted` | ```String``` | Yes |
| `commit_method_decrypted` | ```String``` | Yes |
| `Payments_request_pcd_hash_list_decrypted` | ```Vec<String>``` | Yes |
| `cap_request_pcd_hash_list_decrypted` | ```Vec<String>``` | Yes |
| `deposit_request_pcd_hash_list_decrypted` | ```Vec<String>``` | Yes |
| `commitment_request_pcd_hash_list_decrypted` | ```Vec<String>``` | Yes |
| `commit_request_pcd_hash_list_decrypted` | ```Vec<String>``` | Yes |
| `ask_Payments_method_[decrypted` | ```String``` | Yes |
| `ask_deposit_method_decrypted` | ```String``` | Yes |
| `ask_commitment_method_decrypted` | ```String``` | Yes |
| `ask_commit_method_decrypted` | ```String``` | Yes |
| `certif_key_decrypted` | ```String``` | Yes |
| `device_footprint_decrypted` | ```String``` | Yes |
| `code_confirm_decrypted` | ```String``` | Yes |
@ -2514,14 +2514,14 @@ Pseudo-code:
"message_private_decrypted": "",
"Payments_method_decrypted": "",
"deposit_method_decrypted": "",
"commitment_method_decrypted": "",
"commit_method_decrypted": "",
"Payments_request_pcd_hash_list_decrypted": [],
"cap_request_pcd_hash_list_decrypted": [],
"deposit_request_pcd_hash_list_decrypted": [],
"commitment_request_pcd_hash_list_decrypted": [],
"commit_request_pcd_hash_list_decrypted": [],
"ask_Payments_method_decrypted": "",
"ask_deposit_method_decrypted": "",
"ask_commitment_method_decrypted": "",
"ask_commit_method_decrypted": "",
"certif_key_decrypted": "",
"device_footprint_decrypted": "",
"code_confirm_decrypted": ""
@ -2542,14 +2542,14 @@ Pseudo-code:
| `message_private_decrypted` | ```String``` | Yes |
| `Payments_method_decrypted` | ```String``` | Yes |
| `deposit_method_decrypted` | ```String``` | Yes |
| `commitment_method_decrypted` | ```String``` | Yes |
| `commit_method_decrypted` | ```String``` | Yes |
| `Payments_request_pcd_hash_list_decrypted` | ```Vec<String>``` | Yes |
| `cap_request_pcd_hash_list_decrypted` | ```Vec<String>``` | Yes |
| `deposit_request_pcd_hash_list_decrypted` | ```Vec<String>``` | Yes |
| `commitment_request_pcd_hash_list_decrypted` | ```Vec<String>``` | Yes |
| `commit_request_pcd_hash_list_decrypted` | ```Vec<String>``` | Yes |
| `ask_Payments_method_[decrypted` | ```String``` | Yes |
| `ask_deposit_method_decrypted` | ```String``` | Yes |
| `ask_commitment_method_decrypted` | ```String``` | Yes |
| `ask_commit_method_decrypted` | ```String``` | Yes |
| `certif_key_decrypted` | ```String``` | Yes |
| `device_footprint_decrypted` | ```String``` | Yes |
@ -2567,14 +2567,14 @@ Pseudo-code:
"message_private_decrypted": "",
"Payments_method_decrypted": "",
"deposit_method_decrypted": "",
"commitment_method_decrypted": "",
"commit_method_decrypted": "",
"Payments_request_pcd_hash_list_decrypted": [],
"cap_request_pcd_hash_list_decrypted": [],
"deposit_request_pcd_hash_list_decrypted": [],
"commitment_request_pcd_hash_list_decrypted": [],
"commit_request_pcd_hash_list_decrypted": [],
"ask_Payments_method_[decrypted": "",
"ask_deposit_method_decrypted": "",
"ask_commitment_method_decrypted": "",
"ask_commit_method_decrypted": "",
"certif_key_decrypted": "",
"device_footprint_decrypted": ""
}

View File

@ -33,24 +33,24 @@ Voir [_Doc_references.md](_Doc_references.md).
* **Relay** : Serveurs ou noeuds spéciaux dans le réseau 4NK qui facilitent la communication peer-to-peer et la diffusion de transactions et de messages entre les utilisateurs et la blockchain. Les relais jouent un rôle crucial dans l'acheminement des informations et dans le maintien de la décentralisation du réseau.
* **Contract/Process** : Dans le contexte de 4NK, un contrat (souvent appelé smart contract) désigne un ensemble de règles codées et stockées et vérifiée côté client à la différence des principales blockchains. Ces règles automatisent l'exécution des accords et des transactions strictement par et entre les parties prenantes, garantissant l'intégrité et la transparence des interactions au sein de la plateforme Web 5.0. Ces contrats étant formulés dans objets `ItemProcess` avec une semantique explicite des attributs et des règles; les systèmes peuvent exploiter les contrats directement dans le système d'informatione et la notion de contrat est fusionnée avec celle processus.
* **Contract/Process** : Dans le contexte de 4NK, un contrat (souvent appelé smart contract) désigne un ensemble de règles codées et stockées et vérifiée côté client à la différence des principales blockchains. Ces règles automatisent l'exécution des accords et des transactions strictement par et entre les parties prenantes, garantissant l'intégrité et la transparence des interactions au sein de la plateforme Web 5.0. Ces contrats étant formulés dans objets `Process` avec une semantique explicite des attributs et des règles; les systèmes peuvent exploiter les contrats directement dans le système d'informatione et la notion de contrat est fusionnée avec celle processus.
* **4NK**: Système décentralisé innovant basé sur les principes du web 5, centré sur la sécurité des données et l'identité numérique.
* **Portable Contract Document (`Pcd`)**: Un format `JSON` chiffré conçu pour contenir des listes d'éléments d'un type spécifique, attachées à un processus (`process_hash`) et soumises aux règles de validation décrites dans le rôle correspondant à ce type d'`Item` dans le `ItemProcess` (`item_type`).
* **Portable Contract Document (`Pcd`)**: Un format `JSON` chiffré conçu pour contenir des listes d'éléments d'un type spécifique, attachées à un processus (`process_hash`) et soumises aux règles de validation décrites dans le rôle correspondant à ce type d'`Item` dans le `Process` (`item_type`).
* **Portable Request Document (`Prd`)**: Format `JSON` chiffré contenant les valeurs de signatures et les clés de déchiffrement nécessaires à l'exploitation (requêtes et validation) des `Pcd`. Les `PrdResponse` sont collectés pour vérifier le respect des conditions de l'`ItemProcess`. D'autres types de `Prd` incluent :
* **Portable Request Document (`Prd`)**: Format `JSON` chiffré contenant les valeurs de signatures et les clés de déchiffrement nécessaires à l'exploitation (requêtes et validation) des `Pcd`. Les `PrdResponse` sont collectés pour vérifier le respect des conditions de `Process`. D'autres types de `Prd` incluent :
* `PrdList`: Demande de listes d'`Item`. En réponse, une `Pcd` est reçue avec les `PrdResponse` correspondants.
* `PrdMessage`: Envoi de messages publics, confidentiels ou privés et/ou de transactions Silent Payments des autres `Prd` à diffuser sur le réseau des nœuds de la side chain. Les `PrdMessage` peuvent répondre les uns aux autres.
* `PrdUpdate`: Demande de mise à jour d'une liste d'`Item` (publiée via un `PCD`), qui sera déchiffrée et validée ou non par des `PrdResponse` en retour.
* `PrdConfirm`: Confirmation de la réception des `Prd` (à l'exception de `PrdConfirm` eux-même).
* `PrdResponse`: Réponse aux autres types de `Prd` (à l'exception de `PrdConfirm` et `PrdResponse`).
* **Message**: Enveloppe commune pour les `Prd` et `Pcd` lors de leur transmission aux relais et de leur réception depuis les relais. Dans cette enveloppe les `Prd` et `Pcd` sont chiffrés par la `ProcessKey` de l'`ItemProcess` (cf. [Specs-Definition](SpecsDefinition.md)) et ajoutés au champs `RequestEnc`.
* **Message**: Enveloppe commune pour les `Prd` et `Pcd` lors de leur transmission aux relais et de leur réception depuis les relais. Dans cette enveloppe les `Prd` et `Pcd` sont chiffrés par la `ProcessKey` de `Process` (cf. [Specs-Definition](SpecsDefinition.md)) et ajoutés au champs `RequestEnc`.
* **KeyConfidential**: Clé AES-GCM-256 issue du `Diffie-Hellman` de la transaction Silent Payments correspondant à un `Prd`.
* **ProcessKey**: La clé publique de chiffrement d'un `ItemProcess` (trouvée dans un `ItemProcess`, dans son attribut `Item`, dans son attribut `metadata_contract_public`, dans son attribut `meta_data`, dans son attribut `key_list` au premier élément).
* **ProcessKey**: La clé publique de chiffrement d'un `Process` (trouvée dans un `Process`, dans son attribut `Item`, dans son attribut `metadata_contract_public`, dans son attribut `meta_data`, dans son attribut `key_list` au premier élément).
* **KeyRecover**: La clé privée de dépense de `recover` du signet, utilisée comme référence pour l'identité.
@ -68,9 +68,9 @@ Voir [_Doc_references.md](_Doc_references.md).
* **Revoke**: Action de révoquer des clés privées et d'en proposer de nouvelles (en cas de révocation, expirations, pertes ou vols). Une adresse de révocation est stockée dans les données exifs d'une image générée avec l'image de login. Cette image doit être conservée en sécurité car elle permet de dépenser un UTXO d'une`adresse SP` indiquée dans son `member` comme le signal pour les autres parties prenantes qu'une autre identité doit être prise en compte pour ce membre.
* **Onboard**: Action de demander un `rôle` dans un `ItemProcess` .
* **Onboard**: Action de demander un `rôle` dans un `Process` .
* **Member**: Une adresse Silent Payments, complétée de métadonnées, par `ItemProcess` et d'une adresse supplémentaire pour la révocation.
* **Member**: Une adresse Silent Payments, complétée de métadonnées, par `Process` et d'une adresse supplémentaire pour la révocation.
* **Third parties**:`adresse SP` complétant un `member` pour reconnaître d'autres dispositifs du `member`.
@ -106,7 +106,7 @@ Cette norme est aujourd'hui utilisée pour le hachage de mot de passe (associé
## 7. <a name='Data'></a>Data
* **Cache**: Partie 1 chiffrée de la clé de dépense du signet du login stockée en cache, ainsi que les `ItemProcess` découverts et les pairs du réseau. Une fois identifié auprès des membres d'un `ItemProcess` et avec son identité `member` récupérée, l'objet member et les `Pcd` et `Prd` du compte sont stockés en cache. Le cache se compose d'une partie prive jamais partagée et d'une partie publique partagée.
* **Cache**: Partie 1 chiffrée de la clé de dépense du signet du login stockée en cache, ainsi que les `Process` découverts et les pairs du réseau. Une fois identifié auprès des membres d'un `Process` et avec son identité `member` récupérée, l'objet member et les `Pcd` et `Prd` du compte sont stockés en cache. Le cache se compose d'une partie prive jamais partagée et d'une partie publique partagée.
* **IndexDB**: Base de données de stockage côté client utilisée pour stocker de manière sécurisée les données chiffrées, telles que les `Pcd` et Prd, dans les navigateurs web.

View File

@ -86,9 +86,9 @@ Le chiffrement des `Pcd` est un chiffrement symétrique conformément aux exigen
* **Données publiques**: un chiffrement symétrique conformément aux exigences suivantes depuis la `ProcessKey`. Tout le monde peut donc déchiffrer.
* **Données confidentielles avec les membres d'un `role` d'un `ItemProcess` dans les Pcd**: un chiffrement symétrique conformément aux exigences suivantes depuis une clé de chiffrement générée à la volée par champs par items d'une liste d'un Pcd.
* **Données confidentielles avec les membres d'un `role` d'un `Process` dans les Pcd**: un chiffrement symétrique conformément aux exigences suivantes depuis une clé de chiffrement générée à la volée par champs par items d'une liste d'un Pcd.
* **Données confidentielles avec les membres d'un `role` d'un `ItemProcess` dans les Prd**: un chiffrement symétrique conformément aux exigences suivantes depuis les clés de chiffrement AES-GCM-256 générée à la volée dans les `Pcd` et alors transmises par le Prd, chiffrées par la `KeyConfiditial` d'une transaction `SP`.
* **Données confidentielles avec les membres d'un `role` d'un `Process` dans les Prd**: un chiffrement symétrique conformément aux exigences suivantes depuis les clés de chiffrement AES-GCM-256 générée à la volée dans les `Pcd` et alors transmises par le Prd, chiffrées par la `KeyConfiditial` d'une transaction `SP`.
* **Données privées**: un chiffrement symétrique conformément aux exigences suivantes depuis le chiffrement par la clé de spend de login (`recover`) du signet (voir Login - Specs).
@ -190,7 +190,7 @@ La manière dont les clés sont générées, stockées, distribuées, révoquée
Les clés seront générées strictement par l'utilisateur et feront l'objet d'un traitement `MPC` avec un chiffrement des parties par le mot de passe connu de l'utilisateur seul et jamais stocké.
Les parties sont pour la moitié stockées dans le contexte utilisateur (chiffrées par le mot de passe) et pour une autre partie, chiffrées en morceaux (`Shamir Secret Sharing`) (chiffrés par le mot de passe) et distribuées par les membres choisis d'un `ItemProcess` choisi par le rôle des gestionnaires des listes de membres (`member`) en charge de restituer ces morceaux à la demande.
Les parties sont pour la moitié stockées dans le contexte utilisateur (chiffrées par le mot de passe) et pour une autre partie, chiffrées en morceaux (`Shamir Secret Sharing`) (chiffrés par le mot de passe) et distribuées par les membres choisis d'un `Process` choisi par le rôle des gestionnaires des listes de membres (`member`) en charge de restituer ces morceaux à la demande.
L'utilisateur seul peut détruire une clé de révocation (`revoke`) ou supprimer l'image de login qui contient la première partie de la clé de login, indispensable pour recomposer sa clé.
@ -206,7 +206,7 @@ En cas de perte, vol, corruption, ou expiration des clés, l'utilisateur peut de
## 16. <a name='volutivit'></a>Évolutivité
La capacité à gérer une augmentation du nombre d'`utilisateurs` est un équilibre arbitré par les parties prenantes, en fonction du besoin de `relais` et de `membres`. Les parties prenantes ont les moyens d'enrôler par eux-mêmes les relais et les membres par `rôles` et par `ItemProcess` .
La capacité à gérer une augmentation du nombre d'`utilisateurs` est un équilibre arbitré par les parties prenantes, en fonction du besoin de `relais` et de `membres`. Les parties prenantes ont les moyens d'enrôler par eux-mêmes les relais et les membres par `rôles` et par `Process` .
## 17. <a name='AutresMesuresdescurit'></a>Autres Mesures de sécurité

View File

@ -173,7 +173,7 @@
</Array>
</mxGeometry>
</mxCell>
<mxCell id="196" value="SharedProcessSelected" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#d5e8d4;strokeColor=#82b366;" parent="1" vertex="1">
<mxCell id="196" value="ProcessSelected" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#d5e8d4;strokeColor=#82b366;" parent="1" vertex="1">
<mxGeometry x="-349.55999999999995" y="171.00000000000006" width="170" height="30.71" as="geometry" />
</mxCell>
<mxCell id="197" value="SpAddress" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
@ -381,7 +381,7 @@
<mxPoint x="-264.8399999999999" y="158.29000000000002" as="sourcePoint" />
</mxGeometry>
</mxCell>
<mxCell id="HEAZNrv7IqFEUBU4v7G9-336" value="SharedProcessList" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxCell id="HEAZNrv7IqFEUBU4v7G9-336" value="ProcessList" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="-357.55999999999995" y="127.57999999999997" width="180" height="30.71" as="geometry" />
</mxCell>
<mxCell id="HEAZNrv7IqFEUBU4v7G9-341" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="HEAZNrv7IqFEUBU4v7G9-338" target="HEAZNrv7IqFEUBU4v7G9-340" edge="1">
@ -424,7 +424,7 @@
</Array>
</mxGeometry>
</mxCell>
<mxCell id="HEAZNrv7IqFEUBU4v7G9-340" value="SharedPeerListMerged" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxCell id="HEAZNrv7IqFEUBU4v7G9-340" value="PeerListMerged" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="-1005.8499999999999" y="460.29" width="180" height="30.71" as="geometry" />
</mxCell>
<mxCell id="HEAZNrv7IqFEUBU4v7G9-371" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" target="77" edge="1">

View File

@ -464,7 +464,7 @@
<mxPoint x="-1447" y="490" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-383" value="&lt;b&gt;ItemMember&lt;/b&gt;&lt;br&gt;(this user)" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fontColor=#000000;" parent="1" vertex="1">
<mxCell id="fIN9LJIhpEY6EGzNKIPz-383" value="&lt;b&gt;Member&lt;/b&gt;&lt;br&gt;(this user)" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fontColor=#000000;" parent="1" vertex="1">
<mxGeometry x="-1531.8" y="448" width="88.8" height="29" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-385" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" target="fIN9LJIhpEY6EGzNKIPz-350" edge="1">
@ -473,7 +473,7 @@
<mxPoint x="-1503" y="649.0699999999999" as="sourcePoint" />
</mxGeometry>
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-386" value="&lt;b&gt;ItemProcess&lt;/b&gt;&lt;br&gt;(with this new sp_address for the selected role)" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fontColor=#000000;" parent="1" vertex="1">
<mxCell id="fIN9LJIhpEY6EGzNKIPz-386" value="&lt;b&gt;Process&lt;/b&gt;&lt;br&gt;(with this new sp_address for the selected role)" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fontColor=#000000;" parent="1" vertex="1">
<mxGeometry x="-1510" y="590" width="140" height="59.07" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-388" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="fIN9LJIhpEY6EGzNKIPz-387" target="fIN9LJIhpEY6EGzNKIPz-386" edge="1">
@ -490,7 +490,7 @@
<mxCell id="fIN9LJIhpEY6EGzNKIPz-390" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;strokeColor=#999999;" parent="1" source="fIN9LJIhpEY6EGzNKIPz-389" target="fIN9LJIhpEY6EGzNKIPz-386" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-389" value="last ItemProcess version" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxCell id="fIN9LJIhpEY6EGzNKIPz-389" value="last Process version" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="-1620" y="269.99999999999994" width="100" height="29" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-393" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" parent="1" source="fIN9LJIhpEY6EGzNKIPz-392" target="fIN9LJIhpEY6EGzNKIPz-383" edge="1">
@ -516,7 +516,7 @@
</Array>
</mxGeometry>
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-395" value="&lt;b&gt;Inital ItemMember&lt;/b&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fontColor=#000000;" parent="1" vertex="1">
<mxCell id="fIN9LJIhpEY6EGzNKIPz-395" value="&lt;b&gt;Inital Member&lt;/b&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fontColor=#000000;" parent="1" vertex="1">
<mxGeometry x="-1428.35" y="388" width="76.25" height="29" as="geometry" />
</mxCell>
<mxCell id="3oxP2IrQZiT_M8X3yCe1-245" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;container=0;rounded=1;labelBackgroundColor=none;fontColor=#333333;fillColor=#f5f5f5;strokeColor=#666666;" parent="1" vertex="1">
@ -559,7 +559,7 @@
<mxPoint x="-1503.8000000000002" y="700" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="W0tqueod3XqBArbf31HU-251" value="&lt;b&gt;Inital ItemMember&lt;/b&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fontColor=#000000;" parent="1" vertex="1">
<mxCell id="W0tqueod3XqBArbf31HU-251" value="&lt;b&gt;Inital Member&lt;/b&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fontColor=#000000;" parent="1" vertex="1">
<mxGeometry x="-1410.35" y="590" width="76.25" height="59.07" as="geometry" />
</mxCell>
<mxCell id="UgsJvuNo3Jpwi4Lm2WxR-246" value="&lt;b&gt;ThirdParty&lt;/b&gt;&lt;div&gt;&lt;b&gt;PriveKey&lt;/b&gt;&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#d5e8d4;strokeColor=#82b366;" vertex="1" parent="1">

View File

@ -107,7 +107,7 @@
<mxCell id="sHT8GTnQFrlxJ-m2nGzn-37" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="sHT8GTnQFrlxJ-m2nGzn-38" target="sHT8GTnQFrlxJ-m2nGzn-39" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="sHT8GTnQFrlxJ-m2nGzn-38" value="SharedProcessSelected" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#d5e8d4;strokeColor=#82b366;" parent="1" vertex="1">
<mxCell id="sHT8GTnQFrlxJ-m2nGzn-38" value="ProcessSelected" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#d5e8d4;strokeColor=#82b366;" parent="1" vertex="1">
<mxGeometry x="-1409" y="85.71" width="170" height="30.71" as="geometry" />
</mxCell>
<mxCell id="sHT8GTnQFrlxJ-m2nGzn-39" value="SpAddress" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
@ -147,7 +147,7 @@
<mxCell id="sHT8GTnQFrlxJ-m2nGzn-46" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="sHT8GTnQFrlxJ-m2nGzn-47" target="sHT8GTnQFrlxJ-m2nGzn-38" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="sHT8GTnQFrlxJ-m2nGzn-47" value="SharedProcessListMerged" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxCell id="sHT8GTnQFrlxJ-m2nGzn-47" value="ProcessListMerged" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="-1414.28" y="42.28999999999999" width="180" height="30.71" as="geometry" />
</mxCell>
<mxCell id="sHT8GTnQFrlxJ-m2nGzn-49" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" target="sHT8GTnQFrlxJ-m2nGzn-50" edge="1">
@ -277,7 +277,7 @@
</Array>
</mxGeometry>
</mxCell>
<mxCell id="sHT8GTnQFrlxJ-m2nGzn-91" value="SharedPeerListMerged" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxCell id="sHT8GTnQFrlxJ-m2nGzn-91" value="PeerListMerged" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="-1031.79" y="258.29" width="180" height="30.71" as="geometry" />
</mxCell>
<mxCell id="sHT8GTnQFrlxJ-m2nGzn-314" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" parent="1" source="sHT8GTnQFrlxJ-m2nGzn-284" target="sHT8GTnQFrlxJ-m2nGzn-313" edge="1">
@ -666,7 +666,7 @@
<mxCell id="5Ne0HzyGfQl-3uoNr5Rs-33" value="&lt;b style=&quot;border-color: var(--border-color); text-align: center;&quot;&gt;KeyRecoverScan&lt;/b&gt;&lt;br style=&quot;border-color: var(--border-color); font-weight: 400; text-align: center;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;Decrypt&lt;/span&gt;" style="label;whiteSpace=wrap;html=1;image=img/clipart/Gear_128x128.png" parent="1" vertex="1">
<mxGeometry x="-396.9999999999999" y="13" width="149.75" height="30" as="geometry" />
</mxCell>
<mxCell id="5Ne0HzyGfQl-3uoNr5Rs-35" value="PCD item_name=member&lt;br&gt;-&amp;gt; ItemMember (sp addess of the user)" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fontColor=#000000;fontStyle=1" parent="1" vertex="1">
<mxCell id="5Ne0HzyGfQl-3uoNr5Rs-35" value="PCD item_name=member&lt;br&gt;-&amp;gt; Member (sp addess of the user)" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fontColor=#000000;fontStyle=1" parent="1" vertex="1">
<mxGeometry x="-558.03" y="148" width="250" height="30.71" as="geometry" />
</mxCell>
<mxCell id="I9sp5S672SgGMplcR-zX-1" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;container=0;rounded=1;labelBackgroundColor=none;fontColor=#333333;fillColor=#f5f5f5;strokeColor=#666666;" parent="1" vertex="1">

File diff suppressed because one or more lines are too long

View File

@ -107,7 +107,7 @@
<mxCell id="425" value="" style="labelPosition=right;align=left;strokeWidth=1;shape=mxgraph.mockup.markup.curlyBrace;html=1;shadow=0;dashed=0;strokeColor=#999999;direction=north;" parent="410" vertex="1">
<mxGeometry x="98" y="250" width="20" height="100" as="geometry" />
</mxCell>
<mxCell id="426" value="After PRDList and it&#39;s responses&lt;br&gt;&lt;br&gt;From a PCD of an&lt;br&gt;PRDResponse in response of an&lt;br&gt;PRDList to the SharedProcess address SP" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="410" vertex="1">
<mxCell id="426" value="After PRDList and it&#39;s responses&lt;br&gt;&lt;br&gt;From a PCD of an&lt;br&gt;PRDResponse in response of an&lt;br&gt;PRDList to the Process address SP" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="410" vertex="1">
<mxGeometry x="1" y="330" width="98" height="5" as="geometry" />
</mxCell>
<mxCell id="405" value="Sp Addresses&lt;br&gt;Conditions&lt;br&gt;Legal text" style="strokeWidth=1;shadow=0;dashed=0;align=center;html=1;shape=mxgraph.mockup.containers.rrect;rSize=0;strokeColor=#666666;fontColor=#666666;fontSize=17;verticalAlign=top;whiteSpace=wrap;fillColor=#ffffff;spacingTop=32;" parent="410" vertex="1">
@ -1003,7 +1003,7 @@
<mxCell id="460" value="Form template of the first contract selected&lt;br&gt;with member role (default)&lt;br&gt;&lt;br&gt;fill all public fields into the template&lt;br&gt;&lt;br&gt;The form is the first element into the public render_list of the member role" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
<mxGeometry x="1270" y="600" width="110" height="130" as="geometry" />
</mxCell>
<mxCell id="462" value="&lt;div&gt;Send a PRDUpdate and a PCD for a new version with the user ItemMember object into the member list to the member list managers&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Send a PRDUpdate and a PCD for a new version with the user sp address into the membrers into the process list to the process list managers&lt;br&gt;&lt;/div&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
<mxCell id="462" value="&lt;div&gt;Send a PRDUpdate and a PCD for a new version with the user Member object into the member list to the member list managers&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Send a PRDUpdate and a PCD for a new version with the user sp address into the membrers into the process list to the process list managers&lt;br&gt;&lt;/div&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
<mxGeometry x="2027" y="806" width="130" height="130" as="geometry" />
</mxCell>
<mxCell id="463" value="Receive all the PRDResponses&lt;br&gt;&lt;br&gt;Send to all the members to all the roles a PRDList&lt;br&gt;&lt;br&gt;Received all the PCD updated with the PRDRespponses with the encryption keys for confidential fields" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">

View File

@ -27,13 +27,13 @@
<mxCell id="Jbry3jnCOe730K93ba73-15" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="Jbry3jnCOe730K93ba73-2" target="Jbry3jnCOe730K93ba73-6" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="Jbry3jnCOe730K93ba73-2" value="ItemProcessList" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxCell id="Jbry3jnCOe730K93ba73-2" value="ProcessList" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="230" y="-880" width="92.3076923076923" height="33.333333333333336" as="geometry" />
</mxCell>
<mxCell id="Jbry3jnCOe730K93ba73-16" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="Jbry3jnCOe730K93ba73-6" target="Jbry3jnCOe730K93ba73-11" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="Jbry3jnCOe730K93ba73-6" value="ItemProcess" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxCell id="Jbry3jnCOe730K93ba73-6" value="Process" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="230" y="-829.3333333333334" width="92.3076923076923" height="33.333333333333336" as="geometry" />
</mxCell>
<mxCell id="Jbry3jnCOe730K93ba73-17" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="Jbry3jnCOe730K93ba73-11" target="Jbry3jnCOe730K93ba73-10" edge="1">

View File

@ -106,7 +106,7 @@
<mxCell id="s9p4VKi4Rz1OL5Ugs_63-6" value="1:hash_prd" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="732.285" y="-337.84000000000003" width="187.57" height="30" as="geometry" />
</mxCell>
<mxCell id="s9p4VKi4Rz1OL5Ugs_63-7" value="2:hash_itemProcess" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxCell id="s9p4VKi4Rz1OL5Ugs_63-7" value="2:hash_Process" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="732.285" y="-298.84000000000003" width="187.57" height="30" as="geometry" />
</mxCell>
<mxCell id="s9p4VKi4Rz1OL5Ugs_63-8" value="3:hash_value_sig" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
@ -133,7 +133,7 @@
<mxCell id="s9p4VKi4Rz1OL5Ugs_63-15" value="10:hash_amount_deposit" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="732.285" y="14.159999999999968" width="187.57" height="30" as="geometry" />
</mxCell>
<mxCell id="s9p4VKi4Rz1OL5Ugs_63-16" value="11:hash_amount_commitment" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxCell id="s9p4VKi4Rz1OL5Ugs_63-16" value="11:hash_amount_commit" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="732.285" y="52.73000000000002" width="187.57" height="30" as="geometry" />
</mxCell>
<mxCell id="ciDpwXPfI_i4saoGPbpC-42" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" parent="1" source="ciDpwXPfI_i4saoGPbpC-9" target="ciDpwXPfI_i4saoGPbpC-41" edge="1">

View File

@ -27,13 +27,13 @@
<mxCell id="Jbry3jnCOe730K93ba73-15" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="Jbry3jnCOe730K93ba73-2" target="Jbry3jnCOe730K93ba73-6" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="Jbry3jnCOe730K93ba73-2" value="ItemProcessList" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxCell id="Jbry3jnCOe730K93ba73-2" value="ProcessList" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="230" y="-880" width="92.3076923076923" height="33.333333333333336" as="geometry" />
</mxCell>
<mxCell id="Jbry3jnCOe730K93ba73-16" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="Jbry3jnCOe730K93ba73-6" target="Jbry3jnCOe730K93ba73-11" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="Jbry3jnCOe730K93ba73-6" value="ItemProcess" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxCell id="Jbry3jnCOe730K93ba73-6" value="Process" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="230" y="-829.3333333333334" width="92.3076923076923" height="33.333333333333336" as="geometry" />
</mxCell>
<mxCell id="Jbry3jnCOe730K93ba73-17" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="Jbry3jnCOe730K93ba73-11" target="Jbry3jnCOe730K93ba73-10" edge="1">

View File

@ -173,7 +173,7 @@
</Array>
</mxGeometry>
</mxCell>
<mxCell id="196" value="SharedProcessSelected" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#d5e8d4;strokeColor=#82b366;" parent="1" vertex="1">
<mxCell id="196" value="ProcessSelected" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#d5e8d4;strokeColor=#82b366;" parent="1" vertex="1">
<mxGeometry x="-349.55999999999995" y="171.00000000000006" width="170" height="30.71" as="geometry" />
</mxCell>
<mxCell id="197" value="SpAddress" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
@ -381,7 +381,7 @@
<mxPoint x="-264.8399999999999" y="158.29000000000002" as="sourcePoint" />
</mxGeometry>
</mxCell>
<mxCell id="HEAZNrv7IqFEUBU4v7G9-336" value="SharedProcessList" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxCell id="HEAZNrv7IqFEUBU4v7G9-336" value="ProcessList" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="-357.55999999999995" y="127.57999999999997" width="180" height="30.71" as="geometry" />
</mxCell>
<mxCell id="HEAZNrv7IqFEUBU4v7G9-341" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="HEAZNrv7IqFEUBU4v7G9-338" target="HEAZNrv7IqFEUBU4v7G9-340" edge="1">
@ -424,7 +424,7 @@
</Array>
</mxGeometry>
</mxCell>
<mxCell id="HEAZNrv7IqFEUBU4v7G9-340" value="SharedPeerListMerged" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxCell id="HEAZNrv7IqFEUBU4v7G9-340" value="PeerListMerged" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="-1005.8499999999999" y="460.29" width="180" height="30.71" as="geometry" />
</mxCell>
<mxCell id="HEAZNrv7IqFEUBU4v7G9-371" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" target="77" edge="1">

View File

@ -464,7 +464,7 @@
<mxPoint x="-1447" y="490" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-383" value="&lt;b&gt;ItemMember&lt;/b&gt;&lt;br&gt;(this user)" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fontColor=#000000;" parent="1" vertex="1">
<mxCell id="fIN9LJIhpEY6EGzNKIPz-383" value="&lt;b&gt;Member&lt;/b&gt;&lt;br&gt;(this user)" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fontColor=#000000;" parent="1" vertex="1">
<mxGeometry x="-1531.8" y="448" width="88.8" height="29" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-385" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" target="fIN9LJIhpEY6EGzNKIPz-350" edge="1">
@ -473,7 +473,7 @@
<mxPoint x="-1503" y="649.0699999999999" as="sourcePoint" />
</mxGeometry>
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-386" value="&lt;b&gt;ItemProcess&lt;/b&gt;&lt;br&gt;(with this new sp_address for the selected role)" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fontColor=#000000;" parent="1" vertex="1">
<mxCell id="fIN9LJIhpEY6EGzNKIPz-386" value="&lt;b&gt;Process&lt;/b&gt;&lt;br&gt;(with this new sp_address for the selected role)" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fontColor=#000000;" parent="1" vertex="1">
<mxGeometry x="-1510" y="590" width="140" height="59.07" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-388" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="fIN9LJIhpEY6EGzNKIPz-387" target="fIN9LJIhpEY6EGzNKIPz-386" edge="1">
@ -490,7 +490,7 @@
<mxCell id="fIN9LJIhpEY6EGzNKIPz-390" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;strokeColor=#999999;" parent="1" source="fIN9LJIhpEY6EGzNKIPz-389" target="fIN9LJIhpEY6EGzNKIPz-386" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-389" value="last ItemProcess version" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxCell id="fIN9LJIhpEY6EGzNKIPz-389" value="last Process version" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="-1620" y="269.99999999999994" width="100" height="29" as="geometry" />
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-393" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" parent="1" source="fIN9LJIhpEY6EGzNKIPz-392" target="fIN9LJIhpEY6EGzNKIPz-383" edge="1">
@ -516,7 +516,7 @@
</Array>
</mxGeometry>
</mxCell>
<mxCell id="fIN9LJIhpEY6EGzNKIPz-395" value="&lt;b&gt;Inital ItemMember&lt;/b&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fontColor=#000000;" parent="1" vertex="1">
<mxCell id="fIN9LJIhpEY6EGzNKIPz-395" value="&lt;b&gt;Inital Member&lt;/b&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fontColor=#000000;" parent="1" vertex="1">
<mxGeometry x="-1428.35" y="388" width="76.25" height="29" as="geometry" />
</mxCell>
<mxCell id="3oxP2IrQZiT_M8X3yCe1-245" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;container=0;rounded=1;labelBackgroundColor=none;fontColor=#333333;fillColor=#f5f5f5;strokeColor=#666666;" parent="1" vertex="1">
@ -559,7 +559,7 @@
<mxPoint x="-1503.8000000000002" y="700" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="W0tqueod3XqBArbf31HU-251" value="&lt;b&gt;Inital ItemMember&lt;/b&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fontColor=#000000;" parent="1" vertex="1">
<mxCell id="W0tqueod3XqBArbf31HU-251" value="&lt;b&gt;Inital Member&lt;/b&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fontColor=#000000;" parent="1" vertex="1">
<mxGeometry x="-1410.35" y="590" width="76.25" height="59.07" as="geometry" />
</mxCell>
<mxCell id="UgsJvuNo3Jpwi4Lm2WxR-246" value="&lt;b&gt;ThirdParty&lt;/b&gt;&lt;div&gt;&lt;b&gt;PriveKey&lt;/b&gt;&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#d5e8d4;strokeColor=#82b366;" vertex="1" parent="1">

View File

@ -107,7 +107,7 @@
<mxCell id="sHT8GTnQFrlxJ-m2nGzn-37" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="sHT8GTnQFrlxJ-m2nGzn-38" target="sHT8GTnQFrlxJ-m2nGzn-39" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="sHT8GTnQFrlxJ-m2nGzn-38" value="SharedProcessSelected" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#d5e8d4;strokeColor=#82b366;" parent="1" vertex="1">
<mxCell id="sHT8GTnQFrlxJ-m2nGzn-38" value="ProcessSelected" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#d5e8d4;strokeColor=#82b366;" parent="1" vertex="1">
<mxGeometry x="-1409" y="85.71" width="170" height="30.71" as="geometry" />
</mxCell>
<mxCell id="sHT8GTnQFrlxJ-m2nGzn-39" value="SpAddress" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
@ -147,7 +147,7 @@
<mxCell id="sHT8GTnQFrlxJ-m2nGzn-46" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="sHT8GTnQFrlxJ-m2nGzn-47" target="sHT8GTnQFrlxJ-m2nGzn-38" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="sHT8GTnQFrlxJ-m2nGzn-47" value="SharedProcessListMerged" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxCell id="sHT8GTnQFrlxJ-m2nGzn-47" value="ProcessListMerged" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="-1414.28" y="42.28999999999999" width="180" height="30.71" as="geometry" />
</mxCell>
<mxCell id="sHT8GTnQFrlxJ-m2nGzn-49" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" target="sHT8GTnQFrlxJ-m2nGzn-50" edge="1">
@ -277,7 +277,7 @@
</Array>
</mxGeometry>
</mxCell>
<mxCell id="sHT8GTnQFrlxJ-m2nGzn-91" value="SharedPeerListMerged" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxCell id="sHT8GTnQFrlxJ-m2nGzn-91" value="PeerListMerged" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="-1031.79" y="258.29" width="180" height="30.71" as="geometry" />
</mxCell>
<mxCell id="sHT8GTnQFrlxJ-m2nGzn-314" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" parent="1" source="sHT8GTnQFrlxJ-m2nGzn-284" target="sHT8GTnQFrlxJ-m2nGzn-313" edge="1">
@ -666,7 +666,7 @@
<mxCell id="5Ne0HzyGfQl-3uoNr5Rs-33" value="&lt;b style=&quot;border-color: var(--border-color); text-align: center;&quot;&gt;KeyRecoverScan&lt;/b&gt;&lt;br style=&quot;border-color: var(--border-color); font-weight: 400; text-align: center;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;Decrypt&lt;/span&gt;" style="label;whiteSpace=wrap;html=1;image=img/clipart/Gear_128x128.png" parent="1" vertex="1">
<mxGeometry x="-396.9999999999999" y="13" width="149.75" height="30" as="geometry" />
</mxCell>
<mxCell id="5Ne0HzyGfQl-3uoNr5Rs-35" value="PCD item_name=member&lt;br&gt;-&amp;gt; ItemMember (sp addess of the user)" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fontColor=#000000;fontStyle=1" parent="1" vertex="1">
<mxCell id="5Ne0HzyGfQl-3uoNr5Rs-35" value="PCD item_name=member&lt;br&gt;-&amp;gt; Member (sp addess of the user)" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fontColor=#000000;fontStyle=1" parent="1" vertex="1">
<mxGeometry x="-558.03" y="148" width="250" height="30.71" as="geometry" />
</mxCell>
<mxCell id="I9sp5S672SgGMplcR-zX-1" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;container=0;rounded=1;labelBackgroundColor=none;fontColor=#333333;fillColor=#f5f5f5;strokeColor=#666666;" parent="1" vertex="1">

View File

@ -1,11 +1,11 @@
use serde::{Deserialize, Serialize};
#[derive(Debug, Serialize, Deserialize, Default, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct CommitmentMethod {
pub struct commitMethod {
pub method: String,
}
impl CommitmentMethod {
impl commitMethod {
pub fn new(method: String) -> Self {
CommitmentMethod { method }
commitMethod { method }
}
}

View File

@ -2,20 +2,20 @@ use serde::{Deserialize, Serialize};
use super::role::TransactionMode;
#[derive(Debug, Serialize, Deserialize, Default, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct ConditionCommitment {
pub struct Conditioncommit {
pub role_artefact: String,
pub role_transaction: TransactionMode,
}
impl ConditionCommitment {
impl Conditioncommit {
pub fn new(role_artefact: String, role_transaction: TransactionMode) -> Self {
ConditionCommitment {
Conditioncommit {
role_artefact,
role_transaction,
}
}
pub fn display_info(&self) {
println!("ConditionCommitment:");
println!("Conditioncommit:");
println!("Role Artefact: {}", self.role_artefact);
println!("Role Transaction:");
self.role_transaction.display_info(); // Appelle display_info sur role_transaction

View File

@ -10,21 +10,21 @@ use super::pcd_item_enc_attribute_role_confidential::PcdItemEncAttributeRoleConf
use super::pcd_item_generic_enc::PcdItemGenericEnc;
#[derive(Debug, Serialize, Deserialize, Default, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct ItemArtefact {
pub struct Artefact {
pub item: Item,
pub public_attribute_group: Vec<String>, // Assuming list of attributes
pub role_confidential_attribute_group: Vec<String>,
pub private_attribute_group: Vec<String>,
}
impl ItemArtefact {
impl Artefact {
pub fn new(
item: Item,
public_attribute_group: Vec<String>,
role_confidential_attribute_group: Vec<String>,
private_attribute_group: Vec<String>,
) -> Self {
ItemArtefact {
Artefact {
item,
public_attribute_group,
role_confidential_attribute_group,
@ -114,7 +114,7 @@ impl ItemArtefact {
)
}
pub fn display_info(&self) {
println!("ItemArtefact:");
println!("Artefact:");
println!("Item:");
self.item.display_info(); // Appelle display_info sur item

View File

@ -10,31 +10,31 @@ use super::{
#[derive(Debug, Serialize, Deserialize, Default, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct ItemCommitmentPublicAttributeGroup {
pub struct CommitPublicAttributeGroup {
pub for_sp_address_list: Vec<String>,
pub goal_list: Vec<String>,
pub provider_type: String,
pub commitment_pcd_hash_list: Vec<String>,
pub commit_pcd_hash_list: Vec<String>,
pub ref_item_hash_list: Vec<String>,
pub ref_pcd_hash_list: Vec<String>,
pub payload_public_list: Vec<String>,
}
impl ItemCommitmentPublicAttributeGroup {
impl CommitPublicAttributeGroup {
pub fn new(
for_sp_address_list: Vec<String>,
goal_list: Vec<String>,
provider_type: String,
commitment_pcd_hash_list: Vec<String>,
commit_pcd_hash_list: Vec<String>,
ref_item_hash_list: Vec<String>,
ref_pcd_hash_list: Vec<String>,
payload_public_list: Vec<String>,
) -> Self {
ItemCommitmentPublicAttributeGroup {
CommitPublicAttributeGroup {
for_sp_address_list,
goal_list,
provider_type,
commitment_pcd_hash_list,
commit_pcd_hash_list,
ref_item_hash_list,
ref_pcd_hash_list,
payload_public_list,
@ -64,11 +64,11 @@ impl ItemCommitmentPublicAttributeGroup {
);
enc_attribute_list.push(provider_type_enc);
let commitment_pcd_hash_list_enc = PcdItemEncAttributePublic::new(
"commitment_pcd_hash_list".to_owned(),
process_public_enc_key.enc_vec_string(self.commitment_pcd_hash_list.clone()),
let commit_pcd_hash_list_enc = PcdItemEncAttributePublic::new(
"commit_pcd_hash_list".to_owned(),
process_public_enc_key.enc_vec_string(self.commit_pcd_hash_list.clone()),
);
enc_attribute_list.push(commitment_pcd_hash_list_enc);
enc_attribute_list.push(commit_pcd_hash_list_enc);
let ref_item_hash_list_enc = PcdItemEncAttributePublic::new(
"ref_item_hash_list".to_owned(),
@ -91,13 +91,13 @@ impl ItemCommitmentPublicAttributeGroup {
enc_attribute_list
}
pub fn display_info(&self) {
println!("ItemCommitmentPublicAttributeGroup:");
println!("CommitPublicAttributeGroup:");
println!("For SP Address List: {:?}", self.for_sp_address_list);
println!("Goal List: {:?}", self.goal_list);
println!("Provider Type: {}", self.provider_type);
println!(
"Commitment PCD Hash List: {:?}",
self.commitment_pcd_hash_list
"commit PCD Hash List: {:?}",
self.commit_pcd_hash_list
);
println!("Ref Item Hash List: {:?}", self.ref_item_hash_list);
println!("Ref PCD Hash List: {:?}", self.ref_pcd_hash_list);
@ -107,13 +107,13 @@ impl ItemCommitmentPublicAttributeGroup {
#[derive(Debug, Serialize, Deserialize, Default, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct ItemCommitmentRoleConfidentialAttributeGroup {
pub struct CommitRoleConfidentialAttributeGroup {
pub payload_list_confidential: Vec<String>,
}
impl ItemCommitmentRoleConfidentialAttributeGroup {
impl CommitRoleConfidentialAttributeGroup {
pub fn new(payload_list_confidential: Vec<String>) -> Self {
ItemCommitmentRoleConfidentialAttributeGroup {
CommitRoleConfidentialAttributeGroup {
payload_list_confidential,
}
}
@ -135,7 +135,7 @@ impl ItemCommitmentRoleConfidentialAttributeGroup {
return enc_attribute_list;
}
pub fn display_info(&self) {
println!("ItemCommitmentRoleConfidentialAttributeGroup:");
println!("CommitRoleConfidentialAttributeGroup:");
for (index, payload) in self.payload_list_confidential.iter().enumerate() {
println!("Confidential Payload {}: {}", index + 1, payload);
}
@ -144,13 +144,13 @@ impl ItemCommitmentRoleConfidentialAttributeGroup {
#[derive(Debug, Serialize, Deserialize, Default, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct ItemCommitmentPrivateAttributeGroup {
pub struct CommitPrivateAttributeGroup {
pub payload_list_private: Vec<String>,
}
impl ItemCommitmentPrivateAttributeGroup {
impl CommitPrivateAttributeGroup {
pub fn new(payload_list_private: Vec<String>) -> Self {
ItemCommitmentPrivateAttributeGroup {
CommitPrivateAttributeGroup {
payload_list_private,
}
}
@ -166,7 +166,7 @@ impl ItemCommitmentPrivateAttributeGroup {
enc_attribute_list
}
pub fn display_info(&self) {
println!("ItemCommitmentRoleConfidentialAttributeGroup:");
println!("CommitRoleConfidentialAttributeGroup:");
for (index, payload) in self.payload_list_private.iter().enumerate() {
println!("Private Payload {}: {}", index + 1, payload);
}
@ -175,23 +175,23 @@ impl ItemCommitmentPrivateAttributeGroup {
#[derive(Debug, Serialize, Deserialize, Default, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct ItemCommitment {
pub struct Commit {
pub item: Item,
pub public_attribute_group: ItemCommitmentPublicAttributeGroup,
pub role_confidential_attribute_group: ItemCommitmentRoleConfidentialAttributeGroup,
pub private_attribute_group: ItemCommitmentPrivateAttributeGroup,
pub public_attribute_group: CommitPublicAttributeGroup,
pub role_confidential_attribute_group: CommitRoleConfidentialAttributeGroup,
pub private_attribute_group: CommitPrivateAttributeGroup,
}
impl ItemCommitment {
pub const ITEM_NAME: &'static str = "commitment";
impl Commit {
pub const ITEM_NAME: &'static str = "commit";
pub fn new(
mut item: Item,
public_attribute_group: ItemCommitmentPublicAttributeGroup,
role_confidential_attribute_group: ItemCommitmentRoleConfidentialAttributeGroup,
private_attribute_group: ItemCommitmentPrivateAttributeGroup,
public_attribute_group: CommitPublicAttributeGroup,
role_confidential_attribute_group: CommitRoleConfidentialAttributeGroup,
private_attribute_group: CommitPrivateAttributeGroup,
) -> Self {
item.name = Self::ITEM_NAME.to_string();
ItemCommitment {
Commit {
item,
public_attribute_group,
role_confidential_attribute_group,
@ -223,7 +223,7 @@ impl ItemCommitment {
)
}
pub fn display_info(&self) {
println!("ItemCommitment:");
println!("Commit:");
println!("Item:");
self.item.display_info(); // Affiche les informations de `item`

View File

@ -10,7 +10,7 @@ use super::{
#[derive(Debug, Serialize, Deserialize, Default, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct ItemDepositPublicAttributeGroup {
pub struct DepositPublicAttributeGroup {
pub for_sp_address_list: Vec<String>,
pub for_address_list: Vec<String>,
pub goal_list: Vec<String>,
@ -21,7 +21,7 @@ pub struct ItemDepositPublicAttributeGroup {
pub audit_code_list_public: Vec<String>,
}
impl ItemDepositPublicAttributeGroup {
impl DepositPublicAttributeGroup {
pub fn new(
for_sp_address_list: Vec<String>,
for_address_list: Vec<String>,
@ -32,7 +32,7 @@ impl ItemDepositPublicAttributeGroup {
payload_list_public: Vec<String>,
audit_code_list_public: Vec<String>,
) -> Self {
ItemDepositPublicAttributeGroup {
DepositPublicAttributeGroup {
for_sp_address_list,
for_address_list,
goal_list,
@ -100,7 +100,7 @@ impl ItemDepositPublicAttributeGroup {
enc_attribute_list
}
pub fn display_info(&self) {
println!("ItemDepositPublicAttributeGroup:");
println!("DepositPublicAttributeGroup:");
println!("For SP Address List: {:?}", self.for_sp_address_list);
println!("For Address List: {:?}", self.for_address_list);
println!("Goal List: {:?}", self.goal_list);
@ -114,17 +114,17 @@ impl ItemDepositPublicAttributeGroup {
#[derive(Debug, Serialize, Deserialize, Default, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct ItemDepositRoleConfidentialAttributeGroup {
pub struct DepositRoleConfidentialAttributeGroup {
pub payload_list_confidential: Vec<String>,
pub audit_code_list_confidential: Vec<String>,
}
impl ItemDepositRoleConfidentialAttributeGroup {
impl DepositRoleConfidentialAttributeGroup {
pub fn new(
payload_list_confidential: Vec<String>,
audit_code_list_confidential: Vec<String>,
) -> Self {
ItemDepositRoleConfidentialAttributeGroup {
DepositRoleConfidentialAttributeGroup {
payload_list_confidential,
audit_code_list_confidential,
}
@ -160,7 +160,7 @@ impl ItemDepositRoleConfidentialAttributeGroup {
return enc_attribute_list;
}
pub fn display_info(&self) {
println!("ItemDepositRoleConfidentialAttributeGroup:");
println!("DepositRoleConfidentialAttributeGroup:");
println!(
"Confidential Payload List: {:?}",
self.payload_list_confidential
@ -174,14 +174,14 @@ impl ItemDepositRoleConfidentialAttributeGroup {
#[derive(Debug, Serialize, Deserialize, Default, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct ItemDepositPrivateAttributeGroup {
pub struct DepositPrivateAttributeGroup {
pub payload_list_private: Vec<String>,
pub audit_code_private: String,
}
impl ItemDepositPrivateAttributeGroup {
impl DepositPrivateAttributeGroup {
pub fn new(payload_list_private: Vec<String>, audit_code_private: String) -> Self {
ItemDepositPrivateAttributeGroup {
DepositPrivateAttributeGroup {
payload_list_private,
audit_code_private,
}
@ -205,7 +205,7 @@ impl ItemDepositPrivateAttributeGroup {
enc_attribute_list
}
pub fn display_info(&self) {
println!("ItemDepositPrivateAttributeGroup:");
println!("DepositPrivateAttributeGroup:");
println!("Private Payload List: {:?}", self.payload_list_private);
println!("Private Audit Code: {}", self.audit_code_private);
}
@ -213,23 +213,23 @@ impl ItemDepositPrivateAttributeGroup {
#[derive(Debug, Serialize, Deserialize, Default, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct ItemDeposit {
pub struct Deposit {
pub item: Item,
pub public_attribute_group: ItemDepositPublicAttributeGroup,
pub role_confidential_attribute_group: ItemDepositRoleConfidentialAttributeGroup,
pub private_attribute_group: ItemDepositPrivateAttributeGroup,
pub public_attribute_group: DepositPublicAttributeGroup,
pub role_confidential_attribute_group: DepositRoleConfidentialAttributeGroup,
pub private_attribute_group: DepositPrivateAttributeGroup,
}
impl ItemDeposit {
impl Deposit {
pub const ITEM_NAME: &'static str = "deposit";
pub fn new(
mut item: Item,
public_attribute_group: ItemDepositPublicAttributeGroup,
role_confidential_attribute_group: ItemDepositRoleConfidentialAttributeGroup,
private_attribute_group: ItemDepositPrivateAttributeGroup,
public_attribute_group: DepositPublicAttributeGroup,
role_confidential_attribute_group: DepositRoleConfidentialAttributeGroup,
private_attribute_group: DepositPrivateAttributeGroup,
) -> Self {
item.name = Self::ITEM_NAME.to_string();
ItemDeposit {
Deposit {
item,
public_attribute_group,
role_confidential_attribute_group,
@ -261,7 +261,7 @@ impl ItemDeposit {
)
}
pub fn display_info(&self) {
println!("ItemDeposit:");
println!("Deposit:");
println!("Item:");
self.item.display_info(); // Affiche les informations de l'objet `item`

View File

@ -1,18 +1,18 @@
use serde::{Deserialize, Serialize};
use super::{
item_artefact::ItemArtefact, item_commitment::ItemCommitment, item_deposit::ItemDeposit,
item_member::ItemMember, item_Payments::ItemPayments, item_peer::ItemPeer,
item_process::ItemProcess,
item_artefact::Artefact, item_commit::Commit, item_deposit::Deposit,
item_member::Member, item_Payments::Payments, item_peer::Peer,
item_process::Process,
};
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub enum ItemEnum {
Process(ItemProcess),
Peer(ItemPeer),
Member(ItemMember),
Payments(ItemPayments),
Deposit(ItemDeposit),
Artefact(ItemArtefact),
Commitment(ItemCommitment),
Process(Process),
Peer(Peer),
Member(Member),
Payments(Payments),
Deposit(Deposit),
Artefact(Artefact),
commit(Commit),
}

View File

@ -9,7 +9,7 @@ use super::{
};
#[derive(Debug, Serialize, Deserialize, Default, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct ItemMemberPublicAttributeGroup {
pub struct MemberPublicAttributeGroup {
pub sp_address_public: String,
pub sp_address_public_sig: String,
pub sp_address_revoke_public: String,
@ -20,7 +20,7 @@ pub struct ItemMemberPublicAttributeGroup {
pub succession_process_hash: String,
}
impl ItemMemberPublicAttributeGroup {
impl MemberPublicAttributeGroup {
pub fn new(
sp_address_public: String,
sp_address_public_sig: String,
@ -31,7 +31,7 @@ impl ItemMemberPublicAttributeGroup {
Payments_method_list_public: Vec<String>,
succession_process_hash: String,
) -> Self {
ItemMemberPublicAttributeGroup {
MemberPublicAttributeGroup {
sp_address_public,
sp_address_public_sig,
sp_address_revoke_public,
@ -99,7 +99,7 @@ impl ItemMemberPublicAttributeGroup {
enc_attribute_list
}
pub fn display_info(&self) {
println!("ItemMemberPublicAttributeGroup:");
println!("MemberPublicAttributeGroup:");
println!("SP Address Public: {}", self.sp_address_public);
println!(
"SP Address Public Signature: {}",
@ -128,14 +128,14 @@ impl ItemMemberPublicAttributeGroup {
#[derive(Debug, Serialize, Deserialize, Default, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct ItemMemberRoleConfidentialAttributeGroup {
pub struct MemberRoleConfidentialAttributeGroup {
pub Payments_method_list_confidential: Vec<String>,
pub id_shard_info: String,
}
impl ItemMemberRoleConfidentialAttributeGroup {
impl MemberRoleConfidentialAttributeGroup {
pub fn new(Payments_method_list_confidential: Vec<String>, id_shard_info: String) -> Self {
ItemMemberRoleConfidentialAttributeGroup {
MemberRoleConfidentialAttributeGroup {
Payments_method_list_confidential,
id_shard_info,
}
@ -174,7 +174,7 @@ impl ItemMemberRoleConfidentialAttributeGroup {
return enc_attribute_list;
}
pub fn display_info(&self) {
println!("ItemMemberRoleConfidentialAttributeGroup:");
println!("MemberRoleConfidentialAttributeGroup:");
println!(
"Confidential Payments Method List: {:?}",
self.Payments_method_list_confidential
@ -185,7 +185,7 @@ impl ItemMemberRoleConfidentialAttributeGroup {
#[derive(Debug, Serialize, Deserialize, Default, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct ItemMemberPrivateAttributeGroup {
pub struct MemberPrivateAttributeGroup {
pub Payments_method_list_private: Vec<String>,
pub pcd_list: Vec<String>, // Assuming this is a list of strings
pub prd_list_list: Vec<String>,
@ -198,7 +198,7 @@ pub struct ItemMemberPrivateAttributeGroup {
pub tx_sp_list: Vec<String>,
}
impl ItemMemberPrivateAttributeGroup {
impl MemberPrivateAttributeGroup {
pub fn new(
Payments_method_list_private: Vec<String>,
pcd_list: Vec<String>,
@ -211,7 +211,7 @@ impl ItemMemberPrivateAttributeGroup {
prd_key_hello_list: Vec<String>,
tx_sp_list: Vec<String>,
) -> Self {
ItemMemberPrivateAttributeGroup {
MemberPrivateAttributeGroup {
Payments_method_list_private,
pcd_list,
prd_list_list,
@ -291,7 +291,7 @@ impl ItemMemberPrivateAttributeGroup {
enc_attribute_list
}
pub fn display_info(&self) {
println!("ItemMemberPrivateAttributeGroup:");
println!("MemberPrivateAttributeGroup:");
println!(
"Private Payments Method List: {:?}",
self.Payments_method_list_private
@ -310,23 +310,23 @@ impl ItemMemberPrivateAttributeGroup {
#[derive(Debug, Serialize, Deserialize, Default, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct ItemMember {
pub struct Member {
pub item: Item,
pub public_attribute_group: ItemMemberPublicAttributeGroup,
pub role_confidential_attribute_group: ItemMemberRoleConfidentialAttributeGroup,
pub private_attribute_group: ItemMemberPrivateAttributeGroup,
pub public_attribute_group: MemberPublicAttributeGroup,
pub role_confidential_attribute_group: MemberRoleConfidentialAttributeGroup,
pub private_attribute_group: MemberPrivateAttributeGroup,
}
impl ItemMember {
impl Member {
pub const ITEM_NAME: &'static str = "member";
pub fn new(
mut item: Item,
public_attribute_group: ItemMemberPublicAttributeGroup,
role_confidential_attribute_group: ItemMemberRoleConfidentialAttributeGroup,
private_attribute_group: ItemMemberPrivateAttributeGroup,
public_attribute_group: MemberPublicAttributeGroup,
role_confidential_attribute_group: MemberRoleConfidentialAttributeGroup,
private_attribute_group: MemberPrivateAttributeGroup,
) -> Self {
item.name = Self::ITEM_NAME.to_string();
ItemMember {
Member {
item,
public_attribute_group,
role_confidential_attribute_group,
@ -358,7 +358,7 @@ impl ItemMember {
)
}
pub fn display_info(&self) {
println!("ItemMember:");
println!("Member:");
println!("Item:");
self.item.display_info(); // Affiche les informations de l'objet `item`

View File

@ -9,11 +9,11 @@ use super::{
};
#[derive(Debug, Serialize, Deserialize, Default, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct ItemPaymentsPublicAttributeGroup {
pub struct PaymentsPublicAttributeGroup {
pub for_sp_address_list: Vec<String>,
pub goal_list: Vec<String>,
pub provider_type: String,
pub commitment_pcd_hash_list: Vec<String>,
pub commit_pcd_hash_list: Vec<String>,
pub order_pcd_hash_list: Vec<String>,
pub invoice_pcd_hash_list: Vec<String>,
pub pay_pcd_hash_list: Vec<String>,
@ -23,12 +23,12 @@ pub struct ItemPaymentsPublicAttributeGroup {
pub audit_code_list_public: Vec<String>,
}
impl ItemPaymentsPublicAttributeGroup {
impl PaymentsPublicAttributeGroup {
pub fn new(
for_sp_address_list: Vec<String>,
goal_list: Vec<String>,
provider_type: String,
commitment_pcd_hash_list: Vec<String>,
commit_pcd_hash_list: Vec<String>,
order_pcd_hash_list: Vec<String>,
invoice_pcd_hash_list: Vec<String>,
pay_pcd_hash_list: Vec<String>,
@ -37,11 +37,11 @@ impl ItemPaymentsPublicAttributeGroup {
payload_list_public: Vec<String>,
audit_code_list_public: Vec<String>,
) -> Self {
ItemPaymentsPublicAttributeGroup {
PaymentsPublicAttributeGroup {
for_sp_address_list,
goal_list,
provider_type,
commitment_pcd_hash_list,
commit_pcd_hash_list,
order_pcd_hash_list,
invoice_pcd_hash_list,
pay_pcd_hash_list,
@ -75,11 +75,11 @@ impl ItemPaymentsPublicAttributeGroup {
);
enc_attribute_list.push(provider_type_enc);
let commitment_pcd_hash_list_enc = PcdItemEncAttributePublic::new(
"commitment_pcd_hash_list".to_owned(),
process_public_enc_key.enc_vec_string(self.commitment_pcd_hash_list.clone()),
let commit_pcd_hash_list_enc = PcdItemEncAttributePublic::new(
"commit_pcd_hash_list".to_owned(),
process_public_enc_key.enc_vec_string(self.commit_pcd_hash_list.clone()),
);
enc_attribute_list.push(commitment_pcd_hash_list_enc);
enc_attribute_list.push(commit_pcd_hash_list_enc);
let order_pcd_hash_list_enc = PcdItemEncAttributePublic::new(
"order_pcd_hash_list".to_owned(),
@ -126,13 +126,13 @@ impl ItemPaymentsPublicAttributeGroup {
enc_attribute_list
}
pub fn display_info(&self) {
println!("ItemPaymentsPublicAttributeGroup:");
println!("PaymentsPublicAttributeGroup:");
println!("For SP Address List: {:?}", self.for_sp_address_list);
println!("Goal List: {:?}", self.goal_list);
println!("Provider Type: {}", self.provider_type);
println!(
"Commitment PCD Hash List: {:?}",
self.commitment_pcd_hash_list
"commit PCD Hash List: {:?}",
self.commit_pcd_hash_list
);
println!("Order PCD Hash List: {:?}", self.order_pcd_hash_list);
println!("Invoice PCD Hash List: {:?}", self.invoice_pcd_hash_list);
@ -146,23 +146,23 @@ impl ItemPaymentsPublicAttributeGroup {
#[derive(Debug, Serialize, Deserialize, Default, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct ItemPaymentsRoleConfidentialAttributeGroup {
pub struct PaymentsRoleConfidentialAttributeGroup {
pub payload_list_confidential: Vec<String>,
pub audit_code_list_confidential: Vec<String>,
}
impl ItemPaymentsRoleConfidentialAttributeGroup {
impl PaymentsRoleConfidentialAttributeGroup {
pub fn new(
payload_list_confidential: Vec<String>,
audit_code_list_confidential: Vec<String>,
) -> Self {
ItemPaymentsRoleConfidentialAttributeGroup {
PaymentsRoleConfidentialAttributeGroup {
payload_list_confidential,
audit_code_list_confidential,
}
}
pub fn display_info(&self) {
println!("ItemPaymentsRoleConfidentialAttributeGroup:");
println!("PaymentsRoleConfidentialAttributeGroup:");
println!(
"Confidential Payload List: {:?}",
self.payload_list_confidential
@ -209,20 +209,20 @@ impl ItemPaymentsRoleConfidentialAttributeGroup {
#[derive(Debug, Serialize, Deserialize, Default, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct ItemPaymentsPrivateAttributeGroup {
pub struct PaymentsPrivateAttributeGroup {
pub payload_list_private: Vec<String>,
pub audit_code_private: String,
}
impl ItemPaymentsPrivateAttributeGroup {
impl PaymentsPrivateAttributeGroup {
pub fn new(payload_list_private: Vec<String>, audit_code_private: String) -> Self {
ItemPaymentsPrivateAttributeGroup {
PaymentsPrivateAttributeGroup {
payload_list_private,
audit_code_private,
}
}
pub fn display_info(&self) {
println!("ItemPaymentsRoleConfidentialAttributeGroup:");
println!("PaymentsRoleConfidentialAttributeGroup:");
println!("Confidential Payload List: {:?}", self.payload_list_private);
println!(
"Confidential Audit Code List: {:?}",
@ -251,23 +251,23 @@ impl ItemPaymentsPrivateAttributeGroup {
#[derive(Debug, Serialize, Deserialize, Default, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct ItemPayments {
pub struct Payments {
pub item: Item,
pub public_attribute_group: ItemPaymentsPublicAttributeGroup,
pub role_confidential_attribute_group: ItemPaymentsRoleConfidentialAttributeGroup,
pub private_attribute_group: ItemPaymentsPrivateAttributeGroup,
pub public_attribute_group: PaymentsPublicAttributeGroup,
pub role_confidential_attribute_group: PaymentsRoleConfidentialAttributeGroup,
pub private_attribute_group: PaymentsPrivateAttributeGroup,
}
impl ItemPayments {
impl Payments {
pub const ITEM_NAME: &'static str = "Payments";
pub fn new(
mut item: Item,
public_attribute_group: ItemPaymentsPublicAttributeGroup,
role_confidential_attribute_group: ItemPaymentsRoleConfidentialAttributeGroup,
private_attribute_group: ItemPaymentsPrivateAttributeGroup,
public_attribute_group: PaymentsPublicAttributeGroup,
role_confidential_attribute_group: PaymentsRoleConfidentialAttributeGroup,
private_attribute_group: PaymentsPrivateAttributeGroup,
) -> Self {
item.name = Self::ITEM_NAME.to_string();
ItemPayments {
Payments {
item,
public_attribute_group,
role_confidential_attribute_group,
@ -299,7 +299,7 @@ impl ItemPayments {
)
}
pub fn display_info(&self) {
println!("ItemPayments:");
println!("Payments:");
println!("Item:");
self.item.display_info(); // Affiche les informations de l'objet `item`

View File

@ -8,7 +8,7 @@ use super::{
};
#[derive(Debug, Serialize, Deserialize, Default, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct ItemPeerPublicAttributeGroup {
pub struct PeerPublicAttributeGroup {
pub sp_address: String,
pub domain: String,
pub ip_address: String,
@ -22,7 +22,7 @@ pub struct ItemPeerPublicAttributeGroup {
pub daily_sp_tx_mine_reward_list: Vec<String>,
}
impl ItemPeerPublicAttributeGroup {
impl PeerPublicAttributeGroup {
pub fn new(
sp_address: String,
domain: String,
@ -36,7 +36,7 @@ impl ItemPeerPublicAttributeGroup {
daily_sp_tx_mine_list: Vec<String>,
daily_sp_tx_mine_reward_list: Vec<String>,
) -> Self {
ItemPeerPublicAttributeGroup {
PeerPublicAttributeGroup {
sp_address,
domain,
ip_address,
@ -125,7 +125,7 @@ impl ItemPeerPublicAttributeGroup {
enc_attribute_list
}
pub fn display_info(&self) {
println!("ItemPeerPublicAttributeGroup:");
println!("PeerPublicAttributeGroup:");
println!("SP Address: {}", self.sp_address);
println!("Domain: {}", self.domain);
println!("IP Address: {}", self.ip_address);
@ -145,16 +145,16 @@ impl ItemPeerPublicAttributeGroup {
#[derive(Debug, Serialize, Deserialize, Default, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct ItemPeerPrivateAttributeGroup {
pub struct PeerPrivateAttributeGroup {
pub config: String, // Assuming it's a simple string for now
}
impl ItemPeerPrivateAttributeGroup {
impl PeerPrivateAttributeGroup {
pub fn new(config: String) -> Self {
ItemPeerPrivateAttributeGroup { config }
PeerPrivateAttributeGroup { config }
}
pub fn display_info(&self) {
println!("ItemPeerPrivateAttributeGroup:");
println!("PeerPrivateAttributeGroup:");
println!("Config: {}", self.config);
}
@ -173,23 +173,23 @@ impl ItemPeerPrivateAttributeGroup {
#[derive(Debug, Serialize, Deserialize, Default, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct ItemPeer {
pub struct Peer {
pub item: Item,
pub layer_list: Vec<String>,
pub public_attribute_group: ItemPeerPublicAttributeGroup,
pub private_attribute_group: ItemPeerPrivateAttributeGroup,
pub public_attribute_group: PeerPublicAttributeGroup,
pub private_attribute_group: PeerPrivateAttributeGroup,
}
impl ItemPeer {
impl Peer {
pub const ITEM_NAME: &'static str = "peer";
pub fn new(
mut item: Item,
layer_list: Vec<String>,
public_attribute_group: ItemPeerPublicAttributeGroup,
private_attribute_group: ItemPeerPrivateAttributeGroup,
public_attribute_group: PeerPublicAttributeGroup,
private_attribute_group: PeerPrivateAttributeGroup,
) -> Self {
item.name = Self::ITEM_NAME.to_string();
ItemPeer {
Peer {
item,
layer_list,
public_attribute_group,
@ -218,7 +218,7 @@ impl ItemPeer {
)
}
pub fn display_info(&self) {
println!("ItemPeer:");
println!("Peer:");
println!("Item:");
self.item.display_info(); // Affiche les informations de l'objet `item`

View File

@ -8,18 +8,18 @@ use super::{
#[derive(Debug, Serialize, Deserialize, Default, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct ItemProcessPublicAttributeGroup {
pub struct ProcessPublicAttributeGroup {
// Fields for public attributes
// Example field
pub roles_group: RolesGroup,
}
impl ItemProcessPublicAttributeGroup {
impl ProcessPublicAttributeGroup {
pub fn new(roles_group: RolesGroup) -> Self {
ItemProcessPublicAttributeGroup { roles_group }
ProcessPublicAttributeGroup { roles_group }
}
pub fn display_info(&self) {
println!("ItemProcessPublicAttributeGroup:");
println!("ProcessPublicAttributeGroup:");
println!("Roles Group:");
self.roles_group.display_info(); // Display information for `roles_group`
}
@ -39,25 +39,25 @@ impl ItemProcessPublicAttributeGroup {
#[derive(Debug, Serialize, Deserialize, Default, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct ItemProcess {
pub struct Process {
pub item: Item,
pub item_process_public_attribute_group: ItemProcessPublicAttributeGroup,
pub item_process_public_attribute_group: ProcessPublicAttributeGroup,
}
impl ItemProcess {
impl Process {
pub const ITEM_NAME: &'static str = "process";
pub fn new(
mut item: Item,
item_process_public_attribute_group: ItemProcessPublicAttributeGroup,
item_process_public_attribute_group: ProcessPublicAttributeGroup,
) -> Self {
item.name = Self::ITEM_NAME.to_string();
ItemProcess {
Process {
item,
item_process_public_attribute_group,
}
}
pub fn display_info(&self) {
println!("ItemProcess:");
println!("Process:");
println!("Item:");
self.item.display_info(); // Display information for `item`
@ -82,5 +82,5 @@ impl ItemProcess {
)
}
// Additional methods for ItemProcess can be added here
// Additional methods for Process can be added here
}

View File

@ -4,8 +4,8 @@ use sha2::{Digest, Sha256};
use serde::{Deserialize, Serialize};
use super::shared_peer::SharedPeer;
use super::shared_process::SharedProcess;
use super::shared_peer::Peer;
use super::shared_process::Process;
#[derive(Debug, Serialize, Deserialize, Default, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct Pow {
@ -66,16 +66,16 @@ impl Pow {
#[derive(Debug, Serialize, Deserialize, Default, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct Message {
pub shared_peer_list: Vec<SharedPeer>,
pub shared_process_list: Vec<SharedProcess>,
pub shared_peer_list: Vec<Peer>,
pub shared_process_list: Vec<Process>,
pub faucet_sp_address: String,
pub pow: Pow, // Assuming Pow is a predefined struct
}
impl Message {
pub fn new(
shared_peer_list: Vec<SharedPeer>,
shared_process_list: Vec<SharedProcess>,
shared_peer_list: Vec<Peer>,
shared_process_list: Vec<Process>,
faucet_sp_address: String,
pow_data_hash: String,
pow_pathern: String,
@ -93,12 +93,12 @@ impl Message {
println!("Message:");
println!("Shared Peer List:");
for shared_peer in &self.shared_peer_list {
shared_peer.display_info(); // Assuming SharedPeers has a display_info method
shared_peer.display_info(); // Assuming Peers has a display_info method
}
println!("Shared Process List:");
for shared_process in &self.shared_process_list {
shared_process.display_info(); // Assuming SharedProcess has a display_info method
shared_process.display_info(); // Assuming Process has a display_info method
}
println!("Faucet SP Address: {}", self.faucet_sp_address);

View File

@ -1,4 +1,4 @@
use super::{message::Message, shared_peer::SharedPeer, shared_process::SharedProcess};
use super::{message::Message, shared_peer::Peer, shared_process::Process};
use serde::{Deserialize, Serialize};
@ -14,8 +14,8 @@ impl MessageClient {
pub fn new(
request_enc: String,
request_hash: String,
message_shared_peer_list: Vec<SharedPeer>,
message_shared_process_list: Vec<SharedProcess>,
message_shared_peer_list: Vec<Peer>,
message_shared_process_list: Vec<Process>,
message_faucet_sp_address: String,
pow_pathern: String,
pow_difficulty: usize,
@ -37,7 +37,7 @@ impl MessageClient {
}
pub fn send(&self) {
for shared_peer in &self.message.shared_peer_list {
shared_peer.send_message_client(self.clone()); // Assuming SharedPeers has a send method
shared_peer.send_message_client(self.clone()); // Assuming Peers has a send method
}
}
pub fn display_info(&self) {

View File

@ -1,6 +1,6 @@
pub mod commitment_method;
pub mod commit_method;
pub mod condition_cap;
pub mod condition_commitment;
pub mod condition_commit;
pub mod condition_deposit;
pub mod condition_orchestration;
pub mod condition_Payments;
@ -9,7 +9,7 @@ pub mod condition_publish;
pub mod deposit_method;
pub mod item;
pub mod item_artefact;
pub mod item_commitment;
pub mod item_commit;
pub mod item_deposit;
pub mod item_enum;
pub mod item_member;
@ -43,7 +43,7 @@ pub mod request_prd_response;
pub mod request_prd_update;
pub mod role;
pub mod role_artefact;
pub mod role_commitment;
pub mod role_commit;
pub mod role_deposit;
pub mod role_member;
pub mod role_Payments;

View File

@ -8,7 +8,7 @@ use serde::{Deserialize, Serialize};
use super::{
item_enum::ItemEnum, key_encryption::KeyEncryption, message_client::MessageClient,
pagination::Pagination, pcd_item_generic_enc::PcdItemGenericEnc, request::Request,
shared_peer::SharedPeer, shared_process::SharedProcess,
shared_peer::Peer, shared_process::Process,
};
#[derive(Debug, Serialize, Deserialize, Default, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]
@ -87,8 +87,8 @@ impl Pcd {
);
item_enc_list.push(item_enc);
}
ItemEnum::Commitment(item_commitment) => {
let item_enc = item_commitment.enc(
ItemEnum::commit(item_commit) => {
let item_enc = item_commit.enc(
process_public_enc_key.clone(),
member_private_enc_key.clone(),
);
@ -119,8 +119,8 @@ impl Pcd {
pub fn to_message(
&self,
process_public_enc_key: KeyEncryption,
message_shared_peer_list: Vec<SharedPeer>,
message_shared_process_list: Vec<SharedProcess>,
message_shared_peer_list: Vec<Peer>,
message_shared_process_list: Vec<Process>,
message_faucet_sp_address: String,
pow_pathern: String,
pow_difficulty: usize,

View File

@ -7,7 +7,7 @@ use serde::{Deserialize, Serialize};
use super::{
key_encryption::KeyEncryption, message_client::MessageClient, request_prd::Prd,
shared_peer::SharedPeer, shared_process::SharedProcess,
shared_peer::Peer, shared_process::Process,
};
#[derive(Debug, Serialize, Deserialize, Default, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]
@ -64,8 +64,8 @@ impl PrdConfirm {
pub fn to_message(
&self,
process_public_enc_key: KeyEncryption,
message_shared_peer_list: Vec<SharedPeer>,
message_shared_process_list: Vec<SharedProcess>,
message_shared_peer_list: Vec<Peer>,
message_shared_process_list: Vec<Process>,
message_faucet_sp_address: String,
pow_pathern: String,
pow_difficulty: usize,

View File

@ -7,7 +7,7 @@ use serde::{Deserialize, Serialize};
use super::{
key_encryption::KeyEncryption, message_client::MessageClient, request_prd::Prd,
shared_peer::SharedPeer, shared_process::SharedProcess,
shared_peer::Peer, shared_process::Process,
};
#[derive(Debug, Serialize, Deserialize, Default, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]
@ -71,8 +71,8 @@ impl PrdKeyBackup {
pub fn to_message(
&self,
process_public_enc_key: KeyEncryption,
message_shared_peer_list: Vec<SharedPeer>,
message_shared_process_list: Vec<SharedProcess>,
message_shared_peer_list: Vec<Peer>,
message_shared_process_list: Vec<Process>,
message_faucet_sp_address: String,
pow_pathern: String,
pow_difficulty: usize,

View File

@ -7,7 +7,7 @@ use serde::{Deserialize, Serialize};
use super::{
key_encryption::KeyEncryption, message_client::MessageClient, request_prd::Prd,
shared_peer::SharedPeer, shared_process::SharedProcess,
shared_peer::Peer, shared_process::Process,
};
#[derive(Debug, Serialize, Deserialize, Default, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]
@ -64,8 +64,8 @@ impl PrdKeyHello {
pub fn to_message(
&self,
process_public_enc_key: KeyEncryption,
message_shared_peer_list: Vec<SharedPeer>,
message_shared_process_list: Vec<SharedProcess>,
message_shared_peer_list: Vec<Peer>,
message_shared_process_list: Vec<Process>,
message_faucet_sp_address: String,
pow_pathern: String,
pow_difficulty: usize,

View File

@ -7,7 +7,7 @@ use serde::{Deserialize, Serialize};
use super::{
key_encryption::KeyEncryption, message_client::MessageClient, request_prd::Prd,
shared_peer::SharedPeer, shared_process::SharedProcess,
shared_peer::Peer, shared_process::Process,
};
#[derive(Debug, Serialize, Deserialize, Default, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]
@ -59,8 +59,8 @@ impl PrdList {
pub fn to_message(
&self,
process_public_enc_key: KeyEncryption,
message_shared_peer_list: Vec<SharedPeer>,
message_shared_process_list: Vec<SharedProcess>,
message_shared_peer_list: Vec<Peer>,
message_shared_process_list: Vec<Process>,
message_faucet_sp_address: String,
pow_pathern: String,
pow_difficulty: usize,

View File

@ -7,7 +7,7 @@ use serde::{Deserialize, Serialize};
use super::{
key_encryption::KeyEncryption, message_client::MessageClient, request_prd::Prd,
shared_peer::SharedPeer, shared_process::SharedProcess,
shared_peer::Peer, shared_process::Process,
};
#[derive(Debug, Serialize, Deserialize, Default, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]
@ -59,8 +59,8 @@ impl PrdMessage {
pub fn to_message(
&self,
process_public_enc_key: KeyEncryption,
message_shared_peer_list: Vec<SharedPeer>,
message_shared_process_list: Vec<SharedProcess>,
message_shared_peer_list: Vec<Peer>,
message_shared_process_list: Vec<Process>,
message_faucet_sp_address: String,
pow_pathern: String,
pow_difficulty: usize,

View File

@ -6,9 +6,9 @@ use serde::{Deserialize, Serialize};
use crate::workflows::workflow_pcd_create_and_send_all::PcdItemEncAttributeRoleConfidentialExportKey;
use super::{
commitment_method::CommitmentMethod, deposit_method::DepositMethod,
commit_method::commitMethod, deposit_method::DepositMethod,
key_encryption::KeyEncryption, message_client::MessageClient, Payments_method::PaymentsMethod,
request_prd::Prd, shared_peer::SharedPeer, shared_process::SharedProcess,
request_prd::Prd, shared_peer::Peer, shared_process::Process,
};
#[derive(Debug, Serialize, Deserialize, Default, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]
@ -18,7 +18,7 @@ pub struct PrdResponse {
pub pcd_origin_hash: Option<String>,
pub Payments_method_confidential: Option<String>,
pub deposit_method_confidential: Option<String>,
pub commitment_method_confidential: Option<String>,
pub commit_method_confidential: Option<String>,
pub certif_key_confidential: Option<String>,
pub shared_secret_key: Option<KeyEncryption>,
}
@ -52,7 +52,7 @@ impl PrdResponse {
Payments_method: Option<PaymentsMethod>,
deposit_method: Option<DepositMethod>,
commitment_method: Option<CommitmentMethod>,
commit_method: Option<commitMethod>,
certif_key: Option<String>,
) -> Self {
let mut shared_secret_key =
@ -73,9 +73,9 @@ impl PrdResponse {
None => None,
};
let commitment_method_confidential = match commitment_method {
let commit_method_confidential = match commit_method {
Some(ref _msg) => {
Some(shared_secret_key.enc(serde_json::to_value(commitment_method).unwrap()))
Some(shared_secret_key.enc(serde_json::to_value(commit_method).unwrap()))
}
None => None,
};
@ -126,7 +126,7 @@ impl PrdResponse {
pcd_origin_hash,
Payments_method_confidential,
deposit_method_confidential,
commitment_method_confidential,
commit_method_confidential,
certif_key_confidential,
shared_secret_key: Some(shared_secret_key),
}
@ -138,8 +138,8 @@ impl PrdResponse {
pub fn to_message(
&self,
process_public_enc_key: KeyEncryption,
message_shared_peer_list: Vec<SharedPeer>,
message_shared_process_list: Vec<SharedProcess>,
message_shared_peer_list: Vec<Peer>,
message_shared_process_list: Vec<Process>,
message_faucet_sp_address: String,
pow_pathern: String,
pow_difficulty: usize,
@ -165,13 +165,13 @@ impl PrdResponse {
// Fonction pour afficher ou retourner les informations
pub fn display_info(&self) -> String {
format!(
"PRD: {:?}, Sig Value: {}, PCD Origin Hash: {}, Payments Method Encrypted: {}, Deposit Method Encrypted: {}, Commitment Method Encrypted: {}, Certification Key Encrypted: {}",
"PRD: {:?}, Sig Value: {}, PCD Origin Hash: {}, Payments Method Encrypted: {}, Deposit Method Encrypted: {}, commit Method Encrypted: {}, Certification Key Encrypted: {}",
self.prd,
self.sig_value,
self.pcd_origin_hash.as_ref().unwrap(),
self.Payments_method_confidential.as_ref().unwrap(),
self.deposit_method_confidential.as_ref().unwrap(),
self.commitment_method_confidential.as_ref().unwrap(),
self.commit_method_confidential.as_ref().unwrap(),
self.certif_key_confidential.as_ref().unwrap()
)
}

View File

@ -5,7 +5,7 @@ use std::{
use super::{
key_encryption::KeyEncryption, message_client::MessageClient, request_prd::Prd,
shared_peer::SharedPeer, shared_process::SharedProcess,
shared_peer::Peer, shared_process::Process,
};
use serde::{Deserialize, Serialize};
#[derive(Debug, Serialize, Deserialize, Default, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]
@ -16,10 +16,10 @@ pub struct PrdUpdate {
pub Payments_pcd_hash_list: Vec<String>,
pub cap_pcd_hash_list: Vec<String>,
pub deposit_pcd_hash_list: Vec<String>,
pub commitment_pcd_hash_list: Vec<String>,
pub commit_pcd_hash_list: Vec<String>,
pub ask_Payments_method: String,
pub ask_deposit_method: String,
pub ask_commitment_method: String,
pub ask_commit_method: String,
}
impl PrdUpdate {
@ -45,10 +45,10 @@ impl PrdUpdate {
Payments_pcd_hash_list: Vec<String>,
cap_pcd_hash_list: Vec<String>,
deposit_pcd_hash_list: Vec<String>,
commitment_pcd_hash_list: Vec<String>,
commit_pcd_hash_list: Vec<String>,
ask_Payments_method: String,
ask_deposit_method: String,
ask_commitment_method: String,
ask_commit_method: String,
) -> Self {
let request_type = Self::TYPE.to_string();
let prd = Prd::new(
@ -75,18 +75,18 @@ impl PrdUpdate {
Payments_pcd_hash_list,
cap_pcd_hash_list,
deposit_pcd_hash_list,
commitment_pcd_hash_list,
commit_pcd_hash_list,
ask_Payments_method,
ask_deposit_method,
ask_commitment_method,
ask_commit_method,
}
}
pub fn to_message(
&self,
process_public_enc_key: KeyEncryption,
message_shared_peer_list: Vec<SharedPeer>,
message_shared_process_list: Vec<SharedProcess>,
message_shared_peer_list: Vec<Peer>,
message_shared_process_list: Vec<Process>,
message_faucet_sp_address: String,
pow_pathern: String,
pow_difficulty: usize,
@ -112,16 +112,16 @@ impl PrdUpdate {
// Fonction pour afficher ou retourner les informations
pub fn display_info(&self) -> String {
format!(
"PRD: {:?}, PCD New Version Hash: {}, Payments PCD Hash List: {:?}, Cap PCD Hash List: {:?}, Deposit PCD Hash List: {:?}, Commitment PCD Hash List: {:?}, Ask Payments Method: {}, Ask Deposit Method: {}, Ask Commitment Method: {}",
"PRD: {:?}, PCD New Version Hash: {}, Payments PCD Hash List: {:?}, Cap PCD Hash List: {:?}, Deposit PCD Hash List: {:?}, commit PCD Hash List: {:?}, Ask Payments Method: {}, Ask Deposit Method: {}, Ask commit Method: {}",
self.prd,
self.pcd_new_version_hash,
self.Payments_pcd_hash_list,
self.cap_pcd_hash_list,
self.deposit_pcd_hash_list,
self.commitment_pcd_hash_list,
self.commit_pcd_hash_list,
self.ask_Payments_method,
self.ask_deposit_method,
self.ask_commitment_method,
self.ask_commit_method,
)
}
}

View File

@ -1,7 +1,7 @@
use serde::{Deserialize, Serialize};
use super::{
condition_cap::ConditionCap, condition_commitment::ConditionCommitment,
condition_cap::ConditionCap, condition_commit::Conditioncommit,
condition_orchestration::ConditionOrchestration, condition_Payments::ConditionPayments,
condition_prd_address_set::ConditionPrdAddressSet, condition_publish::ConditionPublish,
item::Item, metadata::Amount,
@ -115,7 +115,7 @@ pub struct Role {
pub condition_publish: ConditionPublish, // Assuming ConditionPublish is a predefined struct
pub condition_cap_list: Vec<ConditionCap>, // Assuming ConditionCap is a predefined struct
pub condition_Payments_list: Vec<ConditionPayments>, // Assuming ConditionPayments is a predefined struct
pub condition_commitment_list: Vec<ConditionCommitment>, // Assuming ConditionCommitment is a predefined struct
pub condition_commit_list: Vec<Conditioncommit>, // Assuming Conditioncommit is a predefined struct
pub condition_attribute_encryption_list: Vec<String>,
pub condition_orchestration: ConditionOrchestration, // Assuming ConditionOrchestration is a predefined struct
pub role_succession: Option<String>,
@ -132,7 +132,7 @@ impl Role {
condition_publish: ConditionPublish,
condition_cap_list: Vec<ConditionCap>,
condition_Payments_list: Vec<ConditionPayments>,
condition_commitment_list: Vec<ConditionCommitment>,
condition_commit_list: Vec<Conditioncommit>,
condition_attribute_encryption_list: Vec<String>,
condition_orchestration: ConditionOrchestration,
role_succession: Option<String>,
@ -147,7 +147,7 @@ impl Role {
condition_publish,
condition_cap_list,
condition_Payments_list,
condition_commitment_list,
condition_commit_list,
condition_attribute_encryption_list,
condition_orchestration,
role_succession,
@ -179,9 +179,9 @@ impl Role {
condition.display_info(); // Assuming `ConditionPayments` has a display_info method
}
println!("ConditionCommitment List:");
for condition in &self.condition_commitment_list {
condition.display_info(); // Assuming `ConditionCommitment` has a display_info method
println!("Conditioncommit List:");
for condition in &self.condition_commit_list {
condition.display_info(); // Assuming `Conditioncommit` has a display_info method
}
println!("ConditionAttributeEncryption:");

View File

@ -3,14 +3,14 @@ use serde::{Deserialize, Serialize};
use super::role::Role;
#[derive(Debug, Serialize, Deserialize, Default, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct RoleCommitment {
pub struct Rolecommit {
pub item_name: String,
pub role: Role,
}
impl RoleCommitment {
impl Rolecommit {
pub fn new(item_name: String, role: Role) -> Self {
RoleCommitment { item_name, role }
Rolecommit { item_name, role }
}
// Fonction pour afficher ou retourner les informations

View File

@ -3,7 +3,7 @@ use serde::{Deserialize, Serialize};
use crate::workflows::workflow_pcd_create_and_send_all::PcdItemEncAttributeRoleConfidentialExportKey;
use super::{
commitment_method::CommitmentMethod, deposit_method::DepositMethod,
commit_method::commitMethod, deposit_method::DepositMethod,
key_encryption::KeyEncryption, Payments_method::PaymentsMethod,
request_prd_response::PrdResponse, role_artefact::RoleArtefact, role_member::RoleMember,
role_peer::RolePeer, role_process::RoleProcess,
@ -65,7 +65,7 @@ impl RolesGroup {
Payments_method: Option<PaymentsMethod>,
deposit_method: Option<DepositMethod>,
commitment_method: Option<CommitmentMethod>,
commit_method: Option<commitMethod>,
certif_key: Option<String>,
) -> Vec<PrdResponse> {
let mut request_prd_response_list: Vec<PrdResponse> = Vec::new();
@ -101,7 +101,7 @@ impl RolesGroup {
pcd_origin_hash.clone(),
Payments_method.clone(),
deposit_method.clone(),
commitment_method.clone(),
commit_method.clone(),
certif_key.clone(),
);
request_prd_response_list.push(prd_response);

View File

@ -163,7 +163,7 @@ impl L2Certif {
#[derive(Debug, Serialize, Deserialize, Default, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct SharedPeer {
pub struct Peer {
pub domain: String,
pub address_ip: String,
pub relay: Relay,
@ -173,7 +173,7 @@ pub struct SharedPeer {
pub l2_certif: L2Certif,
}
impl SharedPeer {
impl Peer {
pub fn new(
domain: String,
address_ip: String,
@ -183,7 +183,7 @@ impl SharedPeer {
l2_node: L2Node,
l2_certif: L2Certif,
) -> Self {
SharedPeer {
Peer {
domain,
address_ip,
relay,
@ -199,7 +199,7 @@ impl SharedPeer {
// display_info method
pub fn display_info(&self) {
println!("SharedPeer:");
println!("Peer:");
println!("Domain: {}", self.domain);
println!("IP Address: {}", self.address_ip);

View File

@ -3,19 +3,19 @@ use serde::{Deserialize, Serialize};
use super::key_encryption::KeyEncryption;
#[derive(Debug, Serialize, Deserialize, Default, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct SharedProcess {
pub struct Process {
pub hash: String,
pub key: KeyEncryption,
pub role_process_sp_address_list: Vec<String>,
}
impl SharedProcess {
impl Process {
pub fn new(
hash: String,
key: KeyEncryption,
role_process_sp_address_list: Vec<String>,
) -> Self {
SharedProcess {
Process {
hash,
key,
role_process_sp_address_list,
@ -23,7 +23,7 @@ impl SharedProcess {
}
// display_info method
pub fn display_info(&self) {
println!("SharedProcess:");
println!("Process:");
println!("Hash: {}", self.hash);
println!("Key Encryption:");
self.key.display_info(); // Assuming KeyEncryption has a display_info method

View File

@ -1,5 +1,5 @@
use crate::models::{
commitment_method::CommitmentMethod, deposit_method::DepositMethod, item_enum::ItemEnum,
commit_method::commitMethod, deposit_method::DepositMethod, item_enum::ItemEnum,
message_client::MessageClient, Payments_method::PaymentsMethod, roles_group::RolesGroup,
};
@ -8,7 +8,7 @@ use std::hash::Hash;
use crate::models::{
key_encryption::KeyEncryption, pagination::Pagination, request_pcd::Pcd,
shared_peer::SharedPeer, shared_process::SharedProcess,
shared_peer::Peer, shared_process::Process,
};
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]
@ -51,8 +51,8 @@ pub struct WorkflowPcdCreateAndSendAll {
pub roles: RolesGroup,
pub pow_pathern: String,
pub pow_difficulty: usize,
pub message_shared_peer_list: Vec<SharedPeer>,
pub message_shared_process_list: Vec<SharedProcess>,
pub message_shared_peer_list: Vec<Peer>,
pub message_shared_process_list: Vec<Process>,
pub message_faucet_sp_address: String,
pub message_public_string: Option<String>,
@ -68,7 +68,7 @@ pub struct WorkflowPcdCreateAndSendAll {
pub Payments_method: Option<PaymentsMethod>,
pub deposit_method: Option<DepositMethod>,
pub commitment_method: Option<CommitmentMethod>,
pub commit_method: Option<commitMethod>,
pub certif_key: Option<String>,
}
@ -86,8 +86,8 @@ impl WorkflowPcdCreateAndSendAll {
roles: RolesGroup,
pow_pathern: String,
pow_difficulty: usize,
message_shared_peer_list: Vec<SharedPeer>,
message_shared_process_list: Vec<SharedProcess>,
message_shared_peer_list: Vec<Peer>,
message_shared_process_list: Vec<Process>,
message_faucet_sp_address: String,
message_public_string: Option<String>,
message_confidential_string: Option<String>,
@ -102,7 +102,7 @@ impl WorkflowPcdCreateAndSendAll {
Payments_method: Option<PaymentsMethod>,
deposit_method: Option<DepositMethod>,
commitment_method: Option<CommitmentMethod>,
commit_method: Option<commitMethod>,
certif_key: Option<String>,
) -> Self {
WorkflowPcdCreateAndSendAll {
@ -134,7 +134,7 @@ impl WorkflowPcdCreateAndSendAll {
pcd_origin_hash,
Payments_method,
deposit_method,
commitment_method,
commit_method,
certif_key,
}
}
@ -202,7 +202,7 @@ impl WorkflowPcdCreateAndSendAll {
Some(pcd_message.request_hash),
self.Payments_method.clone(),
self.deposit_method.clone(),
self.commitment_method.clone(),
self.commit_method.clone(),
self.certif_key.clone(),
);