sdk_common/doc/Specs-Datamodel.md

145 KiB

Specs - Datas

1. Documents de référence

Voir Doc_references.md.

2. Methods

2.1. DepositMethod

The DepositMethod struct identifies a specific deposit method, encapsulating the approach or mechanism for deposits within the system.

Attribute Name Type Option Description
method String Represents a deposit method.

Pseudo-code:

{
  "method": ""
}

2.2. CommitmentMethod

CommitmentMethod represents a particular method of commitment, defining how commitments are made or managed in the system.

Attribute Name Type Option Description
method String Represents a commitment method.

Pseudo-code:

{
  "method": ""
}

2.3. PaymentMethod

PaymentMethod specifies a payment mechanism, detailing the method used for financial transactions.

Attribute Name Type Option Description
method String La méthode de paiement représentée par cette struct.

Pseudo-code:

{
  "method": ""
}

3. Items

3.1. Item

The Item struct serves as a foundational element, detailing the basic structure of an item with attributes like UUID, version, and type, central to item management in the system.

Attribute Name Type Option Description
uuid String A unique identifier for the item.
version i64 The version of the item.
item_type String The type of the item. type is a reserved keyword in Rust, renamed here.
name String The name of the item.
pagination_number_per_request_pcd u32 The pagination number per Portable Contract Document ( RequestPcd).
metadata_contract_public MetadataContractPublic Public metadata contract associated with the item.
metadata_role_confidential MetadataRoleConfidential Role-specific confidential metadata associated with the item.
metadata_private MetadataPrivate Private metadata associated with the item.

Pseudo-code:

{
  "uuid": "string",
  "version": 0,
  "item_type": "string",
  "name": "string",
  "pagination_number_per_request_pcd": 0,
  "metadata_contract_public": MetadataContractPublic,
  "metadata_role_confidential": MetadataRoleConfidential,
  "metadata_private": MetadataPrivate
}

3.2. ItemArtefact

ItemArtefact associates an item with artefact-specific attributes, including public, confidential, and private attribute groups, to represent artefacts within the system.

Attribute Name Type Option Description
item Item Represents the item associated with this artefact.
public_attribute_group Vec<String> A list of public attributes associated with the artefact.
role_confidential_attribute_group Vec<String> A list of role-specific confidential attributes for the artefact.
private_attribute_group Vec<String> A list of private attributes associated with the artefact.

Pseudo-code:

{
  "item": Item,
  "public_attribute_group": [],
  "role_confidential_attribute_group": [],
  "private_attribute_group": []
}

3.3. ItemMember

Attribute Name Type Option Description
item Item Represents the item associated with this member.
public_attribute_group ItemMemberPublicAttributeGroup A list of public attributes associated with the member.
role_confidential_attribute_group ItemMemberRoleConfidentialAttributeGroup A list of role-specific confidential attributes for the member.
private_attribute_group ItemMemberPrivateAttributeGroup A list of private attributes associated with the member.

Pseudo-code:

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

3.3.1. ItemMemberPublicAttributeGroup

ItemMemberPublicAttributeGroup outlines public attributes for members, including service provider addresses and payment methods, for transparency in member-related information.

Attribute Name Type Option Description
sp_address_public String The public service provider address.
sp_address_public_sig String The signature for the public service provider address.
sp_address_revoke_public String The public address for revoking service provider access.
sp_address_revoke_public_sig String The signature for the public address for revoking access.
third_sp_address_list_public Vec<String> A list of public addresses for third-party service providers.
data_size_max i64 The maximum size of data allowed.
payment_method_list_public Vec<String> A list of public payment methods available.
succession_process_hash String The hash of the succession process associated with this item.

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

3.3.2. ItemMemberRoleConfidentialAttributeGroup

ItemMemberRoleConfidentialAttributeGroup

Attribute Name Type Option Description
shard_confidential String yes Shard of this member from the cache if it exist
pre_id_confidential String yes pre_id of this member from the cache if it exist
device_footprint_enc_by_sp_shared_secret String yes pre_id of this member from the cache if it exist

Pseudo-code:

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

3.3.3. ItemMemberRolePrivateAttributeGroup

ItemMemberRolePrivateAttributeGroup

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

Pseudo-code:

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

3.4. ItemCommitment

ItemCommitment links an item with commitment-specific attributes across public, confidential, and private spheres, fully representing a commitment.

Attribute Name Type Option Description
item Item Represents the item associated with this commitment.
public_attribute_group ItemCommitmentPublicAttributeGroup The public attribute group associated with this commitment.
role_confidential_attribute_group ItemCommitmentRoleConfidentialAttributeGroup The role-specific confidential attribute group for this commitment.
private_attribute_group ItemCommitmentPrivateAttributeGroup The private attribute group associated with this commitment.

Pseudo-code:

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

3.4.1. ItemCommitmentRoleConfidentialAttributeGroup

This struct encompasses role-specific confidential attributes for commitments, securing sensitive commitment information.

Attribute Name Type Option Description
payload_list_confidential Vec<String> A list of confidential payloads associated with this commitment.

Pseudo-code:

{
  "payload_list_confidential": []
}

3.4.2. ItemCommitmentPrivateAttributeGroup

ItemCommitmentPrivateAttributeGroup contains private attributes for commitments, ensuring privacy for the most sensitive commitment details.

Attribute Name Type Option Description
payload_list_private Vec<String> A list of private payloads associated with this commitment.

Pseudo-code:

{
  "payload_list_private": []
}
4.2.1. ItemCommitmentPublicAttributeGroup

This struct groups public attributes related to commitments, such as goals and provider types, to publicly share commitment details.

Attribute Name Type Option Description
for_sp_address_list Vec<String> A list of service provider addresses related to this commitment.
goal_list Vec<String> A list of goals associated with this commitment.
provider_type String The type of provider making the commitment.
commitment_request_pcd_hash_list Vec<String> A list of hashes for the commitment's RequestPcd documents.
ref_item_hash_list Vec<String> A list of reference hashes for items related to this commitment.
ref_request_pcd_hash_list Vec<String> A list of reference hashes for RequestPcd documents related to this commitment.
payload_public_list Vec<String> A list of public payloads associated with this commitment.

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

It combines an item with deposit-specific attributes, including public, confidential, and private groups, to comprehensively represent a deposit.

Attribute Name Type Option Description
item Item Represents the item associated with this deposit.
public_attribute_group ItemDepositPublicAttributeGroup The public attribute group associated with this deposit.
role_confidential_attribute_group ItemDepositRoleConfidentialAttributeGroup The role-specific confidential attribute group for this deposit.
private_attribute_group ItemDepositPrivateAttributeGroup The private attribute group associated with this deposit.

Pseudo-code:

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

3.5.1. ItemDepositPublicAttributeGroup

It details public attributes for deposits, including target addresses and goals, facilitating the understanding of deposit objectives.

