# Data model ## 1. Table des matières * 1. [Table des matières](#Tabledesmatires) * 2. [Documents de référence](#Documentsderfrence) * 3. [Methods](#Methods) * 3.1. [DepositMethod](#DepositMethod) * 3.2. [CommitmentMethod](#CommitmentMethod) * 3.3. [PaymentsMethod](#PaymentsMethod) * 4. [Items](#Items) * 4.1. [Item](#Item) * 4.2. [ItemArtefact](#ItemArtefact) * 4.3. [ItemMember](#ItemMember) * 4.3.1. [ItemMemberPublicAttributeGroup](#ItemMemberPublicAttributeGroup) * 4.3.2. [ItemMemberRoleConfidentialAttributeGroup](#ItemMemberRoleConfidentialAttributeGroup) * 4.3.3. [ItemMemberRolePrivateAttributeGroup](#ItemMemberRolePrivateAttributeGroup) * 4.4. [ItemCommitment](#ItemCommitment) * 4.4.1. [ItemCommitmentRoleConfidentialAttributeGroup](#ItemCommitmentRoleConfidentialAttributeGroup) * 4.4.2. [ItemCommitmentPrivateAttributeGroup](#ItemCommitmentPrivateAttributeGroup) * 4.5. [ItemDeposit](#ItemDeposit) * 4.5.1. [ItemDepositPublicAttributeGroup](#ItemDepositPublicAttributeGroup) * 4.5.2. [ItemDepositRoleConfidentialAttributeGroup](#ItemDepositRoleConfidentialAttributeGroup) * 4.5.3. [ItemDepositPrivateAttributeGroup](#ItemDepositPrivateAttributeGroup) * 4.6. [ItemEnum](#ItemEnum) * 4.7. [ItemPayments](#ItemPayments) * 4.7.1. [ItemPaymentsPublicAttributeGroup](#ItemPaymentsPublicAttributeGroup) * 4.7.2. [ItemPaymentsRoleConfidentialAttributeGroup](#ItemPaymentsRoleConfidentialAttributeGroup) * 4.7.3. [ItemPaymentsPrivateAttributeGroup](#ItemPaymentsPrivateAttributeGroup) * 4.8. [ItemPeer](#ItemPeer) * 4.8.1. [ItemPeerPublicAttributeGroup](#ItemPeerPublicAttributeGroup) * 4.8.2. [ItemPeerPrivateAttributeGroup](#ItemPeerPrivateAttributeGroup) * 4.9. [ItemProcess](#ItemProcess) * 4.9.1. [ItemProcessPublicAttributeGroup](#ItemProcessPublicAttributeGroup) * 5. [Encryption](#Encryption) * 5.1. [KeyEncryption](#KeyEncryption) * 5.2. [Aes256GcmIv96Bit](#Aes256GcmIv96Bit) * 6. [Messages](#Messages) * 6.1. [Message](#Message) * 6.2. [MessageConnect](#MessageConnect) * 6.3. [MessageGeneric](#MessageGeneric) * 6.4. [Pow](#Pow) * 6.5. [SharedProcess](#SharedProcess) * 6.6. [SharedPeer](#SharedPeer) * 7. [Relay](#Relay) * 8. [L1Node](#L1Node) * 8.1. [L1NodeMining](#L1NodeMining) * 8.2. [L2Node](#L2Node) * 8.3. [L2NodeMining](#L2NodeMining) * 8.4. [L2Certif](#L2Certif) * 8.5. [BlockCertif](#BlockCertif) * 9. [Metadata](#Metadata) * 9.1. [MetadataProcessublic](#MetadataProcessublic) * 9.2. [MetadataPrivate](#MetadataPrivate) * 9.3. [MetadataRoleConfidential](#MetadataRoleConfidential) * 9.4. [Amount](#Amount) * 9.5. [Number](#Number) * 10. [Request](#Request) * 11. [Pcd](#Pcd) * 11.1. [Pagination](#Pagination) * 11.2. [PcdItemGenericEnc](#PcdItemGenericEnc) * 11.2.1. [PcdItemEncAttributePublic](#PcdItemEncAttributePublic) * 11.2.2. [PcdItemEncAttributeRoleConfidential](#PcdItemEncAttributeRoleConfidential) * 11.2.3. [PcdItemEncAttributePrivate](#PcdItemEncAttributePrivate) * 12. [Prd](#Prd) * 12.1. [PrdList](#PrdList) * 12.2. [PrdUpdate](#PrdUpdate) * 12.3. [PrdResponse](#PrdResponse) * 12.4. [PrdConfirm](#PrdConfirm) * 12.5. [PrdMessage](#PrdMessage) * 12.6. [PrdResponse](#PrdResponse-1) * 13. [Roles](#Roles) * 13.1. [Role](#Role) * 13.2. [Conditions](#Conditions) * 13.2.1. [TransactionMode](#TransactionMode) * 13.2.2. [ConditionPayments](#ConditionPayments) * 13.2.3. [ConditionCommitment](#ConditionCommitment) * 13.2.4. [ConditionDeposit](#ConditionDeposit) * 13.2.5. [ConditionOrchestration](#ConditionOrchestration) * 13.2.6. [ConditionCap](#ConditionCap) * 13.2.7. [ConditionPrdAddressSet](#ConditionPrdAddressSet) * 13.2.8. [ConditionPublish](#ConditionPublish) * 13.3. [RolesGroup](#RolesGroup) * 13.3.1. [RoleArtefact](#RoleArtefact) * 13.3.2. [RoleDeposit](#RoleDeposit) * 13.3.3. [RoleCommitment](#RoleCommitment) * 13.3.4. [RoleMember](#RoleMember) * 13.4. [RolePeer](#RolePeer) * 13.4.1. [RolePayments](#RolePayments) * 13.4.2. [RoleProcess](#RoleProcess) * 14. [Relay side chain data streaming](#Relaysidechaindatastreaming) * 14.1. [Transaction](#Transaction) * 14.2. [Bloc](#Bloc) * 15. [Storage](#Storage) * 15.1. [StoragePublic](#StoragePublic) * 15.1.1. [StorageKeysPublic](#StorageKeysPublic) * 15.1.2. [StorageItemPeerPublic](#StorageItemPeerPublic) * 15.1.3. [StorageItemProcessPublic](#StorageItemProcessPublic) * 15.1.4. [StorageMessagePublic](#StorageMessagePublic) * 15.1.5. [StoragePcdPublic](#StoragePcdPublic) * 15.1.6. [StoragePrdPublic](#StoragePrdPublic) * 15.2. [StoragePrivate](#StoragePrivate) * 15.2.1. [StorageKeysPrivate](#StorageKeysPrivate) * 15.2.2. [StoragePeerPrivate](#StoragePeerPrivate) * 15.2.3. [StorageProcessPrivate](#StorageProcessPrivate) * 15.2.4. [StoragePcdPrivate](#StoragePcdPrivate) * 15.2.5. [StoragePrdPrivate](#StoragePrdPrivate) * 15.2.6. [StorageDecryptedSharedSecretKeyPrivate](#StorageDecryptedSharedSecretKeyPrivate) * 15.2.7. [StorageocketsPrivate](#StorageocketsPrivate) * 15.2.8. [StorageSocketClientListPrivate](#StorageSocketClientListPrivate) * 16. [12. Rust considerations](#Rustconsiderations) * 16.1. [General Implications for Project Objects](#GeneralImplicationsforProjectObjects) * 16.2. [Debug](#Debug) * 16.3. [Default](#Default) * 16.4. [PartialEq, Eq](#PartialEqEq) * 16.5. [Hash](#Hash) * 16.6. [PartialOrd, Ord](#PartialOrdOrd) * 17. [Todo](#Todo) ## 2. Documents de référence Voir [Doc_references.md](Doc_references.md). ## 3. Methods ### 3.1. DepositMethod | Attribute Name | Type | Option | | -------------- | ------------ | ------ | | `method` | ```String``` | | Pseudo-code: ```json { "method": "" } ``` ### 3.2. CommitmentMethod | Attribute Name | Type | Option | | -------------- | ------------ | ------ | | `method` | ```String``` | | Pseudo-code: ```json { "method": "" } ``` ### 3.3. PaymentsMethod | Attribute Name | Type | Option | | -------------- | ------------ | ------ | | `method` | ```String``` | | Pseudo-code: ```json { "method": "" } ``` ## 4. Items ### 4.1. Item | Attribute Name | Type | Option | | ----------------------------------- | ------------------------------ | ------ | | `uuid` | ```String``` | | | `version` | ```i64``` | | | `item_type` | ```String``` | | | `name` | ```String``` | | | `pagination_number_per_request_pcd` | ```u32``` | | | `metadata_Process_public` | ```MetadataProcessPublic``` | | | `metadata_role_confidential` | ```MetadataRoleConfidential``` | | | `metadata_private` | ```MetadataPrivate``` | | Pseudo-code: ```json { "uuid": "string", "version": 0, "item_type": "string", "name": "string", "pagination_number_per_request_pcd": 0, "metadata_Process_public": MetadataProcessublic, "metadata_role_confidential": MetadataRoleConfidential, "metadata_private": MetadataPrivate } ``` ### 4.2. ItemArtefact | Attribute Name | Type | Option | | ----------------------------------- | ----------------- | ------ | | `item` | ```Item``` | | | `public_attribute_group` | ```Vec``` | | | `role_confidential_attribute_group` | ```Vec``` | | | `private_attribute_group` | ```Vec``` | | Pseudo-code: ```json { "item": Item, "public_attribute_group": [], "role_confidential_attribute_group": [], "private_attribute_group": [] } ``` ### 4.3. ItemMember | Attribute Name | Type | Option | | ----------------------------------- | ---------------------------------------------- | ------ | | `item` | ```Item``` | | | `public_attribute_group` | ```ItemMemberPublicAttributeGroup``` | | | `role_confidential_attribute_group` | ```ItemMemberRoleConfidentialAttributeGroup``` | | | `private_attribute_group` | ```ItemMemberPrivateAttributeGroup``` | | Pseudo-code: ```json { "item": Item, "public_attribute_group": ItemMemberPublicAttributeGroup, "role_confidential_attribute_group": ItemMemberRoleConfidentialAttributeGroup, "private_attribute_group": ItemMemberPrivateAttributeGroup } ``` #### 4.3.1. ItemMemberPublicAttributeGroup | Attribute Name | Type | Option | | ------------------------------ | ----------------- | ------ | | `sp_address_public` | ```String``` | | | `sp_address_public_sig` | ```String``` | | | `sp_address_revoke_public` | ```String``` | | | `sp_address_revoke_public_sig` | ```String``` | | | `third_sp_address_list_public` | ```Vec``` | | | `data_size_max` | ```i64``` | | | `Payments_method_list_public` | ```Vec``` | | | `succession_process_hash` | ```String``` | | | `device_footprint` | String | | Pseudo-code: ```json { "sp_address_public": "", "sp_address_public_sig": "", "sp_address_revoke_public": "", "sp_address_revoke_public_sig": "", "third_sp_address_list_public": [], "data_size_max": 0, "Payments_method_list_public": [], "succession_process_hash": "", "device_footprint": "" } ``` #### 4.3.2. ItemMemberRoleConfidentialAttributeGroup | Attribute Name | Type | Option | | --------------------- | ------------ | ------ | | `shard_confidential` | ```String``` | yes | | `pre_id_confidential` | ```String``` | yes | Pseudo-code: ```json { "shard_confidential": "", "pre_id_confidential": "" } ``` #### 4.3.3. ItemMemberRolePrivateAttributeGroup | Attribute Name | Type | Option | | ------------------------ | ------------ | ------ | | `priv_key_mainnet_spend` | ```String``` | yes | | `priv_key_mainnet_scan` | ```String``` | yes | | `priv_key_signet_scan` | ```String``` | yes | Pseudo-code: ```json { "priv_key_mainnet_spend": "", "priv_key_mainnet_scan": "", "priv_key_signet_scan": "", } ``` ### 4.4. ItemCommitment | Attribute Name | Type | Option | | ----------------------------------- | -------------------------------------------------- | ------ | | `item` | ```Item``` | | | `public_attribute_group` | ```ItemCommitmentPublicAttributeGroup``` | | | `role_confidential_attribute_group` | ```ItemCommitmentRoleConfidentialAttributeGroup``` | | | `private_attribute_group` | ```ItemCommitmentPrivateAttributeGroup``` | | Pseudo-code: ```json { "item": Item, "public_attribute_group": ItemCommitmentPublicAttributeGroup, "role_confidential_attribute_group": ItemCommitmentRoleConfidentialAttributeGroup, "private_attribute_group": ItemCommitmentPrivateAttributeGroup } ``` #### 4.4.1. ItemCommitmentRoleConfidentialAttributeGroup | Attribute Name | Type | Option | | --------------------------- | ----------------- | ------ | | `payload_list_confidential` | ```Vec``` | | Pseudo-code: ```json { "payload_list_confidential": [] } ``` #### 4.4.2. ItemCommitmentPrivateAttributeGroup | Attribute Name | Type | Option | | ---------------------- | ----------------- | ------ | | `payload_list_private` | ```Vec``` | | Pseudo-code: ```json { "payload_list_private": [] } ``` ##### 4.2.1. ItemCommitmentPublicAttributeGroup | Attribute Name | Type | Option | | ---------------------------------- | ----------------- | ------ | | `for_sp_address_list` | ```Vec``` | | | `goal_list` | ```Vec``` | | | `provider_type` | ```String``` | | | `commitment_request_pcd_hash_list` | ```Vec``` | | | `ref_item_hash_list` | ```Vec``` | | | `ref_request_pcd_hash_list` | ```Vec``` | | | `payload_public_list` | ```Vec``` | | Pseudo-code: ```json { "for_sp_address_list": [], "goal_list": [], "provider_type": "", "commitment_request_pcd_hash_list": [], "ref_item_hash_list": [], "ref_request_pcd_hash_list": [], "payload_public_list": [] } ``` ### 4.5. ItemDeposit | Attribute Name | Type | Option | | ----------------------------------- | ----------------------------------------------- | ------ | | `item` | ```Item``` | | | `public_attribute_group` | ```ItemDepositPublicAttributeGroup``` | | | `role_confidential_attribute_group` | ```ItemDepositRoleConfidentialAttributeGroup``` | | | `private_attribute_group` | ```ItemDepositPrivateAttributeGroup``` | | Pseudo-code: ```json { "item": Item, "public_attribute_group": ItemDepositPublicAttributeGroup, "role_confidential_attribute_group": ItemDepositRoleConfidentialAttributeGroup, "private_attribute_group": ItemDepositPrivateAttributeGroup } ``` #### 4.5.1. ItemDepositPublicAttributeGroup | Attribute Name | Type | Option | | --------------------------- | ----------------- | ------ | | `for_sp_address_list` | ```Vec``` | | | `for_address_list` | ```Vec``` | | | `goal_list` | ```Vec``` | | | `provider_type` | ```String``` | | | `ref_item_hash_list` | ```Vec``` | | | `ref_request_pcd_hash_list` | ```Vec``` | | | `payload_list_public` | ```Vec``` | | | `audit_code_list_public` | ```Vec``` | | Pseudo-code: ```json { "for_sp_address_list": [], "for_address_list": [], "goal_list": [], "provider_type": "", "ref_item_hash_list": [], "ref_request_pcd_hash_list": [], "payload_list_public": [], "audit_code_list_public": [] } ``` #### 4.5.2. ItemDepositRoleConfidentialAttributeGroup | Attribute Name | Type | Option | | ------------------------------ | ----------------- | ------ | | `payload_list_confidential` | ```Vec``` | | | `audit_code_list_confidential` | ```Vec``` | | Pseudo-code: ```json { "payload_list_confidential": [], "audit_code_list_confidential": [] } ``` #### 4.5.3. ItemDepositPrivateAttributeGroup | Attribute Name | Type | Option | | ---------------------- | ----------------- | ------ | | `payload_list_private` | ```Vec``` | | | `audit_code_private` | ```String``` | | | Pseudo-code: | | | ```json { "payload_list_private": [], "audit_code_private": "" } ``` ### 4.6. ItemEnum * **```Process(ItemProcess)```**: Contains an item of type ItemProcess, representing a process. * **```Peer(ItemPeer)```**: Contains an item of type ItemPeer, representing a peer. * **```Member(ItemMember)```**: Contains an item of type ItemMember, representing a member. * **```Payments(ItemPayments)```**: Contains an item of type ItemPayments, representing a Payments. * **```Deposit(ItemDeposit)```**: Contains an item of type ItemDeposit, representing a deposit. * **```Artefact(ItemArtefact)```**: Contains an item of type ItemArtefact, representing an artefact. * **```Commitment(ItemCommitment)```**: Contains an item of type ItemCommitment, representing a commitment. ### 4.7. ItemPayments | Attribute Name | Type | Option | | ----------------------------------- | ----------------------------------------------- | ------ | | `item` | ```Item``` | | | `public_attribute_group` | ```ItemPaymentsPublicAttributeGroup``` | | | `role_confidential_attribute_group` | ```ItemPaymentsRoleConfidentialAttributeGroup``` | | | `private_attribute_group` | ```ItemPaymentsPrivateAttributeGroup``` | | Pseudo-code: ```json { "item": Item, "public_attribute_group": ItemPaymentsPublicAttributeGroup, "role_confidential_attribute_group": ItemPaymentsRoleConfidentialAttributeGroup, "private_attribute_group": ItemPaymentsPrivateAttributeGroup } ``` #### 4.7.1. ItemPaymentsPublicAttributeGroup | Attribute Name | Type | Option | | ---------------------------------- | ----------------- | ------ | | `for_sp_address_list` | ```Vec``` | | | `goal_list` | ```Vec``` | | | `provider_type` | ```String``` | | | `commitment_request_pcd_hash_list` | ```Vec``` | | | `order_request_pcd_hash_list` | ```Vec``` | | | `invoice_request_pcd_hash_list` | ```Vec``` | | | `pay_request_pcd_hash_list` | ```Vec``` | | | `ref_item_hash_list` | ```Vec``` | | | `ref_request_pcd_hash_list` | ```Vec``` | | | `payload_list_public` | ```Vec``` | | | `audit_code_list_public` | ```Vec``` | | Pseudo-code: ```json ``` #### 4.7.2. ItemPaymentsRoleConfidentialAttributeGroup | Attribute Name | Type | Option | | ------------------------------ | ----------------- | ------ | | `payload_list_confidential` | ```Vec``` | | | `audit_code_list_confidential` | ```Vec``` | | Pseudo-code: ```json { "for_sp_address_list": [], "goal_list": [], "provider_type": "", "commitment_request_pcd_hash_list": [], "order_request_pcd_hash_list": [], "invoice_request_pcd_hash_list": [], "pay_request_pcd_hash_list": [], "ref_item_hash_list": [], "ref_request_pcd_hash_list": [], "payload_list_public": [], "audit_code_list_public": [] } ``` #### 4.7.3. ItemPaymentsPrivateAttributeGroup | Attribute Name | Type | Option | | ---------------------- | ----------------- | ------ | | `payload_list_private` | ```Vec``` | | | `audit_code_private` | ```String``` | | Pseudo-code: ```json { "payload_list_private": [], "audit_code_private": "" } ``` ### 4.8. ItemPeer | Attribute Name | Type | Option | | ------------------------- | ----------------------------------- | ------ | | `item` | ```Item``` | | | `layer_list` | ```Vec``` | | | `public_attribute_group` | ```ItemPeerPublicAttributeGroup``` | | | `private_attribute_group` | ```ItemPeerPrivateAttributeGroup``` | | Pseudo-code: ```json { "item": Item, "layer_list": [], "public_attribute_group": ItemPeerPublicAttributeGroup, "private_attribute_group": ItemPeerPrivateAttributeGroup } ``` #### 4.8.1. ItemPeerPublicAttributeGroup | Attribute Name | Type | Option | | ------------------------------ | ----------------- | ------ | | `sp_address` | ```String``` | | | `domain` | ```String``` | | | `ip_address` | ```String``` | | | `pow_difficulty` | ```u32``` | | | `pow_pattern` | ```String``` | | | `pow_prefix` | ```String``` | | | `data_size_max` | ```i64``` | | | `timestamp_delay_max` | ```u64``` | | | `daily_hash_list` | ```Vec``` | | | `daily_sp_tx_mine_list` | ```Vec``` | | | `daily_sp_tx_mine_reward_list` | ```Vec``` | | | `tx_by_blocs_list` | ```Vec``` | | Pseudo-code: ```json { "sp_address": "", "domain": "", "ip_address": "", "pow_difficulty": 0, "pow_pattern": "", "pow_prefix": "", "data_size_max": 0, "timestamp_delay_max": 0, "daily_hash_list": [], "daily_sp_tx_mine_list": [], "daily_sp_tx_mine_reward_list": [], "tx_by_blocs_list": [] } ``` #### 4.8.2. ItemPeerPrivateAttributeGroup | Attribute Name | Type | Option | | -------------- | ------------ | ------ | | `config` | ```String``` | | Pseudo-code: ```json { "config": "" } ``` ### 4.9. ItemProcess | Attribute Name | Type | Option | | ------------------------------------- | ------------------------------------- | ------ | | `item` | ```Item``` | | | `item_process_public_attribute_group` | ```ItemProcessPublicAttributeGroup``` | | Pseudo-code: ```json { "item": {}, "item_process_public_attribute_group": ItemProcessPublicAttributeGroup } ``` #### 4.9.1. ItemProcessPublicAttributeGroup | Attribute Name | Type | Option | | -------------- | ---------- | ------ | | `roles_group` | RolesGroup | | Pseudo-code: ```json { "roles_group": {} } ``` ## 5. Encryption ### 5.1. KeyEncryption | Attribute Name | Type | Option | | ---------------- | ------------ | ------ | | `attribute_name` | ```String``` | Yes | | `key` | ```String``` | Yes | | `algorithm` | ```String``` | Yes | Pseudo-code: ```json { "attribute_name": "", "key": "", "algorithm": "" } ``` ### 5.2. Aes256GcmIv96Bit | Attribute Name | Type | Option | | -------------- | --------------------------- | ------ | | `key` | ```GenericArray``` | | Pseudo-code: ```json { "key": [] } ``` ## 6. Messages ### 6.1. Message | Attribute Name | Type | Option | | -------------- | -------------------- | ------ | | `message` | ```MessageGeneric``` | | | `request_enc` | ```String``` | | Pseudo-code: ```json { "message": Message, "request_enc": "" } ``` ### 6.2. MessageConnect | Attribute Name | Type | Option | | -------------- | -------------------- | ------ | | message | ```MessageGeneric``` | | Pseudo-code: ```json { "message": Message } ``` ### 6.3. MessageGeneric | Attribute Name | Type | Option | | ---------------------- | ------------------------ | ------ | | `shared_peer_list` | ```Vec``` | | | `shared_process_list` | ```Vec``` | | | `faucet_sp_address` | ```String``` | | | `pow` | ```Pow``` | | | `raw_transaction_list` | ```Vec``` | Yes | Pseudo-code: ```json { "shared_peer_list": [], "shared_process_list": [], "faucet_sp_address": "", "pow": {}, "raw_transaction_list": [] } ``` ### 6.4. Pow | Attribute Name | Type | Option | | -------------- | ------------ | ------ | | `data_hash` | ```String``` | | | `timestamp` | ```u64``` | Yes | | `nonce` | ```u64``` | Yes | | `pattern` | ```String``` | | | `difficulty` | ```usize``` | | Pseudo-code: ```json { "data_hash": "", "timestamp": 0, "nonce": 0, "pattern": "", "difficulty": 0 } ``` ### 6.5. SharedProcess | Attribute Name | Type | Option | | -------------- | ------------------ | ------ | | `process_list` | `Vec` | | Pseudo-code: ```json { "process_list": [] } ``` ### 6.6. SharedPeer | Attribute Name | Type | Option | | -------------- | -------------- | ------ | | `domain` | ```String``` | Yes | | `address_ip` | ```String``` | | | `relay` | ```Relay``` | | | `l1_node` | ```L1Node``` | Yes | | `l1_miner` | ```L1Miner``` | Yes | | `l2_node_list` | ```[L2Node]``` | | Pseudo-code: ```json { "domain": "", "address_ip": "", "relay": Relay, "l1_node": L1Node, "l1_miner": L1Miner, "l2_node_list": [] } ``` ## 7. Relay | Attribute Name | Type | Option | | ---------------- | ------------ | ------ | | `address_port` | ```u16``` | | | `data_max_size` | ```usize``` | | | `pow_difficulty` | ```u32``` | | | `pow_pattern` | ```String``` | | | `pow_prefix` | ```String``` | | | `pow_timeout` | ```u32``` | | Pseudo-code: ```json { "address_port": 0, "data_max_size": 0, "pow_difficulty": 0, "pow_pattern": "", "pow_prefix": "", "pow_timeout": 0, } ``` ## 8. L1Node | Attribute Name | Type | Option | | ------------------------- | ----------------- | ------ | | `address_port` | ```u16``` | | | `explorer_base_url` | ```String``` | | | `l2_mining` | ```L2Mining``` | Yes | | `l2_certif` | ```L2Certif``` | Yes | | `reward_received_tx_list` | ```Vec``` | Yes | | `reward_send_tx_list` | ```Vec``` | Yes | | `anchorage_tx_list` | ```Vec``` | Yes | | `spend_key` | ```String``` | Yes | | `scan_key` | ```String``` | Yes | Pseudo-code: ```json { "address_port": 0, "explorer_base_url": "", "l2_mining": L2Mining, "l2_certif": L2Certif, "reward_received_tx_list": [], "reward_send_tx_list": [], "anchorage_tx_list": [], "anchorage_tx_list": [], "spend_key": "", "scan_key": "" } ``` ### 8.1. L1NodeMining | Attribute Name | Type | Option | | ------------------ | ----------------- | ------ | | `block_mined_list` | ```Vec``` | | | `spend_key` | ```String``` | Yes | | `scan_key` | ```String``` | Yes | Pseudo-code: ```json { "block_mined_list": [], "mining_reward_tx_list": [], "spend_key": "", "scan_key": "" } ``` ### 8.2. L2Node | Attribute Name | Type | Option | | ---------------------- | ------------ | ------ | | `address_port` | ```u16``` | | | `explorer_base_url` | ```String``` | | | `sp_address_anchorage` | ```String``` | | | `sp_address_reward` | ```String``` | | | `nbits` | ```u32``` | | | `magic_number` | ```u32``` | | | `challenge` | ```String``` | | | `spend_key` | ```String``` | Yes | | `scan_key` | ```String``` | Yes | Pseudo-code: ```json { "address_port": 0, "explorer_base_url": "", "sp_address_anchorage": "", "sp_address_reward": "", "nbits": 0, "magic_number": 0, "challenge": "", "spend_key": "", "scan_key": "" } ``` ### 8.3. L2NodeMining | Attribute Name | Type | Option | | ------------------------- | ----------------- | ------ | | `sp_address_minig_reward` | ```string``` | | | `sp_address_refund` | ```string``` | | | `block_hash_mined_list` | ```Vec``` | | | `spend_key` | ```String``` | Yes | | `scan_key` | ```String``` | Yes | Pseudo-code: ```json { "sp_address_minig_reward": "", "sp_address_refund": "", "block_hash_mined_list": [], "spend_key": "", "scan_key": "" } ``` ### 8.4. L2Certif | Attribute Name | Type | Option | | -------------------- | ----------------- | ------ | | `l2_block_hash_list` | ```Vec``` | | | `l1_tx` | ```String``` | Yes | Pseudo-code: ```json { "l2_block_hash_list": [], "l1_tx": "" } ``` ### 8.5. BlockCertif | Attribute Name | Type | Option | | ----------------- | ----------------- | ------ | | `block_hash_list` | ```Vec``` | | | `certif_hash` | ```Vec``` | | | `l1_tx` | ```String``` | | Pseudo-code: ```json { "sp_address_certif_l1": "", "sp_address_refunded": "", "block_certified_list": [], "certif_l1_tx_list": [], "refunded_tx_list": [], "anchorage_tx_list": [], "spend_key": "", "scan_key": "" } ``` ## 9. Metadata | Attribute Name | Type | Option | | ---------------------- | ------------------------ | ------ | | `tag_list` | ```Vec``` | | | `zone_list` | ```Vec``` | | | `label_list` | ```Vec``` | | | `ref_list` | ```Vec``` | | | `data_list` | ```Vec``` | | | `amount` | ```Amount``` | | | `number` | ```Number``` | | | `render_template_list` | ```Vec``` | | | `legal_text_list` | ```Vec``` | | | `key_list` | ```Vec``` | | Pseudo-code: ```json { "tag_list": [], "zone_list": [], "label_list": [], "ref_list": [], "data_list": [], "amount": Amount, "number": Number, "render_template_list": [], "legal_text_list": [], "key_list": [] } ``` ### 9.1. MetadataProcessublic | Attribute Name | Type | Option | | -------------- | -------------- | ------ | | `meta_data` | ```MetaData``` | | Pseudo-code: ```json { "meta_data": MetaData } ``` ### 9.2. MetadataPrivate | Attribute Name | Type | Option | | -------------- | -------------- | ------ | | `meta_data` | ```MetaData``` | | Pseudo-code: ```json { "meta_data": MetaData } ``` ### 9.3. MetadataRoleConfidential | Attribute Name | Type | Option | | -------------- | -------------- | ------ | | `meta_data` | ```MetaData``` | | Pseudo-code: ```json { "meta_data": MetaData } ``` ### 9.4. Amount | Attribute Name | Type | Option | | -------------------- | ----------------- | ------ | | `timestamp` | ```u64``` | | | `change_source_list` | ```Vec``` | | | `amount_cent` | ```i64``` | | | `amount_unit` | ```String``` | | | `amount_unit_ref` | ```String``` | | Pseudo-code: ```json { "timestamp": 0, "change_source_list": [], "amount_cent": 0, "amount_unit": "", "amount_unit_ref": "" } ``` ### 9.5. Number | Attribute Name | Type | Option | | -------------- | ------------- | ------ | | `fixed_state` | ```boolean``` | | | `number` | ```i32``` | | | `number_unit` | ```String``` | | Pseudo-code: ```json { "fixed_state": false, "number": 0, "number_unit": "" } ``` ## 10. Request | Attribute Name | Type | Option | | ---------------------------- | ------------ | ------ | | `item_name` | ```String``` | Yes | | `request_type` | ```String``` | | | `version` | ```i64``` | | | `process_hash` | ```String``` | | | `request_pcd_reference_hash` | ```String``` | Yes | | `request_pcd_origin_hash` | ```String``` | Yes | | `request_prd_reference_hash` | ```String``` | Yes | | `request_prd_origin_hash` | ```String``` | Yes | | `item_reference_hash` | ```String``` | Yes | Pseudo-code: ```json { "item_name": "", "request_type": "", "version": 0, "process_hash": "", "request_pcd_reference_hash": "", "request_pcd_origin_hash": "", "request_prd_reference_hash": "", "request_prd_origin_hash": "", "item_reference_hash": "" } ``` ## 11. Pcd | Attribute Name | Type | Option | | --------------- | ------------------------------------ | ------ | | `request` | ```Request``` | | | `item_enc_list` | ```Vec< PcdItemGenericEnc>``` | | | `pagination` | ```Pagination``` | Yes | Pseudo-code: ```json { "request": Request, "item_enc_list": [], "pagination": {Pagination } ``` ### 11.1. Pagination | Attribute Name | Type | Option | | -------------- | ----------- | ------ | | `start` | ```usize``` | | | `number` | ```usize``` | | | `page_index` | ```usize``` | | | `page_total` | ```usize``` | | Pseudo-code: ```json { "start": 0, "number": 0, "page_index": 0, "page_total": 0 } ``` ### 11.2. PcdItemGenericEnc | Attribute Name | Type | Option | | ------------------------------------------------------- | ------------------------------------------------------ | ------ | | `version` | ```i64``` | | | `item_type` | ```String``` | | | `item_name` | `String` | | | `name` | ```String``` | | | `request_pcd_item_enc_attribute_public_list` | ```Vec< PcdItemEncAttributePublic>``` | Yes | | `request_pcd_item_enc_attribute_role_confidential_list` | ```Vec< PcdItemEncAttributeRoleConfidential>``` | Yes | | `request_pcd_item_enc_attribute_private_list` | ```Vec< PcdItemEncAttributePrivate>``` | Yes | Pseudo-code: ```json { "version": 0, "item_type": "", "name": "", "request_pcd_item_enc_attribute_public_list": [], "request_pcd_item_enc_attribute_role_confidential_list": [], "request_pcd_item_enc_attribute_private_list": [] } ``` #### 11.2.1. PcdItemEncAttributePublic | Attribute Name | Type | Option | | ---------------- | ------------ | ------ | | `attribute_name` | ```String``` | | | `data_enc` | ```String``` | Yes | | `key` | ```String``` | Yes | | `data` | ```String``` | Yes | Pseudo-code: ```json { "attribute_name": "", "data_enc": "" } ``` #### 11.2.2. PcdItemEncAttributeRoleConfidential | Attribute Name | Type | Option | | ---------------- | ------------ | ------ | | `attribute_name` | ```String``` | | | `data_enc` | ```String``` | Yes | | `key` | ```String``` | Yes | | `data` | ```String``` | Yes | Pseudo-code: ```json { "attribute_name": "", "data_enc": "" } ``` #### 11.2.3. PcdItemEncAttributePrivate | Attribute Name | Type | Option | | ---------------- | ------------ | ------ | | `attribute_name` | ```String``` | | | `data_enc` | ```String``` | Yes | | `key` | ```String``` | Yes | | `data` | ```String``` | Yes | Pseudo-code: ```json { "attribute_name": "", "data_enc": "" } ``` ## 12. Prd | Attribute Name | Type | Option | | -------------------------------------------------------------------------- | ----------------- | ------ | | `request` | ```Request``` | | | `sig_value` | ```String``` | | | `request_pcd_reference_keys_role_confidential_list_confidential` | ```Vec``` | | | `request_pcd_origin_hash_keys_role_confidential_list_confidential` | ```Vec``` | | | `message_public` | ```String``` | Yes | | `message_confidential` | ```String``` | Yes | | `message_private` | ```String``` | Yes | | `sp_address_to` | ```String``` | | | `sp_address_from` | ```String``` | | | `sp_address_reply` | ```String``` | | | `timestamp_declared` | ```u64``` | | | `role_name_from` | ```String``` | | | `role_name_to` | ```String``` | | | `Payments_method_confidential` | ```String``` | Yes | | `deposit_method_confidential` | ```String``` | Yes | | `commitment_method_confidential` | ```String``` | Yes | | `Payments_request_pcd_hash_list_confidential` | ```Vec``` | Yes | | `cap_request_pcd_hash_list_confidential` | ```Vec``` | Yes | | `deposit_request_pcd_hash_list_confidential` | ```Vec``` | Yes | | `commitment_request_pcd_hash_list_confidential` | ```Vec``` | Yes | | `ask_Payments_method_confidential` | ```String``` | Yes | | `ask_deposit_method_confidential` | ```String``` | Yes | | `ask_commitment_method_confidential` | ```String``` | Yes | | `certif_key_confidential` | ```String``` | Yes | | `device_footprint_enc_by_sp_shared_secret` | ```String``` | | Pseudo-code: ```json { "request": {}, "sig_value": "", "request_pcd_reference_keys_role_confidential_list_confidential": [], "request_pcd_origin_hash_keys_role_confidential_list_confidential": [], "message_public": "", "message_confidential": "", "message_private": "", "sp_address_to": "", "sp_address_from": "", "sp_address_reply": "", "timestamp_declared": 0, "role_name_from": "", "role_name_to": "", "Payments_method_confidential": "", "deposit_method_confidential": "", "commitment_method_confidential": "", "Payments_request_pcd_hash_list_confidential": [], "cap_request_pcd_hash_list_confidential": [], "deposit_request_pcd_hash_list_confidential": [], "commitment_request_pcd_hash_list_confidential": [], "ask_Payments_method_confidential": "", "ask_deposit_method_confidential": "", "ask_commitment_method_confidential": "", "certif_key_confidential": "", "device_footprint_enc_by_sp_shared_secret": "" } ``` ### 12.1. PrdList | Attribute Name | Type | Option | | ------------------------------------- | ---------------- | ------ | | `request_prd` | ```Prd``` | | | `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": Prd, "item_member_enc_by_sp_shared_secret": "", "pagination_start": 0, "pagination_stop": 0, "sub_pagination_start": 0, "sub_pagination_stop": 0 } ``` ### 12.2. PrdUpdate | Attribute Name | Type | Option | | -------------- | ---------------- | ------ | | `request_prd` | ```Prd``` | | Pseudo-code: ```json { "request_prd": Prd } ``` ### 12.3. PrdResponse | Attribute Name | Type | Option | | ------------------------------------------- | ---------------- | ------ | | `request_prd` | ```Prd``` | | | `shared_secret_key_enc_by_sp_shared_secret` | ```String``` | Yes | | `shard_enc_by_sp_shared_secret` | ```String``` | Yes | Pseudo-code: ```json { "request_prd": Prd, "sig_value": "", "shared_secret_key_enc_by_sp_shared_secret": "", "shard_enc_by_sp_shared_secret": "" } ``` ### 12.4. PrdConfirm | Attribute Name | Type | Option | | ----------------------------------- | ---------------- | ------ | | `request_prd` | ```Prd``` | | | `code_confirm_confidential` | ```String``` | Yes | Pseudo-code: ```json { "request_prd": Prd, "code_confirm_confidential": "" } ``` ### 12.5. PrdMessage | Attribute Name | Type | Option | | ---------------------- | ----------------- | ------ | | `request_prd` | ```Prd``` | | | `raw_transaction_list` | ```Vec``` | Yes | Pseudo-code: ```json { "request_prd": Prd, "raw_transaction_list": [] } ``` ### 12.6. PrdResponse | Attribute Name | Type | Option | | -------------- | ---------------- | ------ | | `request_prd` | ```Prd``` | | | `sig_value` | ```String``` | | Pseudo-code: ```json { "request_prd": Prd, "sig_value": "" } ``` ## 13. Roles ### 13.1. Role | Attribute Name | Type | Option | | ------------------------------------- | --------------------------------- | ------ | | `item` | ```Item``` | | | `sp_output_salt_enc` | ```string``` | Yes | | `required_2fa` | ```bool``` | | | `validation_timeout` | ```u64``` | Yes | | `condition_prd_address_set_list` | ```Vec``` | | | `condition_publish_list` | ```Vec``` | Yes | | `condition_cap_list` | ```Vec``` | Yes | | `condition_Payments_list` | ```Vec``` | Yes | | `condition_commitment_list` | ```Vec``` | Yes | | `condition_attribute_encryption_list` | ```Vec``` | | | `condition_orchestration_list` | ```Vec``` | Yes | | `role_succession` | ```String``` | Yes | | `role_resolve` | ```String``` | Yes | | `role_renew` | ```String``` | Yes | Pseudo-code: ```json { "item": Item, "sp_output_salt_enc": "", "required_2fa": false, "validation_timeout": 0, "condition_prd_address_set_list": [], "condition_publish_list": [], "condition_cap_list": [], "condition_Payments_list": [], "condition_commitment_list": [], "condition_attribute_encryption_list": [], "condition_orchestration_list": [], "role_succession": "", "role_resolve": "", "role_renew": "" } ``` ### 13.2. Conditions #### 13.2.1. TransactionMode | Attribute Name | Type | Option | | ---------------- | ----------------- | ------ | | `amount` | ```Amount``` | Yes | | `number` | ```Number``` | Yes | | `hash_ok_list` | ```Vec``` | Yes | | `hash_ko_list` | ```Vec``` | Yes | | `hash_none_list` | ```Vec``` | Yes | | `from_list` | ```Vec``` | | | `from_type` | ```String``` | | | `from_method` | ```String``` | | | `to_list` | ```Vec``` | | | `to_type` | ```String``` | | | `to_method` | ```String``` | | Pseudo-code: ```json { "amount": Amount, "number": Number, "hash_ok_list": [], "hash_ko_list": [], "hash_none_list": [], "from_list": [], "from_type": "", "from_method": "", "to_list": [], "to_type": "", "to_method": "" } ``` #### 13.2.2. ConditionPayments | Attribute Name | Type | Option | | -------------------------- | ----------------------------------- | ------ | | `request_prd_type` | ```String``` | | | `transaction_mode` | ```TransactionMode``` | | | `Payments_proof_validation` | ```ConditionPrdAddressSet``` | | | `condition_deposit_list` | ```Vec``` | Yes | Pseudo-code: ```json { "request_prd_type": "", "transaction_mode": TransactionMode, "Payments_proof_validation": ConditionPrdAddressSet, "condition_deposit_list": [] } ``` #### 13.2.3. ConditionCommitment | Attribute Name | Type | Option | | -------------------------- | ----------------------------------- | ------ | | `request_prd_type` | ```String``` | | | `transaction_mode` | ```TransactionMode``` | | | `Payments_proof_validation` | ```ConditionPrdAddressSet``` | | Pseudo-code: ```json { "request_prd_type": "", "transaction_mode": TransactionMode, "Payments_proof_validation": ConditionPrdAddressSet } ``` #### 13.2.4. ConditionDeposit | Attribute Name | Type | Option | | -------------------------- | ----------------------------------- | ------ | | `request_prd_type` | ```String``` | | | `transaction_mode` | ```TransactionMode``` | | | `Payments_proof_validation` | ```ConditionPrdAddressSet``` | | Pseudo-code: ```json { "request_prd_type": "", "transaction_mode": TransactionMode, "Payments_proof_validation": ConditionPrdAddressSet } ``` #### 13.2.5. ConditionOrchestration | Attribute Name | Type | Option | | -------------------------- | ----------------------------------- | ------ | | `request_prd_type` | ```String``` | | | `role_ok` | ```String``` | | | `role_ko` | ```String``` | | | `Payments_proof_validation` | ```ConditionPrdAddressSet``` | | Pseudo-code: ```json { "request_prd_type": "", "role_ok": "", "role_ko": "", "Payments_proof_validation": ConditionPrdAddressSet } ``` #### 13.2.6. ConditionCap | Attribute Name | Type | Option | | -------------------------- | ----------------------------------- | ------ | | `request_prd_type` | ```String``` | | | `transaction_mode` | ```TransactionMode``` | | | `Payments_proof_validation` | ```ConditionPrdAddressSet``` | | Pseudo-code: ```json { "request_prd_type": "", "transaction_mode": "", "Payments_proof_validation": ConditionPrdAddressSet } ``` #### 13.2.7. ConditionPrdAddressSet | Attribute Name | Type | Option | | ----------------------------------------------- | ----------------- | ------ | | `request_prd_type` | ```String``` | | | `from_role` | ```String``` | Yes | | `request_prd_sp_address_list` | ```Vec``` | | | `request_prd_sp_address_required_list` | ```Vec``` | | | `request_prd_sp_address_quota` | ```i32``` | | | `request_prd_value_ok_list` | ```Vec``` | | | `request_prd_value_ko_list` | ```Vec``` | | | `request_prd_value_none_list` | ```Vec``` | | | `request_prd_value_auto_ok` | ```boolean``` | | | `request_prd_value_auto_ko` | ```boolean``` | | | `request_prd_value_auto_none` | ```boolean``` | | | `request_prd_sp_address_value_min` | ```i64``` | Yes | | `request_prd_sp_address_value_min_ok` | ```boolean``` | Yes | | `request_prd_sp_adddress_value_ok_min_per` | ```i64``` | Yes | | `request_prd_sp_address_value_ok_max` | ```i64``` | Yes | | `request_prd_sp_adderss_value_ko_max_per` | ```i64``` | Yes | | `request_prd_sp_address_value_ko_max` | ```i64``` | Yes | | `request_prd_sp_address_value_none_max` | ```i64``` | Yes | | `request_prd_sp_adderss_value_none_max_per` | ```i64``` | Yes | | `request_prd_sp_address_score_min` | ```i32``` | Yes | | `request_prd_sp_address_score_min_min_required` | ```i32``` | Yes | | `request_prd_sp_address_score_min_min_ok` | ```boolean``` | Yes | | `request_prd_sp_address_score_min_min_per` | ```i64``` | Yes | Pseudo-code: ```json { "request_prd_type": "", "from_role": "", "request_prd_sp_address_list": [], "request_prd_sp_address_required_list": [], "request_prd_sp_address_quota": 0, "request_prd_value_ok_list": [], "request_prd_value_ko_list": [], "request_prd_value_none_list": [], "request_prd_value_auto_ok": false, "request_prd_value_auto_ko": false, "request_prd_value_auto_none": false, "request_prd_sp_address_value_min": 0, "request_prd_sp_address_value_min_ok": false, "request_prd_sp_adddress_value_ok_min_per": 0, "request_prd_sp_address_value_ok_max": 0, "request_prd_sp_adderss_value_ko_max_per": 0, "request_prd_sp_address_value_ko_max": 0, "request_prd_sp_address_value_none_max": 0, "request_prd_sp_adderss_value_none_max_per": 0, "request_prd_sp_address_score_min": 0, "request_prd_sp_address_score_min_min_required": 0, "request_prd_sp_address_score_min_min_ok": false, "request_prd_sp_address_score_min_min_per": 0 } ``` #### 13.2.8. ConditionPublish | Attribute Name | Type | Option | | --------------------------------- | ------------ | ------ | | `request_prd_type` | ```String``` | | | `request_pcd_data_size_max_unit` | ```String``` | | | `request_pcd_data_size_max_total` | ```i64``` | | | `request_pcd_number_min` | ```i32``` | | | `request_pcd_number_max` | ```i32``` | | | `request_pcd_amount_max_total` | ```Amount``` | | | `request_prd_waiting_timeout` | ```u64``` | | | `request_pcd_waiting_timeout` | ```u64``` | | Pseudo-code: ```json { "request_prd_type": "", "request_pcd_data_size_max_unit": "", "request_pcd_data_size_max_total": 0, "request_pcd_number_min": 0, "request_pcd_number_max": 0, "request_pcd_amount_max_total": Amount, "request_prd_waiting_timeout": 0, "request_pcd_waiting_timeout": 0 } ``` ### 13.3. RolesGroup RolesGroup outlines a collection of roles. | Attribute Name | Type | Option | | -------------------- | ----------------------- | ------ | | `role_peer` | ```RolePeer``` | | | `role_member` | ```RoleMember``` | | | `role_process` | ```RoleProcess``` | | | `role_artefact_list` | ```Vec``` | | Pseudo-code: ```json { "role_peer": RolePeer, "role_member": RoleMember, "role_process": RoleProcess, "role_artefact_list": [] } ``` #### 13.3.1. RoleArtefact | Attribute Name | Type | Option | | -------------- | ------------ | ------ | | `item_name` | ```String``` | | | `role` | ```Role``` | | Pseudo-code: ```json { "item_name": "Nom de l'élément", "role": Role } ``` #### 13.3.2. RoleDeposit | Attribute Name | Type | Option | | -------------- | ------------ | ------ | | `item_name` | ```String``` | | | `role` | ```Role``` | | | Pseudo-code: | | | ```json { "item_name": "Nom de l'élément", "role": Role } ``` #### 13.3.3. RoleCommitment | Attribute Name | Type | Option | | -------------- | ------------ | ------ | | `item_name` | ```String``` | | | `role` | ```Role``` | | Pseudo-code: ```json { "item_name": "Nom de l'élément", "role": Role } ``` #### 13.3.4. RoleMember | Attribute Name | Type | Option | | -------------- | ------------ | ------ | | `item_name` | ```String``` | | | `role` | ```Role``` | | Pseudo-code: ```json { "item_name": "Nom de l'élément", "role": Role } ``` ### 13.4. RolePeer | Attribute Name | Type | Option | | -------------- | ------------ | ------ | | `item_name` | ```String``` | | | `role` | ```Role``` | | Pseudo-code: ```json { "item_name": "Nom de l'élément", "role": Role } ``` #### 13.4.1. RolePayments | Attribute Name | Type | Option | | -------------- | ------------ | ------ | | `item_name` | ```String``` | | | `role` | ```Role``` | | Pseudo-code: ```json { "item_name": "Nom de l'élément", "role": Role } ``` #### 13.4.2. RoleProcess | Attribute Name | Type | Option | | -------------- | ------------ | ------ | | `item_name` | ```String``` | | | `role` | ```Role``` | | Pseudo-code: ```json { "item_name": "", "role": Role } ``` ## 14. Relay side chain data streaming ### 14.1. Transaction | Attribute Name | Type | Option | | -------------- | ------------ | ------ | | `raw_tx` | ```String``` | | | `role` | ```String``` | | Pseudo-code: ```json { "raw_tx": "", "pubkey": "" } ``` ### 14.2. Bloc | Attribute Name | Type | Option | | -------------- | ------------ | ------ | | `raw_block` | ```String``` | | Pseudo-code: ```json { "raw_block": "" } ``` ## 15. Storage ### 15.1. StoragePublic #### 15.1.1. StorageKeysPublic | Attribute Name | Type | Option | | ----------------------- | ---------------------------------- | ------ | | `hash` | ```String``` | | | `label` | ```String``` | Yes | | `device_footprint` | ```String``` | Yes | | `third_party_list` | ```Vec``` | | | `key_revoke_sp_address` | ```String``` | | Pseudo-code: ```json [ { "hash": "", "label": "", "device_footprint": "", "third_party_list": [], "key_revoke_sp_address": "" } ] ``` ##### StoragethirdPartyPublic | Attribute Name | Type | Option | | ------------------ | ------------ | ------ | | `device_footprint` | ```String``` | Yes | | `sp_address` | ```String``` | | Pseudo-code: ```json { "device_footprint": "", "sp_address": "" } ``` #### 15.1.2. StorageItemPeerPublic Pseudo-code: ```json [ { "hash": "", "peer: ItemPeer } ] ``` #### 15.1.3. StorageItemProcessPublic Pseudo-code: ```json [ { "hash": "", "process: ItemProcess } ] ``` #### 15.1.4. StorageMessagePublic | Attribute Name | Type | Option | | ---------------------------- | ------------------------------------ | ------ | | `me_sender` | ```boolean``` | | | `process_hash` | ```String``` | | | `item_name` | ```String``` | | | `request_type` | ```String``` | | | `timestamp` | ```u64``` | | | `message_hash` | ```String``` | | | `pcd_hash` | ```String``` | Yes | | `prd_hash` | ```String``` | Yes | | `request_pcd_reference_hash` | ```String``` | Yes | | `request_pcd_origin_hash` | ```String``` | Yes | | `request_prd_reference_hash` | ```String``` | Yes | | `request_prd_origin_hash` | ```String``` | Yes | | `item_reference_hash` | ```String``` | Yes | | `prd_sig_value` | ```String``` | Yes | | `prd_sp_address_from` | ```String``` | Yes | | `prd_role_from` | ```String``` | Yes | | `prd_sp_address_to` | ```String``` | Yes | | `prd_role_to` | ```String``` | Yes | | `prd_tx_sp` | ```String``` | Yes | | `peer_list` | ```Vec``` | | Pseudo-code: ```json [ { "hash": "", "message": StorageMessagePublic, "validation_status": "pending|ok|ko" } ] ``` ##### StorageMessagesPeerPublic | Attribute Name | Type | Option | | ------------------- | ------------- | ------ | | `domain` | ```String``` | | | `ip` | ```String``` | | | `port` | ```String``` | | | `timestamp` | ```u64``` | | | `sender` | ```boolean``` | | | `validation_status` | ```String``` | | Pseudo-code: ```json { "domain": "", "ip": "", "port": "", "timestamp": 0, "sender": false, "validation_status": "pending|ok|ko" }], } ``` #### 15.1.5. StoragePcdPublic Pseudo-code: ```json [ { "hash": "", "validation_status": "pending|ok|ko" } ] ``` #### 15.1.6. StoragePrdPublic ##### 4.6.1. StoragePrdListPublic Pseudo-code: ```json [ { "hash": "", "request_prd": PrdList, "validation_status": "pending|ok|ko" } ] ``` ##### 4.6.2. StoragePrdUpdatePublic Pseudo-code: ```json [ { "hash": "", "request_prd": PrdUpdate, "validation_status": "pending|ok|ko" } ] ``` ##### 4.6.3. StoragePrdResponsePublic Pseudo-code: ```json [ { "hash": "", "request_prd": PrdResponse, "validation_status": "pending|ok|ko" } ] ``` ##### 4.6.4. StoragePrdConfirmPublic Pseudo-code: ```json [ { "hash": "", "request_prd": PrdConfirm, "validation_status": "pending|ok|ko" ] ``` ##### 4.6.5. StoragePrdMessagePublic Pseudo-code: ```json [ { "hash": "", "request_prd": PrdMessage, "validation_status": "pending|ok|ko" } ] ``` ### 15.2. StoragePrivate #### 15.2.1. StorageKeysPrivate | Attribute Name | Type | Option | | ---------------------------- | ---------------------------------------- | ------ | | `hash_public` | ```String``` | | | `label` | ```String``` | | | `keyrecoverSpend` | ```StorageKeyRecoverSpendPrivate``` | | | `key_recover_scan` | ```String``` | | | `process_shards_backup_list` | ```Vec``` | | Pseudo-code: ```json [ { "hash_public": "", "label": "", "keyrecoverSpend": StorageKeyRecoverSpendPrivate, "key_recover_scan": "", "process_shards_backup_list": [] } ] ``` ##### StorageKeyRecoverSpendPrivate | Attribute Name | Type | Option | | -------------- | ------------ | ------ | | `seed_rand_1` | ```String``` | | | `seed_rand_2` | ```String``` | | | `part1_enc` | ```String``` | | Pseudo-code: ```json { "seed_rand_1": "", "seed_rand_2": "", "part1_enc": "" } ``` ##### StorageProcessShardsBackupPrivate | Attribute Name | Type | Option | | -------------- | ----------------- | ------ | | `hash` | ```String``` | | | `members` | ```Vec``` | | | `index` | ```usize``` | | Pseudo-code: ```json { "hash": "", "members": [], "index": 0 } ``` #### 15.2.2. StoragePeerPrivate | Attribute Name | Type | Option | | -------------- | ------------------------------ | ------ | | `hash_public` | ```String``` | | | `shared_peer` | ```StorageSharedPeerPrivate``` | | Pseudo-code: ```json [ { "hash_public": "", "shared_peer": StorageSharedPeerPrivate } ] ``` ##### StorageSharedPeerPrivate | Attribute Name | Type | Option | | -------------- | ------------------------------- | ------ | | `domain` | ```String``` | | | `address_ip` | ```String``` | | | `relay` | ```StorageRelayPrivate``` | Yes | | `l1_node` | ```StorageL1NodePrivate``` | Yes | | `l1_miner` | ```StorageL1MinerPrivate``` | Yes | | `l2_node_list` | ```Vec``` | | Pseudo-code: ```json { "domain": "", "address_ip": "", "relay": StorageRelayPrivate, "l1_node": StorageL1NodePrivate, "l1_miner": StorageL1MinerPrivate, "l2_node_list": [] } ``` ###### StorageRelayPrivate | Attribute Name | Type | Option | | ---------------- | ----------------- | ------ | | `faucet_tx_list` | ```Vec``` | Yes | | `spend_key` | ```String``` | | | `scan_key` | ```String``` | | Pseudo-code: ```json { "faucet_tx_list": [], "spend_key": "", "scan_key": "" } ``` ###### StorageL1NodePrivate | Attribute Name | Type | Option | | ------------------- | ----------------- | ------ | | `reward_tx_list` | ```Vec``` | | | `anchorage_tx_list` | ```Vec``` | | | `spend_key` | ```String``` | | | `scan_key` | ```String``` | | Pseudo-code: ```json { "reward_tx_list": [], "anchorage_tx_list": [], "spend_key": "", "scan_key": "" } ``` ###### StorageL1MinerPrivate | Attribute Name | Type | Option | | ----------------------- | ----------------- | ------ | | `mining_reward_tx_list` | ```Vec``` | | | `spend_key` | ```String``` | | | `scan_key` | ```String``` | | Pseudo-code: ```json { "mining_reward_tx_list": [], "spend_key": "", "scan_key": "" } ``` ###### StorageL2NodePrivate | Attribute Name | Type | Option | | -------------- | -------------------------------- | ------ | | `l2_miner` | ```StorageL2NodeMinerPrivate``` | | | `l2_certif` | ```StorageL2NodeCertifPrivate``` | | Pseudo-code: ```json { "l2_miner": StorageL2NodeMinerPrivate, "l2_certif": StorageL2NodeCertifPrivate } ``` ####### StorageL2NodeMinerPrivate | Attribute Name | Type | Option | |-------------------------|-------------------|--------|- | `mining_descriptor` | ```String``` | | | `mining_reward_tx_list` | ```Vec``` | | | `refunder_tx_list` | ```Vec``` | | | `spend_key` | ```String``` | | | `scan_key` | ```String``` | | Pseudo-code: ```json { "mining_descriptor": "", "minig_reward_tx_list": [], "refunder_tx_list": [], "spend_key": "", "scan_key": "" } ``` ####### StorageL2NodeCertifPrivate | Attribute Name | Type | Option | | ------------------- | ----------------- | ------ | | `certif_l1_tx_list` | ```Vec``` | | | `refunded_tx_list` | ```Vec``` | | | `anchorage_tx_list` | ```Vec``` | | | `spend_key` | ```String``` | | | `scan_key` | ```String``` | | Pseudo-code: ```json { "certif_l1_tx_list": [], "refunded_tx_list": [], "anchorage_tx_list": [], "spend_key": "", "scan_key": "", } ``` #### 15.2.3. StorageProcessPrivate Public: | Attribute Name | Type | Option | | ------------------ | ----------------- | ------ | | `hash` | ```String``` | | | `confidential_key` | ```String``` | | | `item` | ```ItemProcess``` | | Private: | Attribute Name | Type | Option | | --------------------------------- | ---------------------------------- | ------ | | `hash_public` | ```String``` | | | `confidential_key` | ```String``` | | | `metadata_role_confidentiel_keys` | ```MetadataRoleConfidentielKeys``` | | Pseudo-code: ```json { "private": [ { "hash": "", "confidential_key": "", "item": ItemProcess } ], "public": [{ "hash_public": "", "confidential_key": "", "metadata_role_confidentiel_keys":  MetadataRoleConfidentielKeys }] } ``` ###### MetadataRoleConfidentielKeys | Attribute Name | Type | Option | | --------------------------- | ------------ | ------ | | `tag_list_keys` | ```String``` | | | `zone_list_keys` | ```String``` | | | `label_lis_keys` | ```String``` | | | `ref_list_keys` | ```String``` | | | `data_list_keys` | ```String``` | | | `amount_keys` | ```String``` | | | `number_keys` | ```String``` | | | `render_template_list_keys` | ```String``` | | | `legal_text_list_keys` | ```String``` | | | `key_list_keys` | ```String``` | | Pseudo-code: ```json { "tag_list_keys": "", "zone_list_keys": "", "label_lis_keys": "", "ref_list_keys": "", "data_list_keys": "", "amount_keys": "", "number_keys": "", "render_template_list_keys": "", "legal_text_list_keys": "", "key_list_keys": "" } ``` #### 15.2.4. StoragePcdPrivate | Attribute Name | Type | Option | | ---------------------------- | ----------------- | ------ | | `hash_public` | ```String``` | | | `pcd_aes_key_list_decrypted` | ```Vec``` | | Pseudo-code: ```json [{ "hash_public": "", "pcd_aes_key_list_decrypted": [] }] ``` #### 15.2.5. StoragePrdPrivate ##### 5.5.1. StoragePrdUpdatePrivate | Attribute Name | Type | Option | | -------------------------------------------------------------- | ----------------- | ------ | | `hash_public` | ```String``` | | | `sig_value` | ```String``` | | | `request_pcd_reference_keys_role_confidential_list_decrypted` | ```String``` | | | `request_pcd_origin_hash_keys_role_confidential_listdecrypted` | ```String``` | | | `message_public_decrypted` | ```String``` | | | `message_confidential_decrypted` | ```String``` | | | `message_private_decrypted` | ```String``` | | | `Payments_method_decrypted` | ```String``` | | | `deposit_method_decrypted` | ```String``` | | | `commitment_method_decrypted` | ```String``` | | | `Payments_request_pcd_hash_list_decrypted` | ```Vec``` | | | `cap_request_pcd_hash_list_decrypted` | ```Vec``` | | | `deposit_request_pcd_hash_list_decrypted` | ```Vec``` | | | `commitment_request_pcd_hash_list_decrypted` | ```Vec``` | | | `ask_Payments_method_[decrypted` | ```String``` | | | `ask_deposit_method_decrypted` | ```String``` | | | `ask_commitment_method_decrypted` | ```String``` | | | `certif_key_decrypted` | ```String``` | | | `device_footprint_decrypted` | ```String``` | | | `item_member_decrypted` | ```String``` | | | `pre_id_sp_decrypted` | ```String``` | | Pseudo-code: ```json [ { "hash_public": "", "sig_value": "", "request_pcd_reference_keys_role_confidential_list_decrypted": "", "request_pcd_origin_hash_keys_role_confidential_listdecrypted": "", "message_public_decrypted": "", "message_confidential_decrypted": "", "message_private_decrypted": "", "Payments_method_decrypted": "", "deposit_method_decrypted": "", "commitment_method_decrypted": "", "Payments_request_pcd_hash_list_decrypted": [], "cap_request_pcd_hash_list_decrypted": [], "deposit_request_pcd_hash_list_decrypted": [], "commitment_request_pcd_hash_list_decrypted": [], "ask_Payments_method_[decrypted": "", "ask_deposit_method_decrypted": "", "ask_commitment_method_decrypted": "", "certif_key_decrypted": "", "device_footprint_decrypted": "", "item_member_decrypted": "", "pre_id_sp_decrypted": "" } ] ``` ##### 5.5.2. StoragePrdResponsePrivate | Attribute Name | Type | Option | | -------------------------------------------------------------- | ------------------------------------------------- | ------ | | `hash_public` | ```String``` | | | `sig_value` | ```String``` | Yes | | `request_pcd_reference_keys_role_confidential_list_decrypted` | ```String``` | Yes | | `request_pcd_origin_hash_keys_role_confidential_listdecrypted` | ```String``` | Yes | | `message_public_decrypted` | ```String``` | Yes | | `message_confidential_decrypted` | ```String``` | Yes | | `message_private_decrypted` | ```String``` | Yes | | `Payments_method_decrypted` | ```String``` | Yes | | `deposit_method_decrypted` | ```String``` | Yes | | `commitment_method_decrypted` | ```String``` | Yes | | `Payments_request_pcd_hash_list_decrypted` | ```Vec``` | Yes | | `cap_request_pcd_hash_list_decrypted` | ```Vec``` | Yes | | `deposit_request_pcd_hash_list_decrypted` | ```Vec``` | Yes | | `commitment_request_pcd_hash_list_decrypted` | ```Vec``` | Yes | | `ask_Payments_method_[decrypted` | ```String``` | Yes | | `ask_deposit_method_decrypted` | ```String``` | Yes | | `ask_commitment_method_decrypted` | ```String``` | Yes | | `certif_key_decrypted` | ```String``` | Yes | | `device_footprint_decrypted` | ```String``` | Yes | | `shared_secret_key_decrypted` | ```Vec``` | | | `shard_decrypted` | ```String``` | Yes | Pseudo-code: ```json [ { "hash_public": "", "sig_value": "", "request_pcd_reference_keys_role_confidential_list_decrypted": "", "request_pcd_origin_hash_keys_role_confidential_listdecrypted": "", "message_public_decrypted": "", "message_confidential_decrypted": "", "message_private_decrypted": "", "Payments_method_decrypted": "", "deposit_method_decrypted": "", "commitment_method_decrypted": "", "Payments_request_pcd_hash_list_decrypted": [], "cap_request_pcd_hash_list_decrypted": [], "deposit_request_pcd_hash_list_decrypted": [], "commitment_request_pcd_hash_list_decrypted": [], "ask_Payments_method_[decrypted": "", "ask_deposit_method_decrypted": "", "ask_commitment_method_decrypted": "", "certif_key_decrypted": "", "device_footprint_decrypted": "", "sig_value":"", "shared_secret_key_decrypted": [], "shard_decrypted":"" } ] ``` #### 15.2.6. StorageDecryptedSharedSecretKeyPrivate | Attribute Name | Type | Option | | ---------------- | ------------ | ------ | | `attribute_name` | ```String``` | Yes | | `key` | ```String``` | Yes | | `algorithm` | ```String``` | Yes | Pseudo-code: ```json { "attribute_name": "", "key": "", "algorithm": "", } ``` ##### 5.5.3. StoragePrdConfirmPrivate | Attribute Name | Type | Option | | -------------------------------------------------------------- | ----------------- | ------ | | `hash_public` | ```String``` | | | `sig_value` | ```String``` | Yes | | `request_pcd_reference_keys_role_confidential_list_decrypted` | ```String``` | Yes | | `request_pcd_origin_hash_keys_role_confidential_listdecrypted` | ```String``` | Yes | | `message_public_decrypted` | ```String``` | Yes | | `message_confidential_decrypted` | ```String``` | Yes | | `message_private_decrypted` | ```String``` | Yes | | `Payments_method_decrypted` | ```String``` | Yes | | `deposit_method_decrypted` | ```String``` | Yes | | `commitment_method_decrypted` | ```String``` | Yes | | `Payments_request_pcd_hash_list_decrypted` | ```Vec``` | Yes | | `cap_request_pcd_hash_list_decrypted` | ```Vec``` | Yes | | `deposit_request_pcd_hash_list_decrypted` | ```Vec``` | Yes | | `commitment_request_pcd_hash_list_decrypted` | ```Vec``` | Yes | | `ask_Payments_method_[decrypted` | ```String``` | Yes | | `ask_deposit_method_decrypted` | ```String``` | Yes | | `ask_commitment_method_decrypted` | ```String``` | Yes | | `certif_key_decrypted` | ```String``` | Yes | | `device_footprint_decrypted` | ```String``` | Yes | | `code_confirm_decrypted` | ```String``` | Yes | Pseudo-code: ```json [ { "hash_public": "", "sig_value": "", "request_pcd_reference_keys_role_confidential_list_decrypted": "", "request_pcd_origin_hash_keys_role_confidential_listdecrypted": "", "message_public_decrypted": "", "message_confidential_decrypted": "", "message_private_decrypted": "", "Payments_method_decrypted": "", "deposit_method_decrypted": "", "commitment_method_decrypted": "", "Payments_request_pcd_hash_list_decrypted": [], "cap_request_pcd_hash_list_decrypted": [], "deposit_request_pcd_hash_list_decrypted": [], "commitment_request_pcd_hash_list_decrypted": [], "ask_Payments_method_decrypted": "", "ask_deposit_method_decrypted": "", "ask_commitment_method_decrypted": "", "certif_key_decrypted": "", "device_footprint_decrypted": "", "code_confirm_decrypted": "" } ] ``` ##### 5.5.4. StoragePrdMessagePrivate | Attribute Name | Type | Option | | -------------------------------------------------------------- | ----------------- | ------ | | `hash_public` | ```String``` | | | `sig_value` | ```String``` | Yes | | `request_pcd_reference_keys_role_confidential_list_decrypted` | ```String``` | Yes | | `request_pcd_origin_hash_keys_role_confidential_listdecrypted` | ```String``` | Yes | | `message_public_decrypted` | ```String``` | Yes | | `message_confidential_decrypted` | ```String``` | Yes | | `message_private_decrypted` | ```String``` | Yes | | `Payments_method_decrypted` | ```String``` | Yes | | `deposit_method_decrypted` | ```String``` | Yes | | `commitment_method_decrypted` | ```String``` | Yes | | `Payments_request_pcd_hash_list_decrypted` | ```Vec``` | Yes | | `cap_request_pcd_hash_list_decrypted` | ```Vec``` | Yes | | `deposit_request_pcd_hash_list_decrypted` | ```Vec``` | Yes | | `commitment_request_pcd_hash_list_decrypted` | ```Vec``` | Yes | | `ask_Payments_method_[decrypted` | ```String``` | Yes | | `ask_deposit_method_decrypted` | ```String``` | Yes | | `ask_commitment_method_decrypted` | ```String``` | Yes | | `certif_key_decrypted` | ```String``` | Yes | | `device_footprint_decrypted` | ```String``` | Yes | Pseudo-code: ```json [ { "hash_public": "", "sig_value": "", "request_pcd_reference_keys_role_confidential_list_decrypted": "", "request_pcd_origin_hash_keys_role_confidential_listdecrypted": "", "message_public_decrypted": "", "message_confidential_decrypted": "", "message_private_decrypted": "", "Payments_method_decrypted": "", "deposit_method_decrypted": "", "commitment_method_decrypted": "", "Payments_request_pcd_hash_list_decrypted": [], "cap_request_pcd_hash_list_decrypted": [], "deposit_request_pcd_hash_list_decrypted": [], "commitment_request_pcd_hash_list_decrypted": [], "ask_Payments_method_[decrypted": "", "ask_deposit_method_decrypted": "", "ask_commitment_method_decrypted": "", "certif_key_decrypted": "", "device_footprint_decrypted": "" } ] ``` #### 15.2.7. StorageocketsPrivate #### 15.2.8. StorageSocketClientListPrivate | Attribute Name | Type | Option | | -------------- | ------------ | ------ | | `address` | ```String``` | | | `port` | ```u64``` | | | `protocol` | ```String``` | | | `status` | ```String``` | | | `type` | ```String``` | | Pseudo-code: ```json [ { "hash": "", "socket": { "address": "", "port": 0, "protocol": "", "status": "pending|ok|ko", "type": "tx|request|client" } } ] ``` ##### 5.6.2. StorageSocketServerListPrivate | Attribute Name | Type | Option | | -------------- | ------------ | ------ | | `address` | ```String``` | | | `port` | ```u64``` | | | `protocol` | ```String``` | | | `status` | ```String``` | | | `type` | ```String``` | | Pseudo-code: ```json [ { "hash": "", "socket": { "address": "", "port": 0, "protocol": "", "status": "pending|ok|ko", "type": "tx|request|client" } } ] ``` ## 16. 12. Rust considerations ### 16.1.  General Implications for Project Objects Incorporating these traits into a struct's definition enhances its utility across various aspects of a project. For instance: * **Serialization traits (Serialize, Deserialize)**: facilitate the easy exchange of data with external services or storage systems. * **Traits like Clone, Debug, and Default**: improve the development experience by providing essential functionalities for debugging, testing, and initializing objects. * **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. ### 16.2.  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. ### 16.3.  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. ### 16.4.  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. ### 16.5.  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. ### 16.6.  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) ## 17. Todo