add raw_transaction_list for messages and move payments attributs to RequestPRD (for all PRD)
This commit is contained in:
parent
8e96c3a035
commit
b6abd5867e
@ -41,6 +41,18 @@ Les Portable Contract Documents (PCD) sont des documents JSON qui encapsulent le
|
|||||||
|
|
||||||
Les `Item` ainsi échangés via les PCD sont vérifiés par les `PRDResponse` afin de vérifier les validations de ces données et leurs conformités avec les `process` et les `members` concernés.
|
Les `Item` ainsi échangés via les PCD sont vérifiés par les `PRDResponse` afin de vérifier les validations de ces données et leurs conformités avec les `process` et les `members` concernés.
|
||||||
|
|
||||||
|
### Création et envoi
|
||||||
|
|
||||||
|
La création d'un PCD suit plusieurs étapes :
|
||||||
|
|
||||||
|
1. **Chargement de la dernière version de la liste (PCD)**: Récupération de la dernière version de la liste du type d'`Item` à partir de la source de données, telle qu'une base de données ou un système de stockage.
|
||||||
|
2. **Mise à jour**: Ajouts et modifications eventuelles des `Item`
|
||||||
|
3. **Chiffrement des attributs**: Chiffrement des attributs de chaque Item selon les règles de confidentialité et de partage des clés (cf. [Specs-Security.md](Specs-Security.md)).
|
||||||
|
4. **Chiffrement du PCD**: Chiffrement du PCD avec la clé `ProcessKey` du `process` concerné.
|
||||||
|
5. **Création du message**: Création du `message` contenant le PCD chiffré, la preuve de travail, l'adresse de faucet
|
||||||
|
6. **Sélection des relais pour le message**: Sélection de 4 relais pour le message selon l'historique des pings et des réponses retournées.
|
||||||
|
7. **Envoi du message**: Envoi du message aux relais.
|
||||||
|
|
||||||
## 5. <a name='FonctiondesPRD'></a>Fonction des PRD
|
## 5. <a name='FonctiondesPRD'></a>Fonction des PRD
|
||||||
|
|
||||||
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. Ils sont utilisés pour demander des actions spécifiques, telles que l'envoi de messages, la mise à jour des informations contractuelles, ou la confirmation de transactions.
|
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. Ils sont utilisés pour demander des actions spécifiques, telles que l'envoi de messages, la mise à jour des informations contractuelles, ou la confirmation de transactions.
|
||||||
@ -49,6 +61,18 @@ Les clés de chiffrement des attributs confidentiels par rôles des `Item` des P
|
|||||||
|
|
||||||
Les PRD sont de plusieurs types tels que `RequestPrdList`, `RequestPrdMessage`, `RequestPrdUpdate`, etc.: Variations de `PRD` pour différentes actions, telles que l'envoi de messages, la mise à jour des informations contractuelles, ou la confirmation de transactions.
|
Les PRD sont de plusieurs types tels que `RequestPrdList`, `RequestPrdMessage`, `RequestPrdUpdate`, etc.: Variations de `PRD` pour différentes actions, telles que l'envoi de messages, la mise à jour des informations contractuelles, ou la confirmation de transactions.
|
||||||
|
|
||||||
|
### Création et envoi
|
||||||
|
|
||||||
|
La création d'un PRD suit plusieurs étapes :
|
||||||
|
|
||||||
|
1. **Chargement des clés de chiffrement confidentiel'**: Récupération des clés de chiffrement confidentiel des attributs des items d'un PCD.
|
||||||
|
2. **Chiffrement du PRD**: Chiffrement du PRD avec la clé `ProcessKey` du `process` concerné.
|
||||||
|
3. **Création de l'adresse SP**: Création d'une adresse Silent Payment SP pour le paiement des frais de transaction depuis l'adresse signet de l'utilisateur décrit dans un objet `ItemMember` (cf. [Specs-Datamodel.md](Specs-Datamodel.md)) avec les outupts de la transaction Silent Payment SP correspondants au PRD et aux éventuels PCD associés.
|
||||||
|
4. **Création du message**: Création du `message` contenant le PRD chiffré, la preuve de travail, l'adresse de faucet
|
||||||
|
5. **Sélection des relais pour le message**: Sélection de 4 relais pour le message selon l'historique des pings et des réponses retournées.
|
||||||
|
6. **Sélection des noeuds de signet pour la transaction silent Payment (SP)**: Sélection de 4 noeuds de signet pour l'envoi de la transaction Silent Payment SP.
|
||||||
|
7. **Envoi du message**: Envoi du message aux relais et des transactions aux noeuds de signet.
|
||||||
|
|
||||||
## Fonction des transactions silent payment SP associées aux PRD
|
## Fonction des transactions silent payment SP associées aux PRD
|
||||||
|
|
||||||
La clé `KeyConfidential` d'une transaction Silent Payment SP est utilisée pour chiffrer les PRD. Cette clé est échangée avec le destinataire via un Diffie-Hellman (cf. [Specs-Security.md](Specs-Security.md)) dans la transaction. Cette information est parrallèle aux PRD et permet une meilleur sécurité et confidentialité des échanges.
|
La clé `KeyConfidential` d'une transaction Silent Payment SP est utilisée pour chiffrer les PRD. Cette clé est échangée avec le destinataire via un Diffie-Hellman (cf. [Specs-Security.md](Specs-Security.md)) dans la transaction. Cette information est parrallèle aux PRD et permet une meilleur sécurité et confidentialité des échanges.
|
||||||
@ -57,11 +81,11 @@ La transaction Silent Payment SP a aussi une fonction d'horodate et de preuve de
|
|||||||
|
|
||||||
Les `PRDConfirm` qui sont des accusés automatiques de réception des PRD sont aussi associés à une transaction Silent Payment SP, ce qui permet d'ajouter les preuves de réception des demandes et des validations (ou non).
|
Les `PRDConfirm` qui sont des accusés automatiques de réception des PRD sont aussi associés à une transaction Silent Payment SP, ce qui permet d'ajouter les preuves de réception des demandes et des validations (ou non).
|
||||||
|
|
||||||
### 5.1. <a name='RequestPrdList-DemandedeListesPCD'></a>RequestPrdList - Demande de Listes (PCD)
|
## 5.1. <a name='RequestPrdList-DemandedeListesPCD'></a>RequestPrdList - Demande de Listes (PCD)
|
||||||
|
|
||||||
Utile pour les utilisateurs cherchant à consulter ou à explorer des listes de contrats, de membres, ou d'autres items dans le réseau.
|
Utile pour les utilisateurs cherchant à 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, par exemple les `ItemProcess`, les `ItemMember`, les `ItemPeer`, les `ItemPayment`, etc.
|
||||||
|
|
||||||
### 5.2. <a name='RequestPrdMessage-EnvoideMessages'></a>RequestPrdMessage - Envoi de Messages
|
## 5.2. <a name='RequestPrdMessage-EnvoideMessages'></a>RequestPrdMessage - Envoi de Messages
|
||||||
|
|
||||||
Le RequestPrdMessage facilite l'envoi de messages sécurisés entre utilisateurs ou entre utilisateurs et processus/contrats.
|
Le RequestPrdMessage facilite l'envoi de messages sécurisés entre utilisateurs ou entre utilisateurs et processus/contrats.
|
||||||
|
|
||||||
@ -69,7 +93,7 @@ Permet la communication directe et sécurisée au sein du réseau, supportant de
|
|||||||
|
|
||||||
Les `PRDMessage` répondent aux `PRDMessage`.
|
Les `PRDMessage` répondent aux `PRDMessage`.
|
||||||
|
|
||||||
### 5.3. <a name='RequestPrdUpdate-MisesJourdePCD'></a>RequestPrdUpdate - Mises à Jour de PCD
|
## 5.3. <a name='RequestPrdUpdate-MisesJourdePCD'></a>RequestPrdUpdate - Mises à Jour de PCD
|
||||||
|
|
||||||
`RequestPrdUpdate` est conçu pour demander des mises à jour des listes via des nouvelles versions de `PCD`.
|
`RequestPrdUpdate` est conçu pour demander des mises à jour des listes via des nouvelles versions de `PCD`.
|
||||||
|
|
||||||
@ -79,7 +103,14 @@ Essentiel pour les utilisateurs ou les processus nécessitant de mettre à jour
|
|||||||
|
|
||||||
Par exemple, mettre à jour la liste des membres permet d'ajouter de nouveaux utilisateurs sur un `process`, la mise à jour de la liste des `process` permettra de leur affecter un nouveau role.
|
Par exemple, mettre à jour la liste des membres permet d'ajouter de nouveaux utilisateurs sur un `process`, la mise à jour de la liste des `process` permettra de leur affecter un nouveau role.
|
||||||
|
|
||||||
### 5.4. <a name='RequestPrdConfirm-ConfirmationdeRception'></a>RequestPrdConfirm - Confirmation de Réception
|
Les `PRDUpdate` signalent au réseau via l'attribut `pcd_new_version_hash` les nouvelles version des PCD.
|
||||||
|
|
||||||
|
Les `PRDUpdate` signalent de façon confidentielle :
|
||||||
|
|
||||||
|
* soient des conditions ad'hoc déjà remplies via l'attribut `payment_pcd_hash_list`, `cap_pcd_hash_list`, `deposit_pcd_hash_list`, `commitment_pcd_hash_list` pour les paiements et preuves ad'hoc éventuellements associés aux PCD de la nouvelle version.
|
||||||
|
* soient des appels pour recevoir les moyens de satisfaire ces conditions via les attributs `ask_payment_method`, `ask_deposit_method`, `ask_commitment_method`.
|
||||||
|
|
||||||
|
## 5.4. <a name='RequestPrdConfirm-ConfirmationdeRception'></a>RequestPrdConfirm - Confirmation de Réception
|
||||||
|
|
||||||
Le RequestPrdConfirm est utilisé pour confirmer la réception et le traitement de demandes ou de transactions, jouant un rôle crucial dans la validation des actions au sein du réseau.
|
Le RequestPrdConfirm est utilisé pour confirmer la réception et le traitement de demandes ou de transactions, jouant un rôle crucial dans la validation des actions au sein du réseau.
|
||||||
|
|
||||||
@ -89,21 +120,110 @@ Les `PRDList`, `PRDUpdate`, `PRDMessage`, `PRDResponse` et `PRDKeyHello` reçoiv
|
|||||||
|
|
||||||
Crucial pour les processus qui nécessitent une confirmation explicite de réception ou d'acceptation, comme la finalisation d'une transaction ou la validation d'un changement d'état dans un contrat.
|
Crucial pour les processus qui nécessitent une confirmation explicite de réception ou d'acceptation, comme la finalisation d'une transaction ou la validation d'un changement d'état dans un contrat.
|
||||||
|
|
||||||
### 5.5. <a name='RequestPrdResponse-RpondreuneDemande'></a>RequestPrdResponse - Répondre à une Demande
|
## 5.5. <a name='RequestPrdResponse-RpondreuneDemande'></a>RequestPrdResponse - Répondre à une Demande
|
||||||
|
|
||||||
Le RequestPrdResponse permet de répondre spécifiquement à des PRD reçus, facilitant un échange interactif d'informations ou de décisions entre les parties.
|
Le `PrdResponse` permet de répondre spécifiquement à des PRD reçus, facilitant un échange interactif d'informations ou de décisions entre les parties.
|
||||||
|
|
||||||
Les PRDResponse répondent aux `PRDList`, `PRDUpdate`, `PRDKeyBackup` et `PRDKeyHello`.
|
Les `PRDResponse` répondent aux `PRDList`, `PRDUpdate`, `PRDKeyBackup` et `PRDKeyHello`.
|
||||||
|
|
||||||
Utilisé pour fournir des feedbacks, des confirmations, ou des instructions supplémentaires en réponse à des demandes initiales, supportant une communication bidirectionnelle sécurisée et vérifiable.
|
Utilisé pour fournir des feedbacks, des confirmations, ou des instructions supplémentaires en réponse à des demandes initiales, supportant une communication bidirectionnelle sécurisée et vérifiable.
|
||||||
|
|
||||||
Aussi le moyen de demander des moyens de paiement ou de dépot ou de preuve, puis de partager le payload de ces actions.
|
Aussi le moyen de demander des moyens de paiement ou de dépot ou de preuve, puis de partager le payload de ces actions.
|
||||||
|
|
||||||
### 5.6. <a name='RequestPrdKeyHelloBakcup'></a>RequestPrdKeyHelloBakcup
|
L'attribut `sig_value` permet de donner une valeur aux signatures. Les valeurs des signatures sont définies par rôles dans les `ItemProcess` avec des valeurs valant pour `OK` ou `KO` pour `none` pour les validations des `PRD`.
|
||||||
|
|
||||||
|
Lorsque que la réponse fait référence à un PCD il est précisé dans `pcd_origin_hash`.
|
||||||
|
|
||||||
|
Les `PrdResponse` signalent de façon confidentielle :
|
||||||
|
|
||||||
|
* soient des conditions ad'hoc déjà remplies via l'attribut `payment_method_enc_by_shared_secret`, `deposit_method_enc_by_shared_secret`, `commitment_method_enc_by_shared_secret`, `commitment_pcd_hash_list` pour les paiements et preuves ad'hoc éventuellements associés aux PCD de la nouvelle version.
|
||||||
|
* soient des appels pour recevoir les moyens de satisfaire ces conditions via les attributs `ask_payment_method`, `ask_deposit_method`, `ask_commitment_method`.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
certif_key_enc_by_shared_secret
|
||||||
|
Option
|
||||||
|
Yes
|
||||||
|
Encrypted certification key, encrypted with a shared secret.
|
||||||
|
|
||||||
|
|
||||||
|
shared_secret_key
|
||||||
|
Option
|
||||||
|
Yes
|
||||||
|
Optional encryption key used for shared secrets.
|
||||||
|
|
||||||
|
|
||||||
|
pcd_new_version_hash
|
||||||
|
String
|
||||||
|
|
||||||
|
The hash of the new version of the PCD.
|
||||||
|
|
||||||
|
|
||||||
|
payment_pcd_hash_list
|
||||||
|
Vec
|
||||||
|
|
||||||
|
A list of hashes for payment-related PCDs.
|
||||||
|
|
||||||
|
|
||||||
|
cap_pcd_hash_list
|
||||||
|
Vec
|
||||||
|
|
||||||
|
A list of hashes for capability-related PCDs.
|
||||||
|
|
||||||
|
|
||||||
|
deposit_pcd_hash_list
|
||||||
|
Vec
|
||||||
|
|
||||||
|
A list of hashes for deposit-related PCDs.
|
||||||
|
|
||||||
|
|
||||||
|
commitment_pcd_hash_list
|
||||||
|
Vec
|
||||||
|
|
||||||
|
A list of hashes for commitment-related PCDs.
|
||||||
|
|
||||||
|
|
||||||
|
ask_payment_method
|
||||||
|
String
|
||||||
|
|
||||||
|
The requested payment method.
|
||||||
|
|
||||||
|
|
||||||
|
ask_deposit_method
|
||||||
|
String
|
||||||
|
|
||||||
|
The requested deposit method.
|
||||||
|
|
||||||
|
|
||||||
|
ask_commitment_method
|
||||||
|
String
|
||||||
|
|
||||||
|
The requested commitment method.
|
||||||
|
|
||||||
|
|
||||||
|
device_footprint_enc_by_sp_shared_secret
|
||||||
|
String
|
||||||
|
|
||||||
|
The device footprint encrypted by a service provider's shared secret.
|
||||||
|
|
||||||
|
|
||||||
|
part_1_enc_hash_enc_by_sp_shared_secret
|
||||||
|
String
|
||||||
|
|
||||||
|
The first part of the hash encrypted by a service provider's shared secret.
|
||||||
|
|
||||||
|
|
||||||
|
shard_enc_by_sp_shared_secret
|
||||||
|
String
|
||||||
|
|
||||||
|
The shard encrypted by a service provider's shared secret.
|
||||||
|
|
||||||
|
## 5.6. <a name='RequestPrdKeyHelloBakcup'></a>RequestPrdKeyHelloBakcup
|
||||||
|
|
||||||
Le RequestPrdKeyHelloBakcup permet de demander la stockage de nouveaux shards associés à une `pre-id` .
|
Le RequestPrdKeyHelloBakcup permet de demander la stockage de nouveaux shards associés à une `pre-id` .
|
||||||
|
|
||||||
### 5.7. <a name='RequestPrdKeyHello-changedeClsetdIdentits'></a>RequestPrdKeyHello - Échange de Clés et d'Identités
|
## 5.7. <a name='RequestPrdKeyHello-changedeClsetdIdentits'></a>RequestPrdKeyHello - Échange de Clés et d'Identités
|
||||||
|
|
||||||
RequestPrdKeyHello est conçu pour initier ou répondre à des demandes d'échange de clés ou d'informations d'identité, essentiel pour la gestion sécurisée des accès et des identités au sein du réseau.
|
RequestPrdKeyHello est conçu pour initier ou répondre à des demandes d'échange de clés ou d'informations d'identité, essentiel pour la gestion sécurisée des accès et des identités au sein du réseau.
|
||||||
|
|
||||||
|
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user