# 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](#Autheursvalidationsdatesversionschangementandhistorique)
* 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. [7. Enveloppes](#Enveloppes)
* 7.1. [7.1. Enveloppe](#Enveloppe)
* 7.2. [7.2. EnveloppesConnect](#EnveloppesConnect)
* 7.3. [EnvelopeGeneric](#EnvelopeGeneric)
* 7.4. [Pow](#Pow)
* 7.5. [Process](#Process-1)
* 7.6. [Peer](#Peer-1)
* 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. [StorageEnvelopePublic](#StorageEnvelopePublic)
* 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. 7. Enveloppes
### 7.1. 7.1. Enveloppe
| Attribute Name | Type | Option |
| -------------- | -------------------- | ------ |
| `envelope` | ```EnvelopeGeneric``` | |
| `request_enc` | ```String``` | |
Pseudo-code:
```json
{
"envelope": `Envelope` ,
"request_enc": ""
}
```
### 7.2. 7.2. EnveloppesConnect
| Attribute Name | Type | Option |
| -------------- | -------------------- | ------ |
| `envelope` | ```EnvelopeGeneric``` | |
Pseudo-code:
```json
{
"envelope": `Envelope`
}
```
### 7.3. EnvelopeGeneric
| 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 |
Pseudo-code:
```json
{
"data_hash": "",
"timestamp": 0,
"nonce": 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``` | |
Pseudo-code:
```json
{
"request_prd": Prd,
}
```
### 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. StorageEnvelopePublic
| Attribute Name | Type | Option |
| ---------------------------- | ------------------------------------ | ------ |
| `me_sender` | ```boolean``` | |
| `process_hash` | ```String``` | |
| `item_name` | ```String``` | |
| `request_type` | ```String``` | |
| `timestamp` | ```u64``` | |
| `envelope_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": "",
"envelope": StorageEnvelopePublic,
"validation_status": "pending|ok|ko"
}
]
```
##### StorageEnvelopesPeerPublic
| 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