Streaming Protocol

The Ixian Streaming Protocol (S2) is a secure, peer-to-peer communication layer built on top of the DLT Master Node network. It enables end-to-end encrypted, direct messaging between any two Ixian addresses.

Communication is layered. A StreamMessage acts as the secure, routable envelope, while an inner SpixiMessage contains the actual application-level command or data.

Protocol Layers

LayerFileDescription
EnvelopeStreamMessageThe outer, secure wrapper that handles S2 network routing, encryption, and signing.
ApplicationSpixiMessageThe inner, decrypted payload that defines the application-level command (e.g., chat, file transfer).

Application-Layer Messages (SpixiMessageCode)

The following messages are carried within the SpixiMessage payload.

Contact & Group Management

NameCodeDescription
requestAdd240A request to add a user as a contact.
acceptAdd241Accepts a contact request.
keys242Exchanges session keys for end-to-end encryption.
leave37A notification that a user is leaving a group chat.
leaveConfirmed38Confirmation that the leave request was processed.
getPubKey26Requests the public key of a contact.
pubKey27Provides a public key in response to a request.
getNick1Requests the nickname of a contact.
nick2Provides the nickname of a contact.
avatar24Sends an avatar image.
getAvatar25Requests the avatar for a contact.

Messaging Status & Reactions

NameCodeDescription
chat0A standard text chat message.
msgRead8Confirmation that a message has been read.
msgReceived9Confirmation that a message has been delivered.
msgDelete33A request to delete a previously sent message.
msgReaction34Adds a reaction to a specific message.
msgError36Reports an error in processing a previous message.
msgReport39Reports a message for moderation or abuse.
msgTyping35Indicates that the user is currently typing a message.

Funds

NameCodeDescription
sentFunds5A notification that funds have been sent.
requestFunds6A request for a payment from a contact.
requestFundsResponse18The response to a requestFunds message.

File Transfer

NameCodeDescription
fileData10A chunk of a file's binary data.
requestFileData11Requests a specific chunk of a file.
fileHeader12Contains metadata about a file being sent.
acceptFile13The recipient agrees to accept an incoming file transfer.
fileFullyReceived23Confirmation that all chunks of a file have been received.

Calls

NameCodeDescription
requestCall14Initiates a voice or video call.
acceptCall15Accepts an incoming call request.
rejectCall16Rejects an incoming call request.
callData17A chunk of real-time audio or video data.

Mini-Apps

NameCodeDescription
appData21Generic data for a mini-app or service.
appRequest22A generic request to a mini-app or service.
appRequestAccept28Accepts an appRequest.
appRequestReject29Rejects an appRequest.
appRequestError30Signals an error occurred during an appRequest.
appEndSession31Terminates a session with a mini-app.
getAppProtocols43Requests the list of app protocols supported by the peer.
appProtocols44Provides the list of supported app protocols.
appProtocolData45Generic data for a specific, named app protocol.