|
Ripple
Less Technical
Protocol
Implementation
Old Stuff
Older Stuff
Oldest Stuff
PmWiki
pmwiki.org
edit SideBar
|
Definitions
Ripple Client
- Software that manages accounts that involve lines of credit between parties, and uses the ripple server to route payments
- Software that authenticates itself to a ripple server via username/password, digital certificate, ssh public key, or similar
- Simple example: A bank could "ripple enable" its online banking web interface to permit accountholders to send ripple payments as an alternative payment mechanism, alongside the standard online checking functionality.
- Broadly speaking, the bank is a ripple client, and has some means of authenticating itself to its ripple server(s).
- In a more precise technical sense, when a bank customer logged into online banking initiates a ripple payment, and the online banking software interacts with the ripple server, this is bank software acting as a ripple client.
- The web browser bank customers use to access their online checking, and through this make ripple payments, is *not* a ripple client -- it is a client of the bank's web server software. Bank customers don't have a user/password to authenticate themselves to the ripple server; the bank does. The password that bank customers do have, which allows them to access their online banking, is a different password from the one the bank uses to interact with its ripple server.
- Note: the bank with "ripple parallel to online checking" scenario described above is not very likely to arise anytime soon, though it could conceivably happen if ripple becomes very popular. Inter-LETS payments, online accounting software direct payments, online currency conversions, and other scenarios are more plausible -- see Ripple Usage Examples?. The bank example was used only because this is a scenario we think the greatest number of people are familiar with, whereas not that many people know what a LETS system is.
- Potential Ripple Clients
Party
- Something or someone that uses ripple to send, receive, and route payments
- Parties can be individuals, or collectives such as a group of friends, an agricultural coop, businesses, governments, banks, etc.
User
- Users authenticate themselves to a ripple client via username/password, or some other authentication scheme
- Obvious example is people, but could also be a bot or some automated process that knows how to authenticate itself.
A party might have many users, or a user might have many parties.
The ripple server doesn't know anything about users or parties, only nodes.
Users,Parties, and Nodes
A Node
- has credit relationships (lines of credit) with other nodes
- can be a payment endpoint, either payer or recipient
- can be a payment intermediary, receiving value from one node and passing it along to another in a Credit Exchange as part of a payment chain
- A ripple party might well send and receive all ripple payments via a single node, but a party might also have reasons to register multiple nodes
- Users, Parties, and Nodes)
A Credit Relationship
- exists between two nodes, say node A and node B
- describes a line of credit that node A has with node B, and the reciprocal line of credit node B has with node A
- has a specific unit of value, such as USD, Euro, or oz. of gold
- has an account for each node, each containing the following data:
- balance, the amount of debt owed by the other node
- max balance, a limit on debt that can be owed by the other node
- min balance, a limit on debt that can be owed to the other node
- Consider the balance for Node A, for a credit relationship connecting A<->B. Assuming the debt balance starts at 0$, an upper limit of $50 and a lower limit of (-$25) means that Node B has a credit limit of $50 with Node A, while Node A's self-imposed issuance limit is $25. (Node A doesn't want to allow itself to go deeper into debt than $25 with Node B.)
- Balances can start at any number, they need not start at 0.
- All three quantities can be reset arbitrarily by either node, for its side of the accounting
- It doesn't matter if two nodes at opposite ends of a credit relationship disagree about the exact amount of debt they've recorded is owed by the other. In fact, Node A could have recorded that Node B owes it money in its account, while Node B has recorded that Node A owes it money on its own account. As long as A's credit limit exceeds the amount of money it believes B owes, and B's credit limit exceeds the amount of money it believes A owes, the ripple server can use this credit relationship in a payment exchange for payment routing in either direction. Ripple does payment routing, not account reconciliation.
- Two nodes connected by a credit relationship are called neighbours.
- Two nodes may have more than one credit relationships connecting them, for instance to allow for credit relationships in more than one currency
- Credit Relationship Example
- To do: Credit Relationship Example With Disputed Balance?
A Credit Exchange
- is a payment flow from one credit relationship to another, that passes through a node
- is a link in a payment chain, say Node A -> Node B -> Node C, where B and C are the previous and successor nodes, and the ultimate payer / payment recipient are at the start and end of the chain: Payer -> ..... -> A -> B -> C -> ..... Recipient
- when routing in the same currency, Node B can charge a transaction fee, or can be friendly and choose not charge a fee
- when routing between two different currencies, Node B has some conversion rate between the currencies
- In either case, node-specific exchange rates are used for the above conversion functions. So Node B has an exchange rate table stored for routing payments between all of its neighbors
- Credit Exchange Example
|