Pagination for PRDList & fix commits (doc)
This commit is contained in:
parent
2c05a15fa7
commit
81fb45394a
@ -1,5 +1,4 @@
|
||||
<!-- vscode-markdown-toc -->
|
||||
|
||||
* 1. [Objectif](#Objectif)
|
||||
* 2. [Portée](#Porte)
|
||||
* 3. [Documents de référence](#Documentsderfrence)
|
||||
@ -61,7 +60,6 @@ Voir [_Doc_references.md](_Doc_references.md).
|
||||
* **Portable Contract Document (`RequestPcd`)**: 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 Request Document (`RequestPrd`)**: Format `JSON` chiffré contenant les valeurs de signatures et les clés de déchiffrement nécessaires à l'exploitation (requêtes et validation) des `RequestPcd`. Les `RequestPrdResponse` sont collectés pour vérifier le respect des conditions de l'`ItemProcess`. D'autres types de `RequestPrd` incluent :
|
||||
|
||||
* `RequestPrdList`: Demande de listes d'`Item`. En réponse, une `RequestPcd` est reçue avec les `RequestPrdResponse` correspondants.
|
||||
* `RequestPrdMessage`: Envoi de messages publics, confidentiels ou privés et/ou de transactions Silent Payments des autres `RequestPrd` à diffuser sur le réseau des nœuds de la side chain. Les `RequestPrdMessage` peuvent répondre les uns aux autres.
|
||||
* `RequestPrdUpdate`: Demande de mise à jour d'une liste d'`Item` (publiée via un `RequestPCD`), qui sera déchiffrée et validée ou non par des `RequestPrdResponse` en retour.
|
||||
@ -120,7 +118,7 @@ Les traitements pour l'envoi des `RequestPrd` varient selon leur type, principal
|
||||
Ce qui est résumé pour l'envoi :
|
||||
|
||||
| `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 |
|
||||
| `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` |
|
||||
@ -138,7 +136,7 @@ Les traitements pour la réception des `RequestPrd` varient selon leur type, pri
|
||||
Ce qui est résumé Pour la réception :
|
||||
|
||||
| `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 |
|
||||
| `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 |
|
||||
@ -161,6 +159,18 @@ Les `Metadata` des `Item` des `RequestPcd` et les attributs des `RequestPcd` et
|
||||
|
||||
* **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 `RequestPcd` et `RequestPrd` chiffrés :
|
||||
|
||||
* **`request_type`** : Type de requête : `RequestPcd`, `RequestPrdList`, `RequestPrdMessage`, `RequestPrdUpdate`, `RequestPrdConfirm`, `RequestPrdResponse`.
|
||||
* **`item_name`** : Noms des items : `peer`, `member`, `process`, `payment`, `deposit`, `commitment`, et les `artefact` personnalisés.
|
||||
* **`version`** : Version de la requête.
|
||||
* **`process_hash`** : Hash de l'`ItemProcess` concerné.
|
||||
* **`request_pcd_reference_hash`** : Hash du `RequestPcd` auquel le `RequestPrd` fait référence.
|
||||
* **`request_pcd_origin_hash`** : Hash du `RequestPcd` à l'origine du `RequestPrd`.
|
||||
* **`request_prd_reference_hash`** : Hash du `RequestPrd` auquel le `RequestPrd` fait référence.
|
||||
* **`request_prd_origin_hash`** : Hash du `RequestPrd` à l'origine du `RequestPrd`.
|
||||
* **`item_reference_hash`** : Hash de l'`Item` auquel le `RequestPcd` fait référence.
|
||||
|
||||
### 6.1. <a name='Crationetenvoi'></a>Création et envoi
|
||||
|
||||
Les `RequestPcd` et les `RequestPrd` sont envoyés sous forme de messages (`JSON`) via les `websockets` des relais.
|
||||
@ -195,6 +205,49 @@ Les Portable Contract Documents (`RequestPcd`) sont des documents au format `JSO
|
||||
|
||||
Les `Item` échangés via les `RequestPcd` sont soumis à une vérification par les `RequestPrdResponse` dans le but de contrôler la validité de ces données et leur conformité avec les `ItemProcess` et les `member` du `Role` concerné.
|
||||
|
||||
Principaux champs des `RequestPcd` :
|
||||
|
||||
* **`request`** : cf la descripton de la structure `Request`.
|
||||
* **`item_enc_list`** : Les `Item` chiffrés par une clé symétrique générée à la volée pour chaque champ et pour chaque item d'une liste.
|
||||
* **`pagination`** : La pagination de la liste des `Item`.
|
||||
|
||||
Principaux champs de la structure `Pagination` :
|
||||
|
||||
* **`start`** : Index du premier `Item` de la liste.
|
||||
* **`number`** : Nombre d'`Item` à afficher.
|
||||
* **`page_index`** : Index de la page.
|
||||
* **`page_total`** : Nombre total de pages.
|
||||
|
||||
Principaux champs de la structure `RequestPcdItemGenericEnc` :
|
||||
|
||||
* **`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 `RequestPcdItemEncAttributePublic` des attributs publics de l'`Item` chiffré.
|
||||
* **`request_pcd_item_enc_attribute_role_confidential_list`** : Liste d'objets `RequestPcdItemEncAttributeRoleConfidential` des attributs confidentiels de l'`Item` chiffré.
|
||||
* **`request_pcd_item_enc_attribute_private_list`** : Liste d'objets `RequestPcdItemEncAttributePrivate` des attributs privés de l'`Item` chiffré.
|
||||
|
||||
Principaux champs de la structure `RequestPcdItemEncAttributePublic` :
|
||||
|
||||
* **`attribute_name`** : Nom de l'attribut.
|
||||
* **`data_enc`** : Données chiffrées par la clé `ProcessKey` de l'`ItemProcess` 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.
|
||||
|
||||
Principaux champs de la structure `RequestPcdItemEncAttributeRoleConfidential` :
|
||||
|
||||
* **`attribute_name`** : Nom de l'attribut.
|
||||
* **`data_enc`** : Données chiffrées par une clé symétrique générée à la volée pour chaque champ et pour chaque item d'une liste.
|
||||
* **`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.
|
||||
|
||||
Principaux champs de la structure `RequestPcdItemEncAttributePrivate` :
|
||||
|
||||
* **`attribute_name`** : Nom de l'attribut.
|
||||
* **`data_enc`** : Données chiffrées par la clé privée `KeyRecover`.
|
||||
* **`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.
|
||||
|
||||
### 7.1. <a name='Schmadesflux'></a>Schéma des flux
|
||||
|
||||

|
||||
@ -228,6 +281,34 @@ Les clés permettant le chiffrement des attributs confidentiels par rôles des `
|
||||
|
||||
Les `RequestPrd` se déclinent en plusieurs types, tels que `RequestPrdList`, `RequestPrdMessage`, `RequestPrdUpdate`, etc., correspondant à différentes actions comme l'envoi de messages, la mise à jour des informations contractuelles, ou la confirmation de transactions.
|
||||
|
||||
Principaux champs des `RequestPcd` :
|
||||
|
||||
* **`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`).
|
||||
* **`request_pcd_reference_keys_role_confidential_list_enc_by_shared_secret`** : Clés de déchiffrement des attributs confidentiels des `Item` des `RequestPcd` chiffrées par la clé `KeyConfidential` d'une `transaction SP`.
|
||||
* **`request_pcd_origin_hash_keys_role_confidential_list_enc_by_shared_secret`** : Clés de déchiffrement des attributs confidentiels des `Item` des `RequestPcd` du `RequestPCD` 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_private`** : Message privé, chiffré par la clé privée `KeyRecover`.
|
||||
* **`sp_address_to`** : Adresse du destinataire.
|
||||
* **`sp_address_from`** : Adresse de l'émetteur.
|
||||
* **`sp_address_reply`** : Adresse de réponse à l'émetteur.
|
||||
* **`timestamp_declared`** : Horodatage déclaré.
|
||||
* **`role_name_from`** : Nom du rôle de l'émetteur.
|
||||
* **`role_name_to`** : Nom du rôle du destinataire.
|
||||
* **`payment_request_pcd_hash_list_enc_by_shared_secret`** : Liste des `RequestPcd` d'`Item` de nom `paiement` chiffrée par la clé `KeyConfidential` d'une `transaction SP`.
|
||||
* **`cap_request_pcd_hash_list_enc_by_shared_secret`** : Liste des `RequestPcd` 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_enc_by_shared_secret`** : Liste des `RequestPcd` d'`Item` de nom `deposit` chiffrée par la clé `KeyConfidential` d'une `transaction SP`.
|
||||
* **`commitment_request_pcd_hash_list_enc_by_shared_secret`** : Liste des `RequestPcd` d'`Item` de nom `commitment` chiffrée par la clé `KeyConfidential` d'une `transaction SP`.
|
||||
* **`ask_payment_method_enc_by_shared_secret`** : Demande de méthode de paiement chiffrée par la clé `KeyConfidential` d'une `transaction SP`.
|
||||
* **`ask_deposit_method_enc_by_shared_secret`** : Demande de méthode de dépôt chiffrée par la clé `KeyConfidential` d'une `transaction SP`.
|
||||
* **`ask_commitment_method_enc_by_shared_secret`** : Demande de méthode d'engagement chiffrée par la clé `KeyConfidential` d'une `transaction SP`.
|
||||
* **`payment_method_enc_by_shared_secret`** : Méthode de paiement chiffrée par la clé `KeyConfidential` d'une `transaction SP`, en réponse à une demande.
|
||||
* **`deposit_method_enc_by_shared_secret`** : Méthode de dépôt chiffrée par la clé `KeyConfidential` d'une `transaction SP`, en réponse à une demande.
|
||||
* **`commitment_method_enc_by_shared_secret`** : Méthode d'engagement chiffrée par la clé `KeyConfidential` d'une `transaction SP`, en réponse à une demande.
|
||||
* **`certif_key_enc_by_shared_secret`** : 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`.
|
||||
|
||||
### 8.1. <a name='Schmadesflux-1'></a>Schéma des flux
|
||||
|
||||
Pour simplifier, les `RequestPrdConfirm` n'ont pas été inclus dans le schéma.
|
||||
@ -300,6 +381,43 @@ Workflow:
|
||||
|
||||

|
||||
|
||||
Principaux champs des `RequestPrdList` :
|
||||
|
||||
* **`request_prd`** : cf la descripton de la structure `RequestPrd`.
|
||||
* **`pagination_start`** : Première "page" de résultats.
|
||||
* **`pagination_stop`** : Dernière "page" de résultats.
|
||||
* **`sub_pagination_start`** : Première "page" de résultats dans les items qui contiennent une liste.
|
||||
* **`sub_pagination_stop`** : Dernière "page" de résultats dans les items qui contiennent une liste.
|
||||
|
||||
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`.
|
||||
|
||||
L'`ItemMember` temporaire contient les métadonnées de type `Metadata` suivantes :
|
||||
|
||||
* **`MetadataProcessPublic` de type `ItemMemberPublicAttributeGroup`** :
|
||||
|
||||
* **`sp_address_public`** : Adresse publique de l'utilisateur, chiffré par la `ProcessKey` de l'`ItemProcess`.
|
||||
* **`sp_address_public_sig`** : Signature de l'adresse publique de l'utilisateur par la clé `recover`, 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`.
|
||||
* **`sp_address_revoke_public_sig`** : Signature de l'adresse publique de révocation de l'utilisateur par la clé de spend de `revoke`, 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`.
|
||||
* **`payment_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`.
|
||||
|
||||
* **`MetadataRoleConfidential` de type `ItemMemberRoleConfidentialAttributeGroup`** :
|
||||
|
||||
* **`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`** :
|
||||
|
||||
* **`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`.
|
||||
* **`priv_key_signet_scan`** : Clé de scan du signet de `recover`de l'utilisateur, chiffrée `KeyRecover`.
|
||||
|
||||
### 9.1. <a name='Schmadesflux-1'></a>Schéma des flux
|
||||
|
||||
Pour simplifier, les `RequestPrdConfirm` n'ont pas été inclus dans le schéma.
|
||||
@ -335,6 +453,11 @@ Les `RequestPrdMessage` peuvent répondre aux autres `RequestPrdMessage`, sauf e
|
||||
Workflow :
|
||||

|
||||
|
||||
Principaux champs des `RequestPrdMessage` :
|
||||
|
||||
* **`request_prd`** : cf la descripton de la structure `RequestPrd`.
|
||||
* **`raw_transaction_list`** : Liste des `transaction SP` au format `raw` pour la publication de la transaction dans la side chain.
|
||||
|
||||
### 10.1. <a name='Schmadesflux-1'></a>Schéma des flux
|
||||
|
||||
Pour simplifier, les `RequestPrdConfirm` n'ont pas été inclus dans le schéma. Exemple d'un `RequestPrdMessage` avec `raw_transaction_list` vide, et son cas correspondant où le `RequestPrdMessage` contient une `raw_transaction_list` non vide.
|
||||
@ -366,6 +489,10 @@ Workflow:
|
||||
|
||||

|
||||
|
||||
Principaux champs des `RequestPrdUpdate` :
|
||||
|
||||
* **`request_prd`** : cf la descripton de la structure `RequestPrd`.
|
||||
|
||||
### 11.1. <a name='Schmadesflux-1'></a>Schéma des flux
|
||||
|
||||
Pour simplifier, les `RequestPrdConfirm` n'ont pas été représentés dans le schéma.
|
||||
@ -396,6 +523,11 @@ Worflow:
|
||||
|
||||
Voir les diagrammes `PRDUpdateFlows`, `PRDUpdateFlows` et `PRDMessageFlows`.
|
||||
|
||||
Principaux champs des `RequestPrdConfirm` :
|
||||
|
||||
* **`request_prd`** : cf la descripton de la structure `RequestPrd`.
|
||||
* **`code_confirm_enc_by_shared_secret`** : Code de confirmation chiffré par la clé `KeyConfidential` d'une `transaction SP` dans le cas d'un 2FA.
|
||||
|
||||
### 12.1. <a name='Schmadesflux-1'></a>Schéma des flux
|
||||
|
||||

|
||||
@ -422,6 +554,12 @@ Workflow:
|
||||
|
||||
Voir les diagrammes `PRDUpdateFlows` et `PRDUpdateFlows`.
|
||||
|
||||
Principaux champs des `RequestPrdResponse` :
|
||||
|
||||
* **`request_prd`** : cf la descripton de la structure `RequestPrd`.
|
||||
* **`shared_secret_key_enc_by_sp_shared_secret`** : Clé de chiffrement partagée chiffrée par la clé `KeyConfidential` d'une `transaction SP`.
|
||||
* **`shard_enc_by_sp_shared_secret`** : Shard chiffré par la clé `KeyConfidential` d'une `transaction SP`.
|
||||
|
||||
### 13.1. <a name='Schmadesflux-1'></a>Schéma des flux
|
||||
|
||||
Pour simplifier, les `RequestPrdConfirm` n'ont pas été représentés dans le schéma.
|
||||
@ -446,11 +584,11 @@ Pour simplifier, les `RequestPrdConfirm` n'ont pas été représentés dans le s
|
||||
## 15. <a name='Todo'></a>Todo
|
||||
|
||||
[ ] Description détaillée de tous les éléments (attributs) qui composent le ‘request-type’:
|
||||
[ ] Qu’y a-t-il dans le ‘request-type’?
|
||||
[ ] A quoi sert l’attribut X du ‘request-type’?
|
||||
[ ] Description un par un des contextes où le ‘request-type’ est utilisé.
|
||||
[ ] Description pas à pas de l’envoi du ‘request-type’.
|
||||
[x] Qu’y a-t-il dans le ‘request-type’?
|
||||
[x] A quoi sert l’attribut X du ‘request-type’?
|
||||
[x] Description un par un des contextes où le ‘request-type’ est utilisé.
|
||||
[x] Description pas à pas de l’envoi du ‘request-type’.
|
||||
[ ] Que se passe-t-il dans le système lorsque le ‘request-type est envoyé?
|
||||
[ ] Description pas à pas de la réception du ‘request-type’.
|
||||
[ ] Que se passe-t-il dans le système lorsque le ‘request-type est reçu?
|
||||
[ ] Exemple d’utilisation.
|
||||
[x] Description pas à pas de la réception du ‘request-type’.
|
||||
[x] Que se passe-t-il dans le système lorsque le ‘request-type est reçu?
|
||||
[x] Exemple d’utilisation.
|
||||
|
@ -74,3 +74,17 @@ La transaction sera broadcastée par les noeuds de signet du membre du `Role` `m
|
||||
|
||||
Dans l'attribut `raw_transaction_list` du `Message` associé à la transaction SP.
|
||||
La transaction sera broadcastée par les noeuds de signet des relais.
|
||||
|
||||
## En réception les transactions silent payment SP sont relayées par les relais en temps réel
|
||||
|
||||
Le relais récupère les transactions depuis l'interface ZMQ du noeud Bitcoin : https://github.com/bitcoin/bitcoin/blob/master/doc/zmq.md.
|
||||
Puis il ajoute le tweak data de la transaction Silent Payments, puis il envoie la transaction à tous les connectés.
|
||||
|
||||
Puis le relais relaient les transactions dans le format suivant :
|
||||
|
||||
* **raw_tx**: La transaction en hexadécimal
|
||||
* **pubkey**: La clé publique du membre qui a envoyé la transaction
|
||||
|
||||
Le même procédé existe pour les blocs :
|
||||
|
||||
* **raw_block**: Le bloc en hexadécimal
|
||||
|
@ -1,4 +1,121 @@
|
||||
<!-- vscode-markdown-toc -->
|
||||
* 1. [Documents de référence](#Documentsderfrence)
|
||||
* 2. [Methods](#Methods)
|
||||
* 2.1. [DepositMethod](#DepositMethod)
|
||||
* 2.2. [CommitmentMethod](#CommitmentMethod)
|
||||
* 2.3. [PaymentMethod](#PaymentMethod)
|
||||
* 3. [Items](#Items)
|
||||
* 3.1. [Item](#Item)
|
||||
* 3.2. [ItemArtefact](#ItemArtefact)
|
||||
* 3.3. [ItemMember](#ItemMember)
|
||||
* 3.3.1. [ItemMemberPublicAttributeGroup](#ItemMemberPublicAttributeGroup)
|
||||
* 3.3.2. [ItemMemberRoleConfidentialAttributeGroup](#ItemMemberRoleConfidentialAttributeGroup)
|
||||
* 3.3.3. [ItemMemberRolePrivateAttributeGroup](#ItemMemberRolePrivateAttributeGroup)
|
||||
* 3.4. [ItemCommitment](#ItemCommitment)
|
||||
* 3.4.1. [ItemCommitmentRoleConfidentialAttributeGroup](#ItemCommitmentRoleConfidentialAttributeGroup)
|
||||
* 3.4.2. [ItemCommitmentPrivateAttributeGroup](#ItemCommitmentPrivateAttributeGroup)
|
||||
* 3.5. [ItemDeposit](#ItemDeposit)
|
||||
* 3.5.1. [ItemDepositPublicAttributeGroup](#ItemDepositPublicAttributeGroup)
|
||||
* 3.5.2. [ItemDepositRoleConfidentialAttributeGroup](#ItemDepositRoleConfidentialAttributeGroup)
|
||||
* 3.5.3. [ItemDepositPrivateAttributeGroup](#ItemDepositPrivateAttributeGroup)
|
||||
* 3.6. [ItemEnum](#ItemEnum)
|
||||
* 3.7. [ItemPayment](#ItemPayment)
|
||||
* 3.7.1. [ItemPaymentPublicAttributeGroup](#ItemPaymentPublicAttributeGroup)
|
||||
* 3.7.2. [ItemPaymentRoleConfidentialAttributeGroup](#ItemPaymentRoleConfidentialAttributeGroup)
|
||||
* 3.7.3. [ItemPaymentPrivateAttributeGroup](#ItemPaymentPrivateAttributeGroup)
|
||||
* 3.8. [ItemPeer](#ItemPeer)
|
||||
* 3.8.1. [ItemPeerPublicAttributeGroup](#ItemPeerPublicAttributeGroup)
|
||||
* 3.8.2. [ItemPeerPrivateAttributeGroup](#ItemPeerPrivateAttributeGroup)
|
||||
* 3.9. [ItemProcess](#ItemProcess)
|
||||
* 3.9.1. [ItemProcessPublicAttributeGroup](#ItemProcessPublicAttributeGroup)
|
||||
* 4. [Encryption](#Encryption)
|
||||
* 4.1. [KeyEncryption](#KeyEncryption)
|
||||
* 4.2. [Aes256GcmIv96Bit](#Aes256GcmIv96Bit)
|
||||
* 5. [Messages](#Messages)
|
||||
* 5.1. [Message](#Message)
|
||||
* 5.2. [MessageConnect](#MessageConnect)
|
||||
* 5.3. [MessageGeneric](#MessageGeneric)
|
||||
* 5.4. [Pow](#Pow)
|
||||
* 5.5. [SharedProcess](#SharedProcess)
|
||||
* 5.6. [SharedPeer](#SharedPeer)
|
||||
* 6. [Relay](#Relay)
|
||||
* 7. [L1Node](#L1Node)
|
||||
* 7.1. [L1NodeMining](#L1NodeMining)
|
||||
* 7.2. [L2Node](#L2Node)
|
||||
* 7.3. [L2NodeMining](#L2NodeMining)
|
||||
* 7.4. [L2Certif](#L2Certif)
|
||||
* 7.5. [BlockCertif](#BlockCertif)
|
||||
* 8. [Metadata](#Metadata)
|
||||
* 8.1. [MetadataProcessublic](#MetadataProcessublic)
|
||||
* 8.2. [MetadataPrivate](#MetadataPrivate)
|
||||
* 8.3. [MetadataRoleConfidential](#MetadataRoleConfidential)
|
||||
* 8.4. [Amount](#Amount)
|
||||
* 8.5. [Number](#Number)
|
||||
* 9. [Request](#Request)
|
||||
* 10. [ RequestPcd](#RequestPcd)
|
||||
* 10.1. [Pagination](#Pagination)
|
||||
* 10.2. [ RequestPcdItemGenericEnc](#RequestPcdItemGenericEnc)
|
||||
* 10.2.1. [ RequestPcdItemEncAttributePublic](#RequestPcdItemEncAttributePublic)
|
||||
* 10.2.2. [ RequestPcdItemEncAttributeRoleConfidential](#RequestPcdItemEncAttributeRoleConfidential)
|
||||
* 10.2.3. [ RequestPcdItemEncAttributePrivate](#RequestPcdItemEncAttributePrivate)
|
||||
* 11. [RequestPrd](#RequestPrd)
|
||||
* 11.1. [RequestPrdList](#RequestPrdList)
|
||||
* 11.2. [RequestPrdUpdate](#RequestPrdUpdate)
|
||||
* 11.3. [RequestPrdResponse](#RequestPrdResponse)
|
||||
* 11.4. [RequestPrdConfirm](#RequestPrdConfirm)
|
||||
* 11.5. [RequestPrdMessage](#RequestPrdMessage)
|
||||
* 11.6. [RequestPrdResponse](#RequestPrdResponse-1)
|
||||
* 12. [Roles](#Roles)
|
||||
* 12.1. [Role](#Role)
|
||||
* 12.2. [Conditions](#Conditions)
|
||||
* 12.2.1. [TransactionMode](#TransactionMode)
|
||||
* 12.2.2. [ConditionPayment](#ConditionPayment)
|
||||
* 12.2.3. [ConditionCommitment](#ConditionCommitment)
|
||||
* 12.2.4. [ConditionDeposit](#ConditionDeposit)
|
||||
* 12.2.5. [ConditionOrchestration](#ConditionOrchestration)
|
||||
* 12.2.6. [ConditionCap](#ConditionCap)
|
||||
* 12.2.7. [ConditionRequestPrdAddressSet](#ConditionRequestPrdAddressSet)
|
||||
* 12.2.8. [ConditionPublish](#ConditionPublish)
|
||||
* 12.3. [RolesGroup](#RolesGroup)
|
||||
* 12.3.1. [RoleArtefact](#RoleArtefact)
|
||||
* 12.3.2. [RoleDeposit](#RoleDeposit)
|
||||
* 12.3.3. [RoleCommitment](#RoleCommitment)
|
||||
* 12.3.4. [RoleMember](#RoleMember)
|
||||
* 12.4. [RolePeer](#RolePeer)
|
||||
* 12.4.1. [RolePayment](#RolePayment)
|
||||
* 12.4.2. [RoleProcess](#RoleProcess)
|
||||
* 13. [Relay side chain data streaming](#Relaysidechaindatastreaming)
|
||||
* 14. [Storage](#Storage)
|
||||
* 14.1. [StoragePublic](#StoragePublic)
|
||||
* 14.1.1. [StorageKeysPublic](#StorageKeysPublic)
|
||||
* 14.1.2. [StorageItemPeerPublic](#StorageItemPeerPublic)
|
||||
* 14.1.3. [StorageItemProcessPublic](#StorageItemProcessPublic)
|
||||
* 14.1.4. [StorageMessagePublic](#StorageMessagePublic)
|
||||
* 14.1.5. [StorageRequestPcdPublic](#StorageRequestPcdPublic)
|
||||
* 14.1.6. [StorageRequestPrdPublic](#StorageRequestPrdPublic)
|
||||
* 14.2. [StoragePrivate](#StoragePrivate)
|
||||
* 14.2.1. [StorageKeysPrivate](#StorageKeysPrivate)
|
||||
* 14.2.2. [StoragePeerPrivate](#StoragePeerPrivate)
|
||||
* 14.2.3. [StorageProcessPrivate](#StorageProcessPrivate)
|
||||
* 14.2.4. [StorageRequestPcdPrivate](#StorageRequestPcdPrivate)
|
||||
* 14.2.5. [StorageRequestPrdPrivate](#StorageRequestPrdPrivate)
|
||||
* 14.2.6. [StorageDecryptedSharedSecretKeyPrivate](#StorageDecryptedSharedSecretKeyPrivate)
|
||||
* 14.2.7. [StorageocketsPrivate](#StorageocketsPrivate)
|
||||
* 14.2.8. [StorageSocketClientListPrivate](#StorageSocketClientListPrivate)
|
||||
* 15. [12. Rust considerations](#Rustconsiderations)
|
||||
* 15.1. [ General Implications for Project Objects](#GeneralImplicationsforProjectObjects)
|
||||
* 15.2. [ Debug](#Debug)
|
||||
* 15.3. [ Default](#Default)
|
||||
* 15.4. [ PartialEq, Eq](#PartialEqEq)
|
||||
* 15.5. [ Hash](#Hash)
|
||||
* 15.6. [ PartialOrd, Ord](#PartialOrdOrd)
|
||||
* 16. [Todo](#Todo)
|
||||
|
||||
<!-- vscode-markdown-toc-config
|
||||
numbering=true
|
||||
autoSave=true
|
||||
/vscode-markdown-toc-config -->
|
||||
<!-- /vscode-markdown-toc --><!-- vscode-markdown-toc -->
|
||||
|
||||
* 1. [Documents de référence](#Documentsderfrence)
|
||||
* 2. [Methods](#Methods)
|
||||
@ -576,6 +693,7 @@ Pseudo-code:
|
||||
| `daily_hash_list` | ```Vec<String>``` | |
|
||||
| `daily_sp_tx_mine_list` | ```Vec<String>``` | |
|
||||
| `daily_sp_tx_mine_reward_list` | ```Vec<String>``` | |
|
||||
| `tx_by_blocs_list` | ```Vec<Bloc>``` | |
|
||||
|
||||
Pseudo-code:
|
||||
|
||||
@ -591,7 +709,8 @@ Pseudo-code:
|
||||
"timestamp_delay_max": 0,
|
||||
"daily_hash_list": [],
|
||||
"daily_sp_tx_mine_list": [],
|
||||
"daily_sp_tx_mine_reward_list": []
|
||||
"daily_sp_tx_mine_reward_list": [],
|
||||
"tx_by_blocs_list": []
|
||||
}
|
||||
```
|
||||
|
||||
@ -984,7 +1103,7 @@ Pseudo-code:
|
||||
}
|
||||
```
|
||||
|
||||
### 8.1. <a name='MetadataProcessPublic'></a>MetadataProcessublic
|
||||
### 8.1. <a name='MetadataProcessublic'></a>MetadataProcessublic
|
||||
|
||||
| Attribute Name | Type | Option |
|
||||
| -------------- | -------------- | ------ |
|
||||
@ -1281,13 +1400,21 @@ Pseudo-code:
|
||||
| ------------------------------------- | ---------------- | ------ |
|
||||
| `request_prd` | ```RequestPrd``` | |
|
||||
| `item_member_enc_by_sp_shared_secret` | ```String``` | Yes |
|
||||
| `pagination_start` | ```Number``` | Yes |
|
||||
| `pagination_stop` | ```Number``` | Yes |
|
||||
| `sub_pagination_start` | ```Number``` | Yes |
|
||||
| `sub_pagination_stop` | ```Number``` | Yes |
|
||||
|
||||
Pseudo-code:
|
||||
|
||||
```json
|
||||
{
|
||||
"request_prd": RequestPrd,
|
||||
"item_member_enc_by_sp_shared_secret": ""
|
||||
"item_member_enc_by_sp_shared_secret": "",
|
||||
"pagination_start": 0,
|
||||
"pagination_stop": 0,
|
||||
"sub_pagination_start": 0,
|
||||
"sub_pagination_stop": 0
|
||||
}
|
||||
```
|
||||
|
||||
@ -1758,16 +1885,48 @@ Pseudo-code:
|
||||
|
||||
```json
|
||||
{
|
||||
"item_name": "Nom de l'élément",
|
||||
"item_name": "",
|
||||
"role": Role
|
||||
}
|
||||
```
|
||||
|
||||
## 13. <a name='Storage'></a>Storage
|
||||
## 13. <a name='Relaysidechaindatastreaming'></a>Relay side chain data streaming
|
||||
|
||||
### 13.1. <a name='StoragePublic'></a>StoragePublic
|
||||
### Transaction
|
||||
|
||||
#### 13.1.1. <a name='StorageKeysPublic'></a>StorageKeysPublic
|
||||
| Attribute Name | Type | Option |
|
||||
| -------------- | ------------ | ------ |
|
||||
| `raw_tx` | ```String``` | |
|
||||
| `role` | ```String``` | |
|
||||
|
||||
Pseudo-code:
|
||||
|
||||
```json
|
||||
{
|
||||
"raw_tx": "",
|
||||
"pubkey": ""
|
||||
}
|
||||
```
|
||||
|
||||
### Bloc
|
||||
|
||||
| Attribute Name | Type | Option |
|
||||
| -------------- | ------------ | ------ |
|
||||
| `raw_block` | ```String``` | |
|
||||
|
||||
Pseudo-code:
|
||||
|
||||
```json
|
||||
{
|
||||
"raw_block": ""
|
||||
}
|
||||
```
|
||||
|
||||
## 14. <a name='Storage'></a>Storage
|
||||
|
||||
### 14.1. <a name='StoragePublic'></a>StoragePublic
|
||||
|
||||
#### 14.1.1. <a name='StorageKeysPublic'></a>StorageKeysPublic
|
||||
|
||||
| Attribute Name | Type | Option |
|
||||
| ----------------------- | ---------------------------------- | ------ |
|
||||
@ -1807,7 +1966,7 @@ Pseudo-code:
|
||||
}
|
||||
```
|
||||
|
||||
#### 13.1.2. <a name='StorageItemPeerPublic'></a>StorageItemPeerPublic
|
||||
#### 14.1.2. <a name='StorageItemPeerPublic'></a>StorageItemPeerPublic
|
||||
|
||||
Pseudo-code:
|
||||
|
||||
@ -1820,7 +1979,7 @@ Pseudo-code:
|
||||
]
|
||||
```
|
||||
|
||||
#### 13.1.3. <a name='StorageItemProcessPublic'></a>StorageItemProcessPublic
|
||||
#### 14.1.3. <a name='StorageItemProcessPublic'></a>StorageItemProcessPublic
|
||||
|
||||
Pseudo-code:
|
||||
|
||||
@ -1833,7 +1992,7 @@ Pseudo-code:
|
||||
]
|
||||
```
|
||||
|
||||
#### 13.1.4. <a name='StorageMessagePublic'></a>StorageMessagePublic
|
||||
#### 14.1.4. <a name='StorageMessagePublic'></a>StorageMessagePublic
|
||||
|
||||
| Attribute Name | Type | Option |
|
||||
| ---------------------------- | ------------------------------------ | ------ |
|
||||
@ -1895,7 +2054,7 @@ Pseudo-code:
|
||||
}
|
||||
```
|
||||
|
||||
#### 13.1.5. <a name='StorageRequestPcdPublic'></a>StorageRequestPcdPublic
|
||||
#### 14.1.5. <a name='StorageRequestPcdPublic'></a>StorageRequestPcdPublic
|
||||
|
||||
Pseudo-code:
|
||||
|
||||
@ -1908,7 +2067,7 @@ Pseudo-code:
|
||||
]
|
||||
```
|
||||
|
||||
#### 13.1.6. <a name='StorageRequestPrdPublic'></a>StorageRequestPrdPublic
|
||||
#### 14.1.6. <a name='StorageRequestPrdPublic'></a>StorageRequestPrdPublic
|
||||
|
||||
##### 4.6.1. <a name='RequestPrdList'></a>StorageRequestPrdListPublic
|
||||
|
||||
@ -1979,9 +2138,9 @@ Pseudo-code:
|
||||
]
|
||||
```
|
||||
|
||||
### 13.2. <a name='StoragePrivate'></a>StoragePrivate
|
||||
### 14.2. <a name='StoragePrivate'></a>StoragePrivate
|
||||
|
||||
#### 13.2.1. <a name='StorageKeysPrivate'></a>StorageKeysPrivate
|
||||
#### 14.2.1. <a name='StorageKeysPrivate'></a>StorageKeysPrivate
|
||||
|
||||
| Attribute Name | Type | Option |
|
||||
| ---------------------------- | ---------------------------------------- | ------ |
|
||||
@ -2041,7 +2200,7 @@ Pseudo-code:
|
||||
}
|
||||
```
|
||||
|
||||
#### 13.2.2. <a name='StoragePeerPrivate'></a>StoragePeerPrivate
|
||||
#### 14.2.2. <a name='StoragePeerPrivate'></a>StoragePeerPrivate
|
||||
|
||||
| Attribute Name | Type | Option |
|
||||
| -------------- | ------------------------------ | ------ |
|
||||
@ -2199,7 +2358,7 @@ Pseudo-code:
|
||||
}
|
||||
```
|
||||
|
||||
#### 13.2.3. <a name='StorageProcessPrivate'></a>StorageProcessPrivate
|
||||
#### 14.2.3. <a name='StorageProcessPrivate'></a>StorageProcessPrivate
|
||||
|
||||
Public:
|
||||
|
||||
@ -2268,7 +2427,7 @@ Pseudo-code:
|
||||
}
|
||||
```
|
||||
|
||||
#### 13.2.4. <a name='StorageRequestPcdPrivate'></a>StorageRequestPcdPrivate
|
||||
#### 14.2.4. <a name='StorageRequestPcdPrivate'></a>StorageRequestPcdPrivate
|
||||
|
||||
| Attribute Name | Type | Option |
|
||||
| ---------------------------- | ----------------- | ------ |
|
||||
@ -2284,7 +2443,7 @@ Pseudo-code:
|
||||
}]
|
||||
```
|
||||
|
||||
#### 13.2.5. <a name='StorageRequestPrdPrivate'></a>StorageRequestPrdPrivate
|
||||
#### 14.2.5. <a name='StorageRequestPrdPrivate'></a>StorageRequestPrdPrivate
|
||||
|
||||
##### 5.5.1. <a name='RequestPrdUpdate-1'></a>StorageRequestPrdUpdatePrivate
|
||||
|
||||
@ -2399,7 +2558,7 @@ Pseudo-code:
|
||||
]
|
||||
```
|
||||
|
||||
#### 13.2.6. <a name='StorageDecryptedSharedSecretKeyPrivate'></a>StorageDecryptedSharedSecretKeyPrivate
|
||||
#### 14.2.6. <a name='StorageDecryptedSharedSecretKeyPrivate'></a>StorageDecryptedSharedSecretKeyPrivate
|
||||
|
||||
| Attribute Name | Type | Option |
|
||||
| ---------------- | ------------ | ------ |
|
||||
@ -2523,9 +2682,9 @@ Pseudo-code:
|
||||
]
|
||||
```
|
||||
|
||||
#### 13.2.7. <a name='StorageocketsPrivate'></a>StorageocketsPrivate
|
||||
#### 14.2.7. <a name='StorageocketsPrivate'></a>StorageocketsPrivate
|
||||
|
||||
#### 13.2.8. <a name='StorageSocketClientListPrivate'></a>StorageSocketClientListPrivate
|
||||
#### 14.2.8. <a name='StorageSocketClientListPrivate'></a>StorageSocketClientListPrivate
|
||||
|
||||
| Attribute Name | Type | Option |
|
||||
| -------------- | ------------ | ------ |
|
||||
@ -2579,9 +2738,9 @@ Pseudo-code:
|
||||
]
|
||||
```
|
||||
|
||||
## 14. <a name='Rustconsiderations'></a>12. Rust considerations
|
||||
## 15. <a name='Rustconsiderations'></a>12. Rust considerations
|
||||
|
||||
### 14.1. <a name='GeneralImplicationsforProjectObjects'></a> General Implications for Project Objects
|
||||
### 15.1. <a name='GeneralImplicationsforProjectObjects'></a> General Implications for Project Objects
|
||||
|
||||
Incorporating these traits into a struct's definition enhances its utility across various aspects of a project. For instance:
|
||||
|
||||
@ -2590,31 +2749,31 @@ Incorporating these traits into a struct's definition enhances its utility acros
|
||||
* **Comparison and ordering traits (PartialEq, Eq, PartialOrd, Ord)**: are crucial for logic checks, sorting, and storing objects in data structures that require ordering or uniqueness.
|
||||
* **The Hash trait**: expands the struct's utility in hash-based collections, enabling efficient data retrieval and storage.
|
||||
|
||||
### 14.2. <a name='Debug'></a> Debug
|
||||
### 15.2. <a name='Debug'></a> Debug
|
||||
|
||||
The Debug trait allows instances of the struct to be formatted using the {:?} formatter. This is essential for debugging purposes, as it provides a way to output the contents of the struct to the console or logs, aiding in the development and troubleshooting process.
|
||||
Serialize, Deserialize (serde crate)
|
||||
|
||||
Serialize and Deserialize traits from the serde crate enable the struct to be easily converted to and from data formats such as JSON, YAML, or TOML. This is particularly useful for web applications or services that need to send or receive data in a structured format over the network.
|
||||
|
||||
### 14.3. <a name='Default'></a> Default
|
||||
### 15.3. <a name='Default'></a> Default
|
||||
|
||||
Implementing the Default trait allows for the creation of a struct with default values. This is useful for initializing structs with a set of predetermined values or when a struct needs to be created without specifying every field explicitly.
|
||||
Clone
|
||||
|
||||
The Clone trait allows for the creation of an exact copy of a struct instance. This is crucial for cases where a mutable copy of a struct is needed, while keeping the original instance unchanged.
|
||||
|
||||
### 14.4. <a name='PartialEqEq'></a> PartialEq, Eq
|
||||
### 15.4. <a name='PartialEqEq'></a> PartialEq, Eq
|
||||
|
||||
PartialEq and Eq traits enable comparison operations for instances of the struct. While PartialEq allows for partial equality checks (where some of the comparisons might be indeterminate), Eq denotes that every comparison will either be true or false, ensuring a stricter equality condition that is necessary for certain collections or logic checks.
|
||||
|
||||
### 14.5. <a name='Hash'></a> Hash
|
||||
### 15.5. <a name='Hash'></a> Hash
|
||||
|
||||
The Hash trait is used to compute a hash value for instances of the struct. This is essential for structs that need to be stored in collections such as HashMap or HashSet, where a unique identifier is required to efficiently retrieve or store items.
|
||||
|
||||
### 14.6. <a name='PartialOrdOrd'></a> PartialOrd, Ord
|
||||
### 15.6. <a name='PartialOrdOrd'></a> PartialOrd, Ord
|
||||
|
||||
PartialOrd and Ord traits allow for ordering comparisons between instances of the struct. PartialOrd provides functionality for partial ordering, where some comparisons might not produce a clear order, whereas Ord requires a total ordering, ensuring that any two instances can be reliably ordered. This is critical for sorting operations or when structs are stored in ordered collections.
|
||||
FromForm (rocket crate)
|
||||
|
||||
## 15. <a name='Todo'></a>Todo
|
||||
## 16. <a name='Todo'></a>Todo
|
||||
|
Loading…
x
Reference in New Issue
Block a user