Ecosystem: add diagram, apps & services

This commit is contained in:
mDuo13
2019-08-12 14:21:28 -07:00
parent 7d27dadfa0
commit b265337852
3 changed files with 432 additions and 3 deletions

View File

@@ -0,0 +1,411 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<diagram program="umlet" version="14.2">
<zoom_level>10</zoom_level>
<element>
<id>UMLGeneric</id>
<coordinates>
<x>550</x>
<y>540</y>
<w>200</w>
<h>90</h>
</coordinates>
<panel_attributes>halign=left
rippled server</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>580</x>
<y>480</y>
<w>50</w>
<h>80</h>
</coordinates>
<panel_attributes>lt=()-[WS]</panel_attributes>
<additional_attributes>20.0;10.0;20.0;60.0</additional_attributes>
</element>
<element>
<id>UMLGeneric</id>
<coordinates>
<x>350</x>
<y>360</y>
<w>170</w>
<h>70</h>
</coordinates>
<panel_attributes>halign=left
ripple-lib (JavaScript)</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>640</x>
<y>480</y>
<w>90</w>
<h>80</h>
</coordinates>
<panel_attributes>lt=()-[JSON-RPC]</panel_attributes>
<additional_attributes>40.0;10.0;40.0;60.0</additional_attributes>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>420</x>
<y>420</y>
<w>210</w>
<h>80</h>
</coordinates>
<panel_attributes>lt=)-</panel_attributes>
<additional_attributes>180.0;50.0;180.0;30.0;10.0;10.0</additional_attributes>
</element>
<element>
<id>UMLClass</id>
<coordinates>
<x>290</x>
<y>90</y>
<w>480</w>
<h>70</h>
</coordinates>
<panel_attributes>Apps &amp; Services
(Exchanges, wallets, explorers, etc.)
bg=white
style=wordwrap
transparency=0
group=1</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>UMLClass</id>
<coordinates>
<x>280</x>
<y>80</y>
<w>480</w>
<h>70</h>
</coordinates>
<panel_attributes>bg=white
transparency=0
group=1</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>580</x>
<y>150</y>
<w>50</w>
<h>350</h>
</coordinates>
<panel_attributes>lt=)-</panel_attributes>
<additional_attributes>20.0;320.0;20.0;10.0</additional_attributes>
</element>
<element>
<id>UMLGeneric</id>
<coordinates>
<x>350</x>
<y>240</y>
<w>130</w>
<h>70</h>
</coordinates>
<panel_attributes>
halign=left
Data API*</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>360</x>
<y>300</y>
<w>120</w>
<h>80</h>
</coordinates>
<panel_attributes>lt=[RippleAPI]-</panel_attributes>
<additional_attributes>70.0;60.0;10.0;30.0;10.0;10.0</additional_attributes>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>360</x>
<y>190</y>
<w>90</w>
<h>70</h>
</coordinates>
<panel_attributes>lt=()-[REST-like]</panel_attributes>
<additional_attributes>40.0;10.0;40.0;50.0</additional_attributes>
</element>
<element>
<id>Text</id>
<coordinates>
<x>670</x>
<y>570</y>
<w>50</w>
<h>50</h>
</coordinates>
<panel_attributes>valign=center
halign=center
fontsize=7.5
Internal
DBs
bg=white
transparency=0
customelement=
// DB Symbol
drawArc(0,0,width,height*2/5,0,180,true) fg=black bg=white //Parameters (x, y, width, height, start, extent, open)
drawArc(0,0,width,height*2/5,180,180,true) fg=black //Parameters (x, y, width, height, start, extent, open)
drawLine(0,height/5,0,height*4/5)fg=black //Parameters (x1, y1, x2, y2)
drawLine(width,height/5,width,height*4/5)fg=black //Parameters (x1, y1, x2, y2)
drawArc(0,height*3/5,width,height*2/5,180,180,true) fg=black bg=white //Parameters (x, y, width, height, start, extent, open)</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>UMLClass</id>
<coordinates>
<x>270</x>
<y>70</y>
<w>480</w>
<h>70</h>
</coordinates>
<panel_attributes>bg=white
transparency=0
group=1</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>380</x>
<y>150</y>
<w>50</w>
<h>60</h>
</coordinates>
<panel_attributes>lt=)-</panel_attributes>
<additional_attributes>20.0;30.0;20.0;10.0</additional_attributes>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>400</x>
<y>150</y>
<w>140</w>
<h>230</h>
</coordinates>
<panel_attributes>lt=-</panel_attributes>
<additional_attributes>10.0;210.0;120.0;180.0;120.0;10.0</additional_attributes>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>660</x>
<y>150</y>
<w>50</w>
<h>350</h>
</coordinates>
<panel_attributes>lt=)-</panel_attributes>
<additional_attributes>20.0;320.0;20.0;10.0</additional_attributes>
</element>
<element>
<id>Text</id>
<coordinates>
<x>290</x>
<y>250</y>
<w>50</w>
<h>50</h>
</coordinates>
<panel_attributes>valign=center
halign=center
fontsize=7.5
Relational
DBs
bg=white
transparency=0
customelement=
// DB Symbol
drawArc(0,0,width,height*2/5,0,180,true) fg=black bg=white //Parameters (x, y, width, height, start, extent, open)
drawArc(0,0,width,height*2/5,180,180,true) fg=black //Parameters (x, y, width, height, start, extent, open)
drawLine(0,height/5,0,height*4/5)fg=black //Parameters (x1, y1, x2, y2)
drawLine(width,height/5,width,height*4/5)fg=black //Parameters (x1, y1, x2, y2)
drawArc(0,height*3/5,width,height*2/5,180,180,true) fg=black bg=white //Parameters (x, y, width, height, start, extent, open)</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>470</x>
<y>600</y>
<w>120</w>
<h>30</h>
</coordinates>
<panel_attributes>lt=[Peer]-[Peer]</panel_attributes>
<additional_attributes>90.0;10.0;20.0;10.0</additional_attributes>
</element>
<element>
<id>UMLGeneric</id>
<coordinates>
<x>300</x>
<y>560</y>
<w>200</w>
<h>70</h>
</coordinates>
<panel_attributes>rippled servers
(direct &amp; indirect peers)
halign=left</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>280</x>
<y>540</y>
<w>220</w>
<h>90</h>
</coordinates>
<panel_attributes/>
<additional_attributes>20.0;70.0;10.0;70.0;10.0;10.0;200.0;10.0;200.0;20.0</additional_attributes>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>270</x>
<y>530</y>
<w>220</w>
<h>90</h>
</coordinates>
<panel_attributes/>
<additional_attributes>20.0;70.0;10.0;70.0;10.0;10.0;200.0;10.0;200.0;20.0</additional_attributes>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>330</x>
<y>260</y>
<w>40</w>
<h>40</h>
</coordinates>
<panel_attributes/>
<additional_attributes>10.0;20.0;20.0;20.0</additional_attributes>
</element>
<element>
<id>Text</id>
<coordinates>
<x>80</x>
<y>90</y>
<w>160</w>
<h>40</h>
</coordinates>
<panel_attributes>*Apps &amp; Services*
style=wordwrap</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>40</x>
<y>190</y>
<w>830</w>
<h>30</h>
</coordinates>
<panel_attributes>lt=..</panel_attributes>
<additional_attributes>10.0;10.0;810.0;10.0</additional_attributes>
</element>
<element>
<id>Text</id>
<coordinates>
<x>80</x>
<y>250</y>
<w>160</w>
<h>40</h>
</coordinates>
<panel_attributes>*Middleware APIs*
style=wordwrap</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>40</x>
<y>320</y>
<w>830</w>
<h>30</h>
</coordinates>
<panel_attributes>lt=..</panel_attributes>
<additional_attributes>10.0;10.0;810.0;10.0</additional_attributes>
</element>
<element>
<id>Text</id>
<coordinates>
<x>80</x>
<y>370</y>
<w>160</w>
<h>40</h>
</coordinates>
<panel_attributes>*Programming Libraries*
style=wordwrap</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>40</x>
<y>480</y>
<w>830</w>
<h>30</h>
</coordinates>
<panel_attributes>lt=..</panel_attributes>
<additional_attributes>10.0;10.0;810.0;10.0</additional_attributes>
</element>
<element>
<id>Text</id>
<coordinates>
<x>80</x>
<y>510</y>
<w>160</w>
<h>70</h>
</coordinates>
<panel_attributes>*Peer-to-Peer Network*
style=wordwrap</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>840</x>
<y>30</y>
<w>30</w>
<h>670</h>
</coordinates>
<panel_attributes>lt=..</panel_attributes>
<additional_attributes>10.0;650.0;10.0;10.0</additional_attributes>
</element>
<element>
<id>UMLClass</id>
<coordinates>
<x>270</x>
<y>510</y>
<w>500</w>
<h>150</h>
</coordinates>
<panel_attributes>lt=.
halign=left
XRP Ledger</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>Text</id>
<coordinates>
<x>350</x>
<y>280</y>
<w>130</w>
<h>30</h>
</coordinates>
<panel_attributes>style=wordwrap
fontsize=8
*Do not use for mission-critical services.</panel_attributes>
<additional_attributes/>
</element>
</diagram>

