Merge pull request #575 from mDuo13/xrpl_style

Merge xrpl_style into master
This commit is contained in:
Rome Reginelli
2019-06-14 14:32:25 -07:00
committed by GitHub
101 changed files with 5553 additions and 14344 deletions

View File

@@ -207,7 +207,7 @@ def currency_code_to_bytes(code_string, xrp_ok=False):
code_ascii = code_string.encode("ASCII")
logger.debug("Currency code ASCII: %s"%code_ascii.hex())
# standard currency codes: https://developers.ripple.com/currency-formats.html#standard-currency-codes
# standard currency codes: https://xrpl.org/currency-formats.html#standard-currency-codes
# 8 bits type code (0x00)
# 88 bits reserved (0's)
# 24 bits ASCII

View File

@@ -37,8 +37,8 @@ The following is a comprehensive list of all known amendments and their status o
| [TrustSetAuth][] | v0.30.0 | [Enabled: 2016-07-19](https://xrpcharts.ripple.com/#/transactions/0E589DE43C38AED63B64FF3DA87D349A038F1821212D370E403EB304C76D70DF "BADGE_GREEN") |
| [MultiSign][] | v0.31.0 | [Enabled: 2016-06-27](https://xrpcharts.ripple.com/#/transactions/168F8B15F643395E59B9977FC99D6310E8708111C85659A9BAF8B9222EEAC5A7 "BADGE_GREEN") |
| [FeeEscalation][] | v0.31.0 | [Enabled: 2016-05-19](https://xrpcharts.ripple.com/#/transactions/5B1F1E8E791A9C243DD728680F108FEF1F28F21BA3B202B8F66E7833CA71D3C3 "BADGE_GREEN") |
| [FlowV2][] | v0.32.1 | [Vetoed: Removed in v0.33.0](https://developers.ripple.com/blog/2016/flowv2-vetoed.html "BADGE_RED") |
| [SusPay][] | v0.31.0 | [Vetoed: Removed in v0.60.0](https://developers.ripple.com/blog/2017/ticksize-voting.html#upcoming-features "BADGE_RED") |
| [FlowV2][] | v0.32.1 | [Vetoed: Removed in v0.33.0](https://xrpl.org/blog/2016/flowv2-vetoed.html "BADGE_RED") |
| [SusPay][] | v0.31.0 | [Vetoed: Removed in v0.60.0](https://xrpl.org/blog/2017/ticksize-voting.html#upcoming-features "BADGE_RED") |
**Note:** In many cases, an incomplete version of the code for an amendment is present in previous versions of the software. The "Introduced" version in the table above is the first stable version. The value "TBD" indicates that the amendment is not yet considered stable.
@@ -340,7 +340,7 @@ With this amendment enabled, the XRP Ledger removes these dry offers when they'r
|:-----------------------------------------------------------------|:----------|
| 740352F2412A9909880C23A559FCECEDA3BE2126FED62FC7660D628A06927F11 | Enabled |
Replaces the payment processing engine with a more robust and efficient rewrite called the Flow engine. The new version of the payment processing engine is intended to follow the same rules as the old one, but occasionally produces different results due to floating point rounding. This Amendment supersedes the [FlowV2](https://developers.ripple.com/blog/2016/flowv2-vetoed.html) amendment.
Replaces the payment processing engine with a more robust and efficient rewrite called the Flow engine. The new version of the payment processing engine is intended to follow the same rules as the old one, but occasionally produces different results due to floating point rounding. This Amendment supersedes the [FlowV2](https://xrpl.org/blog/2016/flowv2-vetoed.html) amendment.
The Flow Engine also makes it easier to improve and expand the payment engine with further Amendments.
@@ -366,7 +366,7 @@ Streamlines the offer crossing logic in the XRP Ledger's decentralized exchange.
|:-----------------------------------------------------------------|:----------|
| 5CC22CFF2864B020BD79E0E1F048F63EF3594F95E650E43B3F837EF1DF5F4B26 | Vetoed |
This is a previous version of the [Flow](#flow) amendment. It was [rejected due to a bug](https://developers.ripple.com/blog/2016/flowv2-vetoed.html) and removed in version 0.33.0.
This is a previous version of the [Flow](#flow) amendment. It was [rejected due to a bug](https://xrpl.org/blog/2016/flowv2-vetoed.html) and removed in version 0.33.0.
## MultiSign

View File

@@ -8,6 +8,6 @@ Auto-bridging happens automatically on any OfferCreate transaction. [Payment tra
## See Also
- [Dev Blog: Introducing Autobridging](https://developers.ripple.com/blog/2014/introducing-offer-autobridging.html)
- [Dev Blog: Introducing Autobridging](https://xrpl.org/blog/2014/introducing-offer-autobridging.html)
- [Offer Preference](offers.html#offer-preference)

View File

@@ -12,7 +12,7 @@ When an issuer enables, disables, or changes the `TickSize`, Offers that were pl
## See Also
- [Dev Blog: Introducing the TickSize Amendment](https://developers.ripple.com/blog/2017/ticksize-voting.html#ticksize-amendment-overview)
- [Dev Blog: Introducing the TickSize Amendment](https://xrpl.org/blog/2017/ticksize-voting.html#ticksize-amendment-overview)
- [AccountSet transaction][]

View File

@@ -55,7 +55,7 @@ For a longer exploration of how the XRP Ledger Consensus Protocol responds to va
- [Consensus Network Concepts](consensus-network.html) for several articles describing the mechanics of the XRP Ledger Consensus Protocol in greater depth.
- [Run `rippled` as a Validator](run-rippled-as-a-validator.html) for instructions on running your own validator.
- [Decentralization Strategy Update (Ripple Dev Blog)](https://developers.ripple.com/blog/2017/decent-strategy-update.html) for a description of Ripple's goals and plans for decentralizing the XRP Ledger.
- [Decentralization Strategy Update (Ripple Dev Blog)](https://xrpl.org/blog/2017/decent-strategy-update.html) for a description of Ripple's goals and plans for decentralizing the XRP Ledger.
<!--{# TODO: Replace the Decent Strategy Update w/ a newer article when we have one #}-->

View File

@@ -28,7 +28,7 @@ This combines qualities of physical and centralized digital money. Prior to the
**Note:** Users of the XRP Ledger _can_ freeze non-XRP currencies issued in the XRP Ledger. For more information, see the [Freeze documentation](freezes.html).
The XRP Ledger's system of trusted validators uses a small amount of human interaction to achieve better distribution of authority than other decentralized systems. Fully-automated systems for reaching consensus from an unknown set of participants are vulnerable to concentrations of voting power. For example, Bitcoin mining is disproportionately concentrated in places with cheap electricity. As Ripple curates a list of distinct validators operated by different entities in different jurisdictions, the XRP Ledger can become more resistant to censorship and outside pressures than proof-of-work mining. For more information on Ripple's plan to decentralize the recommended set of validators, see the [Decentralization Strategy Update](https://developers.ripple.com/blog/2017/decent-strategy-update.html).
The XRP Ledger's system of trusted validators uses a small amount of human interaction to achieve better distribution of authority than other decentralized systems. Fully-automated systems for reaching consensus from an unknown set of participants are vulnerable to concentrations of voting power. For example, Bitcoin mining is disproportionately concentrated in places with cheap electricity. As Ripple curates a list of distinct validators operated by different entities in different jurisdictions, the XRP Ledger can become more resistant to censorship and outside pressures than proof-of-work mining. For more information on Ripple's plan to decentralize the recommended set of validators, see the [Decentralization Strategy Update](https://xrpl.org/blog/2017/decent-strategy-update.html).
For more information about the XRP Ledger's ability to detect censorship, see [Transaction Censorship Detection](transaction-censorship-detection.html).
@@ -87,7 +87,7 @@ A sample of advanced features in the XRP Ledger:
- [Escrow](escrow.html) locks up XRP until a declared time passes or cryptographic condition is met.
- [DepositAuth](depositauth.html) lets users decide who can send them money and who can't.
- A [Decentralized Exchange](#on-ledger-decentralized-exchange) lets users trade obligations and XRP on-ledger.
- [Invariant Checking](https://developers.ripple.com/blog/2017/invariant-checking.html) provides an independent layer of protections against bugs in transaction execution.
- [Invariant Checking](https://xrpl.org/blog/2017/invariant-checking.html) provides an independent layer of protections against bugs in transaction execution.
- [Amendments](amendments.html) provide smooth upgrades to the existing feature set, so the technology can continue to evolve without fracturing the ecosystem or causing uncertainty around times of transition.

View File

@@ -2,7 +2,7 @@
**XRP** is the native cryptocurrency of the XRP Ledger. All [accounts](accounts.html) in the XRP Ledger can send XRP among one another and must hold a minimum amount of XRP as a [reserve](reserves.html). XRP can be sent directly from any XRP Ledger address to any other, without needing a gateway or liquidity provider. This helps make XRP a convenient bridge currency.
Some advanced features of the XRP Ledger, such as [Escrow](escrow.html) and [Payment Channels](use-payment-channels.html), only work with XRP. Order book [autobridging](https://developers.ripple.com/blog/2014/introducing-offer-autobridging.html) uses XRP to deepen liquidity in the decentralized exchange by merging order books of two issued currencies with XRP order books to create synthetic combined order books. (For example, autobridging matches USD:XRP and XRP:EUR orders to augment USD:EUR order books.)
Some advanced features of the XRP Ledger, such as [Escrow](escrow.html) and [Payment Channels](use-payment-channels.html), only work with XRP. Order book [autobridging](https://xrpl.org/blog/2014/introducing-offer-autobridging.html) uses XRP to deepen liquidity in the decentralized exchange by merging order books of two issued currencies with XRP order books to create synthetic combined order books. (For example, autobridging matches USD:XRP and XRP:EUR orders to augment USD:EUR order books.)
XRP also serves as a protective measure against spamming the network. All XRP Ledger addresses need a small amount of XRP to pay the costs of maintaining the XRP Ledger. The [transaction cost](transaction-cost.html) and [reserve](reserves.html) are neutral fees denominated in XRP and not paid to any party. In the ledger's data format, XRP is stored in [AccountRoot objects](accountroot.html).

View File

@@ -1,25 +0,0 @@
# News
<!--{# Note: the title in the first line of this file gets used to generate the top nav. #}-->
Get the latest XRP Ledger news and release information.
<!--{# area will eventually include a Network Health page #}-->
<!--{# TODO: see if the link to the content makes more sense in the bullet itself - moved the link there just to make this consistent across landing pages like Dev Tools and Use Cases. See how it looks and feels. #}-->
* **[Known Amendments](known-amendments.html)**
Amendments provide a way to introduce breaking changes to the decentralized XRP Ledger network without causing disruptions. Get the comprehensive list of [all known amendments](known-amendments.html) and their statuses on the production XRP Ledger.
* **[Ripple Dev Blog](/blog/)**
Visit the Dev Blog for the latest news and stories about the XRP Ledger and `rippled`.
* **[Ripple GitHub Organization](https://github.com/ripple)**
Visit the Ripple GitHub Organization to access open-source projects, including `rippled`, `ripple-lib`, and `ripple-libpp`.
* **[Interledger](https://interledger.org/)**
Learn about Interledger, an open protocol suite for sending payments across different ledgers. The open architecture and minimal protocol enable interoperability for any value transfer system.

View File

@@ -4,7 +4,7 @@ This tutorial shows how to monitor for incoming payments using the [WebSocket `r
WebSocket follows a model where the client and server establish one connection, then send messages both ways through the same connection, which remains open until explicitly closed (or until the connection fails). This is in contrast to the HTTP-based API model (including JSON-RPC and RESTful APIs), where the client opens and closes a new connection for each request.[¹](#footnote-1)<a id="from-footnote-1"></a>
**Tip:** The examples in this page use JavaScript so that the examples can run natively in a web browser. If you are developing in JavaScript, you can also use the [RippleAPI library for JavaScript](https://developers.ripple.com/rippleapi-reference.html) to simplify some tasks. This tutorial shows how to monitor for transactions _without_ using RippleAPI so that you can translate the steps to other programming languages that don't have RippleAPI.
**Tip:** The examples in this page use JavaScript so that the examples can run natively in a web browser. If you are developing in JavaScript, you can also use the [RippleAPI library for JavaScript](https://xrpl.org/rippleapi-reference.html) to simplify some tasks. This tutorial shows how to monitor for transactions _without_ using RippleAPI so that you can translate the steps to other programming languages that don't have RippleAPI.
## Prerequisites
@@ -70,7 +70,7 @@ Example:
<button id="connect-button" class="btn btn-primary">Connect</button>
<strong>Connection status:</strong>
<span id="connection-status">Not connected</span>
<div id='loader-{{n.current}}' style="display: none;"><img class='throbber' src="assets/img/rippleThrobber.png"></div>
<div id='loader-{{n.current}}' style="display: none;"><img class='throbber' src="assets/img/xrp-loader-96.png"></div>
<h5>Console:</h5>
<div class="ws-console" id="monitor-console-connect"><span class="placeholder">(Log is empty)</span></div>
{{ end_step() }}

View File

@@ -138,7 +138,7 @@ Complete the following configurations that are required for `rippled` to start u
cp cfg/validators-example.txt ~/.config/ripple/validators.txt
**Warning:** Ripple has designed a [decentralization plan](https://developers.ripple.com/blog/2017/decent-strategy-update.html) with maximum safety in mind. During the transition, you *should not* modify the `validators.txt` file except as recommended by Ripple. Even minor modifications to your validator settings could cause your server to diverge from the rest of the network and report out of date, incomplete, or inaccurate data. Acting on such data can cause you to lose money.
**Warning:** Ripple has designed a [decentralization plan](https://xrpl.org/blog/2017/decent-strategy-update.html) with maximum safety in mind. During the transition, you *should not* modify the `validators.txt` file except as recommended by Ripple. Even minor modifications to your validator settings could cause your server to diverge from the rest of the network and report out of date, incomplete, or inaccurate data. Acting on such data can cause you to lose money.
## 3. Run `rippled`

View File

@@ -108,7 +108,7 @@ The example `rippled-example.cfg` file sets the logging verbosity to `warning` i
## Network and Hardware
Each `rippled` server in the XRP Ledger network performs all of the transaction processing work of the network. Therefore, the baseline hardware for production `rippled` servers should be similar to that used in Ripple's [performance testing](https://developers.ripple.com/blog/2017/high-scalability-xrp-ledger.html).
Each `rippled` server in the XRP Ledger network performs all of the transaction processing work of the network. Therefore, the baseline hardware for production `rippled` servers should be similar to that used in Ripple's [performance testing](https://xrpl.org/blog/2017/high-scalability-xrp-ledger.html).
Ensuring that your `rippled` server meets these network and hardware requirements helps achieve consistent, good performance across the XRP Ledger network.

View File

@@ -16,13 +16,12 @@ This tutorial explains how to send a simple XRP Payment using RippleAPI for Java
{{ start_step("Generate") }}
<button id="generate-creds-button" class="btn btn-primary">Generate credentials</button>
<div id='loader-0' style="display: none;"><img class='throbber' src="assets/img/rippleThrobber.png"> Generating Keys...</div>
<div id='loader-0' style="display: none;"><img class='throbber' src="assets/img/xrp-loader-96.png"> Generating Keys...</div>
<div id='address'></div>
<div id='secret'></div>
<div id='balance'></div>
<div id="populate-creds-status"></div>
{{ end_step() }}
<script type="application/javascript">
$(document).ready( () => {
@@ -113,7 +112,7 @@ For this tutorial, you can connect directly from your browser by pressing the fo
<div>
<strong>Connection status:</strong>
<span id="connection-status">Not connected</span>
<div id='loader-{{n.current}}' style="display: none;"><img class='throbber' src="assets/img/rippleThrobber.png"></div>
<div id='loader-{{n.current}}' style="display: none;"><img class='throbber' src="assets/img/xrp-loader-96.png"></div>
</div>
{{ end_step() }}
@@ -322,7 +321,7 @@ See the full list of [transaction results](transaction-results.html) for more po
<button id="submit-button" class="btn btn-primary connection-required"
title="Connection to Test Net required" disabled>Submit
example transaction</button>
<div id='loader-{{n.current}}' style="display: none;"><img class='throbber' src="assets/img/rippleThrobber.png"></div>
<div id='loader-{{n.current}}' style="display: none;"><img class='throbber' src="assets/img/xrp-loader-96.png"></div>
<div id="submit-output"></div>
{{ end_step() }}

View File

@@ -107,7 +107,7 @@ KYC is critical for financial institutions and related businesses to mitigate ri
See also:
- [The US-Standard on KYC](https://www.ffiec.gov/bsa_aml_infobase/pages_manual/OLM_011.htm)
- [Customer Identification Program (USA FFIEC)](https://bsaaml.ffiec.gov/manual/RegulatoryRequirements/01)
- [The Non-US Standard on KYC set by the Financial Action Task Force (FATF)](http://www.fatf-gafi.org/topics/fatfrecommendations/documents/fatf-recommendations.html)
@@ -137,7 +137,7 @@ If a financial institution suspects that funds may be related to criminal activi
See also:
- [Suspicious Activity Reporting Overview (USA FFIEC)](https://www.ffiec.gov/bsa_aml_infobase/pages_manual/OLM_015.htm)
- [Suspicious Activity Reporting Overview (USA FFIEC)](https://bsaaml.ffiec.gov/manual/RegulatoryRequirements/04_ep)
- [FATF Recommendation 16: Reporting of suspicious transactions and compliance](http://www.fatf-gafi.org/publications/fatfrecommendations/documents/fatf-recommendations.html)

View File

@@ -7,37 +7,42 @@ Want to contribute code or a bug report to help improve `ripple-lib`, the offici
{% set n = cycler(* range(1,99)) %}
<span class="use-case-step-num">{{n.next()}}</span>
## [Access the `ripple-lib` repo](https://github.com/ripple/ripple-lib)
## Access the `ripple-lib` repo
`ripple-lib` is an open-source project. You can take a look at `ripple-lib` code simply by accessing the `ripple-lib` GitHub repo. Before contributing or reporting bugs, we recommend that you get to know the code and developer experience by performing the following tasks.
<span class="use-case-external-link btn btn-outline-secondary external-link">[Access the `ripple-lib` repo](https://github.com/ripple/ripple-lib)</span>
<span class="use-case-step-num">{{n.next()}}</span>
## [Set up and run a `rippled` server](manage-the-rippled-server.html)
## Set up and run a rippled server
RippleAPI is an API for interacting with the XRP Ledger. The core peer-to-peer server that manages the XRP Ledger is `rippled`. Optionally, you can set up and run a `rippled` server to understand its developer experience and functionality. Anyone can run their own `rippled` server that follows the network and keeps a complete copy of the XRP Ledger.
[Set up and run a rippled server >](manage-the-rippled-server.html)
<span class="use-case-step-num">{{n.next()}}</span>
## [Get a Test Net XRP Ledger account](xrp-test-net-faucet.html)
## Get a Test Net XRP Ledger account
Use the XRP Test Net Faucet to get a test account on the XRP Test Network. If you set up a `rippled` server, you can connect it to the XRP Test Net to make test calls and get to know the XRP Ledger.
[Get a Test Net XRP Ledger account >](xrp-test-net-faucet.html)
<span class="use-case-step-num">{{n.next()}}</span>
## [Set up your `ripple-lib` development environment](get-started-with-rippleapi-for-javascript.html#environment-setup)
## Set up your `ripple-lib` development environment
`ripple-lib` requires Node.js and a few dependencies. We recommend using [Node.js v10 LTS](https://nodejs.org/en/) and [Yarn](https://yarnpkg.com/en/) dependency management. Also, be sure to create your own fork of the `ripple-lib` repository on GitHub so you can contribute pull requests to the official repo.
[Set up your development environment >](get-started-with-rippleapi-for-javascript.html#environment-setup)
<span class="use-case-step-num">{{n.next()}}</span>
## [Run your first `ripple-lib` script](get-started-with-rippleapi-for-javascript.html#first-rippleapi-script)
## Run your first `ripple-lib` script
Examine and run the `get-account-info.js` script. Use it to get a feel for how RippleAPI scripts work and to verify that your RippleAPI interface is working.
[Run your first script >](get-started-with-rippleapi-for-javascript.html#first-rippleapi-script)
<span class="use-case-step-num">{{n.next()}}</span>
## [Contribute code](https://github.com/ripple/ripple-lib/pulls)
## Contribute code
Now that you have a handle on `ripple-lib`, you may have ideas for how to improve it.
@@ -47,10 +52,13 @@ Need some inspiration? Take a look at our list of [Help Wanted issues](https://g
Access the `ripple-lib` repo and open an issue or pull request.
<span class="use-case-external-link btn btn-outline-secondary external-link">[Contribute code](https://github.com/ripple/ripple-lib/pulls)</span>
<span class="use-case-step-num">{{n.next()}}</span>
## [Report bugs](https://github.com/ripple/ripple-lib/issues)
## Report bugs
As you explore `ripple-lib`, you may find code that you dont think is working as intended. To report a bug, [open an issue](https://github.com/ripple/ripple-lib/issues) in the `ripple-lib` repo.
If the bug you wish to report is security-related, we urge you to disclose it responsibly through Ripple's [Bug Bounty program](https://ripple.com/bug-bounty/).
<span class="use-case-external-link btn btn-outline-secondary external-link">[Report bugs](https://github.com/ripple/ripple-lib/issues)</span>

View File

@@ -6,28 +6,32 @@ Want to contribute code or a bug report to help improve `rippled`, the core peer
{% set n = cycler(* range(1,99)) %}
<span class="use-case-step-num">{{n.next()}}</span>
## [Access the `rippled` repo](https://github.com/ripple/rippled)
## Access the `rippled` repo
`rippled` is an open-source project. You can take a look at `rippled` code simply by accessing the `rippled` GitHub repo. Before contributing or reporting bugs, we recommend that you get to know the code and developer experience by performing the following tasks.
<span class="use-case-external-link btn btn-outline-secondary external-link">[Access the repo](https://github.com/ripple/rippled)</span>
<span class="use-case-step-num">{{n.next()}}</span>
## [Set up and run a `rippled` server](manage-the-rippled-server.html)
## Set up and run a `rippled` server
Set up and run a `rippled` server to understand the developer experience and functionality of the core peer-to-peer server that manages the XRP Ledger. Anyone can run their own `rippled` server that follows the network and keeps a complete copy of the XRP Ledger.
[Set up and run a server >](manage-the-rippled-server.html)
<span class="use-case-step-num">{{n.next()}}</span>
## [Try out XRP Ledger integration tools](get-started-with-the-rippled-api.html)
## Try out XRP Ledger integration tools
Take a look at the various tools provided to help developers integrate with the XRP Ledger. From WebSocket and JSON-RPC API endpoints to the `ripple-lib` JavaScript library, take a look at the modes of integration offered to the developer community.
[Try out XRP Ledger integration tools >](get-started-with-the-rippled-api.html)
<span class="use-case-step-num">{{n.next()}}</span>
## [Get a sandbox XRP Ledger account](xrp-test-net-faucet.html)
## Get a sandbox XRP Ledger account
Use the XRP Ledger Test Net to get a sandbox account. Connect your `rippled server` to the Test Net to make test calls and get to know the XRP Ledger.
[Get a sandbox XRP Ledger account >](xrp-test-net-faucet.html)
<span class="use-case-step-num">{{n.next()}}</span>
## Set up your development environment
@@ -36,20 +40,24 @@ A `rippled` development environment has a C++ compiler, access to the necessary
<span class="use-case-step-num">{{n.next()}}</span>
## [Familiarize yourself with `rippled`'s coding style](https://github.com/ripple/rippled/blob/develop/docs/CodingStyle.md)
## Familiarize yourself with `rippled`'s coding style
Before you start contributing code to `rippled,` take some time to familiarize yourself with the coding standards used in the `rippled` repo. These standards gradually evolve and propagate through code reviews. Some aspects are enforced more strictly than others.
<span class="use-case-external-link btn btn-outline-secondary external-link">[Familiarize yourself with `rippled`'s coding style](https://github.com/ripple/rippled/blob/develop/docs/CodingStyle.md)</span>
<span class="use-case-step-num">{{n.next()}}</span>
## [Contribute code](https://github.com/ripple/rippled/pulls)
## Contribute code
Now that you have a handle on `rippled`, you may have ideas for how to improve it. Perhaps youre developing on the XRP Ledger and want to contribute some code that enables the XRP Ledger to provide a feature your application needs. Access the `rippled` repo and open an issue or pull request.
<span class="use-case-external-link btn btn-outline-secondary external-link">[Contribute code](https://github.com/ripple/rippled/pulls)</span>
<span class="use-case-step-num">{{n.next()}}</span>
## [Report bugs](https://github.com/ripple/rippled/issues)
## Report bugs
As you explore `rippled`, you may find code that you dont think is working as intended. To report a bug, [open an issue](https://github.com/ripple/rippled/issues) in the `rippled` repo.
If the bug you wish to report is security-related, we urge you to disclose it responsibly through Ripple's [Bug Bounty program](https://ripple.com/bug-bounty/).
<span class="use-case-external-link btn btn-outline-secondary external-link">[Report bugs](https://github.com/ripple/rippled/issues)</span>

View File

@@ -6,17 +6,16 @@ Does your exchange want to list XRP, enabling your users to deposit, trade, and
{% set n = cycler(* range(1,99)) %}
<span class="use-case-step-num">{{n.next()}}</span>
<!-- <span class="use-case-step-length">(1 hour)</span> -->
## [Meet prerequisites for listing XRP](list-xrp-as-an-exchange.html#prerequisites-for-supporting-xrp)
## Meet prerequisites for listing XRP
Put in place the foundation and operational processes needed to efficiently and securely list XRP in your exchange.
This includes creating and securing XRP Ledger accounts, implementing internal balance sheets, adopting appropriate security procedures, and complying with any applicable regulations.
[Learn more about prerequisites >](list-xrp-as-an-exchange.html#prerequisites-for-supporting-xrp)
<span class="use-case-step-num">{{n.next()}}</span>
<!-- <span class="use-case-step-length">(1 hour)</span> -->
## [Set up and run a `rippled` server](manage-the-rippled-server.html)
## Set up and run a `rippled` server
`rippled` is the core peer-to-peer server that manages the XRP Ledger.
@@ -26,34 +25,38 @@ You can start out running one `rippled` server to support development and explor
[Running a `rippled` server in validator mode](run-a-rippled-validator.html) enables your exchange to contribute to the strength and decentralization of the XRP Ledger network. Even if your `rippled` server isnt included in published validator lists, it is still contributing (albeit indirectly) and continues to build up reputation over time.
[Set up rippled >](manage-the-rippled-server.html)
<!--{# Using code font on "rippled" here breaks the buttonize effect #}-->
<span class="use-case-step-num">{{n.next()}}</span>
<!-- <span class="use-case-step-length">(1 hour)</span> -->
## [Try out XRP Ledger integration tools](get-started-with-the-rippled-api.html)
## Try out XRP Ledger integration tools
Take a look at the various tools provided to help you integrate with the XRP Ledger.
From WebSocket and JSON-RPC API endpoints to the RippleAPI JavaScript library, find a mode of integration that works with your technology.
[Get started with API tools >](get-started-with-the-rippled-api.html)
<span class="use-case-step-num">{{n.next()}}</span>
<!-- <span class="use-case-step-length">(1 hour)</span> -->
## [Get a sandbox XRP Ledger account](xrp-test-net-faucet.html)
## Get a sandbox XRP Ledger account
Use the XRP Ledger Test Net to get a sandbox account. Connect your `rippled` server to the Test Net to make test calls and get to know the XRP Ledger. Once youre ready to transact in real XRP, you can switch over to transacting on the live XRP Ledger.
[Get a Test Net account >](xrp-test-net-faucet.html)
<span class="use-case-step-num">{{n.next()}}</span>
<!-- <span class="use-case-step-length">(1 hour)</span> -->
## [Understand and code integrations to support the flow of funds](list-xrp-as-an-exchange.html#flow-of-funds)
## Understand and code integrations to support the flow of funds
To support listing XRP, code integrations with the XRP Ledger to deposit XRP into your exchange, trade XRP on the exchange, rebalance XRP holding, and withdraw XRP from your exchange.
[Understand the flow of funds >](list-xrp-as-an-exchange.html#flow-of-funds)
### Related Tasks
<div class='related-tasks-links'>
- [Contribute Code to `rippled`](contribute-code-to-rippled.html)
- [Listen for New Ledger Versions](subscription-methods.html)
- [Capacity Planning](capacity-planning.html)
- [Look Up an XRP Ledger Accounts Transaction History](tx_history.html)
<!-- for the future, link to Implement Destination Tags -->
</div>

View File

@@ -31,23 +31,25 @@ Heres a roadmap to the high-level tasks youll need to perform to implement
{% set n = cycler(* range(1,99)) %}
<!-- USE_CASE_STEPS_START -->
<span class="use-case-step-num">{{n.next()}}</span>
## [Understand payment channels](payment-channels.html)
## Understand payment channels
Learn more about payment channels and whether they provide the features you need for your specific implementation.
[Understand payment channels >](payment-channels.html)
<span class="use-case-step-num">{{n.next()}}</span>
## Payer and payee: [Set up and run `rippled` servers](manage-the-rippled-server.html)
## Payer and payee: Set up and run `rippled` servers
To use a payment channel to send and receive XRP, both the payer and payee exchanges must each have access to a `rippled` server that they can use to send transactions. If your exchange processes XRP withdrawals directly, you are probably already running a `rippled` server that you can use for this purpose.
If not, a great way for an exchange to get access to a `rippled` server is to set up and run one.
[Set up and run rippled servers >](manage-the-rippled-server.html)
<span class="use-case-step-num">{{n.next()}}</span>
## Payer and payee: [Fund XRP Ledger accounts with enough XRP](accounts.html)
## Payer and payee: Fund XRP Ledger accounts with enough XRP
If your exchange processes XRP deposits and withdrawals directly, you probably have existing funded XRP Ledger accounts that you can use for this purpose. Just ensure that they are funded with enough XRP as described here.
@@ -69,7 +71,7 @@ Along these lines, there's a good chance that you are following industry best pr
The account needs at least 21 XRP, which provides the 20 XRP [base reserve](reserves.html), plus enough to pay the transaction costs of redeeming claims, which are trivial. For example, you could redeem thousands of claims for less than 1 XRP in total.
[Fund XRP Ledger accounts with enough XRP >](accounts.html)
<span class="use-case-step-num">{{n.next()}}</span>
## Payer: [Open a payment channel](use-payment-channels.html#1-the-payer-creates-a-payment-channel-to-a-particular-recipient)
@@ -91,19 +93,22 @@ Since payment channels are unidirectional, you need a second channel in the oppo
<span class="use-case-step-num">{{n.next()}}</span>
## Payee: [Verify payment channel details](use-payment-channels.html#2-the-payee-checks-specifics-of-the-payment-channel)
## Payee: Verify payment channel details
The payee exchange reviews the details of the payment channel.
[Verify payment channel details >](use-payment-channels.html#2-the-payee-checks-specifics-of-the-payment-channel)
<span class="use-case-step-num">{{n.next()}}</span>
## Payer: [Create claims](use-payment-channels.html#3-the-payer-creates-one-or-more-signed-claims-for-the-xrp-in-the-channel)
## Payer: Create claims
The payer exchange creates one or more claims for amounts of XRP that it wants to guarantee to the payee exchange.
[Create claims >](use-payment-channels.html#3-the-payer-creates-one-or-more-signed-claims-for-the-xrp-in-the-channel)
## Payer: [Send claim details to the payer exchange](use-payment-channels.html#4-the-payer-sends-a-claim-to-the-payee-as-payment-for-goods-or-services)
<span class="use-case-step-num">{{n.next()}}</span>
## Payer: Send claim details to the payer exchange
After creating a claim, the payer exchange must send details of the claim to the payee exchange, off-ledger.
@@ -128,10 +133,10 @@ Consider a series of claims prompted by payer exchange customers withdrawing XRP
| **Amount** | Cumulative amount of the claims created by the payer exchange. The payee exchange needs this value to verify and redeem the claim. For information about how to calculate the actual amount the payee exchange needs to credit the customer, see [Verify claims](#payee-verify-claims). |
| **Destination Tag** | Destination tag of the customer account on the payee exchange that needs to be credited based on the claim. The payer exchange can get this value from their customer's withdrawal request, which should provide a destination tag for the deposit to the payee exchange. When the payee exchange redeems claims, the XRP is deposited into the payee exchange's XRP Ledger account. The payee exchange can then credit the XRP from the claim to the appropriate customer account based on the destination tag provided. |
[Send claim details to the payer exchange >](use-payment-channels.html#4-the-payer-sends-a-claim-to-the-payee-as-payment-for-goods-or-services)
<span class="use-case-step-num">{{n.next()}}</span>
## Payee: [Verify claims](use-payment-channels.html#5-the-payee-verifies-the-claims)
## Payee: Verify claims
The payee exchange verifies claims sent by the payer exchange.
@@ -139,10 +144,11 @@ After verifying claims, the payee exchange should credit the claimed XRP to the
For example, to know how much to credit a customer for a claim amount of 3000, the payee exchange needs to know that the previous claim amount was 2000. The difference between the claim amount and the previous claim amount (3000 - 2000 = 1000) is the amount the payee exchange must credit to the customer account.
[Verify claims >](use-payment-channels.html#5-the-payee-verifies-the-claims)
<span class="use-case-step-num">{{n.next()}}</span>
## Payee: [Redeem them in batches](use-payment-channels.html#8-when-ready-the-payee-redeems-a-claim-for-the-authorized-amount)
## Payee: Redeem them in batches
The payee exchange can redeem batches of claims after verifying them to receive the XRP guaranteed by the payer exchange. Here are some guidelines the payee exchange can use to decide how often to redeem claims:
@@ -158,18 +164,20 @@ The payee exchange can redeem batches of claims after verifying them to receive
<!-- #{ TODO: Talk to some active PayChan users like Coil people to get some more specific recommendations. But I imagine that settling every few minutes or even hours could make sense depending on how much the payee exchange trusts the payer exchange, how many transactions they do how rapidly, etc. }# -->
[Redeem them in batches >](use-payment-channels.html#8-when-ready-the-payee-redeems-a-claim-for-the-authorized-amount)
<span class="use-case-step-num">{{n.next()}}</span>
## Payer and payee: [Continue to use the payment channel](use-payment-channels.html#7-repeat-steps-3-6-as-desired)
## Payer and payee: Continue to use the payment channel
Payer and payee exchanges can continue to send, verify, and redeem batches of claims as needed within the parameters set by the payment channel.
[Continue to use the payment channel >](use-payment-channels.html#7-repeat-steps-3-6-as-desired)
<span class="use-case-step-num">{{n.next()}}</span>
## Payer: When it's time, make a request to [close the payment channel](use-payment-channels.html#9-when-the-payer-and-payee-are-done-doing-business-the-payer-requests-for-the-channel-to-be-closed)
## Payer: When it's time, make a request to close the payment channel
When the payer exchange and payee exchange are done using the payment channel, the payer exchange can make a request to close the payment channel.
[Close the payment channel >](use-payment-channels.html#9-when-the-payer-and-payee-are-done-doing-business-the-payer-requests-for-the-channel-to-be-closed)
<!-- USE_CASE_STEPS_END -->

View File

@@ -7,7 +7,7 @@ Each `rippled` server (not running in stand-alone mode) connects to a network of
<span class="use-case-step-num">{{n.next()}}</span>
<!-- <span class="use-case-step-length">(1 hour)</span> -->
## [Understand what it means to run a validator](rippled-server-modes.html#reasons-to-run-a-validator)
## Understand what it means to run a validator
If you or your organization relies on the XRP Ledger, it is in your interest to run a validator to participate in the consensus process and provide a trusted validator that supports the ongoing decentralization of the XRP Ledger.
@@ -17,38 +17,46 @@ While validator diversity is important, not every validator is likely to be wide
Despite that, it is important to note that every validator contributes to the long-term health and decentralization of the XRP Ledger.
[Understand what it means to run a validator >](rippled-server-modes.html#reasons-to-run-a-validator)
<span class="use-case-step-num">{{n.next()}}</span>
<!-- <span class="use-case-step-length">(1 hour)</span> -->
## [Set up and run a `rippled` server](manage-the-rippled-server.html)
## Set up and run a `rippled` server
Install and run a `rippled` server. Anyone can run their own `rippled` server that follows the network and keeps a complete copy of the XRP Ledger.
For configuration guidance and network and hardware requirements, see [Capacity Planning](capacity-planning.html).
[Set up and run a rippled server >](manage-the-rippled-server.html)
<span class="use-case-step-num">{{n.next()}}</span>
<!-- <span class="use-case-step-length">(1 hour)</span> -->
## [Enable validation on your rippled server](run-rippled-as-a-validator.html)
## Enable validation on your rippled server
To configure your `rippled` server to run in validator mode, generate a validator key pair and add it to your `rippled.cfg` file.
[Learn more about validation >](run-rippled-as-a-validator.html)
<span class="use-case-step-num">{{n.next()}}</span>
<!-- <span class="use-case-step-length">(1 hour)</span> -->
## [Set up a stock rippled server as a proxy](run-rippled-as-a-validator.html#connect-using-proxies)
## Set up a stock rippled server as a proxy
To protect a production validator from DDoS attacks, you can use a stock `rippled` server as a proxy between the validator and the outside network.
[Set up a proxy >](run-rippled-as-a-validator.html#connect-using-proxies)
<span class="use-case-step-num">{{n.next()}}</span>
<!-- <span class="use-case-step-length">(1 hour)</span> -->
## [Associate your validator with a web domain you control](run-rippled-as-a-validator.html#6-provide-domain-verification)
## Associate your validator with a web domain you control
Network participants are unlikely to trust a validator without knowing who is operating it. To address this concern, associate your validator with a web domain you control.
You may also wish to have your validator listed with one or more validator tracking services, such as the [XRP Charts Validator Registry](https://xrpcharts.ripple.com/#/validators).
[Associate your validator >](run-rippled-as-a-validator.html#6-provide-domain-verification)
### Related Tasks
<div class='related-tasks-links'>
- [Contribute Code to `rippled`](contribute-code-to-rippled.html)
</div>

View File

@@ -75,7 +75,7 @@ To create the escrow as a smart contract, the participants must first define the
<span class="use-case-step-num">{{n.next()}}</span>
## Oracle: [Generate a condition and a fulfillment](send-a-conditionally-held-escrow.html#1-generate-condition-and-fulfillment)
## Oracle: Generate a condition and a fulfillment
Because participants want to create a conditionally-held escrow to provide the smart contract, they need a condition value and a fulfillment value. In this scenario, the participant that creates these values is the neutral party planner (oracle).
@@ -83,33 +83,38 @@ The party planner generates the condition and fulfillment values. The party plan
The party planner must keep the fulfillment value a secret. Anyone can use the condition and fulfillment values to finish the escrow. Most often, the receiver finishes the escrow because they're the ones who are motivated to get paid.
[Generate a condition and a fulfillment >](send-a-conditionally-held-escrow.html#1-generate-condition-and-fulfillment)
<span class="use-case-step-num">{{n.next()}}</span>
## Sender: [Calculate time values needed for the escrow](send-a-conditionally-held-escrow.html#2-calculate-release-or-cancel-time)
## Sender: Calculate time values needed for the escrow
Because the participants want the escrow to be eligible for cancellation after 12 noon the day after the party, the party host (sender) must calculate a `CancelAfter` value to include in the escrow definition.
[Calculate time values needed for the escrow >](send-a-conditionally-held-escrow.html#2-calculate-release-or-cancel-time)
<span class="use-case-step-num">{{n.next()}}</span>
## Sender: [Create the escrow](send-a-conditionally-held-escrow.html#3-submit-escrowcreate-transaction)
## Sender: Create the escrow
The party host (sender) creates the escrow that provides the smart contract. The party host must create the escrow because they are the only participant that can authorize the lock up and potential payout of XRP from their XRP Ledger account.
[Create the escrow >](send-a-conditionally-held-escrow.html#3-submit-escrowcreate-transaction)
<span class="use-case-step-num">{{n.next()}}</span>
## Sender and Receiver: [Wait for validation](send-a-conditionally-held-escrow.html#4-wait-for-validation) and [confirm escrow creation](send-a-conditionally-held-escrow.html#5-confirm-that-the-escrow-was-created)
## Sender and Receiver: Wait for validation and confirm escrow creation
The party host (sender) waits for validation of the ledger that contains the escrow creation transaction and then confirms that the escrow was created.
[Wait for validation >](send-a-conditionally-held-escrow.html#4-wait-for-validation)
The party host then provides the escrow transaction's `hash` value to the party band (receiver). The party band can use the `hash` value to look up the escrow transaction on the XRP Ledger to ensure that it was created according to the smart contract terms they agreed to. As part of this step, the party band should confirm that the condition matches the one the party planner (oracle) provided. If the condition is wrong, the fulfillment the party planner provides won't let the party band finish the escrow and get paid.
[confirm escrow creation >](send-a-conditionally-held-escrow.html#5-confirm-that-the-escrow-was-created)
<span class="use-case-step-num">{{n.next()}}</span>
## Receiver: [Finish the escrow](send-a-conditionally-held-escrow.html#6-submit-escrowfinish-transaction)
## Receiver: Finish the escrow
The party band (receiver) shows up and plays their set.
@@ -119,21 +124,29 @@ The party band must finish the escrow before 12 noon. If they don't, the escrow
If the party planner does not publish the fulfillment (the party band is a no show) or if the party planner publishes the fulfillment, but no one finishes the escrow; after 12 noon the next day, anyone can [cancel the escrow](cancel-an-expired-escrow.html). Cancelling the escrow returns the held XRP to the party host's account.
[Finish the escrow >](send-a-conditionally-held-escrow.html#6-submit-escrowfinish-transaction)
<span class="use-case-step-num">{{n.next()}}</span>
## Receiver and Sender: [Wait for validation](send-a-conditionally-held-escrow.html#7-wait-for-validation) and [confirm final result](send-a-conditionally-held-escrow.html#8-confirm-final-result)
## Receiver and Sender: Wait for validation and confirm final result
The party band (receiver) waits for validation of the ledger that contains the escrow finish transaction and then confirms that the escrow was finished.
At this time, the party band provides the transaction's `hash` value to the party host (sender). They can use the `hash` value to look up the escrow transaction on the XRP Ledger to ensure that it is been finished correctly.
The party band can check their XRP Ledger account balance to ensure that their balance has increased by 2000 XRP. The party host's balance won't change at this step (unless the escrow was canceled) because the escrow creation already debited the locked-up XRP from their account.
[Wait for validation >](send-a-conditionally-held-escrow.html#7-wait-for-validation)
[confirm final result >](send-a-conditionally-held-escrow.html#8-confirm-final-result)
<!-- USE_CASE_STEPS_END -->
### Related Tasks
<div class='related-tasks-links'>
- [Send a Time-Held Escrow](send-a-time-held-escrow.html)
- [Cancel an Expired Escrow](cancel-an-expired-escrow.html)
- [Look Up Escrows](look-up-escrows.html)
</div>