├── .browserslistrc
├── .eslintrc.js
├── .github
└── workflows
│ ├── ci.yml
│ └── greetings.yml
├── .gitignore
├── CHANGELOG.md
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── Dockerfile
├── LICENSE
├── README.md
├── babel.config.js
├── cfg
├── app.json
├── defaultConfig.json
├── example
│ └── rippledExample.cfg
├── schema.json
└── system
│ └── nginx.conf
├── commits.config.js
├── cypress.json
├── cypress
├── integration
│ ├── footer_spec.js
│ ├── header_spec.js
│ ├── step1_spec.js
│ ├── step2_spec.js
│ ├── step3_spec.js
│ ├── step4_spec.js
│ └── step5_spec.js
├── plugins
│ └── index.js
└── support
│ ├── commands.js
│ └── index.js
├── global.d.ts
├── jest.config.js
├── lib
├── deploy.sh
└── version.js
├── package.json
├── postcss.config.js
├── public
├── README.md
├── android-chrome-192x192.png
├── android-chrome-512x512.png
├── apple-touch-icon.png
├── browserconfig.xml
├── content
│ ├── html
│ │ ├── advisoryDeletion_en.html
│ │ ├── advisoryDeletion_es.html
│ │ ├── allPurposeServer_en.html
│ │ ├── allPurposeServer_es.html
│ │ ├── apiServer_en.html
│ │ ├── apiServer_es.html
│ │ ├── automaticPurge_en.html
│ │ ├── automaticPurge_es.html
│ │ ├── bookKeepingDatabases_en.html
│ │ ├── bookKeepingDatabases_es.html
│ │ ├── connections_en.html
│ │ ├── connections_es.html
│ │ ├── databaseTypes_en.html
│ │ ├── databaseTypes_es.html
│ │ ├── developmentServer_en.html
│ │ ├── developmentServer_es.html
│ │ ├── devnet_en.html
│ │ ├── devnet_es.html
│ │ ├── fullHistoryServer_en.html
│ │ ├── fullHistoryServer_es.html
│ │ ├── hubServer_en.html
│ │ ├── hubServer_es.html
│ │ ├── ledgerHistoryFull_en.html
│ │ ├── ledgerHistoryFull_es.html
│ │ ├── ledgerHistoryNone_en.html
│ │ ├── ledgerHistoryNone_es.html
│ │ ├── ledgerHistorySome_en.html
│ │ ├── ledgerHistorySome_es.html
│ │ ├── ledgerHistory_en.html
│ │ ├── ledgerHistory_es.html
│ │ ├── log_en.html
│ │ ├── log_es.html
│ │ ├── mainnet_en.html
│ │ ├── mainnet_es.html
│ │ ├── manualPurge_en.html
│ │ ├── manualPurge_es.html
│ │ ├── networkAndValidators_en.html
│ │ ├── networkAndValidators_es.html
│ │ ├── network_en.html
│ │ ├── network_es.html
│ │ ├── nodeSizes_en.html
│ │ ├── nodeSizes_es.html
│ │ ├── nudb_en.html
│ │ ├── nudb_es.html
│ │ ├── peerPrivate_en.html
│ │ ├── peerPrivate_es.html
│ │ ├── purge_en.html
│ │ ├── purge_es.html
│ │ ├── rocksdb_en.html
│ │ ├── rocksdb_es.html
│ │ ├── serverProtocolsGrpc_en.html
│ │ ├── serverProtocolsGrpc_es.html
│ │ ├── serverProtocolsPeer_en.html
│ │ ├── serverProtocolsPeer_es.html
│ │ ├── serverProtocolsRpc_en.html
│ │ ├── serverProtocolsRpc_es.html
│ │ ├── serverProtocolsWsAdmin_en.html
│ │ ├── serverProtocolsWsAdmin_es.html
│ │ ├── serverProtocolsWsPublic_en.html
│ │ ├── serverProtocolsWsPublic_es.html
│ │ ├── serverProtocols_en.html
│ │ ├── serverProtocols_es.html
│ │ ├── serverTypes_en.html
│ │ ├── serverTypes_es.html
│ │ ├── signingSupport_en.html
│ │ ├── signingSupport_es.html
│ │ ├── ssd_en.html
│ │ ├── ssd_es.html
│ │ ├── sslClient_en.html
│ │ ├── sslClient_es.html
│ │ ├── sslServer_en.html
│ │ ├── sslServer_es.html
│ │ ├── standalone_en.html
│ │ ├── standalone_es.html
│ │ ├── step1_en.html
│ │ ├── step1_es.html
│ │ ├── step2_en.html
│ │ ├── step2_es.html
│ │ ├── step3_en.html
│ │ ├── step3_es.html
│ │ ├── step4_en.html
│ │ ├── step4_es.html
│ │ ├── step5_en.html
│ │ ├── step5_es.html
│ │ ├── step6_en.html
│ │ ├── step6_es.html
│ │ ├── testnet_en.html
│ │ ├── testnet_es.html
│ │ ├── validatorServer_en.html
│ │ └── validatorServer_es.html
│ ├── ledgerHistorySome_en.html
│ ├── serverTypes_en.html
│ ├── signingSupport_en.html
│ ├── standalone_en.html
│ └── txt
│ │ ├── install_en.txt
│ │ ├── install_es.txt
│ │ ├── validator_en.txt
│ │ └── validator_es.txt
├── favicon-16x16.png
├── favicon-32x32.png
├── favicon.ico
├── img
│ ├── xrp_symbol_black.svg
│ └── xrp_symbol_white.svg
├── index.html
├── mstile-150x150.png
├── safari-pinned-tab.svg
└── site.webmanifest
├── src
├── .env.ts
├── App.vue
├── assets
│ ├── css
│ │ └── popper.css
│ ├── fonts
│ │ ├── bebasneue.css
│ │ ├── bebasneuebold.ttf
│ │ ├── bebasneuebold.woff
│ │ ├── bebasneuebold.woff2
│ │ ├── bebasneuebook.ttf
│ │ ├── bebasneuebook.woff
│ │ ├── bebasneuebook.woff2
│ │ ├── bebasneuelight.ttf
│ │ ├── bebasneuelight.woff
│ │ ├── bebasneuelight.woff2
│ │ ├── bebasneueregular.ttf
│ │ ├── bebasneueregular.woff
│ │ ├── bebasneueregular.woff2
│ │ ├── bebasneuethin.ttf
│ │ ├── bebasneuethin.woff
│ │ └── bebasneuethin.woff2
│ └── logo.png
├── components
│ ├── custom
│ │ ├── UiAlertIcon.vue
│ │ ├── UiBox.vue
│ │ ├── UiCheckbox.vue
│ │ ├── UiDialog.vue
│ │ ├── UiDropdown.vue
│ │ ├── UiErrorBox.vue
│ │ ├── UiErrorPopup.vue
│ │ ├── UiHelpBox.vue
│ │ ├── UiMultiSelect.vue
│ │ ├── UiRadio.vue
│ │ ├── UiRecommendations.vue
│ │ ├── UiStepSection.vue
│ │ ├── UiSteps.vue
│ │ ├── UiSuccessPopup.vue
│ │ ├── UiValidations.vue
│ │ └── progress-loaders
│ │ │ ├── UiLinearLoading.vue
│ │ │ ├── UiPulseLoading.vue
│ │ │ └── UiSpinnerWave.vue
│ └── layout
│ │ ├── AppContent.vue
│ │ ├── AppFooter.vue
│ │ └── AppHeader.vue
├── config
│ ├── datetime.ts
│ └── index.ts
├── directives
│ ├── debounce.ts
│ ├── index.ts
│ └── numericOnly.ts
├── enums
│ └── index.ts
├── i18n
│ ├── index.ts
│ └── locales
│ │ ├── en.json
│ │ ├── es.json
│ │ └── zh-CN.json
├── layout
│ ├── App.vue
│ ├── Default.vue
│ └── Result.vue
├── main.ts
├── models
│ └── CfgModel.ts
├── output
│ └── RippledCfg.vue
├── pages
│ ├── NotFound.vue
│ ├── Step1.vue
│ ├── Step2.vue
│ ├── Step3.vue
│ ├── Step4.vue
│ ├── Step5.vue
│ └── Step6.vue
├── plugins
│ ├── globalEventBus.ts
│ └── index.ts
├── router
│ ├── index.ts
│ ├── middlewares.ts
│ ├── routes.ts
│ └── util.ts
├── scss
│ ├── _defaults.scss
│ ├── _fonts.scss
│ ├── _global.scss
│ ├── _helpers.scss
│ ├── _medias.scss
│ ├── _mixins.scss
│ ├── _reset.scss
│ ├── _util.scss
│ ├── _variables.scss
│ └── style.scss
├── services
│ ├── __tests__
│ │ ├── fixtures
│ │ │ ├── badJsonSchema.json
│ │ │ ├── nudbServer.json
│ │ │ ├── productionServerWithTinySize.json
│ │ │ ├── validatorBroadcastAddress.json
│ │ │ ├── validatorWithALotOfLedgers.json
│ │ │ └── validatorWithRocksDB.json
│ │ ├── instructions.test.ts
│ │ ├── recommend.test.ts
│ │ ├── rippled.test.ts
│ │ └── validate.test.ts
│ ├── instructions.ts
│ ├── recommend.ts
│ ├── rippled.ts
│ └── validate.ts
├── shims-tsx.d.ts
├── shims-vue.d.ts
├── shims-vuex.d.ts
├── store
│ └── index.ts
├── types
│ ├── Config.ts
│ ├── ConfigSection.ts
│ ├── ProtocolConfig.ts
│ ├── ProtocolProperties.ts
│ ├── SelectOption.ts
│ ├── ServerConfig.ts
│ ├── SettingsConfig.ts
│ ├── SslConfig.ts
│ ├── State.ts
│ └── StorageConfig.ts
└── util
│ ├── formUtils.ts
│ └── navUtils.ts
├── tsconfig.json
├── vue-loader.conf.ts
├── vue.config.js
├── webpack.config.js
└── yarn.lock
/.browserslistrc:
--------------------------------------------------------------------------------
1 | > 1%
2 | last 2 versions
3 | not ie <= 8
4 |
--------------------------------------------------------------------------------
/.eslintrc.js:
--------------------------------------------------------------------------------
1 | // https://eslint.org/docs/user-guide/configuring
2 | module.exports = {
3 | root: true,
4 |
5 | env: {
6 | node: true
7 | },
8 |
9 | rules: {
10 | // allow paren-less arrow functions
11 | 'arrow-parens': 0,
12 | // allow async-await
13 | 'generator-star-spacing': 0,
14 | // allow variables like >> user_id
15 | camelcase: 0,
16 | 'no-trailing-spaces': [
17 | 'error', { skipBlankLines: true }
18 | ],
19 | 'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
20 | 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off'
21 | },
22 |
23 | parserOptions: {
24 | parser: '@typescript-eslint/parser'
25 | },
26 |
27 | extends: [
28 | 'plugin:vue/essential',
29 | '@vue/standard',
30 | '@vue/typescript'
31 | ]
32 | }
33 |
--------------------------------------------------------------------------------
/.github/workflows/ci.yml:
--------------------------------------------------------------------------------
1 | # This is a basic workflow to help you get started with Actions
2 |
3 | name: CI
4 |
5 | # Controls when the action will run.
6 | on:
7 | # Triggers the workflow on push or pull request events but only for the main branch
8 | push:
9 | branches: [ main ]
10 | pull_request:
11 | branches: [ main ]
12 |
13 | # Allows you to run this workflow manually from the Actions tab
14 | workflow_dispatch:
15 |
16 | # A workflow run is made up of one or more jobs that can run sequentially or in parallel
17 | jobs:
18 | # This workflow contains a single job called "build"
19 | build:
20 | # The type of runner that the job will run on
21 | runs-on: ubuntu-latest
22 |
23 | # Steps represent a sequence of tasks that will be executed as part of the job
24 | steps:
25 | # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
26 | - uses: actions/checkout@v2
27 |
28 | - name: Set Node.js 18.x
29 | uses: actions/setup-node@v3
30 | with:
31 | node-version: 18.x
32 |
33 | - name: Run install
34 | uses: borales/actions-yarn@v4
35 | with:
36 | cmd: install
37 |
38 | # Runs e2e test scripts
39 | - name: Run e2e test scripts
40 | run: yarn test:e2e
41 |
42 |
--------------------------------------------------------------------------------
/.github/workflows/greetings.yml:
--------------------------------------------------------------------------------
1 | name: Greetings
2 |
3 | on: [pull_request, issues]
4 |
5 | jobs:
6 | greeting:
7 | runs-on: ubuntu-latest
8 | steps:
9 | - uses: actions/first-interaction@v1
10 | with:
11 | repo-token: ${{ secrets.GITHUB_TOKEN }}
12 | issue-message: 'Thanks for creating your first issue :-)'
13 | pr-message: 'Thanks for creating your first pull request :-)'
14 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | node_modules
3 |
4 | # local env files
5 | .env.local
6 | .env.*.local
7 |
8 | # Cypress
9 | screenshots
10 | videos
11 | out.js
12 | examples/*/cypress/logs
13 | examples/*/cypress/downloads
14 | snapshots.js
15 | .nyc_output
16 | coverage
17 | dist
18 | test-data.json
19 |
20 | # Log files
21 | npm-debug.log*
22 | yarn-debug.log*
23 | yarn-error.log*
24 |
25 | # Editor directories and files
26 | .idea
27 | .vscode
28 | *.suo
29 | *.ntvs*
30 | *.njsproj
31 | *.sln
32 | *.sw*
33 |
34 | # tmp
35 | _tmp/
36 | tmp/
37 | .tmp/
38 | tmp_files/
39 |
40 | # cypress
41 | cypress/videos
42 | cypress/screenshots
43 |
--------------------------------------------------------------------------------
/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | # Changelog
2 |
3 | All notable changes to this project will be documented in this file.
4 |
5 | The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6 | and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7 |
8 | ## [Unreleased]
9 |
10 | - WIP
11 |
--------------------------------------------------------------------------------
/CONTRIBUTING.md:
--------------------------------------------------------------------------------
1 | # Contributing
2 |
3 | Thanks for considering a contribution to [xrpl-node-configurator](https://github.com/XRPLF/xrpl-node-configurator)!
4 |
5 | We're thrilled you're interested and your help is greatly appreciated. Contributing is a great way to learn about the [XRP Ledger](https://xrpl.org). We are happy to review your pull requests. To make the process as smooth as possible, please read this document and follow the stated guidelines.
6 |
7 | ## About This Project
8 |
9 | This project is built with [Vue.Js](https://vuejs.org/) and [Tailwindcss](https://tailwindcss.com), so you will need some knowledge on those frameworks.
10 |
11 | ## Requirements for a Successful Pull Request
12 |
13 | Before being considered for review or merging, each pull request must:
14 |
15 | - Follow [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/)
16 | - Pass continuous e2e and unit tests.
17 | - Update documentation for any new features.
18 | - Be [marked as drafts](https://github.blog/2019-02-14-introducing-draft-pull-requests/) until they are ready for review.
19 | - Adhere to the [code of conduct](CODE_OF_CONDUCT.md) for this repository.
20 |
21 | ## Building
22 |
23 | The first thing you will have to do is to install all dependencies:
24 |
25 | ``` bash
26 | # clone repo
27 | git clone https://github.com/XRPLF/xrpl-node-configurator.git
28 |
29 | # install dependencies
30 | yarn install
31 | ```
32 |
33 | If you want to test your changes locally you can execute:
34 |
35 | ``` bash
36 | # serve with hot reload at localhost:8080
37 | yarn dev
38 | ```
39 |
40 | If you want to generate a build in the `dist` folder, just execute:
41 |
42 | ``` bash
43 | # build for production with minification
44 | yarn build
45 | ```
46 |
47 | Tests:
48 |
49 | ``` bash
50 | # Unit tests
51 | yarn test:unit
52 |
53 | # End to end tests
54 | yarn test:e2e
55 |
56 | # Execute all (unit and e2e) tests
57 | yarn test:all
58 | ```
59 |
--------------------------------------------------------------------------------
/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM node:latest as build-stage
2 |
3 | WORKDIR /app
4 |
5 | COPY package*.json ./
6 |
7 | RUN yarn install
8 |
9 | COPY ./ .
10 |
11 | RUN yarn build
12 |
13 | FROM nginx as production-stage
14 |
15 | RUN mkdir /app
16 |
17 | COPY --from=build-stage /app/dist /app
18 |
19 | COPY ./cfg/system/nginx.conf /etc/nginx/nginx.conf
20 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2021 XRP Ledger Foundation (Official)
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # XRPL Node Configurator
2 |
3 | Configuration tool that will produce a zip file with the following:
4 |
5 | - `config/rippled.cfg` file ready to be used with your `rippled` daemon.
6 | - `config/validators.txt` with information about Validators to be used.
7 | - `instructions.txt` with instructions on how to use the contents of the zip file.
8 | - `cfg.json` with the JSON configuration.
9 |
10 | ## Build Setup
11 |
12 | ``` bash
13 | # clone repo
14 | git clone https://github.com/XRPLF/xrpl-node-configurator.git
15 |
16 | # install dependencies
17 | yarn install
18 |
19 | # serve with hot reload at localhost:8080
20 | yarn dev
21 |
22 | # build for production with minification
23 | yarn build
24 | ```
25 |
26 | ## Tests
27 |
28 | ### Unit Tests
29 |
30 | ```bash
31 | yarn test:unit
32 | ```
33 |
34 | ### e2e Tests
35 |
36 | ```bash
37 | yarn test:e2e
38 | ```
39 |
40 | ### All Tests
41 |
42 | ```bash
43 | yarn test:all
44 | ```
45 |
46 | ## Deploying to Github Pages
47 |
48 | After building, this command will push the files inside the `dist` folder to Github so the content is displayed in Github Pages:
49 |
50 | ```bash
51 | yarn deploy:ghp
52 | ```
53 |
54 | ## Github Pages site
55 |
56 | [xrplf.github.io/xrpl-node-configurator](https://xrplf.github.io/xrpl-node-configurator)
57 |
58 |
--------------------------------------------------------------------------------
/babel.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | presets: [
3 | '@vue/cli-plugin-babel/preset'
4 | ]
5 | }
6 |
--------------------------------------------------------------------------------
/cfg/app.json:
--------------------------------------------------------------------------------
1 | {
2 | "support": {
3 | "min": "1.7.0",
4 | "max": "1.7.0"
5 | },
6 | "validatorKeysList": {
7 | "vl.devnet.rippletest.net": "EDDF2F53DFEC79358F7BE76BC884AC31048CFF6E2A00C628EAE06DB7750A247B12",
8 | "vl.altnet.rippletest.net": "ED264807102805220DA0F312E71FC2C69E1552C9C5790F6C25E3729DEB573D5860",
9 | "vl.ripple.com": "ED2677ABFFD1B33AC6FBC3062B71F1E8397C1505E1C42C64D11AD1B28FF73F4734",
10 | "vl.coil.com": "ED307A760EE34F2D0CAA103377B1969117C38B8AA0AA1E2A24DAC1F32FC97087ED",
11 | "vl.xrplf.org": "ED45D1840EE724BE327ABE9146503D5848EFD5F38B6D5FEDE71E80ACCE5E6E738B"
12 | },
13 | "sites": {
14 | "devnet": [
15 | "vl.devnet.rippletest.net"
16 | ],
17 | "testnet": [
18 | "vl.altnet.rippletest.net"
19 | ],
20 | "mainnet": [
21 | "vl.ripple.com",
22 | "vl.coil.com",
23 | "vl.xrplf.org"
24 | ]
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/cfg/defaultConfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "version": "0.0.9",
3 | "server": {
4 | "runAs": "allPurposeServer",
5 | "protocols": {
6 | "peer": {
7 | "enabled": true,
8 | "secure": false,
9 | "ip": "0.0.0.0",
10 | "port": 2459
11 | },
12 | "wsPublic": {
13 | "enabled": false,
14 | "secure": false,
15 | "admin": "127.0.0.1",
16 | "ip": "0.0.0.0",
17 | "port": 6005
18 | },
19 | "wsAdmin": {
20 | "enabled": false,
21 | "secure": false,
22 | "admin": "127.0.0.1",
23 | "ip": "0.0.0.0",
24 | "port": 6006
25 | },
26 | "jsonRpc": {
27 | "enabled": false,
28 | "secure": false,
29 | "admin": "127.0.0.1",
30 | "ip": "0.0.0.0",
31 | "port": 5005
32 | },
33 | "grpc": {
34 | "enabled": true,
35 | "ip": "0.0.0.0",
36 | "port": 50051
37 | }
38 | }
39 | },
40 | "protocol": {
41 | "nodeSize": "tiny",
42 | "history": {
43 | "type": "some",
44 | "ledgers": 256
45 | },
46 | "validators": {
47 | "type": "knownsites",
48 | "list": ["vl.ripple.com"]
49 | },
50 | "network": "mainnet"
51 | },
52 | "storage": {
53 | "ssd": false,
54 | "purge": {
55 | "online": {
56 | "enabled": true,
57 | "ledgers": 512
58 | },
59 | "none": false,
60 | "advisory": true
61 | },
62 | "database": {
63 | "type": "nudb",
64 | "path": "/var/lib/rippled/db",
65 | "bookKeepingPath": "/var/lib/rippled/db"
66 | }
67 | },
68 | "ssl": {
69 | "client": {
70 | "verify": false,
71 | "filePath": null,
72 | "fileOrDirPath": null
73 | },
74 | "server": {
75 | "enabled": false,
76 | "certPath": null,
77 | "keyPath": null
78 | }
79 | },
80 | "settings": {
81 | "peer": {
82 | "private": false
83 | },
84 | "connections": {
85 | "incoming": 500,
86 | "outgoing": 500
87 | },
88 | "signing": {
89 | "support": false
90 | },
91 | "log": {
92 | "level": "warning",
93 | "logFilePath": "/var/log/rippled/debug.log"
94 | }
95 | }
96 | }
97 |
--------------------------------------------------------------------------------
/cfg/system/nginx.conf:
--------------------------------------------------------------------------------
1 | user nginx;
2 | worker_processes 1;
3 | error_log /var/log/nginx/error.log warn;
4 | pid /var/run/nginx.pid;
5 | events {
6 | worker_connections 1024;
7 | }
8 | http {
9 | include /etc/nginx/mime.types;
10 | default_type application/octet-stream;
11 | log_format main '$remote_addr - $remote_user [$time_local] "$request" '
12 | '$status $body_bytes_sent "$http_referer" '
13 | '"$http_user_agent" "$http_x_forwarded_for"';
14 | access_log /var/log/nginx/access.log main;
15 | sendfile on;
16 | keepalive_timeout 65;
17 | server {
18 | listen 3001;
19 | server_name localhost;
20 | location / {
21 | root /app;
22 | index index.html;
23 | try_files $uri $uri/ /index.html;
24 | }
25 | error_page 500 502 503 504 /50x.html;
26 | location = /50x.html {
27 | root /usr/share/nginx/html;
28 | }
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/commits.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | options: {
3 | preset: {
4 | name: 'conventionalcommits',
5 | types: [
6 | {
7 | type: 'feat',
8 | section: 'Features'
9 | },
10 | {
11 | type: 'fix',
12 | section: 'Bug Fixes'
13 | },
14 | {
15 | type: 'perf',
16 | section: 'Performance Improvements'
17 | },
18 | {
19 | type: 'revert',
20 | section: 'Reverts'
21 | },
22 | {
23 | type: 'docs',
24 | section: 'Documentation'
25 | },
26 | {
27 | type: 'style',
28 | section: 'Styles'
29 | },
30 | {
31 | type: 'chore',
32 | section: 'Miscellaneous Chores'
33 | },
34 | {
35 | type: 'refactor',
36 | section: 'Code Refactoring'
37 | },
38 | {
39 | type: 'test',
40 | section: 'Tests'
41 | },
42 | {
43 | type: 'build',
44 | section: 'Build System'
45 | },
46 | {
47 | type: 'ci',
48 | section: 'Continuous Integration'
49 | }
50 | ]
51 | }
52 | }
53 | }
54 |
--------------------------------------------------------------------------------
/cypress.json:
--------------------------------------------------------------------------------
1 | {
2 | "env": {
3 | "host": "http://localhost:3001"
4 | }
5 | }
6 |
--------------------------------------------------------------------------------
/cypress/integration/footer_spec.js:
--------------------------------------------------------------------------------
1 | describe('Footer', () => {
2 | const host = Cypress.env('host')
3 | it('It should change the JSON config when signing support is checked', () => {
4 | cy.visit(`${host}/#/settings`)
5 | cy.get('#signingSupport').check()
6 | cy.get('#exploreBtn').click()
7 | cy.get('#jsonCfg_textarea').invoke('val').then(value => {
8 | const json = JSON.parse(value)
9 | return json.settings.signing.support === true
10 | })
11 | })
12 | it('It should change the JSON config when signing support is unchecked', () => {
13 | cy.visit(`${host}/#/settings`)
14 | cy.get('#signingSupport').check()
15 | cy.get('#exploreBtn').click()
16 | cy.get('#jsonCfg_textarea').invoke('val').then(value => {
17 | const json = JSON.parse(value)
18 | return json.settings.signing.support === false
19 | })
20 | })
21 | it('It should change the JSON config when broadcast address is checked', () => {
22 | cy.visit(`${host}/#/settings`)
23 | cy.get('#peerPrivate').check()
24 | cy.get('#exploreBtn').click()
25 | cy.get('#jsonCfg_textarea').invoke('val').then(value => {
26 | const json = JSON.parse(value)
27 | return json.settings.peer.private === true
28 | })
29 | })
30 | it('It should change the JSON config when broadcast address is unchecked', () => {
31 | cy.visit(`${host}/#/settings`)
32 | cy.get('#peerPrivate').check()
33 | cy.get('#exploreBtn').click()
34 | cy.get('#jsonCfg_textarea').invoke('val').then(value => {
35 | const json = JSON.parse(value)
36 | return json.settings.peer.private === false
37 | })
38 | })
39 | })
40 |
--------------------------------------------------------------------------------
/cypress/integration/header_spec.js:
--------------------------------------------------------------------------------
1 |
2 | const version = require('../../lib/version')
3 |
4 | describe('Header', () => {
5 | const host = Cypress.env('host')
6 | it('Version should match with lib/version.js', () => {
7 | cy.visit(host)
8 | cy.get('#appVersion').invoke('text').then(value => {
9 | const v = value.replace('\n', '').trim()
10 | return v === version
11 | })
12 | })
13 | })
14 |
--------------------------------------------------------------------------------
/cypress/integration/step2_spec.js:
--------------------------------------------------------------------------------
1 | describe('Step 2', () => {
2 | const host = Cypress.env('host')
3 | it('It should load the 4 node sizes', () => {
4 | cy.visit(`${host}/#/protocol`)
5 | cy.get('#nodeSize option').should('have.length', 4)
6 | })
7 | it('It should display a recommendation if ServerType=Validator & Size=small', () => {
8 | cy.visit(`${host}`)
9 | cy.get('#serverType').select('validatorServer')
10 | cy.visit(`${host}/#/protocol`)
11 | cy.get('#nodeSize').select('small')
12 | cy.get('#recommendations_rec0003').should('exist')
13 | })
14 | it('It should display a recommendation if ServerType=Validator & Size=tiny', () => {
15 | cy.visit(`${host}`)
16 | cy.get('#serverType').select('validatorServer')
17 | cy.visit(`${host}/#/protocol`)
18 | cy.get('#nodeSize').select('tiny')
19 | cy.get('#recommendations_rec0003').should('exist')
20 | })
21 | it('It should display a recommendation if ServerType=Validator & Size=medium', () => {
22 | cy.visit(`${host}`)
23 | cy.get('#serverType').select('validatorServer')
24 | cy.visit(`${host}/#/protocol`)
25 | cy.get('#nodeSize').select('medium')
26 | cy.get('#recommendations_rec0003').should('exist')
27 | })
28 | it('It should not display a recommendation if ServerType!=Validator & Size!=huge', () => {
29 | cy.visit(`${host}`)
30 | cy.get('#serverType').select('apiServer')
31 | cy.visit(`${host}/#/protocol`)
32 | cy.get('#nodeSize').select('huge')
33 | cy.get('#recommendations_rec0003').should('not.exist')
34 | })
35 | it('It should not display a recommendation if ServerType=Validator & Size=huge', () => {
36 | cy.visit(`${host}`)
37 | cy.get('#serverType').select('validatorServer')
38 | cy.visit(`${host}/#/protocol`)
39 | cy.get('#nodeSize').select('huge')
40 | cy.get('#recommendations_rec0003').should('not.exist')
41 | })
42 | it('It should load the devnet site list if Network=DEV', () => {
43 | cy.visit(`${host}/#/protocol`)
44 | cy.get('#network').select('devnet')
45 | cy.get('#validatorSitesOptions option').should('have.length', 1)
46 | })
47 | it('It should load the devnet site list if Network=TEST', () => {
48 | cy.visit(`${host}/#/protocol`)
49 | cy.get('#network').select('testnet')
50 | cy.get('#validatorSitesOptions option').should('have.length', 1)
51 | })
52 | it('It should load the mainnet site list if Network=MAIN', () => {
53 | cy.visit(`${host}/#/protocol`)
54 | cy.get('#network').select('mainnet')
55 | cy.get('#validatorSitesOptions option').should('have.length', 3)
56 | })
57 | })
58 |
--------------------------------------------------------------------------------
/cypress/integration/step3_spec.js:
--------------------------------------------------------------------------------
1 | describe('Step 3', () => {
2 | const host = Cypress.env('host')
3 | it('It should load the 2 database types', () => {
4 | cy.visit(`${host}/#/storage`)
5 | cy.get('#databaseType option').should('have.length', 2)
6 | })
7 | it('It should display a recommendation if ServerType=Validator & Database!=RocksDB', () => {
8 | cy.visit(`${host}`)
9 | cy.get('#serverType').select('validatorServer')
10 | cy.visit(`${host}/#/storage`)
11 | cy.get('#databaseType').select('nudb')
12 | cy.get('#recommendations_rec0001').should('exist')
13 | })
14 | it('It should not display a recommendation if ServerType=Validator & Database=RocksDB', () => {
15 | cy.visit(`${host}`)
16 | cy.get('#serverType').select('validatorServer')
17 | cy.visit(`${host}/#/storage`)
18 | cy.get('#databaseType').select('rocksdb')
19 | cy.get('#recommendations_rec0001').should('not.exist')
20 | })
21 | it('It should not display a recommendation if ServerType!=Validator & Database=NuDB', () => {
22 | cy.visit(`${host}`)
23 | cy.get('#serverType').select('apiServer')
24 | cy.visit(`${host}/#/storage`)
25 | cy.get('#databaseType').select('nudb')
26 | cy.get('#recommendations_rec0001').should('not.exist')
27 | })
28 | it('It should display a recommendation if Database=NuDB and SSD is not checked', () => {
29 | cy.visit(`${host}/#/storage`)
30 | cy.get('#databaseType').select('nudb')
31 | cy.get('#recommendations_rec0005').should('exist')
32 | })
33 | it('It should not display a recommendation if Database=RocksDB and SSD is not checked', () => {
34 | cy.visit(`${host}/#/storage`)
35 | cy.get('#databaseType').select('rocksdb')
36 | cy.get('#recommendations_rec0005').should('not.exist')
37 | })
38 | })
39 |
--------------------------------------------------------------------------------
/cypress/integration/step4_spec.js:
--------------------------------------------------------------------------------
1 | describe('Step 4', () => {
2 | const host = Cypress.env('host')
3 | it('It should display file and dir inputs if client verifications are checked', () => {
4 | cy.visit(`${host}/#/ssl`)
5 | cy.get('#sslClientVerify').check()
6 | cy.get('#sslVerifyDir').should('exist')
7 | cy.get('#sslVerifyFile').should('exist')
8 | })
9 | it('It should not display file and dir inputs if client verifications are not checked', () => {
10 | cy.visit(`${host}/#/ssl`)
11 | cy.get('#sslClientVerify').uncheck()
12 | cy.get('#sslVerifyDir').should('not.exist')
13 | cy.get('#sslVerifyFile').should('not.exist')
14 | })
15 | it('It should display certificate and key inputs if server tls is checked', () => {
16 | cy.visit(`${host}/#/ssl`)
17 | cy.get('#sslServer').check()
18 | cy.get('#sslServerCert').should('exist')
19 | cy.get('#sslServerKey').should('exist')
20 | })
21 | it('It should not display certificate and key inputs if server tls is not checked', () => {
22 | cy.visit(`${host}/#/ssl`)
23 | cy.get('#sslServer').uncheck()
24 | cy.get('#sslServerCert').should('not.exist')
25 | cy.get('#sslServerKey').should('not.exist')
26 | })
27 | })
28 |
--------------------------------------------------------------------------------
/cypress/integration/step5_spec.js:
--------------------------------------------------------------------------------
1 | describe('Step 5', () => {
2 | const host = Cypress.env('host')
3 | it('It should load the 5 log level types', () => {
4 | cy.visit(`${host}/#/settings`)
5 | cy.get('#logLevel option').should('have.length', 5)
6 | })
7 | it('It should display a recommendation if ServerType=Validator & Broadcast Address=true', () => {
8 | cy.visit(`${host}`)
9 | cy.get('#serverType').select('validatorServer')
10 | cy.visit(`${host}/#/settings`)
11 | cy.get('#peerPrivate').check()
12 | cy.get('#recommendations_rec0004').should('exist')
13 | })
14 | it('It should not display a recommendation if ServerType!=Validator & Broadcast Address=true', () => {
15 | cy.visit(`${host}`)
16 | cy.get('#serverType').select('apiServer')
17 | cy.visit(`${host}/#/settings`)
18 | cy.get('#peerPrivate').check()
19 | cy.get('#recommendations_rec0004').should('not.exist')
20 | })
21 | })
22 |
--------------------------------------------------------------------------------
/cypress/plugins/index.js:
--------------------------------------------------------------------------------
1 | ///
2 | // ***********************************************************
3 | // This example plugins/index.js can be used to load plugins
4 | //
5 | // You can change the location of this file or turn off loading
6 | // the plugins file with the 'pluginsFile' configuration option.
7 | //
8 | // You can read more here:
9 | // https://on.cypress.io/plugins-guide
10 | // ***********************************************************
11 |
12 | // This function is called when a project is opened or re-opened (e.g. due to
13 | // the project's config changing)
14 |
15 | /**
16 | * @type {Cypress.PluginConfig}
17 | */
18 | module.exports = (on, config) => {
19 | // `on` is used to hook into various events Cypress emits
20 | // `config` is the resolved Cypress config
21 | }
22 |
--------------------------------------------------------------------------------
/cypress/support/commands.js:
--------------------------------------------------------------------------------
1 | // ***********************************************
2 | // This example commands.js shows you how to
3 | // create various custom commands and overwrite
4 | // existing commands.
5 | //
6 | // For more comprehensive examples of custom
7 | // commands please read more here:
8 | // https://on.cypress.io/custom-commands
9 | // ***********************************************
10 | //
11 | //
12 | // -- This is a parent command --
13 | // Cypress.Commands.add("login", (email, password) => { ... })
14 | //
15 | //
16 | // -- This is a child command --
17 | // Cypress.Commands.add("drag", { prevSubject: 'element'}, (subject, options) => { ... })
18 | //
19 | //
20 | // -- This is a dual command --
21 | // Cypress.Commands.add("dismiss", { prevSubject: 'optional'}, (subject, options) => { ... })
22 | //
23 | //
24 | // -- This will overwrite an existing command --
25 | // Cypress.Commands.overwrite("visit", (originalFn, url, options) => { ... })
26 |
--------------------------------------------------------------------------------
/cypress/support/index.js:
--------------------------------------------------------------------------------
1 | // ***********************************************************
2 | // This example support/index.js is processed and
3 | // loaded automatically before your test files.
4 | //
5 | // This is a great place to put global configuration and
6 | // behavior that modifies Cypress.
7 | //
8 | // You can change the location of this file or turn off
9 | // automatically serving support files with the
10 | // 'supportFile' configuration option.
11 | //
12 | // You can read more here:
13 | // https://on.cypress.io/configuration
14 | // ***********************************************************
15 |
16 | // Import commands.js using ES2015 syntax:
17 | import './commands'
18 |
19 | // Alternatively you can use CommonJS syntax:
20 | // require('./commands')
21 |
--------------------------------------------------------------------------------
/global.d.ts:
--------------------------------------------------------------------------------
1 | declare module 'raw-loader!*'
2 |
--------------------------------------------------------------------------------
/jest.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | preset: 'ts-jest',
3 | testEnvironment: 'node',
4 | moduleFileExtensions: ['ts', 'json', 'vue', 'js'],
5 | transform: {
6 | '^.+\\.vue$': 'vue-jest',
7 | '^.+\\.(js|jsx)?$': 'babel-jest'
8 | },
9 | moduleNameMapper: {
10 | '^@/(.*)$': '/src/$1'
11 | },
12 | transformIgnorePatterns: ['/node_modules/']
13 | }
14 |
--------------------------------------------------------------------------------
/lib/version.js:
--------------------------------------------------------------------------------
1 | // generated by genversion
2 | module.exports = '0.0.14'
3 |
--------------------------------------------------------------------------------
/postcss.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | plugins: {
3 | autoprefixer: {}
4 | }
5 | }
6 |
--------------------------------------------------------------------------------
/public/README.md:
--------------------------------------------------------------------------------
1 | # XRPL Node Configurator UI
2 |
3 | Configuration tool that will produce the required config files ready to be used with your server.
4 |
5 | ## Github pages version
6 |
7 | [xrplf.github.io/xrpl-node-configurator](http://xrplf.github.io/xrpl-node-configurator)
8 |
--------------------------------------------------------------------------------
/public/android-chrome-192x192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XRPLF/xrpl-node-configurator/b482e01b90788c9906db205a28d30f0197d97402/public/android-chrome-192x192.png
--------------------------------------------------------------------------------
/public/android-chrome-512x512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XRPLF/xrpl-node-configurator/b482e01b90788c9906db205a28d30f0197d97402/public/android-chrome-512x512.png
--------------------------------------------------------------------------------
/public/apple-touch-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XRPLF/xrpl-node-configurator/b482e01b90788c9906db205a28d30f0197d97402/public/apple-touch-icon.png
--------------------------------------------------------------------------------
/public/browserconfig.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | #2b5797
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/public/content/html/advisoryDeletion_en.html:
--------------------------------------------------------------------------------
1 |
Advisory Deletion
2 |
3 |
4 | If the config file does not specify an online_delete interval, online deletion does not occur. If config file enables the advisory_delete setting, online deletion only happens when an administrator triggers it using the can_delete method.
5 |
6 |
7 | You can use advisory deletion with a scheduled job to trigger automatic deletion based on clock time instead of the number of ledger versions closed. If your server is heavily used, the extra load from online deletion can cause your server to fall behind and temporarily de-sync from the consensus network. If this is the case, you can use advisory deletion and schedule online deletion to happen only during off-peak times.
8 |
9 |
10 | You can use advisory deletion for other reasons. For example, you may want to manually confirm that transaction data is backed up to a separate server before deleting it. Alternatively, you may want to manually confirm that a separate task has finished processing transaction data before you delete that data.
11 |
4 | If the config file does not specify an online_delete interval, online deletion does not occur. If config file enables the advisory_delete setting, online deletion only happens when an administrator triggers it using the can_delete method.
5 |
6 |
7 | You can use advisory deletion with a scheduled job to trigger automatic deletion based on clock time instead of the number of ledger versions closed. If your server is heavily used, the extra load from online deletion can cause your server to fall behind and temporarily de-sync from the consensus network. If this is the case, you can use advisory deletion and schedule online deletion to happen only during off-peak times.
8 |
9 |
10 | You can use advisory deletion for other reasons. For example, you may want to manually confirm that transaction data is backed up to a separate server before deleting it. Alternatively, you may want to manually confirm that a separate task has finished processing transaction data before you delete that data.
11 |
You’re using the XRPL, but you’re a small enough entity that you don’t want to maintain a whole farm of servers for all the things you do, so you just have one high-quality server that does a little bit of everything you need. This machine acts as a validator, provides admin APIs to authorized users to send and monitor for transactions as they arrive, keeps a moderate amount of ledger history to facilitate day-to-day use, and maybe even signs transactions that you send.
Quieres utilizar el XRPL pero eres una entidad pequeña y no
9 | quieres mantener una granja entera de servidores
10 | sino mantener un solo servidor de alta calidad que hace todo lo que necesitas.
11 | Este servidor actúa como validador, provee acceso de administrador a las API's
12 | a usuarios autorizados, guarda una cantidad moderada de libros contables para
13 | el uso normal del día a día e incluso puede firmar transacciones.
An API Server runs a public API, it is not a validator.
4 |
5 |
6 |
7 |
8 |
9 |
Use this
10 |
You use the XRP Ledger APIs extensively for your work, so you have one or even multiple machines that are dedicated to this purpose. Maybe you’re tracking analytics, maybe you send transactions at high volume, maybe you’re providing a public server as a means of increasing your social capital. If you’re a medium-sized business, you might run one of these as a hot backup to your all-purpose server so that critical business functions can continue through a hardware failure or a partial outage. This machine stores a moderate to high amount of history, but has little to no unique persistent settings, so that additional exact clones can be spun up and down on short notice or even automatically; it does not run as a validator because each validator must be unique and these servers are meant to be numerous and interchangeable. It may or may not serve a public API to the open internet. If you run several servers, they may be clustered with one another.
Un servidor de API expone una API pública, no es un validador.
4 |
5 |
6 |
7 |
8 |
9 |
Escoge este modo si...
10 |
Utilizas las APIs del XRPL de manera intensiva en tu aplicación,
11 | de manera que puedes tener uno o varios servidores dedicados a este efecto.
12 | Puede que estes recogiendo estadísticas o enviando grandes volumenes de transacciones,
13 | O incluso puede que quieras exponer estas APIs para incrementar tu capital social.
14 | Si eres un negocio de tamaño medio puede que quieras correr uno de estos servidores
15 | como un respaldo de tu servidor Multifunción para que tus funciones críticas de negocio
16 | puedan continuar ante eventos de fallos de hardware.
17 | Este tipo de servidor almacena una cantidad media/alta de historial pero no persiste una
18 | gran cantidad de datos, de manera que es posible levantar clones de manera fácil o automática.
19 |
4 | The online deletion feature lets the rippled server delete the server's local copy of old ledger versions to keep disk usage from rapidly growing over time. The default config file sets online deletion to run automatically, but online deletion can also be configured to run only when prompted. New in: rippled 0.27.0
5 |
6 |
7 | The server always keeps the complete current state of the ledger, with all the balances and settings it contains. The deleted data includes older transactions and versions of the ledger state that are older than the stored history.
8 |
9 |
10 |
11 |
12 |
13 |
Tip
14 |
Even with online deletion, the amount of disk space required to store the same time span's worth of ledger data increases over time, because the size of individual ledger versions tends to grow over time. This growth is very slow in comparison to the accumulation of data that occurs without deleting old ledgers. For more information on disk space needs, see Capacity Planning.
4 | The online deletion feature lets the rippled server delete the server's local copy of old ledger versions to keep disk usage from rapidly growing over time. The default config file sets online deletion to run automatically, but online deletion can also be configured to run only when prompted. New in: rippled 0.27.0
5 |
6 |
7 | The server always keeps the complete current state of the ledger, with all the balances and settings it contains. The deleted data includes older transactions and versions of the ledger state that are older than the stored history.
8 |
9 |
10 |
11 |
12 |
13 |
Tip
14 |
Even with online deletion, the amount of disk space required to store the same time span's worth of ledger data increases over time, because the size of individual ledger versions tends to grow over time. This growth is very slow in comparison to the accumulation of data that occurs without deleting old ledgers. For more information on disk space needs, see Capacity Planning.
rippled creates 4 SQLite databases to hold bookkeeping information
4 | about transactions, local credentials, and various other things.
5 |
6 |
It also creates the NodeDB, which holds all the objects that
7 | make up the current and historical ledgers.
8 |
9 |
10 | The size of the NodeDB grows in proportion to the amount of new data and the
11 | amount of historical data (a configurable setting) so the performance of the
12 | underlying storage media where the NodeDB is placed can significantly affect
13 | the performance of the server.
rippled creates 4 SQLite databases to hold bookkeeping information
4 | about transactions, local credentials, and various other things.
5 |
6 |
It also creates the NodeDB, which holds all the objects that
7 | make up the current and historical ledgers.
8 |
9 |
10 | The size of the NodeDB grows in proportion to the amount of new data and the
11 | amount of historical data (a configurable setting) so the performance of the
12 | underlying storage media where the NodeDB is placed can significantly affect
13 | the performance of the server.
You’re experimenting with XRP Ledger software, either developing rippled itself or some kind of integration or app on top of it. You don’t need your server to have production-quality stability, and you are likely to start it up or shut it down frequently. Having some history is nice so that you can look up transactions you sent or received a little while ago, but you don’t need to keep a large amount of history and it’s not that bad if you wipe it and start from scratch. You might hop around between different network chains (e.g. Devnet, Testnet, etc.) or run experimental code. You need an admin API and you might experiment with any other features of the code but you likely don’t have a cluster. It’s likely you may want to run with a higher level of logging than any other use case.
9 | Estás experimentando con el XRP Ledger, desarrollando o integrando algún tipo de aplicación
10 | que lo utiliza.
11 | No necesitas tener una calidad y estabilidad como para un sistema productivo y es posible
12 | que necesites reiniciarlo cada poco tiempo.
13 |
14 | Necesitarás almacenar un poco de historia para poder consultar transacciones pero no necesitas
15 | tampoco tener una gran cantidad de ella.
16 |
17 | También puede que cambies de red a menudo (Devnet, Testnet, etc...) o tengas que probar funcionalidades experimentales.
18 | Querrás tener acceso al API admin y es probable que necesites unos niveles de log mayores.
A preview of coming attractions, where unstable changes to the core XRP Ledger software may be tested out. Developers can use this altnet to interact with and learn about planned new XRP Ledger features and amendments that are not yet enabled on the Mainnet.
4 |
Testnet and Devnet each have their own separate supply of test XRP, which Ripple gives away for free to parties interested in experimenting with the XRP Ledger and developing applications and integrations. Test XRP does not have real-world value and is lost when the network is reset.
A preview of coming attractions, where unstable changes to the core XRP Ledger software may be tested out. Developers can use this altnet to interact with and learn about planned new XRP Ledger features and amendments that are not yet enabled on the Mainnet.
4 |
Testnet and Devnet each have their own separate supply of test XRP, which Ripple gives away for free to parties interested in experimenting with the XRP Ledger and developing applications and integrations. Test XRP does not have real-world value and is lost when the network is reset.
This server has special hardware specs that make it capable of storing the entire history of the XRP Ledger. That means it’s not cheap and replacements cannot be easily brought online because full history is too large to quickly acquire/copy into a new instance.
4 |
Este servidor tiene requisitos de hardware speciales ya que tiene que tener la capacidad de almacenar
4 | la historia completa del XRP Ledger.
5 |
6 | Eso significa un coste mayor y nuevas copias toman su tiempo ya que el coste de adquirir la historia
7 | completa toma su tiempo.
8 |
A Hub server is designed to help connectivity with the network; requires a good network connection. Should set the limit on the peer connection to a bigger number.
4 |
5 |
6 |
7 |
8 |
Use this if...
9 |
You want to contribute to the overall success of the XRP Ledger, and you happen to have the resources to do that by improving the connectivity within the network. Your hub server has the resources, especially network bandwidth, to connect to many peers at the same time. This server does not do much other than relay messages throughout the network and follow along with consensus, but some number of servers specialized for this role are very helpful to the overall health of the network. Hub servers that are especially reliable may be hard-coded into the rippled source code as connection points where new servers can go to bootstrap their connectivity with the rest of the network.
La principal misión de un Servidor Hub es mejorar la conectividad en la red; requiere una buena conexión de red.
4 | Su límite de conexiones a otros nodos es mayor que la de otros nodos.
5 |
6 |
7 |
8 |
9 |
Elige esta opción si...
10 |
11 | Quieres contribuit al exito a nivel general del XRP Ledger y tienes los recursos necesarios, especialmente
12 | ancho de banda, para conectar a muchos nodos a la vez.
13 | Este tipo de servidor no hace mucho mas alla de retransmitir mensajes a traves de la red y
14 | seguir el consenso de la misma.
15 |
Some servers in the XRP Ledger network are configured as "full-history" servers. These servers, which require significantly more disk space than other tracking servers, collect all available XRP Ledger history and do not use online deletion.
4 |
5 |
6 |
7 |
Warning
8 |
Storing full history is expensive. As of 2018-12-11, the full history of the XRP Ledger occupies approximately 9 terabytes of disk space, which must be entirely stored on fast solid state disk drives for proper server performance. Such a large amount of solid state storage is not cheap, and the total amount of history you must store increases by approximately 12 GB per day.
Some servers in the XRP Ledger network are configured as "full-history" servers. These servers, which require significantly more disk space than other tracking servers, collect all available XRP Ledger history and do not use online deletion.
4 |
5 |
6 |
7 |
Warning
8 |
Storing full history is expensive. As of 2018-12-11, the full history of the XRP Ledger occupies approximately 9 terabytes of disk space, which must be entirely stored on fast solid state disk drives for proper server performance. Such a large amount of solid state storage is not cheap, and the total amount of history you must store increases by approximately 12 GB per day.
The server can backfill history from before it became synced, as well as filling in any gaps in the history it has collected after syncing. (Gaps in ledger history can occur if a server temporarily becomes too busy to keep up with the network, loses its network connection, or suffers other temporary issues.) To backfill history, the server requests data from its peer rippled servers. The amount the server tries to backfill is defined by the [ledger_history] setting.
4 |
If online deletion and advisory deletion are both enabled, the server automatically backfills data up to the oldest ledger it has not been allowed to delete yet. This can fetch data beyond the number of ledger versions configured in the [ledger_history] and online_delete settings. The can_delete method tells the server what ledger versions it is allowed to delete.
The server can backfill history from before it became synced, as well as filling in any gaps in the history it has collected after syncing. (Gaps in ledger history can occur if a server temporarily becomes too busy to keep up with the network, loses its network connection, or suffers other temporary issues.) To backfill history, the server requests data from its peer rippled servers. The amount the server tries to backfill is defined by the [ledger_history] setting.
4 |
If online deletion and advisory deletion are both enabled, the server automatically backfills data up to the oldest ledger it has not been allowed to delete yet. This can fetch data beyond the number of ledger versions configured in the [ledger_history] and online_delete settings. The can_delete method tells the server what ledger versions it is allowed to delete.
The consensus process creates a chain of validated ledger versions, each derived from the previous one by applying a set of transactions. Every rippled server stores ledger versions and transaction history locally. The amount of transaction history a server stores depends on how long that server has been online and how much history it is configured to fetch and keep.
4 |
Servers in the peer-to-peer XRP Ledger network share transactions and other data with each other as part of the consensus process. Each server independently builds each new ledger version and compares results with its trusted validators to ensure consistency. (If a consensus of trusted validators disagrees with a server's results, that server fetches the necessary data from its peers to achieve consistency.) Servers can download older data from their peers to fill gaps in their available history.
5 |
6 |
7 |
8 |
9 |
Tip
10 |
Unlike some cryptocurrency networks, servers in the XRP Ledger do not need full history to know the current state and keep up with current transactions.
The consensus process creates a chain of validated ledger versions, each derived from the previous one by applying a set of transactions. Every rippled server stores ledger versions and transaction history locally. The amount of transaction history a server stores depends on how long that server has been online and how much history it is configured to fetch and keep.
4 |
Servers in the peer-to-peer XRP Ledger network share transactions and other data with each other as part of the consensus process. Each server independently builds each new ledger version and compares results with its trusted validators to ensure consistency. (If a consensus of trusted validators disagrees with a server's results, that server fetches the necessary data from its peers to achieve consistency.) Servers can download older data from their peers to fill gaps in their available history.
5 |
6 |
7 |
8 |
9 |
Tip
10 |
Unlike some cryptocurrency networks, servers in the XRP Ledger do not need full history to know the current state and keep up with current transactions.
There is one production XRP Ledger peer-to-peer network, and all business that takes place on the XRP Ledger occurs within the production network—the Mainnet.
4 | To help members of the XRP Ledger community interact with XRP Ledger technology without affecting anything on the Mainnet, Ripple hosts two alternative networks, or altnets: the Testnet and the Devnet.
5 |
6 |
7 |
8 |
Network
9 |
Upgrade Cadence
10 |
Description
11 |
12 |
13 |
14 |
15 |
Mainnet
16 |
Stable releases
17 |
The XRP Ledger, a decentralized cryptographic ledger powered by a network of peer-to-peer servers and the home of XRP.
18 |
19 |
20 |
Testnet
21 |
Stable releases
22 |
An "alternate universe" network that acts as a testing ground for software built on the XRP Ledger.
23 |
24 |
25 |
Devnet
26 |
Beta releases
27 |
A preview of coming attractions, where unstable changes to the core XRP Ledger software may be tested out.
There is one production XRP Ledger peer-to-peer network, and all business that takes place on the XRP Ledger occurs within the production network—the Mainnet.
4 | To help members of the XRP Ledger community interact with XRP Ledger technology without affecting anything on the Mainnet, Ripple hosts two alternative networks, or altnets: the Testnet and the Devnet.
5 |
6 |
7 |
8 |
Network
9 |
Upgrade Cadence
10 |
Description
11 |
12 |
13 |
14 |
15 |
Mainnet
16 |
Stable releases
17 |
The XRP Ledger, a decentralized cryptographic ledger powered by a network of peer-to-peer servers and the home of XRP.
18 |
19 |
20 |
Testnet
21 |
Stable releases
22 |
An "alternate universe" network that acts as a testing ground for software built on the XRP Ledger.
23 |
24 |
25 |
Devnet
26 |
Beta releases
27 |
A preview of coming attractions, where unstable changes to the core XRP Ledger software may be tested out.
It is recommended that you always use the largest node size your available RAM can support. See the following table for recommended settings.
4 |
5 |
6 |
7 |
RAM for rippled
8 |
node_size value
9 |
Notes
10 |
11 |
12 |
13 |
14 |
< 8GB
15 |
tiny
16 |
Not recommended for testing or production servers.
17 |
18 |
19 |
8GB
20 |
small
21 |
Recommended for test servers.
22 |
23 |
24 |
16GB
25 |
medium
26 |
27 |
28 |
29 |
32GB
30 |
huge
31 |
Recommended for production servers.
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
Tip
40 |
To tune your server, it may be useful to start with tiny and increase the size to small, medium, and so on as you refine the requirements for your use case.
It is recommended that you always use the largest node size your available RAM can support. See the following table for recommended settings.
4 |
5 |
6 |
7 |
RAM for rippled
8 |
node_size value
9 |
Notes
10 |
11 |
12 |
13 |
14 |
< 8GB
15 |
tiny
16 |
Not recommended for testing or production servers.
17 |
18 |
19 |
8GB
20 |
small
21 |
Recommended for test servers.
22 |
23 |
24 |
16GB
25 |
medium
26 |
27 |
28 |
29 |
32GB
30 |
huge
31 |
Recommended for production servers.
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
Tip
40 |
To tune your server, it may be useful to start with tiny and increase the size to small, medium, and so on as you refine the requirements for your use case.
NuDB is a high-performance database written by Ripple Labs and optimized
4 | for rippled and solid-state drives.
5 |
6 |
7 | NuDB maintains its high speed regardless of the amount of history
8 | stored. Online delete may be selected, but is not required. NuDB is
9 | available on all platforms that rippled runs on.
10 |
NuDB is a high-performance database written by Ripple Labs and optimized
4 | for rippled and solid-state drives.
5 |
6 |
7 | NuDB maintains its high speed regardless of the amount of history
8 | stored. Online delete may be selected, but is not required. NuDB is
9 | available on all platforms that rippled runs on.
10 |
A private server is an XRPL Ledger server that connects to the network only through specific, trusted peers instead of connecting directly to discovered peers in the open peer-to-peer network. This kind of configuration is an optional precaution most commonly recommended for validators, but it can be useful for other specific purposes.
Un servidor privado es un nodo de XRPL Ledger que conecta a la red solo a través
4 | otros nodos confiados y específicos en vez de conectar directamente a cualquier nodo
5 | que encuentre.
6 |
7 | Este tipo de configuración una precaución opcional principalmente recomendada para nodos Validadores aunque
8 | puede ser útil para servidores con otros propósitos.
9 |
In its default configuration, the rippled server automatically deletes outdated history of XRP Ledger state and transactions as new ledger versions become available.
4 | This is sufficient for most servers, which do not need older history to know the current state and process transactions. However, it can be useful for the network if some servers provide as much history of the XRP Ledger as possible.
5 |
6 |
7 |
8 |
9 |
10 |
Tip
11 |
Even with online deletion, the amount of disk space required to store the same time span's worth of ledger data increases over time, because the size of individual ledger versions tends to grow over time. This growth is very slow in comparison to the accumulation of data that occurs without deleting old ledgers. For more information on disk space needs, see
12 | Capacity Planning .
13 |
14 |
15 |
16 |
Advisory Deletion
17 |
18 |
19 | You can use advisory deletion with a scheduled job to trigger automatic deletion based on clock time instead of the number of ledger versions closed.
20 |
In its default configuration, the rippled server automatically deletes outdated history of XRP Ledger state and transactions as new ledger versions become available.
4 | This is sufficient for most servers, which do not need older history to know the current state and process transactions. However, it can be useful for the network if some servers provide as much history of the XRP Ledger as possible.
5 |
6 |
7 |
8 |
9 |
10 |
Tip
11 |
Even with online deletion, the amount of disk space required to store the same time span's worth of ledger data increases over time, because the size of individual ledger versions tends to grow over time. This growth is very slow in comparison to the accumulation of data that occurs without deleting old ledgers. For more information on disk space needs, see
12 | Capacity Planning .
13 |
14 |
15 |
16 |
Advisory Deletion
17 |
18 |
19 | You can use advisory deletion with a scheduled job to trigger automatic deletion based on clock time instead of the number of ledger versions closed.
20 |
RocksDB is an open-source, general-purpose key/value store - see
4 | rocksdb.org for more details.
5 |
6 |
7 | RocksDB is an alternative backend for systems that don't use solid-state
8 | drives. Because RocksDB's performance degrades as it stores more data,
9 | keeping full history is not advised, and using online delete is
10 | recommended.
11 |
RocksDB is an open-source, general-purpose key/value store - see
4 | rocksdb.org for more details.
5 |
6 |
7 | RocksDB is an alternative backend for systems that don't use solid-state
8 | drives. Because RocksDB's performance degrades as it stores more data,
9 | keeping full history is not advised, and using online delete is
10 | recommended.
11 |
The rippled server has an experimental gRPC API . Currently, this API provides a subset of the full rippled API. You can enable the gRPC API on your server with a new configuration stanza.
3 |
4 |
5 |
6 |
7 |
Caution
8 |
gRPC support in rippled v1.5.0 is experimental. Configuration settings and API formats are likely to have breaking changes in forthcoming versions.
The rippled server has an experimental gRPC API . Currently, this API provides a subset of the full rippled API. You can enable the gRPC API on your server with a new configuration stanza.
3 |
4 |
5 |
6 |
7 |
Caution
8 |
gRPC support in rippled v1.5.0 is experimental. Configuration settings and API formats are likely to have breaking changes in forthcoming versions.
4 | Peer Protocol implements the Ripple Payment protocol. It is over peer connections that transactions
5 | and validations are passed from to machine to machine, to determine the
6 | contents of validated ledgers.
7 |
8 |
9 | In Stand-alone mode these settings will not be taken into account.
10 |
4 | Peer Protocol implements the Ripple Payment protocol. It is over peer connections that transactions
5 | and validations are passed from to machine to machine, to determine the
6 | contents of validated ledgers.
7 |
8 |
9 | In Stand-alone mode these settings will not be taken into account.
10 |
You can use any HTTP client (like RESTED for Firefox , Postman for Chrome or Online HTTP client ExtendsClass ) to make JSON-RPC calls a rippled server. Most programming languages have a library for making HTTP requests built in.
You can use any HTTP client (like RESTED for Firefox , Postman for Chrome or Online HTTP client ExtendsClass ) to make JSON-RPC calls a rippled server. Most programming languages have a library for making HTTP requests built in.
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.¹
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.¹
Only one port may be configured to support the peer protocol.
4 |
A port cannot have websocket and non websocket protocols at the same time. It is possible have both Websockets and Secure Websockets together in one port.
5 |
6 |
7 |
8 |
9 |
Note
10 |
If no ports support the peer protocol, rippled cannot receive incoming peer connections or become a superpeer.
Only one port may be configured to support the peer protocol.
4 |
A port cannot have websocket and non websocket protocols at the same time. It is possible have both Websockets and Secure Websockets together in one port.
5 |
6 |
7 |
8 |
9 |
Note
10 |
If no ports support the peer protocol, rippled cannot receive incoming peer connections or become a superpeer.
The rippled server software can run in several modes depending on its configuration, including:
4 |
5 |
6 |
All-purpose server
7 |
Validating server, or validator for short
8 |
Hub server
9 |
Full History server
10 |
Development server
11 |
12 |
13 | You can also run the rippled executable as a client application for accessing rippled APIs locally. (Two instances of the same binary can run side-by-side in this case; one as a server, and the other running briefly as a client and then terminating.)
14 |
15 |
16 | For information on the commands to run rippled in each of these modes, see the Commandline Reference .
El software del XRP Ledger puede ser configurado de diferentes maneras dependiendo de las
4 | necesidades, entra otras:
5 |
6 |
7 |
Servidor Multifuncion
8 |
Validador Dedicado
9 |
Servidor Hub
10 |
Servidor con historia complete
11 |
Servidor API dedicado
12 |
Server para desarrollo
13 |
14 |
15 | Tambien puedes utilizar el ejecutable del XRP Ledger como aplicacion de cliente para acceder
16 | las APIs de manera local.
17 |
18 | Para mas información sobre los comandos que pueden ser ejecutados en cada modo, visita la sección de
19 | (En Inglés) Commandline Reference .
20 |
By default, the signing methods for rippled are limited to administrative connections. If you want to allow signing methods to be used as public API methods, you can enable it with a configuration change.
4 |
This enables the following methods to be used on "public" JSON-RPC and WebSocket connections, if your server accepts them:
5 |
6 |
sign
7 |
sign_for
8 |
submit (in "sign-and-submit" mode)
9 |
10 |
11 | You do not need to enable public signing to use these methods from an admin connection.
12 |
13 |
14 |
15 |
16 |
17 |
Caution
18 |
It is not recommended enabling public signing. Like the wallet_propose method , the signing commands do not perform any actions that would require administrative-level permissions, but restricting them to admin connections protects users from irresponsibly sending or receiving secret keys over unsecured communications, or to servers they do not control.
Por defecto, los metodos para firma transacciones que ofrece el XRP Ledger son reservados para conexiones
4 | tipo admin. Si quieres permitir estos metodos de una manera abierta puedes hacerlo con este cambio
5 | en la configuración.
6 |
Este ajuste activará los siguientes métodos para ser utilizados desde conexiones JSON-RPC y WebSocket si tu servidor las acepta:
7 |
8 |
sign
9 |
sign_for
10 |
submit (en modo "sign-and-submit")
11 |
12 |
13 | No necesitas habilitar estos métodos desde una conexión admin.
14 |
15 |
16 |
17 |
18 |
19 |
Cuidado
20 |
No es recomendable en la mayoría de los casos habilitar el firmado público de transacciones.
21 | Al igual que métodos como wallet_propose ,
22 | los comandos de firma no ejecutan ninguna acción que requiera permisos de administración, pero
23 | restringir el acceso a solo conexiones admin protege al sistema del envío o recepcion indebido
24 | de claves privadas por comunicaciones no seguras o a servidores que no controlamos.
NuDB is an append-only key-value store that is optimized for SSD drives.
5 |
6 | NuDB has nearly constant performance and memory footprints regardless of the amount of data being stored. NuDB requires a solid-state drive, but uses much less RAM than RocksDB to access a large database.
7 |
8 | Non-validator production servers should be configured to use NuDB and to store the amount of historical data required for the use case.
9 |
10 |
NuDB es un almacén de valor-clave de solo adición que está optimizado para unidades SSD.
5 |
6 | NuDB tiene un rendimiento y una huella de memoria casi constantes, independientemente de la cantidad de datos que se almacenen. NuDB requiere una unidad de estado sólido, pero usa mucha menos RAM que RocksDB para acceder a una gran base de datos.
7 |
8 | Los servidores de producción que no son validadores deben configurarse para usar NuDB y almacenar la cantidad de datos históricos necesarios para el caso de uso.
9 |
10 |
The XRP Ledger server instance uses HTTPS GET requests in a variety of circumstances, including but not limited to contacting trusted domains to fetch information such as mapping an email address to a Ripple Payment Network address.
4 |
If checked, certificates will be checked for HTTPS client connections.
5 |
Certificate Verification File: A file system path leading to the certificate verification file for
6 | HTTPS client requests.
7 |
System path to file or directory containing the root certificates: A file system path leading to a file or directory containing the root certificates that the server will accept for verifying HTTP servers. Used only for outbound HTTPS client connections.
El node XRP Ledger utiliza peticiones HTTP GET en una numerosa variedad de circunstancias, por ejemplo,
4 | para contactar a otros nodos confiados y recoger informacion.
5 |
6 |
Si se selecciona este ajuste, los certificados seran verificados para cualquier conexion HTTP como cliente.
7 |
Verificacion de certificados:
8 | A file system path leading to the certificate verification file for
9 | HTTPS client requests.
10 |
System path to file or directory containing the root certificates: A file system path leading to a file or directory containing the root certificates that the server will accept for verifying HTTP servers. Used only for outbound HTTPS client connections.
You can run rippled in stand-alone mode without a consensus of trusted servers. In stand-alone mode, rippled does not communicate with any other servers in the XRP Ledger peer-to-peer network, but you can do most of the same actions on your local server only. Stand-alone provides a method for testing rippled behavior without being tied to the live network. For example, you can test the effects of Amendments before those Amendments have gone into effect across the decentralized network.
4 |
When you run rippled in stand-alone mode, you have to tell it what ledger version to start from:
You can run rippled in stand-alone mode without a consensus of trusted servers. In stand-alone mode, rippled does not communicate with any other servers in the XRP Ledger peer-to-peer network, but you can do most of the same actions on your local server only. Stand-alone provides a method for testing rippled behavior without being tied to the live network. For example, you can test the effects of Amendments before those Amendments have gone into effect across the decentralized network.
4 |
When you run rippled in stand-alone mode, you have to tell it what ledger version to start from:
In the step you can configure the size of your node, how much history you want to keep, what network you want to run on and what validators you want to trust.
In the step you can configure the size of your node, how much history you want to keep, what network you want to run on and what validators you want to trust.
4 | The following example gets the latest ledger version and a list of transactions that were newly-validated in that ledger version, using the getLedger() method. Try running it as-is, or change the code and see what happens.
5 |
4 | The following example gets the latest ledger version and a list of transactions that were newly-validated in that ledger version, using the getLedger() method. Try running it as-is, or change the code and see what happens.
5 |
An "alternate universe" network that acts as a testing ground for software built on the XRP Ledger, without impacting production XRP Ledger users and without risking real money. The amendment status of the Testnet is intended to closely mirror the Mainnet, although slight variations in timing may occur due to the unpredictable nature of decentralized systems.
4 |
Testnet and Devnet each have their own separate supply of test XRP, which Ripple gives away for free to parties interested in experimenting with the XRP Ledger and developing applications and integrations. Test XRP does not have real-world value and is lost when the network is reset.
An "alternate universe" network that acts as a testing ground for software built on the XRP Ledger, without impacting production XRP Ledger users and without risking real money. The amendment status of the Testnet is intended to closely mirror the Mainnet, although slight variations in timing may occur due to the unpredictable nature of decentralized systems.
4 |
Testnet and Devnet each have their own separate supply of test XRP, which Ripple gives away for free to parties interested in experimenting with the XRP Ledger and developing applications and integrations. Test XRP does not have real-world value and is lost when the network is reset.
10 | Relays cryptographically signed transactions
11 |
12 |
13 | Maintains a local copy of the complete shared global ledger
14 |
15 |
16 | Participates in consensus
17 |
18 |
19 |
20 |
21 |
22 |
23 |
Use this if...
24 |
You want to help keep the XRP Ledger network online and humming along smoothly. You might have different machines you use for other purposes, or you might actually send or receive XRPL transactions sparingly enough that you don’t run a machine for that purpose. Maybe you don’t even use the XRPL very much directly, but you’re associated with another entity that does. (For example, a charity org might run a validator while governments and companies it assists actually use the XRPL for transaction stuff.) Most likely, you run this as a private peer, and it might be clustered with several other servers you also operate such as a hub server and API servers.
13 | Mantiene localmente una copia del estado completo de la red
14 |
15 |
16 | Participa en el consenso de la red
17 |
18 |
19 |
20 |
21 |
22 |
23 |
Elige esta opción si...
24 |
25 | Quieres contribuir al funcionamiento saludable de la red.
26 | Puedes tener otros servidores dedicados a otras funciones,
27 | o reutilizar este mismo servidor para enviar/recibir transacciones si tus volúmenes
28 | no son muy grandes.
29 | Puede que no necesites interactuar directamente demasiado con el XRP Ledger pero estas asociado
30 | con otra entidad que si lo necesita. Por ejemplo, una entida benéfica puede tener su propio
31 | Validador mientras que gobiernos y otras empresas pueden utilizarlo para el envío/recepción
32 | transacciones.
33 |
34 | Lo mas común es que configures este nodo como privado y que forme parte de un clúster con
35 | otros servidores tipo Hub o API.
The server can backfill history from before it became synced, as well as filling in any gaps in the history it has collected after syncing. (Gaps in ledger history can occur if a server temporarily becomes too busy to keep up with the network, loses its network connection, or suffers other temporary issues.) To backfill history, the server requests data from its peer XRP Ledger servers. The amount the server tries to backfill is defined by the [ledger_history] setting.
4 |
If online deletion and advisory deletion are both enabled, the server automatically backfills data up to the oldest ledger it has not been allowed to delete yet. This can fetch data beyond the number of ledger versions configured in the [ledger_history] and online_delete settings. The can_delete method tells the server what ledger versions it is allowed to delete.
The XRP Ledger server software can run in several modes depending on its configuration, including:
4 |
5 |
6 |
All-purpose server
7 |
Validating server, or validator for short
8 |
Hub server
9 |
Full History server
10 |
Development server
11 |
12 |
13 | You can also run the XRP Ledger executable as a client application for accessing XRP Ledger APIs locally. (Two instances of the same binary can run side-by-side in this case; one as a server, and the other running briefly as a client and then terminating.)
14 |
15 |
16 | For information on the commands to run XRP Ledger in each of these modes, see the Commandline Reference.
By default, the signing methods for XRP Ledger are limited to administrative connections. If you want to allow signing methods to be used as public API methods, you can enable it with a configuration change.
4 |
This enables the following methods to be used on "public" JSON-RPC and WebSocket connections, if your server accepts them:
5 |
6 |
sign
7 |
sign_for
8 |
submit (in "sign-and-submit" mode)
9 |
10 |
11 | You do not need to enable public signing to use these methods from an admin connection.
12 |
13 |
14 |
15 |
16 |
17 |
Caution
18 |
It is not recommended enabling public signing. Like the wallet_propose method , the signing commands do not perform any actions that would require administrative-level permissions, but restricting them to admin connections protects users from irresponsibly sending or receiving secret keys over unsecured communications, or to servers they do not control.
You can run XRP Ledger in stand-alone mode without a consensus of trusted servers. In stand-alone mode, rippled does not communicate with any other servers in the XRP Ledger peer-to-peer network, but you can do most of the same actions on your local server only. Stand-alone provides a method for testing rippled behavior without being tied to the live network. For example, you can test the effects of Amendments before those Amendments have gone into effect across the decentralized network.
4 |
When you run rippled in stand-alone mode, you have to tell it what ledger version to start from: