forked from interledger/interledger.github.io
-
Notifications
You must be signed in to change notification settings - Fork 0
/
overview.html
216 lines (187 loc) · 13.6 KB
/
overview.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="The protocol for connecting blockchains and other ledgers">
<!-- Bootstrap core CSS -->
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
<!-- Custom styles -->
<link href="/assets/css/custom.css" rel="stylesheet">
<!-- Google fonts -->
<link href='https://fonts.googleapis.com/css?family=Source+Sans+Pro:400,300,200,600,700,900|Droid+Sans+Mono|Titillium+Web:400,300,600,900' rel='stylesheet' type='text/css'>
<link href="/assets/img/favicon.png" rel="icon" type="image/x-icon">
<!-- highlight js -->
<link rel="stylesheet" href="/assets/css/monokai-sublime.css">
<!-- fontawesome icons -->
<link rel="stylesheet" href="/assets/fontawesome/css/font-awesome.min.css" />
<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<![endif]-->
</head>
<body class="sidebar-primary ">
<!-- <div class="container"> -->
<nav class="navbar fixed-top navbar-expand-lg navbar-dark nav-innerpage">
<div class="navbar-leftbg"><a href="/" class="navbar-brand"><img src="/assets/img/ilp_logo@2x.png" class="logo" height="44" alt="Interledger" /></a></div>
<button type="button" class="navbar-toggler" data-toggle="collapse" data-target="#navbarHolder" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse justify-content-end" id="navbarHolder">
<ul class="nav navbar-nav">
<li class="nav-item" ><a class="nav-link" href="/overview.html">Docs</a></li>
<li class="nav-item" ><a class="nav-link" href="/libraries.html">Tools</a></li>
<li class="nav-item" ><a class="nav-link" href="/community.html">Community</a></li>
<li class="nav-item"><a class="nav-link" target="_blank" href="https://github.com/interledger">Edit on Github</a></li>
<li class="nav-item"><a class="nav-link cornerlink" href="/overview.html">Get Started</a></li>
</ul><!-- /.navbar-nav -->
<div class="cornerbox"></div>
</div>
<div class="menu-overlay"></div>
</nav>
<!-- </div> -->
<div class="container-fluid" role="document" id="main_content_wrapper">
<div class="row">
<aside class="sidebar col-md-4 col-lg-3 p-0 order-md-1" role="complementary">
<div id="sidenav" class="tree_nav">
<ul class=" sidebar_pagelist">
<li class="nav-label">Getting Started</li>
<ul class=" sidebar_pagelist sidebar_indent">
<li><a href="/overview.html">Overview</a></li>
<li><a href="/setup-wallets.html">Set Up and Use Interledger Accounts</a></li>
<li><a href="/setup-wallets-programmatically.html">Manage Interledger Accounts Programmatically</a></li>
<li><a href="/spin-up-local-network.html">Spin Up a Local ILP Network</a></li>
</ul>
</ul>
<ul class=" sidebar_pagelist">
<li class="nav-label">Community Resources</li>
<li><a class="external-link" href="https://medium.com/interledger-blog">Blog and Tutorials<i class="fa fa-external-link" aria-hidden="true"></i></a></li>
<li><a href="/libraries.html">Libraries and Tools</a></li>
<li><a href="/summit-2019.html">ILP Summit 2019 Videos</a></li>
</ul>
<div class="sidebar-nav-header">Specs</div>
<ul class=" sidebar_pagelist sidebar_indent">
<li><a href="/rfcs/0027-interledger-protocol-4/">Interledger Protocol 4 (ILPv4)</a></li>
<li><a href="/rfcs/0015-ilp-addresses/">Interledger Addresses</a></li>
<li><a href="/rfcs/0029-stream/">STREAM Protocol</a></li>
<li><a href="/rfcs/0009-simple-payment-setup-protocol/">Simple Payment Setup Protocol (SPSP)</a></li>
<li><a href="/rfcs/0030-notes-on-oer-encoding/">Notes on OER encoding</a></li>
<li><a href="/rfcs/0031-dynamic-configuration-protocol/">Dynamic Configuration Protocol (ILDCP)</a></li>
<li><a href="/rfcs/0032-peering-clearing-settlement/">Peering, Clearing and Settlement</a></li>
<li><a href="/rfcs/0038-settlement-engines/">Settlement Engines</a></li>
<li><a href="/rfcs/0035-ilp-over-http/">ILP over HTTP</a></li>
<li><a href="/rfcs/0036-spsp-pull-payments/">SPSP Pull Payments</a></li>
<li> </li>
<li><a class="external-link" target="_blank" href="https://paymentpointers.org">Payment Pointers</a></li>
<li><a class="external-link" target="_blank" href="https://webmonetization.org">Web Monetization</a></li>
<li><a class="external-link" target="_blank" href="https://w3c.github.io/webpayments/proposals/interledger-payment-method.html">W3C Web Payments</a></li>
</ul>
</div> </aside>
<!-- main column -->
<main class="main col-md-8 col-lg-6 order-md-3 " role="main" id="main_content_body">
<article class="pt-3 p-md-3">
<div class="content doc-content">
<h1 id="main-page-header">Interledger Overview</h1>
<p class="blurb">Enable seamless exchange of value across payment networks.</p>
<p>Traditional payment networks operate independently from each other. Sending value is easy only if the sender and
recipient have accounts on the same network, but it can be slow and expensive if they have accounts on different
networks. Interledger makes it easy to transact in whatever currency or payment network you choose, because Interledger is
not tied to any one company, blockchain, or currency. Using Interledger, you can send XRP to someone who wants
to receive ETH, or you can send USD to someone who wants to receive EUR.</p>
<h2 id="what-is-interledger">What is Interledger?</h2>
<p>Interledger is a network of computers that enables the sending of value across independent payment networks.
Similar to how the Internet routes packets information, Interledger routes packets of value. Computers on the Interledger
network are called <em>nodes</em>. Nodes can take one or more of the following roles:</p>
<ul>
<li>Sender – Initiates a value transfer.</li>
<li>Router – Applies currency exchange and forwards packets of value. This is an intermediary node between the sender
and the receiver.</li>
<li>Receiver – Receives the value.</li>
</ul>
<p><img alt="ILP-nodes" src="assets/img/ilp-nodes-2.png"/></p>
<p><strong>Note:</strong> The terms <em>Router</em> and <em>Connector</em> are used interchangeably throughout the documentation.</p>
<h2 id="how-does-interledger-work">How does Interledger work?</h2>
<p>At the core of Interledger is the <a class="external-link" href="https://interledger.org/rfcs/0027-interledger-protocol-4/" target="_blank">Interledger Protocol (ILPv4) <i aria-hidden="true" class="fa fa-external-link"></i></a>,
which is a set of rules that define how nodes should send value over the Interledger network. ILPv4 is a <em>request/response</em>
protocol, where requests and responses are ILPv4 packets. Typically, a single aggregate
payment from source to destination is split into multiple ILP packets. Each ILP packet contains transaction
information, which is private to the nodes participating in the transaction. ILPv4 has three packet types - <em>Prepare</em>, <em>Fulfill</em>, and <em>Reject</em>.</p>
<p><img alt="ILP-packets" src="assets/img/ilp-packets.png"/></p>
<p>The sender constructs and sends a Prepare packet as a request to the connecting router. The routers forward the packet
until it reaches the receiver. The receiver then accepts or rejects the packet by sending a Fulfill packet or a
Reject packet as the response. The routers relay the response from the receiver back to the sender. When the sender
receives a Fulfill packet, it knows that the packet was successfully delivered to the receiver. The sender then
continues to send the remaining Prepare packets until the value is fully transferred.</p>
<p>Interledger does not rely on any single payment network for processing value transactions. You can connect with an ILPv4 router at any time to join the network. Furthermore, Interledger sends value as tiny data packets, which makes transactions fast, secure, and inexpensive.</p>
<p><strong>Tip:</strong> For a deeper dive into how ILPv4 works, see <a class="external-link" href="https://interledger.org/rfcs/0027-interledger-protocol-4/#prerequisites" target="_blank">ILPv4 Flow <i aria-hidden="true" class="fa fa-external-link"></i></a>.</p>
<h2 id="building-on-interledger">Building on Interledger</h2>
<p>Build payments into your apps or other protocols without tying yourself to a specific currency or payment network.
Create accounts on our demo ledgers and start sending Interledger payments with the client libraries.
Check out <a href="setup-wallets.html">Getting Started</a> for more details.</p>
<h2 id="interledger-architecture">Interledger architecture</h2>
<p>Interledger enables payments across many different types of ledgers. The Interledger Protocol Suite is comprised of
four layers: the Application, Transport, Interledger, and Link protocols. To learn more, see the Interledger
<a class="external-link" href="https://interledger.org/rfcs/0001-interledger-architecture/" target="_blank">Architecture Overview <i aria-hidden="true" class="fa fa-external-link"></i></a>.</p>
<h2 id="protocol-specs-and-apis">Protocol specs and APIs</h2>
<p>To dive into the technical specs, see the <a class="external-link" href="https://github.com/interledger/rfcs" target="_blank">Interledger RFCs <i aria-hidden="true" class="fa fa-external-link"></i></a>. Also see the documentation for the components of the reference implementation.</p>
<h2 id="security">Security</h2>
<p>Interledger enables secure, multi-hop payments using <a class="external-link" href="https://interledger.org/rfcs/0022-hashed-timelock-agreements/" target="_blank">Hashed Timelock Agreements <i aria-hidden="true" class="fa fa-external-link"></i></a>.
As of Interledger version 4, these conditions are not enforced by the ledger, as it would be too costly and slow.
Instead, participants in the network use these hashlocks to perform accounting with their peers. This accounting is
used to determine in-flight balances, which are periodically settled with on-ledger transfers or payment channel claims.
For a detailed description of how this works, read the
<a class="external-link" href="https://interledger.org/rfcs/0032-peering-clearing-settlement/" target="_blank">Peering, Clearing, and Settlement <i aria-hidden="true" class="fa fa-external-link"></i></a> documentation.</p>
<p>Next: <a href="setup-wallets.html">Set up and use Interledger accounts</a></p>
</div>
</article>
</main>
<aside class="right-sidebar col-lg-3 order-lg-4 p-0" role="complementary">
<div class="card" id="page-toc-wrapper">
<div class="card-header">
<h4>On This Page</h4>
</div>
<ul class="card-body">
<li class="level-2"><a href="#what-is-interledger">What is Interledger?</a></li>
<li class="level-2"><a href="#how-does-interledger-work">How does Interledger work?</a></li>
<li class="level-2"><a href="#building-on-interledger">Building on Interledger</a></li>
<li class="level-2"><a href="#interledger-architecture">Interledger architecture</a></li>
<li class="level-2"><a href="#protocol-specs-and-apis">Protocol specs and APIs</a></li>
<li class="level-2"><a href="#security">Security</a></li>
</ul>
</div>
</aside>
</div><!--/.row (main layout)-->
</div>
<footer>
<div class="container">
<div class="row">
<div class="col-md-12">
<div class="col-sm-9 col-xs-12 float-left footertext">
<p><img src="/assets/img/ilp_footer_logo@2x.png" height="44" alt="Interledger" align="left" /> Interledger Project<br><span>Documentation licensed under <a href="https://creativecommons.org/licenses/by/4.0/">CC BY 4.0.</a></span></p>
</div>
<div class="col-sm-3 col-xs-12 float-right">
<a href="https://twitter.com/interledger"><img src="/assets/img/Twitter.png"></a>
<a href="https://communityinviter.com/apps/interledger/interledger-working-groups-slack"><img src="/assets/img/Slack.png"></a>
</div>
</div>
</div>
</div>
</footer>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script src="/assets/js/bootstrap.min.js"></script>
<script src="/assets/js/highlight.pack.js"></script>
<script src="/assets/js/custom.js"></script>
<!-- <script src="/assets/js/home.js"></script> -->
<!-- <script type="text/javascript" src="/assets/js/svg-animation.js"></script> -->
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-68500608-1', 'auto');
ga('send', 'pageview');
</script>
</body>
</html>