# Data model ## 1. Autheurs, validations, dates, versions, changement and historique Cf. [Git SDK COMMON](https://git.4nk.com/4nk/sdk_common/doc) ## 2. Table des matières * 1. [Autheurs, validations, dates, versions, changement and historique](#Autheursvalidationsdatesversionschangesandhistory) * 2. [Table des matières](#Tabledesmatires) * 3. [Documents de référence](#Documentsderfrence) * 4. [Methods](#Methods) * 4.1. [DepositMethod](#DepositMethod) * 4.2. [commitMethod](#commitMethod) * 4.3. [PaymentsMethod](#PaymentsMethod) * 5. [Items](#Items) * 5.1. [Item](#Item) * 5.2. [Artefact](#Artefact) * 5.3. [Member](#Member) * 5.3.1. [MemberPublicAttributeGroup](#MemberPublicAttributeGroup) * 5.3.2. [MemberRoleConfidentialAttributeGroup](#MemberRoleConfidentialAttributeGroup) * 5.3.3. [MemberRolePrivateAttributeGroup](#MemberRolePrivateAttributeGroup) * 5.4. [Commit](#Commit) * 5.4.1. [CommitRoleConfidentialAttributeGroup](#CommitRoleConfidentialAttributeGroup) * 5.4.2. [CommitPrivateAttributeGroup](#CommitPrivateAttributeGroup) * 5.5. [Deposit](#Deposit) * 5.5.1. [DepositPublicAttributeGroup](#DepositPublicAttributeGroup) * 5.5.2. [DepositRoleConfidentialAttributeGroup](#DepositRoleConfidentialAttributeGroup) * 5.5.3. [DepositPrivateAttributeGroup](#DepositPrivateAttributeGroup) * 5.6. [ItemEnum](#ItemEnum) * 5.7. [Payments](#Payments) * 5.7.1. [PaymentsPublicAttributeGroup](#PaymentsPublicAttributeGroup) * 5.7.2. [PaymentsRoleConfidentialAttributeGroup](#PaymentsRoleConfidentialAttributeGroup) * 5.7.3. [PaymentsPrivateAttributeGroup](#PaymentsPrivateAttributeGroup) * 5.8. [Peer](#Peer) * 5.8.1. [PeerPublicAttributeGroup](#PeerPublicAttributeGroup) * 5.8.2. [PeerPrivateAttributeGroup](#PeerPrivateAttributeGroup) * 5.9. [Process](#Process) * 5.9.1. [ProcessPublicAttributeGroup](#ProcessPublicAttributeGroup) * 6. [Encryption](#Encryption) * 6.1. [KeyEncryption](#KeyEncryption) * 6.2. [Aes256GcmIv96Bit](#Aes256GcmIv96Bit) * 7. [Messages](#Messages) * 7.1. [Message](#Message) * 7.2. [MessageConnect](#MessageConnect) * 7.3. [MessageGeneric](#MessageGeneric) * 7.4. [Pow](#Pow) * 7.5. [Process](#Process) * 7.6. [Peer](#Peer) * 8. [Relay](#Relay) * 9. [L1Node](#L1Node) * 9.1. [L1NodeMining](#L1NodeMining) * 9.2. [L2Node](#L2Node) * 9.3. [L2NodeMining](#L2NodeMining) * 9.4. [L2Certif](#L2Certif) * 9.5. [BlockCertif](#BlockCertif) * 10. [Metadata](#Metadata) * 10.1. [MetadataProcessublic](#MetadataProcessublic) * 10.2. [MetadataPrivate](#MetadataPrivate) * 10.3. [MetadataRoleConfidential](#MetadataRoleConfidential) * 10.4. [Amount](#Amount) * 10.5. [Number](#Number) * 11. [Request](#Request) * 12. [Pcd](#Pcd) * 12.1. [Pagination](#Pagination) * 12.2. [PcdItemGenericEnc](#PcdItemGenericEnc) * 12.2.1. [PcdItemEncAttributePublic](#PcdItemEncAttributePublic) * 12.2.2. [PcdItemEncAttributeRoleConfidential](#PcdItemEncAttributeRoleConfidential) * 12.2.3. [PcdItemEncAttributePrivate](#PcdItemEncAttributePrivate) * 13. [Prd](#Prd) * 13.1. [PrdList](#PrdList) * 13.2. [PrdUpdate](#PrdUpdate) * 13.3. [PrdResponse](#PrdResponse) * 13.4. [PrdConfirm](#PrdConfirm) * 13.5. [PrdMessage](#PrdMessage) * 13.6. [PrdResponse](#PrdResponse-1) * 14. [Roles](#Roles) * 14.1. [Role](#Role) * 14.2. [Conditions](#Conditions) * 14.2.1. [TransactionMode](#TransactionMode) * 14.2.2. [ConditionPayments](#ConditionPayments) * 14.2.3. [Conditioncommit](#Conditioncommit) * 14.2.4. [ConditionDeposit](#ConditionDeposit) * 14.2.5. [ConditionOrchestration](#ConditionOrchestration) * 14.2.6. [ConditionCap](#ConditionCap) * 14.2.7. [ConditionPrdAddressSet](#ConditionPrdAddressSet) * 14.2.8. [ConditionPublish](#ConditionPublish) * 14.3. [RolesGroup](#RolesGroup) * 14.3.1. [RoleArtefact](#RoleArtefact) * 14.3.2. [RoleDeposit](#RoleDeposit) * 14.3.3. [Rolecommit](#Rolecommit) * 14.3.4. [RoleMember](#RoleMember) * 14.4. [RolePeer](#RolePeer) * 14.4.1. [RolePayments](#RolePayments) * 14.4.2. [RoleProcess](#RoleProcess) * 15. [Relay side chain data streaming](#Relaysidechaindatastreaming) * 15.1. [Transaction](#Transaction) * 15.2. [Bloc](#Bloc) * 16. [Storage](#Storage) * 16.1. [StoragePublic](#StoragePublic) * 16.1.1. [StorageKeysPublic](#StorageKeysPublic) * 16.1.2. [StoragePeerPublic](#StoragePeerPublic) * 16.1.3. [StorageProcessPublic](#StorageProcessPublic) * 16.1.4. [StorageMessagePublic](#StorageMessagePublic) * 16.1.5. [StoragePcdPublic](#StoragePcdPublic) * 16.1.6. [StoragePrdPublic](#StoragePrdPublic) * 16.2. [StoragePrivate](#StoragePrivate) * 16.2.1. [StorageKeysPrivate](#StorageKeysPrivate) * 16.2.2. [StoragePeerPrivate](#StoragePeerPrivate) * 16.2.3. [StorageProcessPrivate](#StorageProcessPrivate) * 16.2.4. [StoragePcdPrivate](#StoragePcdPrivate) * 16.2.5. [StoragePrdPrivate](#StoragePrdPrivate) * 16.2.6. [StorageDecryptedSharedSecretKeyPrivate](#StorageDecryptedSharedSecretKeyPrivate) * 16.2.7. [StorageocketsPrivate](#StorageocketsPrivate) * 16.2.8. [StorageSocketClientListPrivate](#StorageSocketClientListPrivate) * 17. [12. Rust considerations](#Rustconsiderations) * 17.1. [General Implications for Project Objects](#GeneralImplicationsforProjectObjects) * 17.2. [Debug](#Debug) * 17.3. [Default](#Default) * 17.4. [PartialEq, Eq](#PartialEqEq) * 17.5. [Hash](#Hash) * 17.6. [PartialOrd, Ord](#PartialOrdOrd) * 18. [Todo](#Todo) ## 3. Documents de référence Voir [Doc_references.md](Doc_references.md). ## 4. Methods ### 4.1. DepositMethod | Attribute Name | Type | Option | | -------------- | ------------ | ------ | | `method` | ```String``` | | Pseudo-code: ```json { "method": "" } ``` ### 4.2. commitMethod | Attribute Name | Type | Option | | -------------- | ------------ | ------ | | `method` | ```String``` | | Pseudo-code: ```json { "method": "" } ``` ### 4.3. PaymentsMethod | Attribute Name | Type | Option | | -------------- | ------------ | ------ | | `method` | ```String``` | | Pseudo-code: ```json { "method": "" } ``` ## 5. Items ### 5.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 } ``` ### 5.2. Artefact | 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": [] } ``` ### 5.3. Member | Attribute Name | Type | Option | | ----------------------------------- | ---------------------------------------------- | ------ | | `item` | ```Item``` | | | `public_attribute_group` | ```MemberPublicAttributeGroup``` | | | `role_confidential_attribute_group` | ```MemberRoleConfidentialAttributeGroup``` | | | `private_attribute_group` | ```MemberPrivateAttributeGroup``` | | Pseudo-code: ```json { "item": Item, "public_attribute_group": MemberPublicAttributeGroup, "role_confidential_attribute_group": MemberRoleConfidentialAttributeGroup, "private_attribute_group": MemberPrivateAttributeGroup } ``` #### 5.3.1. MemberPublicAttributeGroup | 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": "" } ``` #### 5.3.2. MemberRoleConfidentialAttributeGroup | Attribute Name | Type | Option | | --------------------- | ------------ | ------ | | `shard_confidential` | ```String``` | yes | | `pre_id_confidential` | ```String``` | yes | Pseudo-code: ```json { "shard_confidential": "", "pre_id_confidential": "" } ``` #### 5.3.3. MemberRolePrivateAttributeGroup | 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": "", } ``` ### 5.4. Commit | Attribute Name | Type | Option | | ----------------------------------- | -------------------------------------------------- | ------ | | `item` | ```Item``` | | | `public_attribute_group` | ```CommitPublicAttributeGroup``` | | | `role_confidential_attribute_group` | ```CommitRoleConfidentialAttributeGroup``` | | | `private_attribute_group` | ```CommitPrivateAttributeGroup``` | | Pseudo-code: ```json { "item": Item, "public_attribute_group": CommitPublicAttributeGroup, "role_confidential_attribute_group": CommitRoleConfidentialAttributeGroup, "private_attribute_group": CommitPrivateAttributeGroup } ``` #### 5.4.1. CommitRoleConfidentialAttributeGroup | Attribute Name | Type | Option | | --------------------------- | ----------------- | ------ | | `payload_list_confidential` | ```Vec``` | | Pseudo-code: ```json { "payload_list_confidential": [] } ``` #### 5.4.2. CommitPrivateAttributeGroup | Attribute Name | Type | Option | | ---------------------- | ----------------- | ------ | | `payload_list_private` | ```Vec``` | | Pseudo-code: ```json { "payload_list_private": [] } ``` ##### 4.2.1. CommitPublicAttributeGroup | Attribute Name | Type | Option | | ---------------------------------- | ----------------- | ------ | | `for_sp_address_list` | ```Vec``` | | | `goal_list` | ```Vec``` | | | `provider_type` | ```String``` | | | `commit_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": "", "commit_request_pcd_hash_list": [], "ref_item_hash_list": [], "ref_request_pcd_hash_list": [], "payload_public_list": [] } ``` ### 5.5. Deposit | Attribute Name | Type | Option | | ----------------------------------- | ----------------------------------------------- | ------ | | `item` | ```Item``` | | | `public_attribute_group` | ```DepositPublicAttributeGroup``` | | | `role_confidential_attribute_group` | ```DepositRoleConfidentialAttributeGroup``` | | | `private_attribute_group` | ```DepositPrivateAttributeGroup``` | | Pseudo-code: ```json { "item": Item, "public_attribute_group": DepositPublicAttributeGroup, "role_confidential_attribute_group": DepositRoleConfidentialAttributeGroup, "private_attribute_group": DepositPrivateAttributeGroup } ``` #### 5.5.1. DepositPublicAttributeGroup | 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": [] } ``` #### 5.5.2. DepositRoleConfidentialAttributeGroup | Attribute Name | Type | Option | | ------------------------------ | ----------------- | ------ | | `payload_list_confidential` | ```Vec``` | | | `audit_code_list_confidential` | ```Vec``` | | Pseudo-code: ```json { "payload_list_confidential": [], "audit_code_list_confidential": [] } ``` #### 5.5.3. DepositPrivateAttributeGroup | Attribute Name | Type | Option | | ---------------------- | ----------------- | ------ | | `payload_list_private` | ```Vec``` | | | `audit_code_private` | ```String``` | | | Pseudo-code: | | | ```json { "payload_list_private": [], "audit_code_private": "" } ``` ### 5.6. ItemEnum * **```Process(Process)```**: Contains an item of type Process, representing a process. * **```Peer(Peer)```**: Contains an item of type Peer, representing a peer. * **```Member(Member)```**: Contains an item of type Member, representing a Member. * **```Payments(Payments)```**: Contains an item of type Payments, representing a Payments. * **```Deposit(Deposit)```**: Contains an item of type Deposit, representing a deposit. * **```Artefact(Artefact)```**: Contains an item of type Artefact, representing an artefact. * **```commit(Commit)```**: Contains an item of type Commit, representing a commit. ### 5.7. Payments | Attribute Name | Type | Option | | ----------------------------------- | ----------------------------------------------- | ------ | | `item` | ```Item``` | | | `public_attribute_group` | ```PaymentsPublicAttributeGroup``` | | | `role_confidential_attribute_group` | ```PaymentsRoleConfidentialAttributeGroup``` | | | `private_attribute_group` | ```PaymentsPrivateAttributeGroup``` | | Pseudo-code: ```json { "item": Item, "public_attribute_group": PaymentsPublicAttributeGroup, "role_confidential_attribute_group": PaymentsRoleConfidentialAttributeGroup, "private_attribute_group": PaymentsPrivateAttributeGroup } ``` #### 5.7.1. PaymentsPublicAttributeGroup | Attribute Name | Type | Option | | ---------------------------------- | ----------------- | ------ | | `for_sp_address_list` | ```Vec``` | | | `goal_list` | ```Vec``` | | | `provider_type` | ```String``` | | | `commit_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 ``` #### 5.7.2. PaymentsRoleConfidentialAttributeGroup | Attribute Name | Type | Option | | ------------------------------ | ----------------- | ------ | | `payload_list_confidential` | ```Vec``` | | | `audit_code_list_confidential` | ```Vec``` | | Pseudo-code: ```json { "for_sp_address_list": [], "goal_list": [], "provider_type": "", "commit_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": [] } ``` #### 5.7.3. PaymentsPrivateAttributeGroup | Attribute Name | Type | Option | | ---------------------- | ----------------- | ------ | | `payload_list_private` | ```Vec``` | | | `audit_code_private` | ```String``` | | Pseudo-code: ```json { "payload_list_private": [], "audit_code_private": "" } ``` ### 5.8. Peer | Attribute Name | Type | Option | | ------------------------- | ----------------------------------- | ------ | | `item` | ```Item``` | | | `layer_list` | ```Vec``` | | | `public_attribute_group` | ```PeerPublicAttributeGroup``` | | | `private_attribute_group` | ```PeerPrivateAttributeGroup``` | | Pseudo-code: ```json { "item": Item, "layer_list": [], "public_attribute_group": PeerPublicAttributeGroup, "private_attribute_group": PeerPrivateAttributeGroup } ``` #### 5.8.1. PeerPublicAttributeGroup | 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": [] } ``` #### 5.8.2. PeerPrivateAttributeGroup | Attribute Name | Type | Option | | -------------- | ------------ | ------ | | `config` | ```String``` | | Pseudo-code: ```json { "config": "" } ``` ### 5.9. Process | Attribute Name | Type | Option | | ------------------------------------- | ------------------------------------- | ------ | | `item` | ```Item``` | | | `item_process_public_attribute_group` | ```ProcessPublicAttributeGroup``` | | Pseudo-code: ```json { "item": {}, "item_process_public_attribute_group": ProcessPublicAttributeGroup } ``` #### 5.9.1. ProcessPublicAttributeGroup | Attribute Name | Type | Option | | -------------- | ---------- | ------ | | `roles_group` | RolesGroup | | Pseudo-code: ```json { "roles_group": {} } ``` ## 6. Encryption ### 6.1. KeyEncryption | Attribute Name | Type | Option | | ---------------- | ------------ | ------ | | `attribute_name` | ```String``` | Yes | | `key` | ```String``` | Yes | | `algorithm` | ```String``` | Yes | Pseudo-code: ```json { "attribute_name": "", "key": "", "algorithm": "" } ``` ### 6.2. Aes256GcmIv96Bit | Attribute Name | Type | Option | | -------------- | --------------------------- | ------ | | `key` | ```GenericArray``` | | Pseudo-code: ```json { "key": [] } ``` ## 7. Messages ### 7.1. Message | Attribute Name | Type | Option | | -------------- | -------------------- | ------ | | `message` | ```MessageGeneric``` | | | `request_enc` | ```String``` | | Pseudo-code: ```json { "message": Message, "request_enc": "" } ``` ### 7.2. MessageConnect | Attribute Name | Type | Option | | -------------- | -------------------- | ------ | | message | ```MessageGeneric``` | | Pseudo-code: ```json { "message": Message } ``` ### 7.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": [] } ``` ### 7.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 } ``` ### 7.5. Process | Attribute Name | Type | Option | | -------------- | ------------------ | ------ | | `process_list` | `Vec` | | Pseudo-code: ```json { "process_list": [] } ``` ### 7.6. Peer | 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": [] } ``` ## 8. 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, } ``` ## 9. 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": "" } ``` ### 9.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": "" } ``` ### 9.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": "" } ``` ### 9.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": "" } ``` ### 9.4. L2Certif | Attribute Name | Type | Option | | -------------------- | ----------------- | ------ | | `l2_block_hash_list` | ```Vec``` | | | `l1_tx` | ```String``` | Yes | Pseudo-code: ```json { "l2_block_hash_list": [], "l1_tx": "" } ``` ### 9.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": "" } ``` ## 10. 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": [] } ``` ### 10.1. MetadataProcessublic | Attribute Name | Type | Option | | -------------- | -------------- | ------ | | `meta_data` | ```MetaData``` | | Pseudo-code: ```json { "meta_data": MetaData } ``` ### 10.2. MetadataPrivate | Attribute Name | Type | Option | | -------------- | -------------- | ------ | | `meta_data` | ```MetaData``` | | Pseudo-code: ```json { "meta_data": MetaData } ``` ### 10.3. MetadataRoleConfidential | Attribute Name | Type | Option | | -------------- | -------------- | ------ | | `meta_data` | ```MetaData``` | | Pseudo-code: ```json { "meta_data": MetaData } ``` ### 10.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": "" } ``` ### 10.5. Number | Attribute Name | Type | Option | | -------------- | ------------- | ------ | | `fixed_state` | ```boolean``` | | | `number` | ```i32``` | | | `number_unit` | ```String``` | | Pseudo-code: ```json { "fixed_state": false, "number": 0, "number_unit": "" } ``` ## 11. 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": "" } ``` ## 12. 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 } ``` ### 12.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 } ``` ### 12.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": [] } ``` #### 12.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": "" } ``` #### 12.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": "" } ``` #### 12.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": "" } ``` ## 13. 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 | | `commit_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 | | `commit_request_pcd_hash_list_confidential` | ```Vec``` | Yes | | `ask_Payments_method_confidential` | ```String``` | Yes | | `ask_deposit_method_confidential` | ```String``` | Yes | | `ask_commit_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": "", "commit_method_confidential": "", "Payments_request_pcd_hash_list_confidential": [], "cap_request_pcd_hash_list_confidential": [], "deposit_request_pcd_hash_list_confidential": [], "commit_request_pcd_hash_list_confidential": [], "ask_Payments_method_confidential": "", "ask_deposit_method_confidential": "", "ask_commit_method_confidential": "", "certif_key_confidential": "", "device_footprint_enc_by_sp_shared_secret": "" } ``` ### 13.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 } ``` ### 13.2. PrdUpdate | Attribute Name | Type | Option | | -------------- | ---------------- | ------ | | `request_prd` | ```Prd``` | | Pseudo-code: ```json { "request_prd": Prd } ``` ### 13.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": "" } ``` ### 13.4. PrdConfirm | Attribute Name | Type | Option | | ----------------------------------- | ---------------- | ------ | | `request_prd` | ```Prd``` | | | `code_confirm_confidential` | ```String``` | Yes | Pseudo-code: ```json { "request_prd": Prd, "code_confirm_confidential": "" } ``` ### 13.5. PrdMessage | Attribute Name | Type | Option | | ---------------------- | ----------------- | ------ | | `request_prd` | ```Prd``` | | | `raw_transaction_list` | ```Vec``` | Yes | Pseudo-code: ```json { "request_prd": Prd, "raw_transaction_list": [] } ``` ### 13.6. PrdResponse | Attribute Name | Type | Option | | -------------- | ---------------- | ------ | | `request_prd` | ```Prd``` | | | `sig_value` | ```String``` | | Pseudo-code: ```json { "request_prd": Prd, "sig_value": "" } ``` ## 14. Roles ### 14.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_commit_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_commit_list": [], "condition_attribute_encryption_list": [], "condition_orchestration_list": [], "role_succession": "", "role_resolve": "", "role_renew": "" } ``` ### 14.2. Conditions #### 14.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": "" } ``` #### 14.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": [] } ``` #### 14.2.3. Conditioncommit | 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 } ``` #### 14.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 } ``` #### 14.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 } ``` #### 14.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 } ``` #### 14.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 } ``` #### 14.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 } ``` ### 14.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": [] } ``` #### 14.3.1. RoleArtefact | Attribute Name | Type | Option | | -------------- | ------------ | ------ | | `item_name` | ```String``` | | | `role` | ```Role``` | | Pseudo-code: ```json { "item_name": "Nom de l'élément", "role": Role } ``` #### 14.3.2. RoleDeposit | Attribute Name | Type | Option | | -------------- | ------------ | ------ | | `item_name` | ```String``` | | | `role` | ```Role``` | | | Pseudo-code: | | | ```json { "item_name": "Nom de l'élément", "role": Role } ``` #### 14.3.3. Rolecommit | Attribute Name | Type | Option | | -------------- | ------------ | ------ | | `item_name` | ```String``` | | | `role` | ```Role``` | | Pseudo-code: ```json { "item_name": "Nom de l'élément", "role": Role } ``` #### 14.3.4. RoleMember | Attribute Name | Type | Option | | -------------- | ------------ | ------ | | `item_name` | ```String``` | | | `role` | ```Role``` | | Pseudo-code: ```json { "item_name": "Nom de l'élément", "role": Role } ``` ### 14.4. RolePeer | Attribute Name | Type | Option | | -------------- | ------------ | ------ | | `item_name` | ```String``` | | | `role` | ```Role``` | | Pseudo-code: ```json { "item_name": "Nom de l'élément", "role": Role } ``` #### 14.4.1. RolePayments | Attribute Name | Type | Option | | -------------- | ------------ | ------ | | `item_name` | ```String``` | | | `role` | ```Role``` | | Pseudo-code: ```json { "item_name": "Nom de l'élément", "role": Role } ``` #### 14.4.2. RoleProcess | Attribute Name | Type | Option | | -------------- | ------------ | ------ | | `item_name` | ```String``` | | | `role` | ```Role``` | | Pseudo-code: ```json { "item_name": "", "role": Role } ``` ## 15. Relay side chain data streaming ### 15.1. Transaction | Attribute Name | Type | Option | | -------------- | ------------ | ------ | | `raw_tx` | ```String``` | | | `role` | ```String``` | | Pseudo-code: ```json { "raw_tx": "", "pubkey": "" } ``` ### 15.2. Bloc | Attribute Name | Type | Option | | -------------- | ------------ | ------ | | `raw_block` | ```String``` | | Pseudo-code: ```json { "raw_block": "" } ``` ## 16. Storage ### 16.1. StoragePublic #### 16.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": "" } ``` #### 16.1.2. StoragePeerPublic Pseudo-code: ```json [ { "hash": "", "peer: Peer } ] ``` #### 16.1.3. StorageProcessPublic Pseudo-code: ```json [ { "hash": "", "process: Process } ] ``` #### 16.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" }], } ``` #### 16.1.5. StoragePcdPublic Pseudo-code: ```json [ { "hash": "", "validation_status": "pending|ok|ko" } ] ``` #### 16.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" } ] ``` ### 16.2. StoragePrivate #### 16.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 } ``` #### 16.2.2. StoragePeerPrivate | Attribute Name | Type | Option | | -------------- | ------------------------------ | ------ | | `hash_public` | ```String``` | | | `shared_peer` | ```StoragePeerPrivate``` | | Pseudo-code: ```json [ { "hash_public": "", "shared_peer": StoragePeerPrivate } ] ``` ##### StoragePeerPrivate | 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": "", } ``` #### 16.2.3. StorageProcessPrivate Public: | Attribute Name | Type | Option | | ------------------ | ----------------- | ------ | | `hash` | ```String``` | | | `confidential_key` | ```String``` | | | `item` | ```Process``` | | Private: | Attribute Name | Type | Option | | --------------------------------- | ---------------------------------- | ------ | | `hash_public` | ```String``` | | | `confidential_key` | ```String``` | | | `metadata_role_confidentiel_keys` | ```MetadataRoleConfidentielKeys``` | | Pseudo-code: ```json { "private": [ { "hash": "", "confidential_key": "", "item": Process } ], "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": "" } ``` #### 16.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": [] }] ``` #### 16.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``` | | | `commit_method_decrypted` | ```String``` | | | `Payments_request_pcd_hash_list_decrypted` | ```Vec``` | | | `cap_request_pcd_hash_list_decrypted` | ```Vec``` | | | `deposit_request_pcd_hash_list_decrypted` | ```Vec``` | | | `commit_request_pcd_hash_list_decrypted` | ```Vec``` | | | `ask_Payments_method_[decrypted` | ```String``` | | | `ask_deposit_method_decrypted` | ```String``` | | | `ask_commit_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": "", "commit_method_decrypted": "", "Payments_request_pcd_hash_list_decrypted": [], "cap_request_pcd_hash_list_decrypted": [], "deposit_request_pcd_hash_list_decrypted": [], "commit_request_pcd_hash_list_decrypted": [], "ask_Payments_method_[decrypted": "", "ask_deposit_method_decrypted": "", "ask_commit_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 | | `commit_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 | | `commit_request_pcd_hash_list_decrypted` | ```Vec``` | Yes | | `ask_Payments_method_[decrypted` | ```String``` | Yes | | `ask_deposit_method_decrypted` | ```String``` | Yes | | `ask_commit_method_decrypted` | ```String``` | Yes | | `certif_key_decrypted` | ```String``` | Yes | | `device_footprint_decrypted` | ```String``` | Yes | | `shared_secret_key_decrypted` | ```Vec``` | | | `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": "", "commit_method_decrypted": "", "Payments_request_pcd_hash_list_decrypted": [], "cap_request_pcd_hash_list_decrypted": [], "deposit_request_pcd_hash_list_decrypted": [], "commit_request_pcd_hash_list_decrypted": [], "ask_Payments_method_[decrypted": "", "ask_deposit_method_decrypted": "", "ask_commit_method_decrypted": "", "certif_key_decrypted": "", "device_footprint_decrypted": "", "sig_value":"", "shared_secret_key_decrypted": [], "shard_decrypted":"" } ] ``` #### 16.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 | | `commit_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 | | `commit_request_pcd_hash_list_decrypted` | ```Vec``` | Yes | | `ask_Payments_method_[decrypted` | ```String``` | Yes | | `ask_deposit_method_decrypted` | ```String``` | Yes | | `ask_commit_method_decrypted` | ```String``` | Yes | | `certif_key_decrypted` | ```String``` | Yes | | `device_footprint_decrypted` | ```String``` | Yes | | `code_confirm_decrypted` | ```String``` | Yes | 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": "", "commit_method_decrypted": "", "Payments_request_pcd_hash_list_decrypted": [], "cap_request_pcd_hash_list_decrypted": [], "deposit_request_pcd_hash_list_decrypted": [], "commit_request_pcd_hash_list_decrypted": [], "ask_Payments_method_decrypted": "", "ask_deposit_method_decrypted": "", "ask_commit_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 | | `commit_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 | | `commit_request_pcd_hash_list_decrypted` | ```Vec``` | Yes | | `ask_Payments_method_[decrypted` | ```String``` | Yes | | `ask_deposit_method_decrypted` | ```String``` | Yes | | `ask_commit_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": "", "commit_method_decrypted": "", "Payments_request_pcd_hash_list_decrypted": [], "cap_request_pcd_hash_list_decrypted": [], "deposit_request_pcd_hash_list_decrypted": [], "commit_request_pcd_hash_list_decrypted": [], "ask_Payments_method_[decrypted": "", "ask_deposit_method_decrypted": "", "ask_commit_method_decrypted": "", "certif_key_decrypted": "", "device_footprint_decrypted": "" } ] ``` #### 16.2.7. StorageocketsPrivate #### 16.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" } } ] ``` ## 17. 12. Rust considerations ### 17.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. ### 17.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. ### 17.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. ### 17.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. ### 17.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. ### 17.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) ## 18. Todo