View File

@@ -4,11 +4,15 @@ The XRP Ledger is home to a deep, layered ecosystem of software projects powerin
## Stack Levels
The [core of the XRP Ledger](#rippled-the-core-server) is a peer-to-peer network of always-on servers sharing transactions, engaging in the [consensus process](consensus.html) and processing [transactions](transaction-basics.html). Everything else in the XRP Ledger ecosystem is ultimately built on top of this peer-to-peer network, directly or indirectly.
[![Ecosystem diagram with the four layers: XRP Ledger peer-to-peer network on the bottom, Programming Libraries above that, Middleware next, and Apps and Services at the top](img/ecosystem.png)](img/ecosystem.png)
[_Programming libraries_](#programming-libraries) exist in higher level software, where they are imported directly into program code, and contain premade implementations of routines to access the XRP Ledger.
- The [basis of the XRP Ledger](#rippled-the-core-server) is a peer-to-peer network of always-on servers sharing transactions, engaging in the [consensus process](consensus.html) and processing [transactions](transaction-basics.html). Everything else in the XRP Ledger ecosystem is ultimately built on top of this peer-to-peer network, directly or indirectly.
[_Middleware services_](#middleware) provide indirect access to XRP Ledger data, frequently with their own data storage and processing.
- [_Programming Libraries_](#programming-libraries) exist in higher level software, where they are imported directly into program code, and contain premade implementations of routines to access the XRP Ledger.
- [_Middleware_](#middleware) provides indirect access to XRP Ledger data. Applications in this layer frequently have their own data storage and processing.
- [_Apps and Services_](#apps-and-services) provide user-level interaction with the
### rippled: The Core Server
@@ -35,9 +39,23 @@ The [Data API](data-api.html) is an example of a middleware service on top of th
<!--{# TODO: Add XRP-API here when it has more documentation #}-->
### Apps and Services
Atop the stack is where the truly exciting things happen. Apps and services provide a way for users and devices to connect to the XRP Ledger. At this level, [exchanges list XRP](list-xrp-in-your-exchange.html), [gateways issue other currencies](become-an-xrp-ledger-gateway.html) for use in the decentralized exchange, and wallets provide user interfaces for buying, selling, or just <s>HODLing</s> holding XRP. Many other possibilities exist, including additional services layered even higher.
A great way to build applications that are compatible with not only XRP but lots of other ways of denominating value is to use the [Interledger Protocol][] with settlement in XRP.
There are numerous other examples of projects using XRP and adjacent technologies to interact with users. Ripple's enterprise customers already have the option to use XRP through [on-demand liquidity services](https://www.ripple.com/ripplenet/on-demand-liquidity/). For more examples of businesses and software built on the XRP Ledger, see [Xpring Partners](https://xpring.io/#partners) or XRPChat's excellent [Links & Resources](https://www.xrpchat.com/links/) listing.
## See Also
- [Xpring Partners](https://xpring.io/#partners)
- [Technical FAQ](technial-faq.html)
- [XRPChat Links & Resources](https://www.xrpchat.com/links/) - Includes updated lists of gateways and exchanges, wallets and storage, apps, and more.
<!--{# common link defs #}-->
{% include '_snippets/rippled-api-links.md' %}
{% include '_snippets/tx-type-links.md' %}
{% include '_snippets/rippled_versions.md' %}

BIN
img/ecosystem.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB