sdk_common/doc/Specs-Datamodel.md

87 KiB

Specs - Datas

1. Documents de référence

Voir Doc_references.md.

2. Methods

2.1. DepositMethod

Attribute Name Type Option
method String

Pseudo-code:

{
  "method": ""
}

2.2. CommitmentMethod

Attribute Name Type Option
method String

Pseudo-code:

{
  "method": ""
}

2.3. PaymentMethod

Attribute Name Type Option
method String

Pseudo-code:

{
  "method": ""
}

3. Items

3.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
}

3.2. ItemArtefact

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": []
}

3.3. ItemMember

Attribute Name Type Option
item Item
public_attribute_group ItemMemberPublicAttributeGroup
role_confidential_attribute_group ItemMemberRoleConfidentialAttributeGroup
private_attribute_group ItemMemberPrivateAttributeGroup

Pseudo-code:

{
  "item": Item,
  "public_attribute_group": ItemMemberPublicAttributeGroup,
  "role_confidential_attribute_group": ItemMemberRoleConfidentialAttributeGroup,
  "private_attribute_group": ItemMemberPrivateAttributeGroup
}

3.3.1. ItemMemberPublicAttributeGroup

Attribute Name Type Option
sp_address_public String
sp_address_public_sig String
sp_address_revoke_public String
sp_address_revoke_public_sig String
third_sp_address_list_public Vec<String>
data_size_max i64
payment_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,
  "payment_method_list_public": [],
  "succession_process_hash": "",
  "device_footprint": ""
}

3.3.2. ItemMemberRoleConfidentialAttributeGroup

Attribute Name Type Option
shard_confidential String yes
pre_id_confidential String yes

Pseudo-code:

{
  "shard_confidential": "",
  "pre_id_confidential": ""
}

3.3.3. ItemMemberRolePrivateAttributeGroup

Attribute Name Type Option
priv_key_mainnet_spend String yes
priv_key_mainnet_scan String yes
priv_key_signet_scan String yes

Pseudo-code:

{
  "priv_key_mainnet_spend": "",
  "priv_key_mainnet_scan": "",
  "priv_key_signet_scan": "",
}

3.4. ItemCommitment

Attribute Name Type Option
item Item
public_attribute_group ItemCommitmentPublicAttributeGroup
role_confidential_attribute_group ItemCommitmentRoleConfidentialAttributeGroup
private_attribute_group ItemCommitmentPrivateAttributeGroup

Pseudo-code:

{
  "item": Item,
  "public_attribute_group": ItemCommitmentPublicAttributeGroup,
  "role_confidential_attribute_group": ItemCommitmentRoleConfidentialAttributeGroup,
  "private_attribute_group": ItemCommitmentPrivateAttributeGroup
}

3.4.1. ItemCommitmentRoleConfidentialAttributeGroup

Attribute Name Type Option
payload_list_confidential Vec<String>

Pseudo-code:

{
  "payload_list_confidential": []
}

3.4.2. ItemCommitmentPrivateAttributeGroup

Attribute Name Type Option
payload_list_private Vec<String>

Pseudo-code:

{
  "payload_list_private": []
}
4.2.1. ItemCommitmentPublicAttributeGroup
Attribute Name Type Option
for_sp_address_list Vec<String>
goal_list Vec<String>
provider_type String
commitment_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": "",
  "commitment_request_pcd_hash_list": [],
  "ref_item_hash_list": [],
  "ref_request_pcd_hash_list": [],
  "payload_public_list": []
}

3.5. ItemDeposit

Attribute Name Type Option
item Item
public_attribute_group ItemDepositPublicAttributeGroup
role_confidential_attribute_group ItemDepositRoleConfidentialAttributeGroup
private_attribute_group ItemDepositPrivateAttributeGroup

Pseudo-code:

{
  "item": Item,
  "public_attribute_group": ItemDepositPublicAttributeGroup,
  "role_confidential_attribute_group": ItemDepositRoleConfidentialAttributeGroup,
  "private_attribute_group": ItemDepositPrivateAttributeGroup
}

3.5.1. ItemDepositPublicAttributeGroup

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": []
}

3.5.2. ItemDepositRoleConfidentialAttributeGroup

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

Pseudo-code:

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

3.5.3. ItemDepositPrivateAttributeGroup