Attribute Name Type Option Description
for_sp_address_list Vec<String> A list of service provider addresses targeted by this deposit.
for_address_list Vec<String> A list of addresses targeted by this deposit.
goal_list Vec<String> A list of goals associated with this deposit.
provider_type String The type of provider making the deposit.
ref_item_hash_list Vec<String> A list of item hashes referenced by this deposit.
ref_request_pcd_hash_list Vec<String> A list of RequestPcd document hashes referenced by this deposit.
payload_list_public Vec<String> A list of public payloads associated with this deposit.
audit_code_list_public Vec<String> A list of public audit codes associated with this deposit.

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

Similar to its commitment counterpart, this struct holds confidential attributes specific to deposits, protecting sensitive deposit information.

Attribute Name Type Option Description
payload_list_confidential Vec<String> A list of confidential payloads associated with this deposit.
audit_code_list_confidential Vec<String> A list of confidential audit codes associated with this deposit.

Pseudo-code:

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

3.5.3. ItemDepositPrivateAttributeGroup

ItemDepositPrivateAttributeGroup secures private deposit attributes, safeguarding the most sensitive aspects of deposits.

Attribute Name Type Option Description
payload_list_private Vec<String> A list of private payloads associated with this deposit.
audit_code_private String A private audit code associated with this deposit.

Pseudo-code:

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

3.6. ItemEnum

This enumeration represents different types of items within a system, where each variant encapsulates a specific struct for a type of item:

  • 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

ItemPayment links an item with payment-specific attributes across public, confidential, and private groups, offering a full view of a payment.

Attribute Name Type Option Description
item Item Represents the item associated with this payment.
public_attribute_group ItemPaymentPublicAttributeGroup The public attribute group associated with this payment.
role_confidential_attribute_group ItemPaymentRoleConfidentialAttributeGroup The role-specific confidential attribute group for this payment.
private_attribute_group ItemPaymentPrivateAttributeGroup The private attribute group associated with this payment.

Pseudo-code:

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

3.7.1. ItemPaymentPublicAttributeGroup

This struct organizes public payment attributes, detailing aspects like service provider addresses and payment goals, for public knowledge.

Attribute Name Type Option Description
for_sp_address_list Vec<String> A list of service provider addresses related to this payment.
goal_list Vec<String> A list of goals associated with this payment.
provider_type String The type of provider making the payment.
commitment_request_pcd_hash_list Vec<String> A list of hashes for the payment's commitment precondition documents.
order_request_pcd_hash_list Vec<String> A list of hashes for the payment's order precondition documents.
invoice_request_pcd_hash_list Vec<String> A list of hashes for the payment's invoice precondition documents.
pay_request_pcd_hash_list Vec<String> A list of hashes for the payment precondition documents.
ref_item_hash_list Vec<String> A list of item hashes referenced by this payment.
ref_request_pcd_hash_list Vec<String> A list of precondition document hashes referenced by this payment.
payload_list_public Vec<String> A list of public payloads associated with this payment.
audit_code_list_public Vec<String> A list of public audit codes associated with this payment.

Pseudo-code:


3.7.2. ItemPaymentRoleConfidentialAttributeGroup

It holds confidential payment attributes, maintaining the confidentiality of critical payment information.

Attribute Name Type Option Description
payload_list_confidential Vec<String> A list of confidential payloads associated with this payment.
audit_code_list_confidential Vec<String> A list of confidential audit codes associated with this payment.

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

ItemPaymentPrivateAttributeGroup protects private payment attributes, ensuring the highest level of privacy for payment details.

Attribute Name Type Option Description
payload_list_private Vec<String> A list of private payloads associated with this payment.
audit_code_private String A private audit code associated with this payment.

Pseudo-code:

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

3.8. ItemPeer

ItemPeer combines basic item information with layers, public, and private attributes, fully detailing a peer within the system.

Attribute Name Type Option Description
item Item Représente les informations de base de l'item.
layer_list Vec<String> Une liste des couches (layers) auxquelles ce pair appartient.
public_attribute_group ItemPeerPublicAttributeGroup Groupe d'attributs publics associés à ce pair.
private_attribute_group ItemPeerPrivateAttributeGroup Groupe d'attributs privés associés à ce pair.

Pseudo-code:

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

3.8.1. ItemPeerPublicAttributeGroup

It outlines public peer attributes, such as service provider addresses and PoW details, for transparency in peer-related information.

Attribute Name Type Option Description
sp_address String The service provider's address associated with this peer.
domain String The domain associated with this peer.
ip_address String The IP address associated with this peer.
pow_difficulty u32 The Proof of Work (PoW) difficulty level required by this peer.
pow_pattern String The PoW pattern used by this peer.
pow_prefix String The PoW prefix used by this peer.
data_size_max i64 The maximum data size allowed by this peer.
timestamp_delay_max u64 The maximum delay (in timestamps) allowed by this peer.
daily_hash_list Vec<String> A daily list of hashes associated with this peer.
daily_sp_tx_mine_list Vec<String> A daily list of service provider transactions mined by this peer.
daily_sp_tx_mine_reward_list Vec<String> A daily list of rewards for service provider transactions mined by this peer.

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

ItemPeerPrivateAttributeGroup contains a private configuration String for a peer, keeping certain peer configurations confidential.

Attribute Name Type Option Description
config String A private configuration String associated with this peer.

Pseudo-code:

{
  "config": ""
}

3.9. ItemProcess

ItemProcess associates an item with a process, including public attribute groups, to represent processes within the system comprehensively.

Attribute Name Type Option Description
item Item Represents the item associated with this process.
item_process_public_attribute_group ItemProcessPublicAttributeGroup The public attribute group associated with this process.

Pseudo-code:

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

3.9.1. ItemProcessPublicAttributeGroup

This struct details public attributes related to processes, like roles groups, to facilitate understanding of process organization.

Attribute Name Type Option Description
roles_group RolesGroup Represents a group of roles associated with this process.

Pseudo-code:

{
  "roles_group": {}
}

4. Encryption

4.1. KeyEncryption

The KeyEncryption struct provides details about encryption keys, including the attribute it's for, the key itself, and the algorithm used, crucial for securing data within the system.

Attribute Name Type Option Description
attribute_name String Yes An optional name of the attribute this encryption key is for.
key String Yes An optional encryption key.
algorithm String Yes An optional encryption algorithm used with this key.

Pseudo-code:

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

4.2. Aes256GcmIv96Bit

This struct represents an encryption scheme using AES-256-GCM with a 96-bit initialization vector (IV), specifying the key details for robust data encryption.

Attribute Name Type Option Description
key GenericArray<u8, u32> Represents an encryption key for the AES-256-GCM algorithm with a 96-bit IV.

Pseudo-code:

{
  "key": []
}

5. Messages

5.1. Message

Message encapsulates a client message, including an encrypted request and its hash, essential for secure and verifiable client-server communication.

Attribute Name Type Option Description
message Message Represents a message, assuming Message is a predefined struct.
request_enc String The encrypted request content.

Pseudo-code:

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

5.2. MessageConnect

The MessageConnect struct is designed to handle connection-related messages, facilitating the establishment of connections within the system.

Attribute Name Type Option Description
message Message Represents a message, assuming Message is a predefined struct.

Pseudo-code:

{
  "message": Message
}

5.3. MessageGeneric

Message provides a general structure for messages, including shared peers and processes, and details like PoW challenges, supporting diverse communication needs

Attribute Name Type Option Description
shared_peer_list Vec<SharedPeer> A list of shared peers, assuming SharedPeer is a predefined struct.
shared_process_list Vec<SharedProcess> A list of shared processes, assuming SharedProcess is a predefined struct.
faucet_sp_address String The service provider address for a faucet.
pow Pow Represents a Proof of Work (PoW) challenge, assuming Pow is a predefined struct.
raw_transaction_list Vec<String> Yes Transaction to broadcast

Pseudo-code:

{
  "shared_peer_list": [],
  "shared_process_list": [],
  "faucet_sp_address": "",
  "pow": {},
  "raw_transaction_list": []
}

5.4. Pow

The Pow struct outlines a Proof of Work challenge, including data hash, timestamp, and nonce, to ensure computational effort for security purposes.

Attribute Name Type Option Description
data_hash String The hash of the data for which the PoW is being solved.
timestamp u64 Yes An optional timestamp associated with the PoW solution.
nonce u64 Yes An optional nonce value used in the PoW calculation.
pattern String The pattern that the PoW solution must match.
difficulty usize The difficulty level of the PoW challenge.

Pseudo-code:

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

5.5. SharedProcess

SharedProcess identifies a shared process within the system, aiding in the management and coordination of collaborative processes.

Attribute Name Type Option Description
processes Vec<ItemProcess> A list of SP addresses related to the role.

Pseudo-code:

{
  "processes": []
}

5.6. SharedPeer

SharedPeer specifies a peer within the network, playing a key role in distributed information sharing and communication.

Attribute Name Type Option Description
domain String Yes The domain associated with the shared peer.
address_ip String The IP address of the shared peer.
relay Relay Represents a relay node in the network.
l1_node L1Node Yes Represents a level 1 (L1) node in the network.
l1_miner L1Miner Yes
l2_node_list [L2Node] Represents a table of level 2 (L2) node in the network.

Pseudo-code:

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

6. Relay

Represents a Relay in the network, specifying its address and port, data handling capacity, and Proof of Work (PoW) requirements.

Attribute Name Type Option Description
address_port u16 The port address of the relay.
data_max_size usize Maximum size of data the relay can handle.
pow_difficulty u32 The difficulty level for the Proof of Work required by the relay.
pow_pattern String The pattern used for the Proof of Work.
pow_prefix String The prefix used for the Proof of Work.
pow_timeout u32 Timeout for pow
faucet_sp_address u32 Faucet address
faucet_tx_list Vec<String> Yes
spend_key String Yes
scan_key String Yes

Pseudo-code:

{
  "address_port": 0,
  "data_max_size": 0,
  "pow_difficulty": 0,
  "pow_pattern": "",
  "pow_prefix": "",
  "pow_timeout": 0,
  "faucet_sp_address": 0,
  "faucet_tx_list": [],
  "spend_key": "",
  "scan_key": ""
}

7. L1Node

The L1Node struct details a Level 1 blockchain node, including its network, IP address, and status, integral to blockchain operations and interactions.

Attribute Name Type Option Description
address_port u16 The port address of the node.
explorer_base_url String The base URL of the explorer.
sp_address_anchorage String The SP anchorage address.
sp_address_reward String The SP reward address.
l2_mining L2Mining Yes
l2_certif L2Certif Yes
reward_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": "",
  "sp_address_anchorage": "",
  "sp_address_reward": "",
  "l2_mining": L2Mining,
  "l2_certif": L2Certif,
  "reward_tx_list": [],
  "anchorage_tx_list": [],
  "spend_key": "",
  "scan_key": ""
}

7.1. L1NodeMining

Attribute Name Type Option Description
sp_address_minig_reward string SP mining reward address.
block_mined_list Vec<String> List of mined blocks.
mining_reward_tx_list Vec<String> Yes
spend_key String Yes
scan_key String Yes

Pseudo-code:

{
  "sp_address_minig_reward": "",
  "block_mined_list": [],
  "mining_reward_tx_list": [],
  "spend_key": "",
  "scan_key": ""
}

7.2. L2Node

This struct represents a Level 2 (Layer 2) blockchain node, focusing on scalability solutions and includes details such as its network and operation layer.

Attribute Name Type Option Description
address_port u16 The port address of the node.
explorer_base_url String The base URL of the explorer.
sp_address_anchorage String The SP anchorage address.
sp_address_reward String The SP reward address.
nbits u32 Number of bits.
magic_number u32 The magic number.
challenge String The challenge.

Pseudo-code:

{
  "address_port": 0,
  "explorer_base_url": "",
  "sp_address_anchorage": "",
  "sp_address_reward": "",
  "nbits": 0,
  "magic_number": 0,
  "challenge": ""
}

7.3. L2NodeMining

Attribute Name Type Option Description
sp_address_minig_reward string SP mining reward address.
sp_address_refunder string SP refunder address.
block_hash_mined_list Vec<String> List of mined block hashes.
minig_reward_tx_list Vec<String> Yes
refunder_tx_list Vec<String> Yes
spend_key String Yes
scan_key String Yes

Pseudo-code:

{
  "sp_address_minig_reward": "",
  "sp_address_refunder": "",
  "block_hash_mined_list": [],
  "minig_reward_tx_list": [],
  "refunder_tx_list": [],
  "spend_key": "",
  "scan_key": ""
}

7.4. L2Certif

L2Certif specifies a Layer 2 certification, including its network and certification type, vital for managing certifications on Layer 2 solutions.

Attribute Name Type Option Description
sp_address_certif_l1 String Level 1 certification address.
sp_address_refunded string Refunded address.
block_certified_list Vec<BlockCertif> List of certified blocks.
certif_l1_tx_list Vec<String> Yes
refunded_tx_list Vec<String> Yes
anchorage_tx_list Vec<String> Yes
spend_key String Yes
scan_key String Yes

Pseudo-code:


7.5. BlockCertif

Attribute Name Type Option Description
block_hash_list Vec<String> List of block hashes.
certif_hash Vec<String> List of certification hashes.
l1_tx String Level 1 transaction.

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

MetaData aggregates various metadata types, including tags, zones, and key lists, offering a comprehensive view of metadata for diverse applications.

Attribute Name Type Option Description
tag_list Vec<String> A list of tags associated with the metadata.
zone_list Vec<String> A list of zones associated with the metadata.
label_list Vec<String> A list of labels associated with the metadata.
ref_list Vec<String> A list of references associated with the metadata.
data_list Vec<String> A list of data entries associated with the metadata.
amount Amount An amount associated with the metadata.
number Number A number associated with the metadata.
render_template_list Vec<String> A list of render templates associated with the metadata.
legal_text_list Vec<String> A list of legal texts associated with the metadata.
key_list Vec<KeyEncryption> A list of key encryption methods associated with the metadata.

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

The MetadataContractPublic struct encapsulates public metadata for contracts, providing transparency and accessibility of contract-related information.

Attribute Name Type Option Description
meta_data MetaData Represents the public metadata associated with a contract.

Pseudo-code:

{
  "meta_data": MetaData
}

8.2. MetadataPrivate

MetadataPrivate holds private metadata, ensuring the confidentiality of sensitive information associated with entities or contracts.

Attribute Name Type Option Description
meta_data MetaData Represents the private metadata associated with an entity.

Pseudo-code:

{
  "meta_data": MetaData
}

8.3. MetadataRoleConfidential

This struct contains role-specific confidential metadata, balancing the need for privacy with role-based access and transparency.

Attribute Name Type Option Description
meta_data MetaData Represents the role-specific confidential metadata associated with an entity.

Pseudo-code:

{
  "meta_data": MetaData
}

8.4. Amount

The Amount struct details financial amounts, including its timestamp, unit, and changes, facilitating precise financial transactions and records.

Attribute Name Type Option Description
timestamp u64 A timestamp associated with the amount.
change_source_list Vec<String> A list of sources for changes to the amount.
amount_cent i64 The amount, allowing for precise financial transactions.
amount_unit String The unit of the amount, such as "USD", "EUR", etc.
amount_unit_ref String A reference to an external unit system, providing context for the amount_unit.

Pseudo-code:

{
  "timestamp": 0,
  "change_source_list": [],
  "amount_cent": 0,
  "amount_unit": "",
  "amount_unit_ref": ""
}

8.5. Number

Number provides a numeric value and its unit, supporting a wide range of quantitative representations in system operations.

Attribute Name Type Option Description
fixed_state boolean Indicates whether the number is in a fixed state or can change.
number i32 The numeric value.
number_unit String The unit of measurement for the number, if applicable.

Pseudo-code:

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

9. Request

Defines a general request structure within the system, encapsulating details about the requested item, its type, version, and associated process and document references.

Attribute Name Type Option Description
item_name String Yes Optionally specifies the name of the item being requested.
request_type String Specifies the type of request. type is a reserved keyword in Rust, hence request_type.
version i64 Specifies the version of the item or process being requested.
process_hash String The hash of the process associated with the request.
request_pcd_reference_hash String Yes Optionally specifies the hash of RequestPcd related to the request.
request_pcd_origin_hash String Yes Optional hash of the originating RequestPcd.
request_prd_reference_hash String Yes Optionally specifies the hash of RequestPrd related to the request.
request_prd_origin_hash String Yes Optional hash of the originating RequestPrd.
item_reference_hash String Yes Optionally specifies the hash of the item related to the request.

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

The request_pcd struct integrates a request with a list of generic encrypted items and pagination details, facilitating the handling of encrypted RequestPcd requests within the system.

Attribute Name Type Option Description
request Request The request, assuming Request is a predefined struct.
item_enc_list Vec< RequestPcdItemGenericEnc> List of generic encrypted items.
pagination Pagination Yes Pagination details, assuming Pagination is a predefined struct.

Pseudo-code:

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

10.1. Pagination

The Pagination struct is essential for managing large datasets, detailing the pagination strategy with start index, number of items, and page index.

Attribute Name Type Option Description
start usize L'indice de départ pour la pagination.
number usize Le nombre d'éléments par page.
page_index usize L'indice de la page actuelle pour la pagination.
page_total usize

Pseudo-code:

{
  "start": 0,
  "number": 0,
  "page_index": 0,
  "page_total": 0
}

10.2. RequestPcdItemGenericEnc

request_pcdItemGenericEnc encompasses encrypted items with optional lists of public, role-confidential, and private encrypted attributes, offering a flexible encryption model for diverse data types.

Attribute Name Type Option Description
version i64 The version of the item.
item_type String The type of the item.
name String The name of the item.
request_pcd_item_enc_attribute_public_list Vec< RequestPcdItemEncAttributePublic> Yes Optional list of public encrypted attributes.
request_pcd_item_enc_attribute_role_confidential_list Vec< RequestPcdItemEncAttributeRoleConfidential> Yes Optional list of role-confidential encrypted attributes.
request_pcd_item_enc_attribute_private_list Vec< RequestPcdItemEncAttributePrivate> Yes Optional list of private encrypted attributes.

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

This struct outlines public encrypted attributes for RequestPcd items, ensuring the secure transmission of public attribute data.

Attribute Name Type Option Description
attribute_name String The name of the attribute.
data_enc String The encrypted data associated with the attribute.

Pseudo-code:

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

10.2.2. RequestPcdItemEncAttributeRoleConfidential

request_pcdItemEncAttributeRoleConfidential deals with role-specific confidential encrypted attributes, securing sensitive data while allowing role-based access.

Attribute Name Type Option Description
attribute_name String The name of the attribute.
data_enc String Yes The encrypted data associated with the attribute.

Pseudo-code:

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

10.2.3. RequestPcdItemEncAttributePrivate

It specifies private encrypted attributes for request_pcd items, protecting the most sensitive information with encryption.

Attribute Name Type Option Description
attribute_name String The name of the attribute.
data_enc String Yes The encrypted data associated with this attribute name.

Pseudo-code:

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

11. RequestPrd

Encapsulates a detailed request within the system, focusing on the interaction with Portable Request Documents ( RequestPrd) and specifying various levels of message confidentiality and intended service provider (SP) communication details.

Attribute Name Type Option Description
request Request A predefined struct representing the basic request information.
sig_value String Valeur associée à la signature
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 Optionally specifies a public message associated with the request.
message_confidential String Yes Optionally specifies a confidential message associated with the request.
message_private String Yes Optionally specifies a private message associated with the request.
sp_address_to String The service provider address to which the request is directed.
sp_address_from String The service provider address from which the request originates.
sp_address_reply String The service provider address for replies to the request.
timestamp_declared u64 A Unix timestamp indicating when the request was declared.
role_name_from String The name of the role from which the request originates.
role_name_to String The name of the role to which the request is directed.
payment_method_enc_by_shared_secret String Yes Encrypted payment method, encrypted with a shared secret.
deposit_method_enc_by_shared_secret String Yes Encrypted deposit method, encrypted with a shared secret.
commitment_method_enc_by_shared_secret String Yes Encrypted commitment method, encrypted with a shared secret.
payment_request_pcd_hash_list_enc_by_shared_secret Vec<String> Yes A list of hashes for payment-related RequestPcds.
cap_request_pcd_hash_list_enc_by_shared_secret Vec<String> Yes A list of hashes for capability-related RequestPcds.
deposit_request_pcd_hash_list_enc_by_shared_secret Vec<String> Yes A list of hashes for deposit-related RequestPcds.
commitment_request_pcd_hash_list_enc_by_shared_secret Vec<String> Yes A list of hashes for commitment-related RequestPcds.
ask_payment_method_enc_by_shared_secret String Yes The requested payment method.
ask_deposit_method_enc_by_shared_secret String Yes The requested deposit method.
ask_commitment_method_enc_by_shared_secret String Yes The requested commitment method.
certif_key_enc_by_shared_secret String Yes Encrypted certification key, encrypted with a shared secret.
device_footprint_enc_by_sp_shared_secret String The device footprint encrypted by a service provider's shared secret.

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

request_prdList struct is utilized for listing or querying RequestPrds, aiding in the retrieval or enumeration of Portable Request Documents within the system, streamlining the management and access of RequestPrds.

Attribute Name Type Option Description
request_prd RequestPrd Represents a Portable Request Document.
item_member_enc_by_sp_shared_secret String Yes (only for members manager) ItemMember to add if the pre_id not exist to the member list
pre_id_sp_enc_by_shared_secret string Yes (only for members manager) An existing member pre_id.

Pseudo-code:

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

11.2. RequestPrdUpdate

request_prdUpdate struct facilitates the updating of RequestPrds, incorporating new version hashes and lists of related RequestPcd hashes, alongside requested methods for payments, deposits, and commitments, ensuring RequestPrds remain current and relevant.

Attribute Name Type Option Description
request_prd RequestPrd Represents a Portable Request Document.

Pseudo-code:

{
  "request_prd": RequestPrd
}

11.3. RequestPrdResponse

request_prd and its variations represent different aspects and actions related to Portable Request Documents ( RequestPrd), covering everything from confirmation to updates, key management, and messaging, essential for managing and processing RequestPrds securely and efficiently.

Attribute Name Type Option Description
request_prd RequestPrd Represents a Request.
sig_value String The signature value for the response.
shared_secret_key_enc_by_sp_shared_secret String Yes Optional encryption key used for shared secrets.
shard_enc_by_sp_shared_secret String Yes The shard encrypted by a service provider's shared secret.

Pseudo-code:

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

11.4. RequestPrdConfirm

The request_prdConfirm struct is designed for confirming actions or requests within the system, utilizing a Portable Request Document ( RequestPrd) alongside an encrypted confirmation code, ensuring secure acknowledgment of operations.

Attribute Name Type Option Description
request_prd RequestPrd The RequestPrd (Portable Request Document) request.
code_confirm_enc_by_shared_secret String Yes The confirmation code encrypted by a shared secret.

Pseudo-code:

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

11.5. RequestPrdMessage

The request_prdMessage struct serves the purpose of encapsulating messages within RequestPrds, allowing for secure and structured communication of information wrapped in a Portable Request Document.

Attribute Name Type Option Description
request_prd RequestPrd Represents a Portable Request Document.
raw_transaction_list Vec<String> Yes Represents a Portable Request Document.

Pseudo-code:

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

11.6. RequestPrdResponse

request_prdResponse is designed for responding to RequestPrd requests, including the original RequestPrd, signature for verification, and optional encrypted methods, ensuring a secure and verifiable response mechanism.

Attribute Name Type Option Description
request_prd RequestPrd Represents a Portable Request Document.
sig_value String The signature value for the response.

Pseudo-code:

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

12. Roles

The Roles enum defines the various roles within the system, specifying responsibilities, required security measures such as two-factor authentication, validation timeouts, and conditions for action validation, crucial for role-based access control and process flow.

12.1. Role

The Role struct broadly defines a role within the system, encapsulating the general responsibilities, required security measures like two-factor authentication, validation timeouts, and conditions for action validation. This serves as a foundation for more specific role definitions, ensuring a flexible yet secure role-based access and action framework.

Attribute Name Type Option Description
item Item The item associated with the role.
sp_output_salt_enc string Yes he salt encrypted for the hash in the sp outputs.
required_2fa bool Indicates if two-factor authentication is required.
validation_timeout u64 Yes The timeout for validation in seconds.
condition_prd_address_set_list Vec<ConditionPrdAddressSet> A list of product address set conditions.
condition_publish_list Vec<ConditionPublish> Yes The condition for publishing.
condition_cap_list Vec<ConditionCap> Yes A list of capability conditions.
condition_payment_list Vec<ConditionPayment> Yes A list of payment conditions.
condition_commitment_list Vec<ConditionCommitment> Yes A list of commitment conditions.
condition_attribute_encryption_list Vec<String> A list of attribute encryption conditions.
condition_orchestration_list Vec<ConditionOrchestration> Yes The condition for orchestration.
role_succession String Yes Optional role for succession.
role_resolve String Yes Optional role for resolving conflicts.
role_renew String Yes Optional role for renewing conditions or capabilities.

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

TransactionMode and its specific types (Distribution, Direct) describe how transactions are handled within the system, whether through direct communication or distributed across multiple entities, influencing the flow and security of transactions.

Attribute Name Type Option Description
amount Amount Yes Montants échangées
number Number Yes Unités échangées
hash_ok_list Vec<String> Yes Commitments de hash valant pour un résultat "OK"
hash_ko_list Vec<String> Yes Commitments de hash valant pour un résultat "KO"
hash_none_list Vec<String> Yes Commitments de hash valant pour un résultat "None"
from_list Vec<String> Adresse silent payment ou role qui doit opérer le paiement
from_type String Soit "addresses" soit "roles"
from_method String Méthode de distribution de la somme des prélèvements : "Amount divided" ou "Same Amount"
to_list Vec<String> Adresse silent payment ou role qui doit recevoir le Versement
to_type String Soit "addresses" soit "roles"
to_method String Méthode de distribution de la somme des versements : "Amount divided" ou "Same Amount"

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

This struct outlines the conditions for payments, including the amount, payment method, and transaction mode, setting the parameters for financial transactions.

Attribute Name Type Option Description
request_prd_type String Type of prd request concerned by this conditions
transaction_mode TransactionMode Specifies the transaction mode associated with this role.
payment_proof_validation ConditionRequestPrdAddressSet Validation conditions + {sp_address_sender} and {sp_address_receiver} placehoders for Address SP
condition_deposit_list Vec<ConditionDeposit> Yes A list of deposit conditions.

Pseudo-code:

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

12.2.3. ConditionCommitment

The ConditionCommitment struct specifies a condition involving an artefact role and transaction mode, defining how commitments are handled and verified.

Attribute Name Type Option Description
request_prd_type String Type of prd request concerned by this conditions
transaction_mode TransactionMode Specifies the transaction mode associated with this role.
payment_proof_validation ConditionRequestPrdAddressSet Validation conditions + {sp_address_sender} and {sp_address_receiver} placehoders for Address SP

Pseudo-code:

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

12.2.4. ConditionDeposit

ConditionDeposit is similar to ConditionCap but specifically focuses on deposit-related transactions, establishing the criteria for deposit actions.

Attribute Name Type Option Description
request_prd_type String Type of prd request concerned by this conditions
transaction_mode TransactionMode Specifies the transaction mode associated with this role.
payment_proof_validation ConditionRequestPrdAddressSet Validation conditions + {sp_address_sender} and {sp_address_receiver} placehoders for Address SP

Pseudo-code:

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

12.2.5. ConditionOrchestration

ConditionOrchestration defines success and failure roles for orchestration conditions, guiding the flow of processes based on outcomes.

Attribute Name Type Option Description
request_prd_type String Type of prd request concerned by this conditions
role_ok String Represents the successful outcome role in the condition.
role_ko String Represents the failed outcome role in the condition.
payment_proof_validation ConditionRequestPrdAddressSet Validation conditions + {sp_address_sender} and {sp_address_receiver} placehoders for Address SP

Pseudo-code:

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

12.2.6. ConditionCap

The ConditionCap struct represents a condition related to a deposit role and its associated transaction mode, indicating the requirements for transactions within this context.

Attribute Name Type Option Description
request_prd_type String Type of prd request concerned by this conditions
transaction_mode TransactionMode Specifies the transaction mode associated with this role.
payment_proof_validation ConditionRequestPrdAddressSet Validation conditions + {sp_address_sender} and {sp_address_receiver} placehoders for Address SP

Pseudo-code:

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

12.2.7. ConditionRequestPrdAddressSet

Condition request_prdAddressSet involves complex conditions based on RequestPrd addresses, including quotas, values, and scores, to determine condition fulfillment.

Attribute Name Type Option Description
request_prd_type String Type of prd request concerned by this conditions
from_role String Yes Identifies the originating role in the condition.
request_prd_sp_address_list Vec<String> Lists addresses involved in the condition.
request_prd_sp_address_required_list Vec<String> Lists required addresses for the condition to be met.
request_prd_sp_address_quota i32 Specifies the quota of addresses for the condition.
request_prd_value_ok_list Vec<String> Lists the values that are considered acceptable.
request_prd_value_ko_list Vec<String> Lists the values that are considered failures.
request_prd_value_none_list Vec<String> Lists the values that are considered neutral or no-op.
request_prd_value_auto_ok boolean Automatically consider values as OK.
request_prd_value_auto_ko boolean Automatically consider values as KO.
request_prd_value_auto_none boolean Automatically consider values as neutral or no-op.
request_prd_sp_address_value_min i64 Yes The minimum value for an address to be considered.
request_prd_sp_address_value_min_ok boolean Yes Indicates if the minimum address value is considered OK.
request_prd_sp_adddress_value_ok_min_per i64 Yes The minimum percentage for an address value to be OK.
request_prd_sp_address_value_ok_max i64 Yes The maximum value for an address to be considered OK.
request_prd_sp_adderss_value_ko_max_per i64 Yes The maximum percentage for an address value to be KO.
request_prd_sp_address_value_ko_max i64 Yes The maximum value for an address to be considered KO.
request_prd_sp_address_value_none_max i64 Yes The maximum value for an address to be considered neutral.
request_prd_sp_adderss_value_none_max_per i64 Yes The maximum percentage for a neutral address value.
request_prd_sp_address_score_min i32 Yes The minimum score for an address to be considered.
request_prd_sp_address_score_min_min_required i32 Yes The minimum required score for an address.
request_prd_sp_address_score_min_min_ok boolean Yes Indicates if the minimum score is considered OK.
request_prd_sp_address_score_min_min_per i64 Yes The minimum percentage for the minimum score.

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

ConditionPublish sets the criteria for publishing actions, including data size limits, publication counts, and timeouts, to regulate content distribution.

Attribute Name Type Option Description
request_prd_type String Type of prd request concerned by this conditions
request_pcd_data_size_max_unit String Specifies the maximum unit size for published data.
request_pcd_data_size_max_total i64 Specifies the total maximum data size allowed.
request_pcd_number_min i32 The minimum number of publications required.
request_pcd_number_max i32 The maximum number of publications allowed.
request_pcd_amount_max_total Amount The maximum total amount for publications.
request_prd_waiting_timeout u64 The waiting timeout for a publication to be considered valid.
request_pcd_waiting_timeout u64 The waiting timeout for the condition to be considered met.

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 Description
role_peer RolePeer Defines the role of peers in the network, responsible for facilitating communications and transactions.
role_member RoleMember Specifies the role of members, or users, who actively participate in processes and interactions.
role_process RoleProcess Represents the entities charged with defining and managing processes within the system.
role_artefact_list Vec<RoleArtefact> A list of artefact roles, allowing customization and extension of functionalities and interactions beyond standard roles.

Pseudo-code:

{
  "role_peer": RolePeer,
  "role_member": RoleMember,
  "role_process": RoleProcess,
  "role_artefact_list": []
}

12.3.1. RoleArtefact

The RoleArtefact struct is utilized to define the role associated with artefacts within the system. It specifies the responsibilities and permissions tied to the handling, management, or interaction with artefacts, ensuring clarity in role-based actions and access controls related to artefact-related operations.

Attribute Name Type Option Description
item_name String The name of the item associated with the deposit.
role Role The role associated with this deposit.

Pseudo-code:

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

12.3.2. RoleDeposit

RoleDeposit outlines the role and responsibilities concerning deposits in the system. It identifies the specific obligations and permissions granted to entities managing or engaging with deposit transactions, providing a structured approach to deposit management and execution.

Attribute Name Type Option Description
item_name String The name of the item associated with the artefact.
role Role The role associated with this artefact.

Pseudo-code:

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

12.3.3. RoleCommitment

The RoleCommitment struct details the role associated with commitments, delineating the duties and authorities of entities tasked with creating, managing, or fulfilling commitments. This struct ensures that commitment-related activities are clearly defined and regulated within the system.

Attribute Name Type Option Description
item_name String The name of the item associated with the commitment.
role Role The role associated with this commitment.

Pseudo-code:

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

12.3.4. RoleMember

RoleMember defines the role of members within the system, specifying the rights and responsibilities of membership. This includes access to resources, participation in processes, and contributions to decision-making, highlighting the importance of members in the system's ecosystem.

Attribute Name Type Option Description
item_name String The name of the item associated with the member.
role Role The role associated with this member.

Pseudo-code:

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

12.4. RolePeer

The RolePeer struct identifies peers associated with specific roles, detailing their identifiers, associated peers, and metadata, essential for defining peer responsibilities and permissions within the networked environment.

Attribute Name Type Option Description
item_name String The name of the item associated with the peer.
role Role The role associated with this peer.

Pseudo-code:

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

12.4.1. RolePayment

The RolePayment struct is dedicated to defining the role related to payments, outlining the specific tasks, permissions, and responsibilities assigned to entities handling or involved in payment transactions, ensuring secure and orderly payment processes.

Attribute Name Type Option Description
item_name String The name of the item associated with the payment.
role Role The role associated with this payment.

Pseudo-code:

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

12.4.2. RoleProcess

RoleProcess describes the role associated with processes within the system. It specifies the expectations, duties, and permissions of entities that initiate, manage, or participate in various system processes, facilitating smooth and regulated process flow.

Attribute Name Type Option Description
item_name String The name of the item associated with the process.
role Role The role associated with this process.

Pseudo-code:

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

13. Storage

13.1. StoragePublic

13.1.1. StorageKeysPublic

Attribute Name Type Option Description
hash String
label String Yes
device_footprint String Yes
third_party_list Vec<StoragethirdPartyPublic> List of third-party devices and their addresses.
key_revoke_sp_address String

Pseudo-code:

[
  {
    "hash": "",
    "label": "",
    "device_footprint": "",
    "third_party_list": [],
    "key_revoke_sp_address": ""
  }
]
StoragethirdPartyPublic
Attribute Name Type Option Description
device_footprint String Yes The device footprint.
sp_address String The service provider address.

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 Description
me_sender boolean Indicates if the sender is 'me'.
process_hash String The hash of the associated process.
item_name String The name of the associated item.
request_type String The type of the request.
timestamp u64 The timestamp of the request.
message_hash String The hash of the message.
pcd_hash String Yes The hash of the associated PCD.
prd_hash String Yes The hash of the associated PRD.
request_pcd_reference_hash String Yes The reference hash of the associated PCD.
request_pcd_origin_hash String Yes The origin hash of the associated PCD.
request_prd_reference_hash String Yes The reference hash of the associated PRD.
request_prd_origin_hash String Yes The origin hash of the associated PRD.
item_reference_hash String Yes The reference hash of the associated item.
prd_sig_value String Yes The signature value of the PRD.
prd_sp_address_from String Yes The sender service provider address of the PRD.
prd_role_from String Yes The sender role of the PRD.
prd_sp_address_to String Yes The recipient service provider address of the PRD.
prd_role_to String Yes The recipient role of the PRD.
prd_tx_sp String Yes The transaction hash of the PRD.
peer_list Vec<StorageMessagesPeerPublic> The list of peers associated with the request.

Pseudo-code:

[
  {
    "hash": "",
    "message": StorageMessagePublic,
    "validation_status": "pending|ok|ko"
  }
]
StorageMessagesPeerPublic
Attribute Name Type Option Description
domain String The domain of the peer.
ip String The IP address of the peer.
port String The port of the peer.
timestamp u64 The timestamp associated with the peer.
sender boolean Indicates if the peer is the sender.
validation_status String The validation status of the peer.

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 Description
hash_public String The public hash.
label String The label.
keyrecoverSpend StorageKeyRecoverSpendPrivate The part 1 encrypted for key recovery spend.
key_recover_scan String The key recovery scan.
process_shards_backup_list Vec<StorageKeyRecoverSpendPrivate> The index of the process shard backup.

Pseudo-code:

[
  {
    "hash_public": "",
    "label": "",
    "keyrecoverSpend": StorageKeyRecoverSpendPrivate,
    "key_recover_scan": "",
    "process_shards_backup_list": []
  }
]
 StorageKeyRecoverSpendPrivate
Attribute Name Type Option Description
seed_rand_1 String The seed random 1.
seed_rand_2 String The seed random 2.
part1_enc String The part 1 encrypted.

Pseudo-code:

{
  "seed_rand_1": "",
  "seed_rand_2": "",
  "part1_enc": ""
}
StorageProcessShardsBackupPrivate
Attribute Name Type Option Description
hash String The hash value.
members Vec<String> The list of members.
index usize The index value.

Pseudo-code:

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

13.2.2. StoragePeerPrivate

Attribute Name Type Option Description
hash_public String The public hash value.
shared_peer StorageSharedPeerPrivate The shared peer information.

Pseudo-code:

[
  {
    "hash_public": "",
    "shared_peer": StorageSharedPeerPrivate
  }
]
 StorageSharedPeerPrivate
Attribute Name Type Option Description
domain String The domain of the shared peer.
address_ip String The IP address of the shared peer.
relay StorageRelayPrivate Yes The relay information.
l1_node StorageL1NodePrivate Yes The L1 node information.
l1_miner StorageL1MinerPrivate Yes The L1 miner information.
l2_node_list Vec<StorageL2NodePrivate> The list of L2 nodes.

Pseudo-code:

{
  "domain": "",
  "address_ip": "",
  "relay": StorageRelayPrivate,
  "l1_node": StorageL1NodePrivate,
  "l1_miner": StorageL1MinerPrivate,
  "l2_node_list": []
}
 StorageRelayPrivate
Attribute Name Type Option Description
faucet_tx_list Vec<String> Yes The list of faucet transaction hashes.
spend_key String The spend key of the relay.
scan_key String The scan key of the relay.

Pseudo-code:

{
  "faucet_tx_list": [],
  "spend_key": "",
  "scan_key": ""
}
StorageL1NodePrivate
Attribute Name Type Option Description
reward_tx_list Vec<String> The list of reward transaction hashes.
anchorage_tx_list Vec<String> The list of anchorage transaction hashes.
spend_key String The spend key of the L1 node.
scan_key String The scan key of the L1 node.

Pseudo-code:

{
  "reward_tx_list": [],
  "anchorage_tx_list": [],
  "spend_key": "",
  "scan_key": ""
}
StorageL1MinerPrivate
Attribute Name Type Option Description
mining_reward_tx_list Vec<String> The list of mining reward transaction hashes.
spend_key String The spend key of the L1 miner.
scan_key String The scan key of the L1 miner.

Pseudo-code:

{
  "mining_reward_tx_list": [],
  "spend_key": "",
  "scan_key": ""
}
StorageL2NodePrivate
Attribute Name Type Option Description
l2_miner StorageL2NodeMinerPrivate The L2 miner information.
l2_certif StorageL2NodeCertifPrivate The L2 certification information.

Pseudo-code:

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

####### StorageL2NodeMinerPrivate

Attribute Name Type Option Description
mining_descriptor String The mining descriptor of the L2 miner.
mining_reward_tx_list Vec<String> The list of mining reward transaction hashes.
refunder_tx_list Vec<String> The list of refunder transaction hashes.
spend_key String The spend key of the L2 miner.
scan_key String The scan key of the L2 miner.

Pseudo-code:

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

####### StorageL2NodeCertifPrivate

Attribute Name Type Option Description
certif_l1_tx_list Vec<String> The list of L1 certification transaction hashes.
refunded_tx_list Vec<String> The list of refunded transaction hashes.
anchorage_tx_list Vec<String> The list of anchorage transaction hashes.
spend_key String The spend key of the L2 certification.
scan_key String The scan key of the L2 certification.

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 Description
hash String The hash value.
confidential_key String The confidential key.
item ItemProcess The process item.

Private:

Attribute Name Type Option Description
hash_public String The public hash value.
confidential_key String The transaction SP key.
metadata_role_confidentiel_keys MetadataRoleConfidentielKeys The metadata for role confidential keys.

Pseudo-code:

{
  "private": [
    {
      "hash": "",
      "confidential_key": "",
      "item": ItemProcess
    }
  ],
  "public": [{
    "hash_public": "",
    "confidential_key": "",
    "metadata_role_confidentiel_keys":  MetadataRoleConfidentielKeys
  }]
}
 MetadataRoleConfidentielKeys
Attribute Name Type Option Description
tag_list_keys String The tag list keys.
zone_list_keys String The zone list keys.
label_lis_keys String The label list keys.
ref_list_keys String The reference list keys.
data_list_keys String The data list keys.
amount_keys String The amount keys.
number_keys String The number keys.
render_template_list_keys String The render template list keys.
legal_text_list_keys String The legal text list keys.
key_list_keys String The key list keys.

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 Description
hash_public String The public hash.
pcd_aes_key_list_decrypted Vec<String> The list of decrypted PCD AES keys.

Pseudo-code:

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

13.2.5. StorageRequestPrdPrivate

5.5.1. StorageRequestPrdUpdatePrivate
Attribute Name Type Option Description
hash_public String The public hash.
sig_value String The signature value for the request.
request_pcd_reference_keys_role_confidential_list_decrypted String Decrypted list of reference keys for confidential role in the PCD request.
request_pcd_origin_hash_keys_role_confidential_listdecrypted String Decrypted origin hash keys for confidential role in the PCD request.
message_public_decrypted String Decrypted public message associated with the request.
message_confidential_decrypted String Decrypted confidential message associated with the request.
message_private_decrypted String Decrypted private message associated with the request.
payment_method_decrypted String Decrypted payment method.
deposit_method_decrypted String Decrypted deposit method.
commitment_method_decrypted String Decrypted commitment method.
payment_request_pcd_hash_list_decrypted Vec<String> Decrypted list of payment-related RequestPcd hashes.
cap_request_pcd_hash_list_decrypted Vec<String> Decrypted list of capability-related RequestPcd hashes.
deposit_request_pcd_hash_list_decrypted Vec<String> Decrypted list of deposit-related RequestPcd hashes.
commitment_request_pcd_hash_list_decrypted Vec<String> Decrypted list of commitment-related RequestPcd hashes.
ask_payment_method_[decrypted String Decrypted requested payment method.
ask_deposit_method_decrypted String Decrypted requested deposit method.
ask_commitment_method_decrypted String Decrypted requested commitment method.
certif_key_decrypted String Decrypted certification key.
device_footprint_decrypted String Decrypted device footprint.
item_member_decrypted String Decrypted member item.
pre_id_sp_decrypted String Decrypted pre_id for service provider.

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 Description
hash_public String The public hash.
sig_value String Yes The signature value for the request.
request_pcd_reference_keys_role_confidential_list_decrypted String Yes Decrypted list of reference keys for confidential role in the PCD request.
request_pcd_origin_hash_keys_role_confidential_listdecrypted String Yes Decrypted origin hash keys for confidential role in the PCD request.
message_public_decrypted String Yes Decrypted public message associated with the request.
message_confidential_decrypted String Yes Decrypted confidential message associated with the request.
message_private_decrypted String Yes Decrypted private message associated with the request.
payment_method_decrypted String Yes Decrypted payment method.
deposit_method_decrypted String Yes Decrypted deposit method.
commitment_method_decrypted String Yes Decrypted commitment method.
payment_request_pcd_hash_list_decrypted Vec<String> Yes Decrypted list of payment-related RequestPcd hashes.
cap_request_pcd_hash_list_decrypted Vec<String> Yes Decrypted list of capability-related RequestPcd hashes.
deposit_request_pcd_hash_list_decrypted Vec<String> Yes Decrypted list of deposit-related RequestPcd hashes.
commitment_request_pcd_hash_list_decrypted Vec<String> Yes Decrypted list of commitment-related RequestPcd hashes.
ask_payment_method_[decrypted String Yes Decrypted requested payment method.
ask_deposit_method_decrypted String Yes Decrypted requested deposit method.
ask_commitment_method_decrypted String Yes Decrypted requested commitment method.
certif_key_decrypted String Yes Decrypted certification key.
device_footprint_decrypted String Yes Decrypted device footprint.
shared_secret_key_decrypted Vec<StorageDecryptedSharedSecretKeyPrivate> Decrypted list of shared secret keys.
shard_decrypted String Yes Decrypted shard value.

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 Description
attribute_name String Yes The name of the attribute.
key String Yes The decrypted key.
algorithm String Yes The encryption algorithm.

Pseudo-code:

{
  "attribute_name": "",
  "key": "",
  "algorithm": "",
}
5.5.3. StorageRequestPrdConfirmPrivate
Attribute Name Type Option Description
hash_public String The public hash.
sig_value String Yes The signature value for the request.
request_pcd_reference_keys_role_confidential_list_decrypted String Yes Decrypted list of reference keys for confidential role in the PCD request.
request_pcd_origin_hash_keys_role_confidential_listdecrypted String Yes Decrypted origin hash keys for confidential role in the PCD request.
message_public_decrypted String Yes Decrypted public message associated with the request.
message_confidential_decrypted String Yes Decrypted confidential message associated with the request.
message_private_decrypted String Yes Decrypted private message associated with the request.
payment_method_decrypted String Yes Decrypted payment method.
deposit_method_decrypted String Yes Decrypted deposit method.
commitment_method_decrypted String Yes Decrypted commitment method.
payment_request_pcd_hash_list_decrypted Vec<String> Yes Decrypted list of payment-related RequestPcd hashes.
cap_request_pcd_hash_list_decrypted Vec<String> Yes Decrypted list of capability-related RequestPcd hashes.
deposit_request_pcd_hash_list_decrypted Vec<String> Yes Decrypted list of deposit-related RequestPcd hashes.
commitment_request_pcd_hash_list_decrypted Vec<String> Yes Decrypted list of commitment-related RequestPcd hashes.
ask_payment_method_[decrypted String Yes Decrypted requested payment method.
ask_deposit_method_decrypted String Yes Decrypted requested deposit method.
ask_commitment_method_decrypted String Yes Decrypted requested commitment method.
certif_key_decrypted String Yes Decrypted certification key.
device_footprint_decrypted String Yes Decrypted device footprint.
code_confirm_decrypted String Yes Decrypted confirmation code.

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 Description
hash_public String The public hash.
sig_value String Yes The signature value for the request.
request_pcd_reference_keys_role_confidential_list_decrypted String Yes Decrypted list of reference keys for confidential role in the PCD request.
request_pcd_origin_hash_keys_role_confidential_listdecrypted String Yes Decrypted origin hash keys for confidential role in the PCD request.
message_public_decrypted String Yes Decrypted public message associated with the request.
message_confidential_decrypted String Yes Decrypted confidential message associated with the request.
message_private_decrypted String Yes Decrypted private message associated with the request.
payment_method_decrypted String Yes Decrypted payment method.
deposit_method_decrypted String Yes Decrypted deposit method.
commitment_method_decrypted String Yes Decrypted commitment method.
payment_request_pcd_hash_list_decrypted Vec<String> Yes Decrypted list of payment-related RequestPcd hashes.
cap_request_pcd_hash_list_decrypted Vec<String> Yes Decrypted list of capability-related RequestPcd hashes.
deposit_request_pcd_hash_list_decrypted Vec<String> Yes Decrypted list of deposit-related RequestPcd hashes.
commitment_request_pcd_hash_list_decrypted Vec<String> Yes Decrypted list of commitment-related RequestPcd hashes.
ask_payment_method_[decrypted String Yes Decrypted requested payment method.
ask_deposit_method_decrypted String Yes Decrypted requested deposit method.
ask_commitment_method_decrypted String Yes Decrypted requested commitment method.
certif_key_decrypted String Yes Decrypted certification key.
device_footprint_decrypted String Yes Decrypted device footprint.

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 Description
address String The socket address.
port u64 The port number.
protocol String The protocol used (e.g., TCP, UDP).
status String The status of the socket (pending, ok, ko).
type String The type of socket (transaction, request, client).

Pseudo-code:

[
  {
    "hash": "",
    "socket": {
      "address": "",
      "port": 0,
      "protocol": "",
      "status": "pending|ok|ko",
      "type": "tx|request|client"
    }
  }
]
5.6.2. StorageSocketServerListPrivate
Attribute Name Type Option Description
address String The socket address.
port u64 The port number.
protocol String The protocol used (e.g., TCP, UDP).
status String The status of the socket (pending, ok, ko).
type String The type of socket (transaction, request, client).

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