Skip to content
Juvix imports

module arch.node.engines.naming_messages;

import prelude open;
import arch.node.types.identities open;

Naming Messages

Message interface

type NamingMsg :=
| MsgNamingResolveNameRequest RequestResolveName
| MsgNamingResolveNameReply ReplyResolveName
| MsgNamingSubmitNameEvidenceRequest RequestSubmitNameEvidence
| MsgNamingSubmitNameEvidenceReply ReplySubmitNameEvidence
| MsgNamingQueryNameEvidenceRequest RequestQueryNameEvidence
| MsgNamingQueryNameEvidenceReply ReplyQueryNameEvidence;

Message sequence diagrams

Resolving a name

sequenceDiagram
    participant Client
    participant NamingEngine

    Client->>NamingEngine: RequestResolveName (name)
    Note over NamingEngine: Check stored evidence
    NamingEngine->>Client: ReplyResolveName
Resolving a name

Submitting name evidence

sequenceDiagram
    participant Client
    participant NamingEngine

    Client->>NamingEngine: RequestSubmitNameEvidence
    Note over NamingEngine: Verify and store evidence
    NamingEngine->>Client: ReplySubmitNameEvidence
Submitting name evidence

Querying name evidence

sequenceDiagram
    participant Client
    participant NamingEngine

    Client->>NamingEngine: RequestQueryNameEvidence (for ExternalIdentity)
    Note over NamingEngine: Retrieve relevant evidence
    NamingEngine->>Client: ReplyQueryNameEvidence
Querying name evidence for an identity.

Message types

RequestResolveName

type RequestResolveName :=
mkRequestResolveName@{
identityName : IdentityName;
};

A RequestResolveName asks the Naming Engine which ExternalIdentitys are associated with a given IdentityName.

Arguments
identityName:
The name to resolve.

ReplyResolveName

type ReplyResolveName :=
mkReplyResolveName@{
externalIdentities : Set ExternalIdentity;
err : Option String;
};

A ReplyResolveName is returned in response to a RequestResolveName.

Arguments
externalIdentities:
A set of ExternalIdentitys associated with the IdentityName.
err:
An error message if the resolution failed.

RequestSubmitNameEvidence

type RequestSubmitNameEvidence :=
mkRequestSubmitNameEvidence@{
evidence : IdentityNameEvidence;
};

A RequestSubmitNameEvidence instructs the Naming Engine to store a new piece of IdentityNameEvidence.

Arguments
evidence:
The evidence supporting the association between an IdentityName and an ExternalIdentity.

ReplySubmitNameEvidence

type ReplySubmitNameEvidence :=
mkReplySubmitNameEvidence@{
err : Option String;
};

A ReplySubmitNameEvidence is sent in response to a RequestSubmitNameEvidence.

Arguments
err:
An error message if the submission failed.

RequestQueryNameEvidence

type RequestQueryNameEvidence :=
mkRequestQueryNameEvidence@{
externalIdentity : ExternalIdentity;
};

A RequestQueryNameEvidence instructs the Naming Engine to return any known IdentityNames and IdentityNameEvidence associated with a specific ExternalIdentity.

Arguments
externalIdentity:
The identity for which to retrieve evidence.

ReplyQueryNameEvidence

type ReplyQueryNameEvidence :=
mkReplyQueryNameEvidence@{
externalIdentity : ExternalIdentity;
evidence : Set IdentityNameEvidence;
err : Option String;
};

A ReplyQueryNameEvidence provides the requested evidence.

Arguments
externalIdentity:
The ExternalIdentity associated with the returned evidence.
evidence:
A set of IdentityNameEvidence related to the identity.
err:
An error message if the query failed.

NamingMsg

type NamingMsg :=
| MsgNamingResolveNameRequest RequestResolveName
| MsgNamingResolveNameReply ReplyResolveName
| MsgNamingSubmitNameEvidenceRequest RequestSubmitNameEvidence
| MsgNamingSubmitNameEvidenceReply ReplySubmitNameEvidence
| MsgNamingQueryNameEvidenceRequest RequestQueryNameEvidence
| MsgNamingQueryNameEvidenceReply ReplyQueryNameEvidence;

Engine components