Conditions added (doc)

This commit is contained in:
NicolasCantu 2024-02-19 12:29:56 +01:00
parent 4bde880e80
commit 8c32624a2d
5 changed files with 225 additions and 200 deletions

View File

@ -146,7 +146,7 @@ Cette clé est d'abord décomposée, avant d'être partiellement distribuée. Vo
Encryption speudo code : Encryption speudo code :
``` ```
part1_spend_recover_enc=aes(SHA256(MDP, random_seed1), Part1) part1_spend_recover_enc=aes(sha256(MDP+random_seed1), part1)
image1.addExif(part1_spend_recover_enc, random_seed1, random_seed2) image1.addExif(part1_spend_recover_enc, random_seed1, random_seed2)
``` ```
@ -159,10 +159,17 @@ image1.addExif(part1_spend_recover_enc, random_seed1, random_seed2)
Encryption speudo code : Encryption speudo code :
``` ```
part2_spend_recover_enc_shars=sss(aes(SHA256(MDP, random_seed2), Part2), nMembers, 80%) part2_spend_recover_enc_shars=sss(aes(SHA256(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) de la `Part1` et du mot de passe de l'utilisateur.
Hash speudo code :
```
pre_id=sha256(part1_spend_recover_enc, MDP)
``` ```
2. Une `pre-id Part1EncHash` qui identifie l'utilisateur est générée par le hash (SHA 256) de la `Part1` et du mot de passe de l'utilisateur.
3. Création d'un `RequestPrdKeyBackup` par membre (1 shard par membre), par `RequestPrd` : 3. Création d'un `RequestPrdKeyBackup` par membre (1 shard par membre), par `RequestPrd` :
@ -200,7 +207,7 @@ Dans l'ordre on réalise donc les opérations suivantes pour chaque membres :
5. Atttente de la réception des `RequestPrdResponse` en réponse aux `RequestPrdKeyBackup` (confirmations). 5. Atttente de la réception des `RequestPrdResponse` en réponse aux `RequestPrdKeyBackup` (confirmations).
6. Recomposition de la clé pour confirmation depuis les shards reçus dans les `RequestPrdResponse`. 6. Recomposition de la clé pour confirmation depuis les shards reçus dans les `RequestPrdResponse`.
6.1. Déchiffrement par le mot de passe de `Part1Enc` depuis le cache. 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_enc_by_shared_secret` des `RequestPrdResponse` de chaque member du role `Member`du `ItemProcess`. 6.2. Déchiffrement par secret partagé de chaque shard reçu dans `id_shard_info_enc_by_shared_secret` des `RequestPrdResponse` de chaque member du `Role` `Member`du `ItemProcess`.
6.3. Recomposition de `Part2Enc` et déchiffrement par le mot de passe 6.3. Recomposition de `Part2Enc` et déchiffrement par le mot de passe
6.4. Concaténation de `Part1` et `Part2` 6.4. Concaténation de `Part1` et `Part2`
@ -213,7 +220,7 @@ Pour être `onboard` dans un process, c'est-à-dire avoir un rôle, il faut :
###### Mise à jour de la liste des membres ###### Mise à jour de la liste des membres
Pour mettre à jour la liste des membres il faut envoyer un `RequestPrdUpdate` avec une nouvelle version du `RequestPcd` de la liste des membres, contenant l'objet `ItemMember` complet aux membres du role `member`. Ce `RequestPrd` devra recevoir des membres du rôle `Member` du `ItemProcess` les `RequestPrdResponse` correspondant aux critères de validation du `ItemProcess` . Pour mettre à jour la liste des membres il faut envoyer un `RequestPrdUpdate` avec une nouvelle version du `RequestPcd` de la liste des membres, contenant l'objet `ItemMember` complet aux membres du `Role` `member`. Ce `RequestPrd` devra recevoir des membres du rôle `Member` du `ItemProcess` les `RequestPrdResponse` correspondant aux critères de validation du `ItemProcess` .
C'est à ce moment-là que l'on transmet toutes les clés privées dans l'objet `ItemMember`, en tant que `metadadata` privée (chiffrée par la clé de dépense du signet) dans un `RequestPcd` (et les `RequestPrdUpdate` correspondant). C'est à ce moment-là que l'on transmet toutes les clés privées dans l'objet `ItemMember`, en tant que `metadadata` privée (chiffrée par la clé de dépense du signet) dans un `RequestPcd` (et les `RequestPrdUpdate` correspondant).
@ -234,7 +241,7 @@ L'`ItemMember` est décrit dans la spécification [Specs-Datamodel.md](Specs-Dat
###### Mise à jour de la liste des process ###### Mise à jour de la liste des process
Pour mettre à jour la liste des `ItemProcess` il faut envoyer un `RequestPrdUpdate` avec une nouvelle version du `RequestPcd` de la liste des process, contenant l'objet `ItemProcess` complet aux membres du role `ItemProcess` . Ce `RequestPrd` devra recevoir des membres du rôle `ItemProcess` du `ItemProcess` les `RequestPrdResponse` correspondant aux critères de validation du `ItemProcess` . Pour mettre à jour la liste des `ItemProcess` il faut envoyer un `RequestPrdUpdate` avec une nouvelle version du `RequestPcd` de la liste des process, contenant l'objet `ItemProcess` complet aux membres du `Role` `ItemProcess` . Ce `RequestPrd` devra recevoir des membres du rôle `ItemProcess` du `ItemProcess` les `RequestPrdResponse` correspondant aux critères de validation du `ItemProcess` .
L'`ItemProcess` est décrit dans la spécification [Specs-Datamodel.md](Specs-Datamodel.md). L'`ItemProcess` est décrit dans la spécification [Specs-Datamodel.md](Specs-Datamodel.md).
@ -280,7 +287,7 @@ Puis depuis la liste des membres du process, pour chacun des membres :
5. Attente de la validation (`RequestPrdResponse`) du `RequestPrdUpdate`. 5. Attente de la validation (`RequestPrdResponse`) du `RequestPrdUpdate`.
6. Recomposition de la clé pour confirmation depuis les shards reçus dans les `RequestPrdResponse`. 6. Recomposition de la clé pour confirmation depuis les shards reçus dans les `RequestPrdResponse`.
6.1. Déchiffrement par le mot de passe de `Part1Enc` depuis le cache. 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_enc_by_shared_secret` des `RequestPrdResponse` de chaque member du role `Member`du `ItemProcess`. 6.2. Déchiffrement par secret partagé de chaque shard reçu dans `id_shard_info_enc_by_shared_secret` des `RequestPrdResponse` de chaque member du `Role` `Member`du `ItemProcess`.
6.3. Recomposition de `Part2Enc` et déchiffrement par le mot de passe 6.3. Recomposition de `Part2Enc` et déchiffrement par le mot de passe
6.4. Concaténation de `Part1` et `Part2` 6.4. Concaténation de `Part1` et `Part2`

View File

@ -98,15 +98,15 @@ La création d'un `RequestPcd` suit plusieurs étapes :
4. Chiffrement du `RequestPcd` avec la clé `ProcessKey` du `ItemProcess` concerné. 4. Chiffrement du `RequestPcd` avec la clé `ProcessKey` du `ItemProcess` concerné.
5. Traitements communs aux `RequestPcd` et RequestPrd 5. Traitements communs aux `RequestPcd` et RequestPrd
| `request_type` | Notification user | `transaction SP` + `RequestPrdMessage` | `RequestPcd` to send | `request_type` send to | `RequestPcd` reply waiting | `RequestPrdResponse` reply waiting | `RequestPrdConfirm` reply waiting | | `request_type` | Notification user | `transaction SP` + `RequestPrdMessage` | `RequestPcd` to send | `request_type` send to | `RequestPcd` reply waiting | `RequestPrdResponse` reply waiting | `RequestPrdConfirm` reply waiting |
|-----------------------|-----------------------------------------------------------------------------------|----------------------------------------|----------------------|---------------------------------------------------------------|----------------------------|------------------------------------|-----------------------------------| |-----------------------|-----------------------------------------------------------------------------------|----------------------------------------|----------------------|-----------------------------------------------------------------|----------------------------|------------------------------------|-----------------------------------|
| `RequestPrdList` | No | Yes | No | all the members of the `item_name` role into to `ItemProcess` | Yes | Yes | Yes | | `RequestPrdList` | No | Yes | No | all the members of the `item_name` `Role` into to `ItemProcess` | Yes | Yes | Yes |
| `RequestPrdUpdate` | waiting `sig_value` | Yes | Yes | all the members of all role into to `ItemProcess` | No | Yes | Yes | | `RequestPrdUpdate` | waiting `sig_value` | Yes | Yes | all the members of all `Role` into to `ItemProcess` | No | Yes | Yes |
| `RequestPrdMessage` | 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` | | `RequestPrdMessage` | 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` |
| `RequestPrdResponse` | waiting `sig_value` | Yes | No | See Received | No | No | Yes | | `RequestPrdResponse` | waiting `sig_value` | Yes | No | See Received | No | No | Yes |
| `RequestPrdConfirm` | (option) Waiting `code_confirm_enc_by_shared_secret` | Yes | No | See Received | No | No | No | | `RequestPrdConfirm` | (option) Waiting `code_confirm_enc_by_shared_secret` | Yes | No | See Received | No | No | No |
| `RequestPrdKeyBackup` | No | No | No | all the members of the `SharedProcess` | No | Yes | No | | `RequestPrdKeyBackup` | No | No | No | all the members of the `SharedProcess` | No | Yes | No |
| `RequestPrdKeyHello` | No | Yes | No | all the members of all role into to `ItemProcess` | Yes | Yes | Yes | | `RequestPrdKeyHello` | No | Yes | No | all the members of all `Role` into to `ItemProcess` | Yes | Yes | Yes |
### 5.2. <a name='Rception-1'></a>Réception ### 5.2. <a name='Rception-1'></a>Réception
@ -119,15 +119,15 @@ La réception d'un `RequestPcd` suit plusieurs étapes :
5. Déchiffrage des attributs privés des `Item` des `RequestPcd` avec la clé privée `KeyRecover` 5. Déchiffrage des attributs privés des `Item` des `RequestPcd` avec la clé privée `KeyRecover`
6. Mise à jour du cache pour les traitement des RequestPrd. 6. Mise à jour du cache pour les traitement des RequestPrd.
| `request_type` | Notification user | `RequestPrdConfirm` to send | `RequestPcd` to send | `RequestPrdResponse` to send | `RequestPrdResponse` reply waiting | `RequestPrdConfirm` reply waiting (from `RequestPrdResponse` send ) | | `request_type` | Notification user | `RequestPrdConfirm` to send | `RequestPcd` to send | `RequestPrdResponse` to send | `RequestPrdResponse` reply waiting | `RequestPrdConfirm` reply waiting (from `RequestPrdResponse` send ) |
|-----------------------|-----------------------------------|------------------------------|----------------------|---------------------------------------------------------------|------------------------------------|---------------------------------------------------------------------| |-----------------------|-----------------------------------|------------------------------|----------------------|-----------------------------------------------------------------|------------------------------------|---------------------------------------------------------------------|
| `RequestPrdList` | No | Yes | Yes | all the members of the `item_name` role into to `ItemProcess` | No | Yes | | `RequestPrdList` | No | Yes | Yes | all the members of the `item_name` `Role` into to `ItemProcess` | No | Yes |
| `RequestPrdUpdate` | Info | Yes | No | all the members of all role into to `ItemProcess` | Yes (other members) | Yes | | `RequestPrdUpdate` | Info | Yes | No | all the members of all `Role` into to `ItemProcess` | Yes (other members) | Yes |
| `RequestPrdMessage` | Waiting `RequestPrdMessage` reply | if no `raw_transaction_list` | No | No | No | No | | `RequestPrdMessage` | Waiting `RequestPrdMessage` reply | if no `raw_transaction_list` | No | No | No | No |
| `RequestPrdResponse` | Info | Yes | No | No | No | No | | `RequestPrdResponse` | Info | Yes | No | No | No | No |
| `RequestPrdConfirm` | Info | No | No | No | No | No | | `RequestPrdConfirm` | Info | No | No | No | No | No |
| `RequestPrdKeyBackup` | Info | No | No | reply | No | No | | `RequestPrdKeyBackup` | Info | No | No | reply | No | No |
| `RequestPrdKeyHello` | No | Yes | Yes | reply | No | Yes | | `RequestPrdKeyHello` | No | Yes | Yes | reply | No | Yes |
## 6. <a name='FonctiondesRequestPrd'></a>Fonction des RequestPrd ## 6. <a name='FonctiondesRequestPrd'></a>Fonction des RequestPrd
@ -239,7 +239,7 @@ Basé sur le `RequestPrd`. avec des additions pour spécifier les modifications
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. 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, mettre à jour la liste des membres permet d'ajouter de nouveaux utilisateurs sur un `ItemProcess` , la mise à jour de la liste des `ItemProcess` permettra de leur affecter un nouveau role. Par exemple, mettre à jour la liste des membres permet d'ajouter de nouveaux utilisateurs sur un `ItemProcess` , la mise à jour de la liste des `ItemProcess` permettra de leur affecter un nouveau `Role`.
Les `RequestPrdUpdate` signalent au réseau via l'attribut `RequestPcd_new_version_hash` les nouvelles version des RequestPcd. Les `RequestPrdUpdate` signalent au réseau via l'attribut `RequestPcd_new_version_hash` les nouvelles version des RequestPcd.
@ -330,7 +330,7 @@ Important pour les processus d'onboarding de nouveaux membres, de réinitialisat
1. Traitements des `RequestPrd` 1. Traitements des `RequestPrd`
2. Voir [Auth-Specs.md](Auth-Specs.md) 2. Voir [Auth-Specs.md](Auth-Specs.md)
1. Renvoi des shards dans le champs le `shard_enc_by_sp_shared_secret` du `RequestPrdResponse` à envoyer 1. Renvoi des shards dans le champs le `shard_enc_by_sp_shared_secret` du `RequestPrdResponse` à envoyer
2. Envoi des `RequestPcd` relatif au role de l'utilisateur dans le `ItemProcess` et des `RequestPcd` avec l`item_name` égal à "process" en cache 2. Envoi des `RequestPcd` relatif au `Role` de l'utilisateur dans le `ItemProcess` et des `RequestPcd` avec l`item_name` égal à "process" en cache
## 14. <a name='ExemplesdeCode'></a>Exemples de Code ## 14. <a name='ExemplesdeCode'></a>Exemples de Code

View File

@ -4,26 +4,37 @@
* 3. [3. Documents de référence](#Documentsderfrence) * 3. [3. Documents de référence](#Documentsderfrence)
* 4. [Rôles et Sous-Rôles](#RlesetSous-Rles) * 4. [Rôles et Sous-Rôles](#RlesetSous-Rles)
* 5. [Précisions sur les rôles](#Prcisionssurlesrles) * 5. [Précisions sur les rôles](#Prcisionssurlesrles)
* 5.1. [RolesGroup - Gestion des Rôles](#RolesGroup-GestiondesRles) * 5.1. [RolesGroup - Gestion des Rôles](#RolesGroup-GestiondesRles)
* 5.1.1. [Composition et Fonction](#CompositionetFonction) * 5.1.1. [Composition et Fonction](#CompositionetFonction)
* 5.1.2. [Cas d'utilisation](#Casdutilisation) * 5.1.2. [Cas d'utilisation](#Casdutilisation)
* 5.2. [TransactionModeDistribution et TransactionModeDirect](#TransactionModeDistributionetTransactionModeDirect) * 5.2. [TransactionModeDistribution et TransactionModeDirect](#TransactionModeDistributionetTransactionModeDirect)
* 5.3. [TransactionModeDistribution](#TransactionModeDistribution) * 5.3. [TransactionModeDistribution](#TransactionModeDistribution)
* 5.3.1. [TransactionModeDirect](#TransactionModeDirect) * 5.3.1. [TransactionModeDirect](#TransactionModeDirect)
* 5.4. [Cas d'utilisation](#Casdutilisation-1) * 5.4. [Cas d'utilisation](#Casdutilisation-1)
* 5.4.1. [Composition et Fonction](#CompositionetFonction-1) * 5.4.1. [Composition et Fonction](#CompositionetFonction-1)
* 5.4.2. [Cas d'utilisation](#Casdutilisation-1) * 5.4.2. [Cas d'utilisation](#Casdutilisation-1)
* 5.5. [Role - Définition et Gestion des Rôles Spécifiques](#Role-DfinitionetGestiondesRlesSpcifiques) * 5.5. [Role - Définition et Gestion des Rôles Spécifiques](#Role-DfinitionetGestiondesRlesSpcifiques)
* 5.5.1. [Composition et Fonction](#CompositionetFonction-1) * 5.5.1. [Composition et Fonction](#CompositionetFonction-1)
* 5.5.2. [Cas d'utilisation](#Casdutilisation-1) * 5.5.2. [Cas d'utilisation](#Casdutilisation-1)
* 6. [Gestion des Engagements et Transactions](#GestiondesEngagementsetTransactions) * 6. [Gestion des Engagements et Transactions](#GestiondesEngagementsetTransactions)
* 6.1. [RoleCommitment](#RoleCommitment) * 6.1. [RoleCommitment](#RoleCommitment)
* 6.2. [RoleDeposit et RolePayment](#RoleDepositetRolePayment) * 6.2. [RoleDeposit et RolePayment](#RoleDepositetRolePayment)
* 7. [Sécurisation des Communications](#ScurisationdesCommunications) * 7. [Sécurisation des Communications](#ScurisationdesCommunications)
* 7.1. [Composition et Utilisation](#CompositionetUtilisation) * 7.1. [Composition et Utilisation](#CompositionetUtilisation)
* 8. [Intégration et Orchestration des Processus](#IntgrationetOrchestrationdesProcessus) * 8. [Intégration et Orchestration des Processus](#IntgrationetOrchestrationdesProcessus)
* 9. [Exemples de Code](#ExemplesdeCode) * 9. [Condition RequestPrdAddressSet](#ConditionRequestPrdAddressSet)
* 10. [Todo](#Todo) * 9.1. [ Participants](#Participants)
* 9.2. [ Valeurs des signatures (`sig_value`)](#Valeursdessignaturessig_value)
* 9.3. [Minimums et maximums de valeurs "OK", "KO" et "NONE"](#MinimumsetmaximumsdevaleursOKKOetNONE)
* 9.4. [Minimums et maximums de scores](#Minimumsetmaximumsdescores)
* 10. [ConditionPublish : conditions de publication](#ConditionPublish:conditionsdepublication)
* 11. [ConditionPayment : conditions de paiement](#ConditionPayment:conditionsdepaiement)
* 12. [ConditionCommitment : conditions d'engagement](#ConditionCommitment:conditionsdengagement)
* 13. [ConditionDeposit : conditions de dépôt de garantie](#ConditionDeposit:conditionsdedptdegarantie)
* 14. [ConditionOrchestration : conditions d'orchestration des processus](#ConditionOrchestration:conditionsdorchestrationdesprocessus)
* 15. [ConditionCap : Conditions de passage d'un seuil minimum de paiements ou de déposits ou de d'engagement](#ConditionCap:Conditionsdepassagedunseuilminimumdepaiementsoudedpositsoudedengagement)
* 16. [Exemples de Code](#ExemplesdeCode)
* 17. [Todo](#Todo)
<!-- vscode-markdown-toc-config <!-- vscode-markdown-toc-config
numbering=true numbering=true
@ -31,17 +42,17 @@
/vscode-markdown-toc-config --> /vscode-markdown-toc-config -->
<!-- /vscode-markdown-toc --># `ItemProcess` et roles <!-- /vscode-markdown-toc --># `ItemProcess` et roles
## 1. <a name='Objectif'></a>Objectif ## 1. <a name='Objectif'></a>Objectif
Cette section vise à présenter en détail les Documents de Contrat Portable ( RequestPcd) et les Documents de Demande Portable ( RequestPrd), qui constituent les piliers du système 4NK. Essentiels pour sécuriser les transactions de données et gérer les identités numériques, les `RequestPcd` et `RequestPrd` assurent l'intégrité et la confidentialité au cœur d'un réseau décentralisé. Cette section vise à présenter en détail les Documents de Contrat Portable ( RequestPcd) et les Documents de Demande Portable ( RequestPrd), qui constituent les piliers du système 4NK. Essentiels pour sécuriser les transactions de données et gérer les identités numériques, les `RequestPcd` et `RequestPrd` assurent l'intégrité et la confidentialité au cœur d'un réseau décentralisé.
## 2. <a name='Porte'></a>Portée ## 2. <a name='Porte'></a>Portée
## 3. <a name='Documentsderfrence'></a>3. Documents de référence ## 3. <a name='Documentsderfrence'></a>3. Documents de référence
Voir [_Doc_references.md](_Doc_references.md). Voir [_Doc_references.md](_Doc_references.md).
## 4. <a name='RlesetSous-Rles'></a>Rôles et Sous-Rôles ## 4. <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 `ItemProcess` . Les `rôles` principaux incluent :
@ -52,109 +63,109 @@ Les rôles déterminent les permissions et les responsabilités des participants
Chaque rôle peut comporter des sous-rôles spécifiques, tels que `RolePayment`, `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 `RolePayment`, `RoleDeposit`, et `RoleCommitment`, chacun avec des responsabilités et des interactions uniques dans le cadre des processus qu'ils soutiennent.
## 5. <a name='Prcisionssurlesrles'></a>Précisions sur les rôles ## 5. <a name='Prcisionssurlesrles'></a>Précisions sur les rôles
### 5.1. <a name='RolesGroup-GestiondesRles'></a>RolesGroup - Gestion des Rôles ### 5.1. <a name='RolesGroup-GestiondesRles'></a>RolesGroup - Gestion des Rôles
La structure RolesGroup est essentielle pour définir et gérer les groupes de rôles au sein du système 4NK, permettant une organisation claire des permissions et des responsabilités. La structure RolesGroup est essentielle pour définir et gérer les groupes de rôles au sein du système 4NK, permettant une organisation claire des permissions et des responsabilités.
#### 5.1.1. <a name='CompositionetFonction'></a>Composition et Fonction #### 5.1.1. <a name='CompositionetFonction'></a>Composition et Fonction
* **role_peer**: Définit le rôle des pairs dans le réseau, responsables de la facilitation des communications et des transactions. * **role_peer**: Définit le rôle des pairs dans le réseau, responsables de la facilitation des communications et des transactions.
* **role_member**: Spécifie le rôle des membres, ou utilisateurs, qui participent activement dans les processus et les interactions. * **role_member**: Spécifie le rôle des membres, ou utilisateurs, qui participent activement dans les processus et les interactions.
* **role_process**: Représente les entités chargées de définir et de gérer les processus au sein du système. * **role_process**: Représente les entités chargées de définir et de gérer les processus au sein du système.
* **role_artefact_list**: Une liste de rôles d'artefacts, permettant la personnalisation et l'extension des fonctionnalités et des interactions au-delà des rôles standards. * **role_artefact_list**: Une liste de rôles d'artefacts, permettant la personnalisation et l'extension des fonctionnalités et des interactions au-delà des rôles standards.
#### 5.1.2. <a name='Casdutilisation'></a>Cas d'utilisation #### 5.1.2. <a name='Casdutilisation'></a>Cas d'utilisation
Cette structure permet une gestion flexible des rôles au sein du système, facilitant l'assignation de permissions spécifiques et la délimitation des responsabilités pour une sécurité et une efficacité accrues. Cette structure permet une gestion flexible des rôles au sein du système, facilitant l'assignation de permissions spécifiques et la délimitation des responsabilités pour une sécurité et une efficacité accrues.
### 5.2. <a name='TransactionModeDistributionetTransactionModeDirect'></a>TransactionModeDistribution et TransactionModeDirect ### 5.2. <a name='TransactionModeDistributionetTransactionModeDirect'></a>TransactionModeDistribution et TransactionModeDirect
Les modes de transaction, tels que TransactionModeDistribution et TransactionModeDirect, déterminent comment les demandes et les réponses sont distribuées et traitées au sein du réseau 4NK, influençant l'efficacité et la sécurité des interactions. Les modes de transaction, tels que TransactionModeDistribution et TransactionModeDirect, déterminent comment les demandes et les réponses sont distribuées et traitées au sein du réseau 4NK, influençant l'efficacité et la sécurité des interactions.
### 5.3. <a name='TransactionModeDistribution'></a>TransactionModeDistribution ### 5.3. <a name='TransactionModeDistribution'></a>TransactionModeDistribution
Permet la distribution des demandes ou des informations à plusieurs rôles ou entités, facilitant une communication large et la collaboration au sein du système. Permet la distribution des demandes ou des informations à plusieurs rôles ou entités, facilitant une communication large et la collaboration au sein du système.
#### 5.3.1. <a name='TransactionModeDirect'></a>TransactionModeDirect #### 5.3.1. <a name='TransactionModeDirect'></a>TransactionModeDirect
Concentre l'échange d'informations ou de demandes directement entre un émetteur et un destinataire spécifique, garantissant une interaction ciblée et sécurisée. Concentre l'échange d'informations ou de demandes directement entre un émetteur et un destinataire spécifique, garantissant une interaction ciblée et sécurisée.
### 5.4. <a name='Casdutilisation-1'></a>Cas d'utilisation ### 5.4. <a name='Casdutilisation-1'></a>Cas d'utilisation
Ces modes supportent divers scénarios de communication, de la diffusion large d'informations ou de mises à jour, à des échanges directs pour des opérations spécifiques, offrant ainsi une flexibilité dans la gestion des flux d'informations. Ces modes supportent divers scénarios de communication, de la diffusion large d'informations ou de mises à jour, à des échanges directs pour des opérations spécifiques, offrant ainsi une flexibilité dans la gestion des flux d'informations.
# Role - Définition et Gestion des Rôles Spécifiques # `Role` - Définition et Gestion des Rôles Spécifiques
La structure Role est fondamentale pour définir les caractéristiques et les exigences de chaque rôle au sein du système 4NK, y compris les permissions, les validations nécessaires, et les conditions spécifiques d'utilisation. La structure `Role` est fondamentale pour définir les caractéristiques et les exigences de chaque rôle au sein du système 4NK, y compris les permissions, les validations nécessaires, et les conditions spécifiques d'utilisation.
#### 5.4.1. <a name='CompositionetFonction-1'></a>Composition et Fonction #### 5.4.1. <a name='CompositionetFonction-1'></a>Composition et Fonction
* **item**: L'entité ou l'objet auquel le rôle est associé, fournissant un contexte pour les permissions et les actions. * **item**: L'entité ou l'objet auquel le rôle est associé, fournissant un contexte pour les permissions et les actions.
* **required_2fa**: Indique si une authentification à deux facteurs est requise pour ce rôle, augmentant la sécurité pour les actions critiques. * **required_2fa**: Indique si une authentification à deux facteurs est requise pour ce rôle, augmentant la sécurité pour les actions critiques.
* **validation_timeout**: Définit un délai pour la validation des actions ou des demandes associées à ce rôle, assurant la promptitude et l'efficacité des processus. * **validation_timeout**: Définit un délai pour la validation des actions ou des demandes associées à ce rôle, assurant la promptitude et l'efficacité des processus.
* **condition**: Ensemble de critères et de règles définissant comment les actions sont validées, exécutées, ou refusées selon le contexte. * **condition**: Ensemble de critères et de règles définissant comment les actions sont validées, exécutées, ou refusées selon le contexte.
#### 5.4.2. <a name='Casdutilisation-1'></a>Cas d'utilisation #### 5.4.2. <a name='Casdutilisation-1'></a>Cas d'utilisation
Cette structure permet une personnalisation détaillée des rôles au sein du système, assurant que chaque rôle est équipé des permissions et des contraintes appropriées pour sa fonction spécifique, contribuant à la sécurité et à l'ordre du système global. Cette structure permet une personnalisation détaillée des rôles au sein du système, assurant que chaque rôle est équipé des permissions et des contraintes appropriées pour sa fonction spécifique, contribuant à la sécurité et à l'ordre du système global.
### 5.5. <a name='Role-DfinitionetGestiondesRlesSpcifiques'></a>Role - Définition et Gestion des Rôles Spécifiques ### 5.5. <a name='Role-DfinitionetGestiondesRlesSpcifiques'></a>Role - Définition et Gestion des Rôles Spécifiques
La structure Role est fondamentale pour définir les caractéristiques et les exigences de chaque rôle au sein du système 4NK, y compris les permissions, les validations nécessaires, et les conditions spécifiques d'utilisation. La structure `Role` est fondamentale pour définir les caractéristiques et les exigences de chaque rôle au sein du système 4NK, y compris les permissions, les validations nécessaires, et les conditions spécifiques d'utilisation.
#### 5.5.1. <a name='CompositionetFonction-1'></a>Composition et Fonction #### 5.5.1. <a name='CompositionetFonction-1'></a>Composition et Fonction
* **item**: L'entité ou l'objet auquel le rôle est associé, fournissant un contexte pour les permissions et les actions. * **item**: L'entité ou l'objet auquel le rôle est associé, fournissant un contexte pour les permissions et les actions.
* **required_2fa**: Indique si une authentification à deux facteurs est requise pour ce rôle, augmentant la sécurité pour les actions critiques. * **required_2fa**: Indique si une authentification à deux facteurs est requise pour ce rôle, augmentant la sécurité pour les actions critiques.
* **validation_timeout**: Définit un délai pour la validation des actions ou des demandes associées à ce rôle, assurant la promptitude et l'efficacité des processus. * **validation_timeout**: Définit un délai pour la validation des actions ou des demandes associées à ce rôle, assurant la promptitude et l'efficacité des processus.
* **condition**: Ensemble de critères et de règles définissant comment les actions sont validées, exécutées, ou refusées selon le contexte. * **condition**: Ensemble de critères et de règles définissant comment les actions sont validées, exécutées, ou refusées selon le contexte.
#### 5.5.2. <a name='Casdutilisation-1'></a>Cas d'utilisation #### 5.5.2. <a name='Casdutilisation-1'></a>Cas d'utilisation
Cette structure permet une personnalisation détaillée des rôles au sein du système, assurant que chaque rôle est équipé des permissions et des contraintes appropriées pour sa fonction spécifique, contribuant à la sécurité et à l'ordre du système global. Cette structure permet une personnalisation détaillée des rôles au sein du système, assurant que chaque rôle est équipé des permissions et des contraintes appropriées pour sa fonction spécifique, contribuant à la sécurité et à l'ordre du système global.
## 6. <a name='GestiondesEngagementsetTransactions'></a>Gestion des Engagements et Transactions ## 6. <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 RolePayment, 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 RoleCommitment, RoleDeposit, et RolePayment, jouent un rôle crucial dans la formalisation des transactions et des obligations entre les parties.
### 6.1. <a name='RoleCommitment'></a>RoleCommitment ### 6.1. <a name='RoleCommitment'></a>RoleCommitment
* **item_name**: Identifie l'engagement spécifique ou l'obligation prise par une partie. * **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. * **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.
### 6.2. <a name='RoleDepositetRolePayment'></a>RoleDeposit et RolePayment ### 6.2. <a name='RoleDepositetRolePayment'></a>RoleDeposit et RolePayment
Ces structures gèrent respectivement les dépôts de garantie et les paiements, en spécifiant les conditions sous lesquelles les fonds sont déposés, retenus ou transférés, contribuant ainsi à la confiance et à la fluidité des transactions au sein du réseau. Ces structures gèrent respectivement les dépôts de garantie et les paiements, en spécifiant les conditions sous lesquelles les fonds sont déposés, retenus ou transférés, contribuant ainsi à la confiance et à la fluidité des transactions au sein du réseau.
## 7. <a name='ScurisationdesCommunications'></a>Sécurisation des Communications ## 7. <a name='ScurisationdesCommunications'></a>Sécurisation des Communications
La structure MetaData et ses sous-structures comme MetadataContractPublic, MetadataRoleConfidential, et MetadataPrivate fournissent un cadre pour sécuriser les communications et les données au sein du système 4NK, permettant une distinction claire entre les informations accessibles publiquement, celles réservées à certains rôles, et celles strictement privées. La structure MetaData et ses sous-structures comme MetadataContractPublic, MetadataRoleConfidential, et MetadataPrivate fournissent un cadre pour sécuriser les communications et les données au sein du système 4NK, permettant une distinction claire entre les informations accessibles publiquement, celles réservées à certains rôles, et celles strictement privées.
### 7.1. <a name='CompositionetUtilisation'></a>Composition et Utilisation ### 7.1. <a name='CompositionetUtilisation'></a>Composition et Utilisation
* **meta_data**: Chaque instance de MetaData encapsule des informations détaillées, des attributs et des clés de chiffrement liés à un item, facilitant la gestion sécurisée et la distribution ciblée des données. * **meta_data**: Chaque instance de MetaData encapsule des informations détaillées, des attributs et des clés de chiffrement liés à un item, facilitant la gestion sécurisée et la distribution ciblée des données.
* **key_list**: Un élément crucial pour le chiffrement et la sécurisation des données, assurant que seules les parties autorisées peuvent accéder aux informations confidentielles. * **key_list**: Un élément crucial pour le chiffrement et la sécurisation des données, assurant que seules les parties autorisées peuvent accéder aux informations confidentielles.
## 8. <a name='IntgrationetOrchestrationdesProcessus'></a>Intégration et Orchestration des Processus ## 8. <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'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.
## Condition RequestPrdAddressSet ## 9. <a name='ConditionRequestPrdAddressSet'></a>Condition RequestPrdAddressSet
A l'issue d'un délai `validation_timeout` par `Role` et par * `request_prd_type`, les `RequestPrdRequest` sont collectés afin de vérifier les conditions de validation par roles sont définies en fonction des critères suivants :
Les membres concernés sont identifiés par leurs `adresse SP`. Les membres concernés sont identifiés par leurs `adresse SP`.
`request_prd_type` ### 9.1. <a name='Participants'></a> Participants
### Participants
* `request_prd_sp_address_list`: Liste des `adresse SP` (cumulatif avec `from_role`) * `request_prd_sp_address_list`: Liste des `adresse SP` (cumulatif avec `from_role`)
* `request_prd_sp_address_required_list`: Liste des `adresse SP` requises (toutes valeurs confondues) * `request_prd_sp_address_required_list`: Liste des `adresse SP` requises (toutes valeurs confondues)
* `request_prd_sp_address_quota`: Quota minmum de `adresse SP` participantes (toutes valeurs confondues) * `request_prd_sp_address_quota`: Quota minmum de `adresse SP` participantes (toutes valeurs confondues)
* `request_prd_sp_address_score_min`: Score minimal des membres participants (toutes valeurs confondues) * `request_prd_sp_address_score_min`: Score minimal des membres participants (toutes valeurs confondues)
### Valeurs des signatures (`sig_value`) ### 9.2. <a name='Valeursdessignaturessig_value'></a> Valeurs des signatures (`sig_value`)
* (option)`request_prd_value_ok_list`: Liste des valeurs valant pour "OK" * (option)`request_prd_value_ok_list`: Liste des valeurs valant pour "OK"
* (option)`request_prd_value_ko_list`: Liste des valeurs valant pour "KO" * (option)`request_prd_value_ko_list`: Liste des valeurs valant pour "KO"
@ -163,74 +174,76 @@ Les membres concernés sont identifiés par leurs `adresse SP`.
* (option)`request_prd_value_auto_ko`: Valeur automatique valant pour "KO" * (option)`request_prd_value_auto_ko`: Valeur automatique valant pour "KO"
* (option)`request_prd_value_auto_none`: Valeur automatique valant pour "NONE" * (option)`request_prd_value_auto_none`: Valeur automatique valant pour "NONE"
### Minimums et maximums de valeurs "OK", "KO" et "NONE" ### 9.3. <a name='MinimumsetmaximumsdevaleursOKKOetNONE'></a>Minimums et maximums de valeurs "OK", "KO" et "NONE"
* (option)`request_prd_sp_address_value_min_per`: Pourcentage minimal de valeurs valant pour "OK"
* (option)`request_prd_sp_address_value_min_ok`: Nombre minimal de valeurs valant pour "OK" * (option)`request_prd_sp_address_value_min_ok`: Nombre minimal de valeurs valant pour "OK"
*
* (option)`request_prd_sp_adddress_value_ok_min_per`: Pourcentage minimal de valeurs valant pour "OK" * (option)`request_prd_sp_adddress_value_ok_min_per`: Pourcentage minimal de valeurs valant pour "OK"
* (option)`request_prd_sp_address_value_ok_max`: Nombre maximal de valeurs valant pour "OK" * (option)`request_prd_sp_address_value_ok_max`: Nombre maximal de valeurs valant pour "OK"
*
* (option)`request_prd_sp_adderss_value_ko_max_per`: Pourcentage maximal de valeurs valant pour "KO" * (option)`request_prd_sp_adderss_value_ko_max_per`: Pourcentage maximal de valeurs valant pour "KO"
* (option)`request_prd_sp_address_value_ko_max`: Nombre maximal de valeurs valant pour "OK" * (option)`request_prd_sp_address_value_ko_max`: Nombre maximal de valeurs valant pour "OK"
*
* (option)`request_prd_sp_address_value_none_max`: Nombre maximal de valeurs valant pour "NONE" * (option)`request_prd_sp_address_value_none_max`: Nombre maximal de valeurs valant pour "NONE"
* (option)`request_prd_sp_adderss_value_none_max_per`: Pourcentage maximal de valeurs valant pour "NONE" * (option)`request_prd_sp_adderss_value_none_max_per`: Pourcentage maximal de valeurs valant pour "NONE"
### Minimums et maximums de scores ### 9.4. <a name='Minimumsetmaximumsdescores'></a>Minimums et maximums de scores
* (option)`request_prd_sp_address_score_min_min_ok`: Nombre de membres avec un score minimum et une valeur valant pour "OK" * (option)`request_prd_sp_address_score_min_min_ok`: Nombre de membres avec un score minimum et une valeur valant pour "OK"
* (option)`request_prd_sp_address_score_min_min_per`:: Pourcentage de membres avec un score minimum et une valeur valant pour "OK" * (option)`request_prd_sp_address_score_min_min_per`:: Pourcentage de membres avec un score minimum et une valeur valant pour "OK"
* (option)`request_prd_sp_address_value_min`: Valeur minimal valant pour "OK" (cas de nombres) * (option)`request_prd_sp_address_value_min`: Valeur minimal valant pour "OK" (cas de nombres)
* (option) `from_role` : `address SP` de se `Role` (pour éviter de dupliquer les `addresse SP`) * (option) `from_role` : `address SP` de ce `Role` (pour éviter de dupliquer les `addresse SP`)
## ConditionPublish : conditions de publication ## 10. <a name='ConditionPublish:conditionsdepublication'></a>ConditionPublish : conditions de publication
* `request_prd_type` * (option)`request_pcd_data_size_max_unit`: Taille maximale des données de chaque `RequestPcd` en Mo
* `request_pcd_data_size_max_unit` * (option)`request_pcd_data_size_max_total`: Taille maximale des données des `RequestPcd` en Mo
* `request_pcd_data_size_max_total` * (option)`request_pcd_number_min`: Nombre minimum de publication de `RequestPcd`
* `request_pcd_number_min` * (option)`request_pcd_number_max`: Nombre maximum de publication de `RequestPcd`
* `request_pcd_number_max` * (option)`request_pcd_amount_max_total`: Montant maximum des montants dans les items des `RequestPcd`
* `request_pcd_amount_max_total` * (option)`request_prd_waiting_timeout`: Délai d'attente pour la réception des `RequestPrd`
* `Amount` * (option)`request_pcd_waiting_timeout`: Délai d'attente pour la réception des `RequestPcd`
* `request_prd_waiting_timeout`
* `request_pcd_waiting_timeout`
## ConditionPayment : conditions de paiement
* `request_prd_type` ## 14. <a name='ConditionOrchestration:conditionsdorchestrationdesprocessus'></a>ConditionOrchestration : conditions d'orchestration des processus
* `payment_amount`
* `payment_method`
* `role_transaction`
## ConditionCommitment : conditions d'engagement * (option) `role_ok`: `Role` à vérifier en cas de résulats final "OK"
* (option) `role_ko`: `Role` à vérifier en cas de résulats final "KO"
* `request_prd_type` ## 11. <a name='ConditionPayment:conditionsdepaiement'></a>ConditionPayment : conditions de paiement
* `role_artefact`
* `role_transaction`
## ConditionDeposit : conditions de dépôt de garantie * (option) `payment_method_list`: Liste des modes de paiement acceptés
* (option) `role_transaction` : voir `TransactionMode`
* `request_prd_type` ## 12. <a name='ConditionCommitment:conditionsdengagement'></a>ConditionCommitment : conditions d'engagement
* `role_deposit`
* `role_transaction`
## ConditionOrchestration : conditions d'orchestration des processus * (option) `role_artefact`
* (option) `role_transaction` : voir `TransactionMode`
* `request_prd_type` ## 13. <a name='ConditionDeposit:conditionsdedptdegarantie'></a>ConditionDeposit : conditions de dépôt de garantie
* `role_ok`
* `role_ko`
## ConditionCap : Conditions de passage d'un seuil minimum de paiements ou de déposits ou de d'engagement * (option) `role_deposit`
* (option) `role_transaction` : voir `TransactionMode`
* `request_prd_type` ## 15. <a name='ConditionCap:Conditionsdepassagedunseuilminimumdepaiementsoudedpositsoudedengagement'></a>ConditionCap : Conditions de passage d'un seuil minimum de paiements ou de déposits ou de d'engagement
* `role_deposit`
* `role_transaction`
## 9. <a name='ExemplesdeCode'></a>Exemples de Code * (option) `role_deposit`
* (option) `role_transaction` : voir `TransactionMode`
## 10. <a name='Todo'></a>Todo ## TransactionMode
* `value`: Montant du paiement (objet `Amount` ou `Number`)
* `from_list` : Liste des adresses ou des rôles qui doivent opérer le paiement
* `from_type` : Soit "addresses" soit "roles"
* `from_method` : Méthode de distribution de la somme des prélèvements : "Amount divided" ou "Same Amount"
* `to_list` : Liste des adresses ou des rôles qui doivent recevoir le Versement
* `to_type` : Soit "addresses" soit "roles"
* `to_method` : Méthode de distribution de la somme des versements : "Amount divided" ou "Same Amount"
## 16. <a name='ExemplesdeCode'></a>Exemples de Code
## 17. <a name='Todo'></a>Todo
* [ ] Extraits de code illustrant l'utilisation des `RequestPcd` et `RequestPrd` dans des scénarios réels. * [ ] Extraits de code illustrant l'utilisation des `RequestPcd` et `RequestPrd` dans des scénarios réels.
* [ ] Diagrammes de séquences * [ ] Diagrammes de séquences

View File

@ -56,7 +56,7 @@ Une fois le `RequestPrd` finalisé, une transaction SP est réalisée, dans cett
1.10. Le hash d'un `Amount`de dépôt (le cas échéant) 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) 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 `RequestPrd` 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é à l'`item_name` du `RequestPrd` peut définir (option) un salt pour la génération des hashs dans l'attribut `sp_output_salt_enc`.
## 6. <a name='EnvoidelatransactionSP'></a>Envoi de la transaction SP ## 6. <a name='EnvoidelatransactionSP'></a>Envoi de la transaction SP
@ -68,7 +68,7 @@ Afin d'améliorer la rélisience du broadcast des transactions, la transaction e
### 6.1. <a name='DansunRequestPrdMessage'></a>Dans un `RequestPrdMessage` ### 6.1. <a name='DansunRequestPrdMessage'></a>Dans un `RequestPrdMessage`
Dans l'attribut `raw_transaction_list` du `RequestPrdMessage` associé à la transaction SP. Dans l'attribut `raw_transaction_list` du `RequestPrdMessage` 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 `ItemProcess` concerné qui a reçu ce message, il devra alors avoir un noeud de signet pour le broadcast.
### 6.2. <a name='DansunMessageduRequestPrdMessage'></a>Dans un `Message` du `RequestPrdMessage` ### 6.2. <a name='DansunMessageduRequestPrdMessage'></a>Dans un `Message` du `RequestPrdMessage`

View File

@ -67,13 +67,14 @@
* 11. [Roles](#Roles) * 11. [Roles](#Roles)
* 11.1. [Role](#Role) * 11.1. [Role](#Role)
* 11.2. [Conditions](#Conditions) * 11.2. [Conditions](#Conditions)
* 11.2.1. [ConditionCap](#ConditionCap) * 11.2.1. [TransactionMode](#TransactionMode)
* 11.2.2. [ConditionCommitment](#ConditionCommitment) * 11.2.2. [ConditionPayment](#ConditionPayment)
* 11.2.3. [ConditionDeposit](#ConditionDeposit) * 11.2.3. [ConditionCommitment](#ConditionCommitment)
* 11.2.4. [ConditionOrchestration](#ConditionOrchestration) * 11.2.4. [ConditionDeposit](#ConditionDeposit)
* 11.2.5. [ConditionPayment](#ConditionPayment) * 11.2.5. [ConditionOrchestration](#ConditionOrchestration)
* 11.2.6. [Condition RequestPrdAddressSet](#ConditionRequestPrdAddressSet) * 11.2.6. [ConditionCap](#ConditionCap)
* 11.2.7. [ConditionPublish](#ConditionPublish) * 11.2.7. [Condition RequestPrdAddressSet](#ConditionRequestPrdAddressSet)
* 11.2.8. [ConditionPublish](#ConditionPublish)
* 11.3. [RolesGroup](#RolesGroup) * 11.3. [RolesGroup](#RolesGroup)
* 11.3.1. [RoleArtefact](#RoleArtefact) * 11.3.1. [RoleArtefact](#RoleArtefact)
* 11.3.2. [RoleDeposit](#RoleDeposit) * 11.3.2. [RoleDeposit](#RoleDeposit)
@ -82,7 +83,6 @@
* 11.4. [RolePeer](#RolePeer) * 11.4. [RolePeer](#RolePeer)
* 11.4.1. [RolePayment](#RolePayment) * 11.4.1. [RolePayment](#RolePayment)
* 11.4.2. [RoleProcess](#RoleProcess) * 11.4.2. [RoleProcess](#RoleProcess)
* 11.5. [TransactionMode](#TransactionMode)
* 12. [12. Rust considerations](#Rustconsiderations) * 12. [12. Rust considerations](#Rustconsiderations)
* 12.1. [General Implications for Project Objects](#GeneralImplicationsforProjectObjects) * 12.1. [General Implications for Project Objects](#GeneralImplicationsforProjectObjects)
* 12.2. [Debug](#Debug) * 12.2. [Debug](#Debug)
@ -785,76 +785,95 @@ The `Roles` enum defines the various roles within the system, specifying respons
### 11.1. <a name='Role'></a>Role ### 11.1. <a name='Role'></a>Role
The `Role` struct broadly defines a role within the system, encapsulating the general responsibilities, required security measures like two-factor authentication, validation timeouts, and conditions for action validation. This serves as a foundation for more specific role definitions, ensuring a flexible yet secure role-based access and action framework. The `Role` struct broadly defines a role within the system, encapsulating the general responsibilities, required security measures like two-factor authentication, validation timeouts, and conditions for action validation. This serves as a foundation for more specific role definitions, ensuring a flexible yet secure role-based access and action framework.
|--------------------------------------|-------------------------------|--------|------------------------------------------------------------------|
| `item` | ```Item``` | | The item associated with the role. | | Attribute Name | Type | Option | Description |
| `sp_output_salt_enc` | ```string``` | | he salt encrypted for the hash in the sp outputs. | |---------------------------------------|-----------------------------------|--------|--------------------------------------------------------|
| `required_2fa` | ```bool``` | | Indicates if two-factor authentication is required. | | `item` | ```Item``` | | The item associated with the role. |
| `validation_timeout` | ```u64``` | Yes | The timeout for validation in seconds. | | `sp_output_salt_enc` | ```string``` | | he salt encrypted for the hash in the sp outputs. |
| `condition_prd_address_set_list` | ```Vec<ConditionPrdAddressSet>``` | | A list of product address set conditions. | | `required_2fa` | ```bool``` | | Indicates if two-factor authentication is required. |
| `condition_publish` | ```Vec<ConditionPublish>``` | Yes | The condition for publishing. | | `validation_timeout` | ```u64``` | Yes | The timeout for validation in seconds. |
| `condition_cap_list` | ```Vec<ConditionCap>``` | Yes | A list of capability conditions. | | `condition_prd_address_set_list` | ```Vec<ConditionPrdAddressSet>``` | | A list of product address set conditions. |
| `condition_payment_list` | ```Vec<ConditionPayment>``` | Yes | A list of payment conditions. | | `condition_publish` | ```Vec<ConditionPublish>``` | Yes | The condition for publishing. |
| `condition_commitment_list` | ```Vec<ConditionCommitment>``` | Yes | A list of commitment conditions. | | `condition_cap_list` | ```Vec<ConditionCap>``` | Yes | A list of capability conditions. |
| `condition_attribute_encryption_list`| ```Vec<String>``` | | A list of attribute encryption conditions. | | `condition_payment_list` | ```Vec<ConditionPayment>``` | Yes | A list of payment conditions. |
| `condition_orchestration` | ```Vec<ConditionOrchestration>``` | Yes | The condition for orchestration. | | `condition_commitment_list` | ```Vec<ConditionCommitment>``` | Yes | A list of commitment conditions. |
| `role_succession` | ```String``` | Yes | Optional role for succession. | | `condition_attribute_encryption_list` | ```Vec<String>``` | | A list of attribute encryption conditions. |
| `role_resolve` | ```String``` | Yes | Optional role for resolving conflicts. | | `condition_orchestration` | ```Vec<ConditionOrchestration>``` | Yes | The condition for orchestration. |
| `role_renew` | ```String``` | Yes | Optional role for renewing conditions or capabilities. | | `role_succession` | ```String``` | Yes | Optional role for succession. |
| `role_resolve` | ```String``` | Yes | Optional role for resolving conflicts. |
| `role_renew` | ```String``` | Yes | Optional role for renewing conditions or capabilities. |
### 11.2. <a name='Conditions'></a>Conditions ### 11.2. <a name='Conditions'></a>Conditions
#### 11.2.1. <a name='ConditionCap'></a>ConditionCap #### 11.2.1. <a name='TransactionMode'></a>TransactionMode
The `ConditionCap` struct represents a condition related to a deposit role and its associated transaction mode, indicating the requirements for transactions within this context. `TransactionMode` and its specific types (Distribution, Direct) describe how transactions are handled within the system, whether through direct communication or distributed across multiple entities, influencing the flow and security of transactions.
| Attribute Name | Type | Option | Description | | Attribute Name | Type | Option | Description |
|--------------------|-----------------------|--------|-----------------------------------------------------------| |------------------|------------------------|--------|------------------------------------------------------------------------------------------|
| `request_prd_type` | ```String``` | | Type of prd request concerned by this conditions | | `value` | ```Amount or Number``` | | Valeurs échangées |
| `role_deposit` | ```String``` | | Represents the deposit role in the condition. | | `hash_ok_list` | ```Vec<String>``` | Yes | Commitments de hash valant pour un résultat "OK" |
| `role_transaction` | ```TransactionMode``` | | Specifies the transaction mode associated with this role. | | `hash_ko_list` | ```Vec<String>``` | Yes | Commitments de hash valant pour un résultat "KO" |
| `hash_none_list` | ```Vec<String>``` | Yes | Commitments de hash valant pour un résultat "None" |
| `from_list` | ```Vec<String>``` | | Adresse silent payment ou role qui doit opérer le paiement |
| `from_type` | ```String``` | | Soit "addresses" soit "roles" |
| `from_method` | ```String``` | | Méthode de distribution de la somme des prélèvements : "Amount divided" ou "Same Amount" |
| `to_list` | ```Vec<String>``` | | Adresse silent payment ou role qui doit recevoir le Versement |
| `to_type` | ```String``` | | Soit "addresses" soit "roles" |
| `to_method` | ```String``` | | Méthode de distribution de la somme des versements : "Amount divided" ou "Same Amount" |
#### 11.2.2. <a name='ConditionCommitment'></a>ConditionCommitment #### 11.2.2. <a name='ConditionPayment'></a>ConditionPayment
The `ConditionCommitment` struct specifies a condition involving an artefact role and transaction mode, defining how commitments are handled and verified.
| Attribute Name | Type | Option | Description |
|--------------------|-----------------------|--------|-----------------------------------------------------------|
| `request_prd_type` | ```String``` | | Type of prd request concerned by this conditions |
| `role_artefact` | ```String``` | | Represents the artefact role in the condition. |
| `role_transaction` | ```TransactionMode``` | | Specifies the transaction mode associated with this role. |
#### 11.2.3. <a name='ConditionDeposit'></a>ConditionDeposit
`ConditionDeposit` is similar to ConditionCap but specifically focuses on deposit-related transactions, establishing the criteria for deposit actions.
| Attribute Name | Type | Option | Description |
|--------------------|-----------------------|--------|-----------------------------------------------------------|
| `request_prd_type` | ```String``` | | Type of prd request concerned by this conditions |
| `role_deposit` | ```String``` | | Represents the deposit role in the condition. |
| `role_transaction` | ```TransactionMode``` | | Specifies the transaction mode associated with this role. |
#### 11.2.4. <a name='ConditionOrchestration'></a>ConditionOrchestration
`ConditionOrchestration` defines success and failure roles for orchestration conditions, guiding the flow of processes based on outcomes.
| Attribute Name | Type | Option | Description |
|--------------------|--------------|--------|----------------------------------------------------------|
| `request_prd_type` | ```String``` | | Type of prd request concerned by this conditions |
| `role_ok` | ```String``` | | Represents the successful outcome role in the condition. |
| `role_ko` | ```String``` | | Represents the failed outcome role in the condition. |
#### 11.2.5. <a name='ConditionPayment'></a>ConditionPayment
This struct outlines the conditions for payments, including the amount, payment method, and transaction mode, setting the parameters for financial transactions. This struct outlines the conditions for payments, including the amount, payment method, and transaction mode, setting the parameters for financial transactions.
| Attribute Name | Type | Option | Description | | Attribute Name | Type | Option | Description |
|--------------------|-----------------------|--------|-----------------------------------------------------------| |----------------------------|----------------------------|--------|--------------------------------------------------------------------------------------------------|
| `request_prd_type` | ```String``` | | Type of prd request concerned by this conditions | | `request_prd_type` | ```String``` | | Type of prd request concerned by this conditions |
| `payment_amount` | ```String``` | | Represents the amount to be paid in the condition. | | `transaction_mode` | ```TransactionMode``` | | Specifies the transaction mode associated with this role. |
| `payment_method` | ```PaymentMode``` | | Specifies the payment method to be used. | | `payment_proof_validation` | ```RequestPrdAddressSet``` | | Validation conditions + {sp_address_sender} and {sp_address_receiver} placehoders for Address SP |
| `role_transaction` | ```TransactionMode``` | | Specifies the transaction mode associated with this role. |
#### 11.2.6. <a name='ConditionRequestPrdAddressSet'></a>Condition RequestPrdAddressSet #### 11.2.3. <a name='ConditionCommitment'></a>ConditionCommitment
The `ConditionCommitment` struct specifies a condition involving an artefact role and transaction mode, defining how commitments are handled and verified.
| Attribute Name | Type | Option | Description |
|----------------------------|----------------------------|--------|--------------------------------------------------------------------------------------------------|
| `request_prd_type` | ```String``` | | Type of prd request concerned by this conditions |
| `transaction_mode` | ```TransactionMode``` | | Specifies the transaction mode associated with this role. |
| `payment_proof_validation` | ```RequestPrdAddressSet``` | | Validation conditions + {sp_address_sender} and {sp_address_receiver} placehoders for Address SP |
#### 11.2.4. <a name='ConditionDeposit'></a>ConditionDeposit
`ConditionDeposit` is similar to ConditionCap but specifically focuses on deposit-related transactions, establishing the criteria for deposit actions.
| Attribute Name | Type | Option | Description |
|----------------------------|----------------------------|--------|--------------------------------------------------------------------------------------------------|
| `request_prd_type` | ```String``` | | Type of prd request concerned by this conditions |
| `transaction_mode` | ```TransactionMode``` | | Specifies the transaction mode associated with this role. |
| `payment_proof_validation` | ```RequestPrdAddressSet``` | | Validation conditions + {sp_address_sender} and {sp_address_receiver} placehoders for Address SP |
#### 11.2.5. <a name='ConditionOrchestration'></a>ConditionOrchestration
`ConditionOrchestration` defines success and failure roles for orchestration conditions, guiding the flow of processes based on outcomes.
| Attribute Name | Type | Option | Description |
|----------------------------|----------------------------|--------|--------------------------------------------------------------------------------------------------|
| `request_prd_type` | ```String``` | | Type of prd request concerned by this conditions |
| `role_ok` | ```String``` | | Represents the successful outcome role in the condition. |
| `role_ko` | ```String``` | | Represents the failed outcome role in the condition. |
| `payment_proof_validation` | ```RequestPrdAddressSet``` | | Validation conditions + {sp_address_sender} and {sp_address_receiver} placehoders for Address SP |
#### 11.2.6. <a name='ConditionCap'></a>ConditionCap
The `ConditionCap` struct represents a condition related to a deposit role and its associated transaction mode, indicating the requirements for transactions within this context.
| Attribute Name | Type | Option | Description |
|----------------------------|----------------------------|--------|--------------------------------------------------------------------------------------------------|
| `request_prd_type` | ```String``` | | Type of prd request concerned by this conditions |
| `transaction_mode` | ```TransactionMode``` | | Specifies the transaction mode associated with this role. |
| `payment_proof_validation` | ```RequestPrdAddressSet``` | | Validation conditions + {sp_address_sender} and {sp_address_receiver} placehoders for Address SP |
#### 11.2.7. <a name='ConditionRequestPrdAddressSet'></a>Condition RequestPrdAddressSet
Condition `request_prdAddressSet` involves complex conditions based on RequestPrd addresses, including quotas, values, and scores, to determine condition fulfillment. Condition `request_prdAddressSet` involves complex conditions based on RequestPrd addresses, including quotas, values, and scores, to determine condition fulfillment.
@ -872,7 +891,6 @@ Condition `request_prdAddressSet` involves complex conditions based on RequestPr
| `request_prd_value_auto_ko` | ```boolean``` | | Automatically consider values as KO. | | `request_prd_value_auto_ko` | ```boolean``` | | Automatically consider values as KO. |
| `request_prd_value_auto_none` | ```boolean``` | | Automatically consider values as neutral or no-op. | | `request_prd_value_auto_none` | ```boolean``` | | Automatically consider values as neutral or no-op. |
| `request_prd_sp_address_value_min` | ```i64``` | Yes | The minimum value for an address to be considered. | | `request_prd_sp_address_value_min` | ```i64``` | Yes | The minimum value for an address to be considered. |
| `request_prd_sp_address_value_min_per` | ```i64``` | Yes | The minimum percentage for the minimum address value. |
| `request_prd_sp_address_value_min_ok` | ```boolean``` | Yes | Indicates if the minimum address value is considered OK. | | `request_prd_sp_address_value_min_ok` | ```boolean``` | Yes | Indicates if the minimum address value is considered OK. |
| `request_prd_sp_adddress_value_ok_min_per` | ```i64``` | Yes | The minimum percentage for an address value to be OK. | | `request_prd_sp_adddress_value_ok_min_per` | ```i64``` | Yes | The minimum percentage for an address value to be OK. |
| `request_prd_sp_address_value_ok_max` | ```i64``` | Yes | The maximum value for an address to be considered OK. | | `request_prd_sp_address_value_ok_max` | ```i64``` | Yes | The maximum value for an address to be considered OK. |
@ -885,7 +903,7 @@ Condition `request_prdAddressSet` involves complex conditions based on RequestPr
| `request_prd_sp_address_score_min_min_ok` | ```boolean``` | Yes | Indicates if the minimum score is considered OK. | | `request_prd_sp_address_score_min_min_ok` | ```boolean``` | Yes | Indicates if the minimum score is considered OK. |
| `request_prd_sp_address_score_min_min_per` | ```i64``` | Yes | The minimum percentage for the minimum score. | | `request_prd_sp_address_score_min_min_per` | ```i64``` | Yes | The minimum percentage for the minimum score. |
#### 11.2.7. <a name='ConditionPublish'></a>ConditionPublish #### 11.2.8. <a name='ConditionPublish'></a>ConditionPublish
`ConditionPublish` sets the criteria for publishing actions, including data size limits, publication counts, and timeouts, to regulate content distribution. `ConditionPublish` sets the criteria for publishing actions, including data size limits, publication counts, and timeouts, to regulate content distribution.
@ -974,19 +992,6 @@ The `RolePayment` struct is dedicated to defining the role related to payments,
| `item_name` | ```String``` | | The name of the item associated with the process. | | `item_name` | ```String``` | | The name of the item associated with the process. |
| `role` | ```Role``` | | The role associated with this process. | | `role` | ```Role``` | | The role associated with this process. |
### 11.5. <a name='TransactionMode'></a>TransactionMode
`TransactionMode` and its specific types (Distribution, Direct) describe how transactions are handled within the system, whether through direct communication or distributed across multiple entities, influencing the flow and security of transactions.
| Attribute Name | Type | Option | Description |
|----------------|-------------------|--------|------------------------------------------------------------------------------------------|
| `from_list` | ```Vec<String>``` | | Adresse silent payment ou role qui doit opérer le paiement |
| `from_type` | ```String``` | | Soit "addresses" soit "roles" |
| `from_method` | ```String``` | | Méthode de distribution de la somme des prélèvements : "Amount divided" ou "Same Amount" |
| `to_list` | ```Vec<String>``` | | Adresse silent payment ou role qui doit recevoir le Versement |
| `to_type` | ```String``` | | Soit "addresses" soit "roles" |
| `to_method` | ```String``` | | Méthode de distribution de la somme des versements : "Amount divided" ou "Same Amount" |
## 12. <a name='Rustconsiderations'></a>12. Rust considerations ## 12. <a name='Rustconsiderations'></a>12. Rust considerations
### 12.1. <a name='GeneralImplicationsforProjectObjects'></a> General Implications for Project Objects ### 12.1. <a name='GeneralImplicationsforProjectObjects'></a> General Implications for Project Objects