Attribute Name Type Option
payload_list_private Vec<String>
audit_code_private String
Pseudo-code:
{
  "payload_list_private": [],
  "audit_code_private": ""
}

3.6. ItemEnum

  • Process(ItemProcess): Contains an item of type ItemProcess, representing a process.
  • Peer(ItemPeer): Contains an item of type ItemPeer, representing a peer.
  • Member(ItemMember): Contains an item of type ItemMember, representing a member.
  • Payment(ItemPayment): Contains an item of type ItemPayment, representing a payment.
  • Deposit(ItemDeposit): Contains an item of type ItemDeposit, representing a deposit.
  • Artefact(ItemArtefact): Contains an item of type ItemArtefact, representing an artefact.
  • Commitment(ItemCommitment): Contains an item of type ItemCommitment, representing a commitment.

3.7. ItemPayment

Attribute Name Type Option
item Item
public_attribute_group ItemPaymentPublicAttributeGroup
role_confidential_attribute_group ItemPaymentRoleConfidentialAttributeGroup
private_attribute_group ItemPaymentPrivateAttributeGroup

Pseudo-code:

{
  "item": Item,
  "public_attribute_group": ItemPaymentPublicAttributeGroup,
  "role_confidential_attribute_group": ItemPaymentRoleConfidentialAttributeGroup,
  "private_attribute_group": ItemPaymentPrivateAttributeGroup
}

3.7.1. ItemPaymentPublicAttributeGroup

Attribute Name Type Option
for_sp_address_list Vec<String>
goal_list Vec<String>
provider_type String
commitment_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:


3.7.2. ItemPaymentRoleConfidentialAttributeGroup

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": "",
  "commitment_request_pcd_hash_list": [],
  "order_request_pcd_hash_list": [],
  "invoice_request_pcd_hash_list": [],
  "pay_request_pcd_hash_list": [],
  "ref_item_hash_list": [],
  "ref_request_pcd_hash_list": [],
  "payload_list_public": [],
  "audit_code_list_public": []
}

3.7.3. ItemPaymentPrivateAttributeGroup

Attribute Name Type Option
payload_list_private Vec<String>
audit_code_private String

Pseudo-code:

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

3.8. ItemPeer

Attribute Name Type Option
item Item
layer_list Vec<String>
public_attribute_group ItemPeerPublicAttributeGroup
private_attribute_group ItemPeerPrivateAttributeGroup

Pseudo-code:

{
  "item": Item,
  "layer_list": [],
  "public_attribute_group": ItemPeerPublicAttributeGroup,
  "private_attribute_group": ItemPeerPrivateAttributeGroup
}

3.8.1. ItemPeerPublicAttributeGroup

Attribute Name Type Option
sp_address String
domain String
ip_address String
pow_difficulty u32
pow_pattern String
pow_prefix String
data_size_max i64
timestamp_delay_max u64
daily_hash_list Vec<String>
daily_sp_tx_mine_list Vec<String>
daily_sp_tx_mine_reward_list Vec<String>

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": []
}

3.8.2. ItemPeerPrivateAttributeGroup

Attribute Name Type Option
config String

Pseudo-code:

{
  "config": ""
}

3.9. ItemProcess

Attribute Name Type Option
item Item
item_process_public_attribute_group ItemProcessPublicAttributeGroup

Pseudo-code:

{
  "item": {},
  "item_process_public_attribute_group": ItemProcessPublicAttributeGroup
}

3.9.1. ItemProcessPublicAttributeGroup

Attribute Name Type Option
roles_group RolesGroup

Pseudo-code:

{
  "roles_group": {}
}

4. Encryption

4.1. KeyEncryption

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

Pseudo-code:

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

4.2. Aes256GcmIv96Bit

Attribute Name Type Option
key GenericArray<u8, u32>

Pseudo-code:

{
  "key": []
}

5. Messages

5.1. Message

Attribute Name Type Option
message MessageGeneric
request_enc String

Pseudo-code:

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

5.2. MessageConnect

Attribute Name Type Option
message MessageGeneric

Pseudo-code:

{
  "message": Message
}

5.3. MessageGeneric

Attribute Name Type Option
shared_peer_list Vec<SharedPeer>
shared_process_list Vec<SharedProcess>
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": []
}

5.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
}

5.5. SharedProcess

Attribute Name Type Option
process_list Vec<ItemProcess>

