From RippleWiki

Protocol: Messages

Messages (including header) are signed by the sender's node key.

A requirement is that these messages can be used after the fact to prove a node's actions, in case there is a disagreement.

Messages to a particular node may be sent directly to that node's host if it is known, or encrypted and relayed across the trust network.


Header for all messages

Relay

(node to node)

For relaying an encrypted message on to another node. The only way to pass a message to a node whose host is not known. Might also be useful for deceiving traffic analyzers by routing through several other nodes when communicating with nodes whose host may be known.

Credit Offer

(account initiator to potential partner)

For initializing a line of credit, which is one direction/half of a mutual credit account between two nodes. Used to specify node addresses for aliases, units, arbiters for who is responsible for stalled commit messages, proving node owner identity, and linking two lines of credit together into a mutual credit account.

May also be used to inform an existing partner when a node has changed hosts: it can glean the new host from the 'from' address in the header.

Credit amounts are determined later, with credit advertisements.

Credit Accept

(partner to account initiator)

Credit

(broadcast)

Routing advertisements. Can be bundled together for transmission.

Exchange Rate

(broadcast)

Exchange rate advertisement. Allows frequent updates for common exchange rates that may be used by multiple nodes on multiple hosts across the network. Using common exchange rates means less update traffic.

Credit Check

(potential payer to recipient, and then back through flow network; or just payer to any intermediary with response directly back)

For getting up-to-date credit availability and fee information before initiating payment, either from an entire payment flow network, or from a single node.

Payment Init

(payer to recipient)

Inform recipient of an intended payment. This message gets signed by recipient and passed right back.

Units are not included, since they don't add anything to proving a payment of a certain amount was made. For example, a seller says "pay 30 to node X". The payer will be able to prove she did that. If the seller says "pay 30 CAD to node X", the payer won't be able to prove anything about node X's valuation or use of CAD, so the units are meaningless to the protocol (but might be useful for the payer to know about how much she will have to send out).

Payment Accept

(recipient to payer)

Gives payer a recipient-signed copy of payment amount tied to transaction ID, which, combined with signed commit message, proves payment occurred.

Promise

(from payer, forward through flow network)

A promise to pass forward IOUs when shown a commit message signed by the payer and recipient commit keys before the expiry datetime (or when shown a commit message timestamped before the expiry by an acceptable arbiter). Acts as a credit reservation.

Commit Ready

(recipient to payer)

The recipient has received sufficient promises and is ready to commit the transaction.

Promise Release

(recipient or intermediary to predecessor)

Release promisor from its promise.

Commit

(from recipient, back through flow network; also broadcast)

Trigger promises.

IOU

(payer or intermediary to successor)

Affirms that IOUs were issued. May be used outside a transaction in order to simply pass IOUs to an account partner (an act that needs no permission, fees, or available credit).

Status Query

(payer to any intermediary or recipient)

Requests information about the current state of the transaction as seen by another participant.

Status

(intermediary or recipient to payer)

Response to status query.

Retrieved from http://ripple.ryanfugger.com/Protocol/Messages
Page last modified on March 16, 2011, at 10:52 AM