sdk_common/doc/Specs-Datamodel.md

86 KiB

Data model

1. Autheurs, validations, dates, versions, changement and historique

Cf. Git SDK COMMON

2. Table des matières

3. Documents de référence

Voir Doc_references.md.

4. Methods

4.1. DepositMethod

Attribute Name Type Option
method String

Pseudo-code:

{
  "method": ""
}

4.2. commitMethod

Attribute Name Type Option
method String

Pseudo-code:

{
  "method": ""
}

4.3. PaymentsMethod

Attribute Name Type Option
method String

Pseudo-code:

{
  "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:

{
  "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<String>
role_confidential_attribute_group Vec<String>
private_attribute_group Vec<String>

Pseudo-code:

{
  "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:

{
  "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<String>
data_size_max i64
Payments_method_list_public Vec<String>
succession_process_hash String
device_footprint String

Pseudo-code:

{
  "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:

{
  "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:

{
  "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:

{
  "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<String>

Pseudo-code:

{
  "payload_list_confidential": []
}

5.4.2. CommitPrivateAttributeGroup

Attribute Name Type Option
payload_list_private Vec<String>

Pseudo-code:

{
  "payload_list_private": []
}
4.2.1. CommitPublicAttributeGroup
Attribute Name Type Option
for_sp_address_list Vec<String>
goal_list Vec<String>
provider_type String
commit_request_pcd_hash_list Vec<String>
ref_item_hash_list Vec<String>
ref_request_pcd_hash_list Vec<String>
payload_public_list Vec<String>

Pseudo-code:

{
  "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:

{
  "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<String>
for_address_list Vec<String>
goal_list Vec<String>
provider_type String
ref_item_hash_list Vec<String>
ref_request_pcd_hash_list Vec<String>
payload_list_public Vec<String>
audit_code_list_public Vec<String>

Pseudo-code:

{
  "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<String>
audit_code_list_confidential Vec<String>

Pseudo-code:

{
  "payload_list_confidential": [],
  "audit_code_list_confidential": []
}

5.5.3. DepositPrivateAttributeGroup

Attribute Name Type Option
payload_list_private Vec<String>
audit_code_private String
Pseudo-code:
{
  "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:

{
  "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<String>
goal_list Vec<String>
provider_type String
commit_request_pcd_hash_list Vec<String>
order_request_pcd_hash_list Vec<String>
invoice_request_pcd_hash_list Vec<String>
pay_request_pcd_hash_list Vec<String>
ref_item_hash_list Vec<String>
ref_request_pcd_hash_list Vec<String>
payload_list_public Vec<String>
audit_code_list_public Vec<String>

Pseudo-code:


5.7.2. PaymentsRoleConfidentialAttributeGroup

Attribute Name Type Option
payload_list_confidential Vec<String>
audit_code_list_confidential Vec<String>

Pseudo-code:

{
  "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<String>
audit_code_private String

Pseudo-code:

{
  "payload_list_private": [],
  "audit_code_private": ""
}

5.8. Peer

Attribute Name Type Option
item Item
layer_list Vec<String>
public_attribute_group PeerPublicAttributeGroup
private_attribute_group PeerPrivateAttributeGroup

Pseudo-code:

{
  "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<String>
daily_sp_tx_mine_list Vec<String>
daily_sp_tx_mine_reward_list Vec<String>
tx_by_blocs_list Vec<Bloc>

Pseudo-code:

{
  "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:

{
  "config": ""
}

5.9. Process

Attribute Name Type Option
item Item
item_process_public_attribute_group ProcessPublicAttributeGroup

Pseudo-code:

{
  "item": {},
  "item_process_public_attribute_group": ProcessPublicAttributeGroup
}

5.9.1. ProcessPublicAttributeGroup

Attribute Name Type Option
roles_group RolesGroup

Pseudo-code:

{
  "roles_group": {}
}

6. Encryption

6.1. KeyEncryption

Attribute Name Type Option
attribute_name String Yes
key String Yes
algorithm String Yes

Pseudo-code:

{
  "attribute_name": "",
  "key": "",
  "algorithm": ""
}

6.2. Aes256GcmIv96Bit

Attribute Name Type Option
key GenericArray<u8, u32>

Pseudo-code:

{
  "key": []
}

7. Messages

7.1. Message

Attribute Name Type Option
message MessageGeneric
request_enc String

Pseudo-code:

{
  "message": Message,
  "request_enc": ""
}

7.2. MessageConnect

Attribute Name Type Option
message MessageGeneric

Pseudo-code:

{
  "message": Message
}

7.3. MessageGeneric

Attribute Name Type Option
shared_peer_list Vec<Peer>
shared_process_list Vec<Process>
faucet_sp_address String
pow Pow
raw_transaction_list Vec<String> Yes

Pseudo-code:

{
  "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:

{
  "data_hash": "",
  "timestamp": 0,
  "nonce": 0,
  "pattern": "",
  "difficulty": 0
}

7.5. Process

Attribute Name Type Option
process_list Vec<Process>

Pseudo-code:

{
  "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:

{
  "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:

{
  "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<String> Yes
reward_send_tx_list Vec<String> Yes
anchorage_tx_list Vec<String> Yes
spend_key String Yes
scan_key String Yes

Pseudo-code:

{
  "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<String>
spend_key String Yes
scan_key String Yes

Pseudo-code:

{
  "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:

{
  "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<String>
spend_key String Yes
scan_key String Yes

Pseudo-code:

{
  "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<String>
l1_tx String Yes

Pseudo-code:

{
  "l2_block_hash_list": [],
  "l1_tx": ""
}

9.5. BlockCertif

Attribute Name Type Option
block_hash_list Vec<String>
certif_hash Vec<String>
l1_tx String

Pseudo-code:

{
  "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<String>
zone_list Vec<String>
label_list Vec<String>
ref_list Vec<String>
data_list Vec<String>
amount Amount
number Number
render_template_list Vec<String>
legal_text_list Vec<String>
key_list Vec<KeyEncryption>

Pseudo-code:

{
  "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:

{
  "meta_data": MetaData
}

10.2. MetadataPrivate

Attribute Name Type Option
meta_data MetaData

Pseudo-code:

{
  "meta_data": MetaData
}

10.3. MetadataRoleConfidential

Attribute Name Type Option
meta_data MetaData

Pseudo-code:

{
  "meta_data": MetaData
}

10.4. Amount

Attribute Name Type Option
timestamp u64
change_source_list Vec<String>
amount_cent i64
amount_unit String
amount_unit_ref String

Pseudo-code:

{
  "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:

{
  "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:

{
  "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:

{
  "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:

{
  "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:

{
  "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:

{
  "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:

{
  "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:

{
  "attribute_name": "",
  "data_enc": ""
}

13. Prd

Attribute Name Type Option
request Request
sig_value String
request_pcd_reference_keys_role_confidential_list_confidential Vec<String>
request_pcd_origin_hash_keys_role_confidential_list_confidential Vec<String>
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<String> Yes
cap_request_pcd_hash_list_confidential Vec<String> Yes
deposit_request_pcd_hash_list_confidential Vec<String> Yes
commit_request_pcd_hash_list_confidential Vec<String> 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:

{
  "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:

{
  "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:

{
  "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:

{
  "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:

{
  "request_prd": Prd,
  "code_confirm_confidential": ""
}

13.5. PrdMessage

Attribute Name Type Option
request_prd Prd
raw_transaction_list Vec<String> Yes

Pseudo-code:

{
  "request_prd": Prd,
  "raw_transaction_list": []
}

13.6. PrdResponse

Attribute Name Type Option
request_prd Prd
sig_value String

Pseudo-code:

{
  "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<ConditionPrdAddressSet>
condition_publish_list Vec<ConditionPublish> Yes
condition_cap_list Vec<ConditionCap> Yes
condition_Payments_list Vec<ConditionPayments> Yes
condition_commit_list Vec<Conditioncommit> Yes
condition_attribute_encryption_list Vec<String>
condition_orchestration_list Vec<ConditionOrchestration> Yes
role_succession String Yes
role_resolve String Yes
role_renew String Yes

Pseudo-code:

{
  "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<String> Yes
hash_ko_list Vec<String> Yes
hash_none_list Vec<String> Yes
from_list Vec<String>
from_type String
from_method String
to_list Vec<String>
to_type String
to_method String

Pseudo-code:

{
  "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<ConditionDeposit> Yes

Pseudo-code:

{
  "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:

{
  "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:

{
  "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:

{
  "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:

{
  "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<String>
request_prd_sp_address_required_list Vec<String>
request_prd_sp_address_quota i32
request_prd_value_ok_list Vec<String>
request_prd_value_ko_list Vec<String>
request_prd_value_none_list Vec<String>
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:

{
  "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:

{
  "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<RoleArtefact>

Pseudo-code:

{
  "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:

{
  "item_name": "Nom de l'élément",
  "role": Role
}

14.3.2. RoleDeposit

Attribute Name Type Option
item_name String
role Role
Pseudo-code:
{
  "item_name": "Nom de l'élément",
  "role": Role
}

14.3.3. Rolecommit

Attribute Name Type Option
item_name String
role Role

Pseudo-code:

{
  "item_name": "Nom de l'élément",
  "role": Role
}

14.3.4. RoleMember

Attribute Name Type Option
item_name String
role Role

Pseudo-code:

{
  "item_name": "Nom de l'élément",
  "role": Role
}

14.4. RolePeer

Attribute Name Type Option
item_name String
role Role

Pseudo-code:

{
  "item_name": "Nom de l'élément",
  "role": Role
}

14.4.1. RolePayments

Attribute Name Type Option
item_name String
role Role

Pseudo-code:

{
  "item_name": "Nom de l'élément",
  "role": Role
}

14.4.2. RoleProcess

Attribute Name Type Option
item_name String
role Role

Pseudo-code:

{
  "item_name": "",
  "role": Role
}

15. Relay side chain data streaming

15.1. Transaction

Attribute Name Type Option
raw_tx String
role String

Pseudo-code:

{
  "raw_tx": "",
  "pubkey": ""
}

15.2. Bloc

Attribute Name Type Option
raw_block String

Pseudo-code:

{
  "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<StoragethirdPartyPublic>
key_revoke_sp_address String

Pseudo-code:

[
  {
    "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:

{
  "device_footprint": "",
  "sp_address": ""
}

16.1.2. StoragePeerPublic

Pseudo-code:

[
  {
    "hash": "",
    "peer: Peer
  }
]

16.1.3. StorageProcessPublic

Pseudo-code:

[
  {
    "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<StorageMessagesPeerPublic>

Pseudo-code:

[
  {
    "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:

{
    "domain": "",
    "ip": "",
    "port": "",
    "timestamp": 0,
    "sender": false,
    "validation_status": "pending|ok|ko"
  }],
}

16.1.5. StoragePcdPublic

Pseudo-code:

[
  {
    "hash": "",
    "validation_status": "pending|ok|ko"
  }
]

16.1.6. StoragePrdPublic

4.6.1. StoragePrdListPublic

Pseudo-code:

[
  {
    "hash": "",
    "request_prd": PrdList,
    "validation_status": "pending|ok|ko"
  }
]
4.6.2. StoragePrdUpdatePublic

Pseudo-code:

[
  {
    "hash": "",
    "request_prd": PrdUpdate,
    "validation_status": "pending|ok|ko"
  }
]
4.6.3. StoragePrdResponsePublic

Pseudo-code:

[
  {
    "hash": "",
    "request_prd": PrdResponse,
    "validation_status": "pending|ok|ko"
  }
]
4.6.4. StoragePrdConfirmPublic

Pseudo-code:

[
  {
    "hash": "",
    "request_prd": PrdConfirm,
    "validation_status": "pending|ok|ko"
]
4.6.5. StoragePrdMessagePublic

Pseudo-code:

[
  {
    "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<StorageKeyRecoverSpendPrivate>

Pseudo-code:

[
  {
    "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:

{
  "seed_rand_1": "",
  "seed_rand_2": "",
  "part1_enc": ""
}
StorageProcessShardsBackupPrivate
Attribute Name Type Option
hash String
Members Vec<String>
index usize

Pseudo-code:

{
  "hash": "",
  "Members": [],
  "index": 0
}

16.2.2. StoragePeerPrivate

Attribute Name Type Option
hash_public String
shared_peer StoragePeerPrivate

Pseudo-code:

[
  {
    "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<StorageL2NodePrivate>

Pseudo-code:

{
  "domain": "",
  "address_ip": "",
  "relay": StorageRelayPrivate,
  "l1_node": StorageL1NodePrivate,
  "l1_miner": StorageL1MinerPrivate,
  "l2_node_list": []
}
StorageRelayPrivate
Attribute Name Type Option
faucet_tx_list Vec<String> Yes
spend_key String
scan_key String

Pseudo-code:

{
  "faucet_tx_list": [],
  "spend_key": "",
  "scan_key": ""
}
StorageL1NodePrivate
Attribute Name Type Option
reward_tx_list Vec<String>
anchorage_tx_list Vec<String>
spend_key String
scan_key String

Pseudo-code:

{
  "reward_tx_list": [],
  "anchorage_tx_list": [],
  "spend_key": "",
  "scan_key": ""
}
StorageL1MinerPrivate
Attribute Name Type Option
mining_reward_tx_list Vec<String>
spend_key String
scan_key String

Pseudo-code:

{
  "mining_reward_tx_list": [],
  "spend_key": "",
  "scan_key": ""
}
StorageL2NodePrivate
Attribute Name Type Option
l2_miner StorageL2NodeMinerPrivate
l2_certif StorageL2NodeCertifPrivate

Pseudo-code:

{
  "l2_miner": StorageL2NodeMinerPrivate,
  "l2_certif": StorageL2NodeCertifPrivate
}

####### StorageL2NodeMinerPrivate

Attribute Name Type Option
mining_descriptor String
mining_reward_tx_list Vec<String>
refunder_tx_list Vec<String>
spend_key String
scan_key String

Pseudo-code:

{
  "mining_descriptor": "",
  "minig_reward_tx_list": [],
  "refunder_tx_list": [],
  "spend_key": "",
  "scan_key": ""
}

####### StorageL2NodeCertifPrivate

Attribute Name Type Option
certif_l1_tx_list Vec<String>
refunded_tx_list Vec<String>
anchorage_tx_list Vec<String>
spend_key String
scan_key String

Pseudo-code:

{
  "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:

{
  "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:

{
  "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<String>

Pseudo-code:

[{
  "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<String>
cap_request_pcd_hash_list_decrypted Vec<String>
deposit_request_pcd_hash_list_decrypted Vec<String>
commit_request_pcd_hash_list_decrypted Vec<String>
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:

[
  {
    "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<String> Yes
cap_request_pcd_hash_list_decrypted Vec<String> Yes
deposit_request_pcd_hash_list_decrypted Vec<String> Yes
commit_request_pcd_hash_list_decrypted Vec<String> 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<StorageDecryptedSharedSecretKeyPrivate>
shard_decrypted String Yes

Pseudo-code:

[
  {
    "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:

{
  "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<String> Yes
cap_request_pcd_hash_list_decrypted Vec<String> Yes
deposit_request_pcd_hash_list_decrypted Vec<String> Yes
commit_request_pcd_hash_list_decrypted Vec<String> 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:

[
  {
    "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<String> Yes
cap_request_pcd_hash_list_decrypted Vec<String> Yes
deposit_request_pcd_hash_list_decrypted Vec<String> Yes
commit_request_pcd_hash_list_decrypted Vec<String> 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:

[
  {
    "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:

[
  {
    "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:

[
  {
    "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