Pseudo-code:

{
  "process_list": []
}

5.6. SharedPeer

Attribute Name Type Option
domain String Yes
address_ip String
relay Relay
l1_node L1Node Yes
l1_miner L1Miner Yes
l2_node_list [L2Node]

Pseudo-code:

{
  "domain": "",
  "address_ip": "",
  "relay": Relay,
  "l1_node": L1Node,
  "l1_miner": L1Miner,
  "l2_node_list": []
}

6. 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,
}

7. 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": ""
}

7.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": ""
}

7.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": ""
}

7.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": ""
}

7.4. L2Certif

Attribute Name Type Option
l2_block_hash_list Vec<String>
l1_tx String Yes

Pseudo-code:

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

7.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": ""
}

8. 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": []
}

8.1. MetadataProcessublic

Attribute Name Type Option
meta_data MetaData

Pseudo-code:

{
  "meta_data": MetaData
}

8.2. MetadataPrivate

Attribute Name Type Option
meta_data MetaData

Pseudo-code:

{
  "meta_data": MetaData
}

8.3. MetadataRoleConfidential

Attribute Name Type Option
meta_data MetaData

Pseudo-code:

{
  "meta_data": MetaData
}

8.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": ""
}

8.5. Number

Attribute Name Type Option
fixed_state boolean
number i32
number_unit String

Pseudo-code:

{
  "fixed_state": false,
  "number": 0,
  "number_unit": ""
}

9. 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": ""
}

10. RequestPcd

Attribute Name Type Option
request Request
item_enc_list Vec< RequestPcdItemGenericEnc>
pagination Pagination Yes

Pseudo-code:

{
  "request": Request,
  "item_enc_list": [],
  "pagination": {Pagination
}

10.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
}

10.2. RequestPcdItemGenericEnc

Attribute Name Type Option
version i64
item_type String
item_name String
name String
request_pcd_item_enc_attribute_public_list Vec< RequestPcdItemEncAttributePublic> Yes
request_pcd_item_enc_attribute_role_confidential_list Vec< RequestPcdItemEncAttributeRoleConfidential> Yes
request_pcd_item_enc_attribute_private_list Vec< RequestPcdItemEncAttributePrivate> 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": []
}

10.2.1. RequestPcdItemEncAttributePublic

Attribute Name Type Option
attribute_name String
data_enc String Yes
key String Yes
data String Yes

Pseudo-code:

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

10.2.2. RequestPcdItemEncAttributeRoleConfidential

Attribute Name Type Option
attribute_name String
data_enc String Yes
key String Yes
data String Yes

Pseudo-code:

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

10.2.3. RequestPcdItemEncAttributePrivate

Attribute Name Type Option
attribute_name String
data_enc String Yes
key String Yes
data String Yes

Pseudo-code:

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

11. RequestPrd

Attribute Name Type Option
request Request
sig_value String
request_pcd_reference_keys_role_confidential_list_enc_by_shared_secret Vec<String>
request_pcd_origin_hash_keys_role_confidential_list_enc_by_shared_secret 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
payment_method_enc_by_shared_secret String Yes
deposit_method_enc_by_shared_secret String Yes
commitment_method_enc_by_shared_secret String Yes
payment_request_pcd_hash_list_enc_by_shared_secret Vec<String> Yes
cap_request_pcd_hash_list_enc_by_shared_secret Vec<String> Yes
deposit_request_pcd_hash_list_enc_by_shared_secret Vec<String> Yes
commitment_request_pcd_hash_list_enc_by_shared_secret Vec<String> Yes
ask_payment_method_enc_by_shared_secret String Yes
ask_deposit_method_enc_by_shared_secret String Yes
ask_commitment_method_enc_by_shared_secret String Yes
certif_key_enc_by_shared_secret String Yes
device_footprint_enc_by_sp_shared_secret String

Pseudo-code:

{
  "request": {},
  "sig_value": "",
  "request_pcd_reference_keys_role_confidential_list_enc_by_shared_secret": [],
  "request_pcd_origin_hash_keys_role_confidential_list_enc_by_shared_secret": [],
  "message_public": "",
  "message_confidential": "",
  "message_private": "",
  "sp_address_to": "",
  "sp_address_from": "",
  "sp_address_reply": "",
  "timestamp_declared": 0,
  "role_name_from": "",
  "role_name_to": "",
  "payment_method_enc_by_shared_secret": "",
  "deposit_method_enc_by_shared_secret": "",
  "commitment_method_enc_by_shared_secret": "",
  "payment_request_pcd_hash_list_enc_by_shared_secret": [],
  "cap_request_pcd_hash_list_enc_by_shared_secret": [],
  "deposit_request_pcd_hash_list_enc_by_shared_secret": [],
  "commitment_request_pcd_hash_list_enc_by_shared_secret": [],
  "ask_payment_method_enc_by_shared_secret": "",
  "ask_deposit_method_enc_by_shared_secret": "",
  "ask_commitment_method_enc_by_shared_secret": "",
  "certif_key_enc_by_shared_secret": "",
  "device_footprint_enc_by_sp_shared_secret": ""
}

11.1. RequestPrdList

Attribute Name Type Option
request_prd RequestPrd
item_member_enc_by_sp_shared_secret String Yes

Pseudo-code:

{
  "request_prd": RequestPrd,
  "item_member_enc_by_sp_shared_secret": ""
}

11.2. RequestPrdUpdate

Attribute Name Type Option
request_prd RequestPrd

Pseudo-code:

{
  "request_prd": RequestPrd
}

11.3. RequestPrdResponse

Attribute Name Type Option
request_prd RequestPrd
shared_secret_key_enc_by_sp_shared_secret String Yes
shard_enc_by_sp_shared_secret String Yes

Pseudo-code:

{
  "request_prd": RequestPrd,
  "sig_value": "",
  "shared_secret_key_enc_by_sp_shared_secret": "",
  "shard_enc_by_sp_shared_secret": ""
}

11.4. RequestPrdConfirm

Attribute Name Type Option
request_prd RequestPrd
code_confirm_enc_by_shared_secret String Yes

Pseudo-code:

{
  "request_prd": RequestPrd,
  "code_confirm_enc_by_shared_secret": ""
}

11.5. RequestPrdMessage

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

Pseudo-code:

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

11.6. RequestPrdResponse

Attribute Name Type Option
request_prd RequestPrd
sig_value String

Pseudo-code:

{
  "request_prd": RequestPrd,
  "sig_value": ""
}

12. Roles

12.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_payment_list Vec<ConditionPayment> Yes
condition_commitment_list Vec<ConditionCommitment> 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_payment_list": [],
  "condition_commitment_list": [],
  "condition_attribute_encryption_list": [],
  "condition_orchestration_list": [],
  "role_succession": "",
  "role_resolve": "",
  "role_renew": ""
}

12.2. Conditions

12.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": ""
}

12.2.2. ConditionPayment

Attribute Name Type Option
request_prd_type String
transaction_mode TransactionMode
payment_proof_validation ConditionRequestPrdAddressSet
condition_deposit_list Vec<ConditionDeposit> Yes

Pseudo-code:

{
  "request_prd_type": "",
  "transaction_mode": TransactionMode,
  "payment_proof_validation": ConditionRequestPrdAddressSet,
  "condition_deposit_list": []
}

12.2.3. ConditionCommitment

Attribute Name Type Option
request_prd_type String
transaction_mode TransactionMode
payment_proof_validation ConditionRequestPrdAddressSet

Pseudo-code:

{
  "request_prd_type": "",
  "transaction_mode": TransactionMode,
  "payment_proof_validation": ConditionRequestPrdAddressSet
}

12.2.4. ConditionDeposit

Attribute Name Type Option
request_prd_type String
transaction_mode TransactionMode
payment_proof_validation ConditionRequestPrdAddressSet

Pseudo-code:

{
  "request_prd_type": "",
  "transaction_mode": TransactionMode,
  "payment_proof_validation": ConditionRequestPrdAddressSet
}

12.2.5. ConditionOrchestration

Attribute Name Type Option
request_prd_type String
role_ok String
role_ko String
payment_proof_validation ConditionRequestPrdAddressSet

Pseudo-code:

{
  "request_prd_type": "",
  "role_ok": "",
  "role_ko": "",
  "payment_proof_validation": ConditionRequestPrdAddressSet
}

12.2.6. ConditionCap

Attribute Name Type Option
request_prd_type String
transaction_mode TransactionMode
payment_proof_validation ConditionRequestPrdAddressSet

Pseudo-code:

{
  "request_prd_type": "",
  "transaction_mode": "",
  "payment_proof_validation": ConditionRequestPrdAddressSet
}

12.2.7. ConditionRequestPrdAddressSet

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
}

12.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
}

12.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": []
}

12.3.1. RoleArtefact

Attribute Name Type Option
item_name String
role Role

Pseudo-code:

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

12.3.2. RoleDeposit

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

12.3.3. RoleCommitment

Attribute Name Type Option
item_name String
role Role

Pseudo-code:

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

12.3.4. RoleMember

Attribute Name Type Option
item_name String
role Role

Pseudo-code:

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

12.4. RolePeer

Attribute Name Type Option
item_name String
role Role

Pseudo-code:

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

12.4.1. RolePayment

Attribute Name Type Option
item_name String
role Role

Pseudo-code:

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

12.4.2. RoleProcess

Attribute Name Type Option
item_name String
role Role

Pseudo-code:

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

13. Storage

13.1. StoragePublic

13.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": ""
}

13.1.2. StorageItemPeerPublic

Pseudo-code:

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

13.1.3. StorageItemProcessPublic

Pseudo-code:

[
  {
    "hash": "",
    "process: ItemProcess
  }
]

13.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"
  }],
}

13.1.5. StorageRequestPcdPublic

Pseudo-code:

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

13.1.6. StorageRequestPrdPublic

4.6.1. StorageRequestPrdListPublic

Pseudo-code:

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

Pseudo-code:

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

Pseudo-code:

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

Pseudo-code:

[
  {
    "hash": "",
    "request_prd": RequestPrdConfirm,
    "validation_status": "pending|ok|ko"
]
4.6.5. StorageRequestPrdMessagePublic

Pseudo-code:

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

13.2. StoragePrivate

13.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
}

13.2.2. StoragePeerPrivate

Attribute Name Type Option
hash_public String
shared_peer StorageSharedPeerPrivate

Pseudo-code:

[
  {
    "hash_public": "",
    "shared_peer": StorageSharedPeerPrivate
  }
]
StorageSharedPeerPrivate
Attribute Name Type Option
domain String
address_ip String
relay StorageRelayPrivate Yes
l1_node StorageL1NodePrivate Yes
l1_miner StorageL1MinerPrivate Yes
l2_node_list Vec<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": "",
}

13.2.3. StorageProcessPrivate

Public:

Attribute Name Type Option
hash String
confidential_key String
item ItemProcess

Private:

Attribute Name Type Option
hash_public String
confidential_key String
metadata_role_confidentiel_keys MetadataRoleConfidentielKeys

Pseudo-code:

{
  "private": [
    {
      "hash": "",
      "confidential_key": "",
      "item": ItemProcess
    }
  ],
  "public": [{
    "hash_public": "",
    "confidential_key": "",
    "metadata_role_confidentiel_keys":  MetadataRoleConfidentielKeys
  }]
}
MetadataRoleConfidentielKeys
Attribute Name Type Option
tag_list_keys String
zone_list_keys String
label_lis_keys String
ref_list_keys String
data_list_keys String
amount_keys String
number_keys String
render_template_list_keys String
legal_text_list_keys String
key_list_keys String

Pseudo-code:

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

13.2.4. StorageRequestPcdPrivate

Attribute Name Type Option
hash_public String
pcd_aes_key_list_decrypted Vec<String>

Pseudo-code:

[{
  "hash_public": "",
  "pcd_aes_key_list_decrypted": []
}]

13.2.5. StorageRequestPrdPrivate

5.5.1. StorageRequestPrdUpdatePrivate
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
payment_method_decrypted String
deposit_method_decrypted String
commitment_method_decrypted String
payment_request_pcd_hash_list_decrypted Vec<String>
cap_request_pcd_hash_list_decrypted Vec<String>
deposit_request_pcd_hash_list_decrypted Vec<String>
commitment_request_pcd_hash_list_decrypted Vec<String>
ask_payment_method_[decrypted String
ask_deposit_method_decrypted String
ask_commitment_method_decrypted String
certif_key_decrypted String
device_footprint_decrypted String
item_member_decrypted String
pre_id_sp_decrypted String

Pseudo-code:

[
  {
    "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": "",
    "payment_method_decrypted": "",
    "deposit_method_decrypted": "",
    "commitment_method_decrypted": "",
    "payment_request_pcd_hash_list_decrypted": [],
    "cap_request_pcd_hash_list_decrypted": [],
    "deposit_request_pcd_hash_list_decrypted": [],
    "commitment_request_pcd_hash_list_decrypted": [],
    "ask_payment_method_[decrypted": "",
    "ask_deposit_method_decrypted": "",
    "ask_commitment_method_decrypted": "",
    "certif_key_decrypted": "",
    "device_footprint_decrypted": "",
    "item_member_decrypted": "",
    "pre_id_sp_decrypted": ""
  }
]
5.5.2. StorageRequestPrdResponsePrivate
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
payment_method_decrypted String Yes
deposit_method_decrypted String Yes
commitment_method_decrypted String Yes
payment_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
commitment_request_pcd_hash_list_decrypted Vec<String> Yes
ask_payment_method_[decrypted String Yes
ask_deposit_method_decrypted String Yes
ask_commitment_method_decrypted String Yes
certif_key_decrypted String Yes
device_footprint_decrypted String Yes
shared_secret_key_decrypted Vec<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": "",
    "payment_method_decrypted": "",
    "deposit_method_decrypted": "",
    "commitment_method_decrypted": "",
    "payment_request_pcd_hash_list_decrypted": [],
    "cap_request_pcd_hash_list_decrypted": [],
    "deposit_request_pcd_hash_list_decrypted": [],
    "commitment_request_pcd_hash_list_decrypted": [],
    "ask_payment_method_[decrypted": "",
    "ask_deposit_method_decrypted": "",
    "ask_commitment_method_decrypted": "",
    "certif_key_decrypted": "",
    "device_footprint_decrypted": "",
    "sig_value":"",
    "shared_secret_key_decrypted": [],
    "shard_decrypted":""
  }
]

13.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. StorageRequestPrdConfirmPrivate
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
payment_method_decrypted String Yes
deposit_method_decrypted String Yes
commitment_method_decrypted String Yes
payment_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
commitment_request_pcd_hash_list_decrypted Vec<String> Yes
ask_payment_method_[decrypted String Yes
ask_deposit_method_decrypted String Yes
ask_commitment_method_decrypted String Yes
certif_key_decrypted String Yes
device_footprint_decrypted String Yes
code_confirm_decrypted String Yes

Pseudo-code:

[
  {
    "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": "",
    "payment_method_decrypted": "",
    "deposit_method_decrypted": "",
    "commitment_method_decrypted": "",
    "payment_request_pcd_hash_list_decrypted": [],
    "cap_request_pcd_hash_list_decrypted": [],
    "deposit_request_pcd_hash_list_decrypted": [],
    "commitment_request_pcd_hash_list_decrypted": [],
    "ask_payment_method_decrypted": "",
    "ask_deposit_method_decrypted": "",
    "ask_commitment_method_decrypted": "",
    "certif_key_decrypted": "",
    "device_footprint_decrypted": "",
    "code_confirm_decrypted": ""
  }
]
5.5.4. StorageRequestPrdMessagePrivate
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
payment_method_decrypted String Yes
deposit_method_decrypted String Yes
commitment_method_decrypted String Yes
payment_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
commitment_request_pcd_hash_list_decrypted Vec<String> Yes
ask_payment_method_[decrypted String Yes
ask_deposit_method_decrypted String Yes
ask_commitment_method_decrypted String Yes
certif_key_decrypted String Yes
device_footprint_decrypted String Yes

Pseudo-code:

[
  {
    "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": "",
    "payment_method_decrypted": "",
    "deposit_method_decrypted": "",
    "commitment_method_decrypted": "",
    "payment_request_pcd_hash_list_decrypted": [],
    "cap_request_pcd_hash_list_decrypted": [],
    "deposit_request_pcd_hash_list_decrypted": [],
    "commitment_request_pcd_hash_list_decrypted": [],
    "ask_payment_method_[decrypted": "",
    "ask_deposit_method_decrypted": "",
    "ask_commitment_method_decrypted": "",
    "certif_key_decrypted": "",
    "device_footprint_decrypted": ""
  }
]

13.2.7. StorageocketsPrivate

13.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"
    }
  }
]

14. 12. Rust considerations

14.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.

14.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.

14.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.

14.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.

14.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.

14.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)

15. Todo