### Run Hello World Example Source: https://xrpl.org/docs/tutorials/sample-apps/build-a-desktop-wallet-in-javascript.md Executes the 'hello' script defined in package.json, which launches the Electron application with the basic 'Hello World' setup. ```bash npm run hello ``` -------------------------------- ### Setup Python Client and Accounts Source: https://xrpl.org/docs/tutorials/defi/lending/use-the-lending-protocol/create-a-loan.md Import necessary libraries and instantiate an XRPL client for Python. This example uses preconfigured accounts for loan creation. ```python # IMPORTANT: This example creates a loan using a preconfigured # loan broker, borrower, and private vault. import json import os import subprocess import sys from xrpl.clients import JsonRpcClient from xrpl.models import LoanSet from xrpl.transaction import autofill, sign, sign_loan_set_by_counterparty, submit_and_wait from xrpl.wallet import Wallet ``` -------------------------------- ### Check and Load Lending Setup Data (Go) Source: https://xrpl.org/docs/tutorials/defi/lending/use-the-lending-protocol/pay-off-a-loan.md Ensures lending setup data is available, running a setup script if it's missing. It then loads the borrower's wallet, loan ID, and MPT ID from the setup file. ```go if _, err := os.Stat("lending-setup.json"); os.IsNotExist(err) { fmt.Printf("\n=== Lending tutorial data doesn't exist. Running setup script... ===\n\n") cmd := exec.Command("go", "run", "./lending-setup") cmd.Stdout = os.Stdout cmd.Stderr = os.Stderr if err := cmd.Run(); err != nil { panic(err) } } data, err := os.ReadFile("lending-setup.json") if err != nil { panic(err) } var setup map[string]any if err := json.Unmarshal(data, &setup); err != nil { panic(err) } borrowerWallet, err := wallet.FromSecret(setup["borrower"].(map[string]any)["seed"].(string)) if err != nil { panic(err) } loanID := setup["loanID2"].(string) mptID := setup["mptID"].(string) fmt.Printf("\nBorrower address: %s\n", borrowerWallet.ClassicAddress) fmt.Printf("LoanID: %s\n", loanID) fmt.Printf("MPT ID: %s\n", mptID) ``` -------------------------------- ### Check and Load Lending Setup Data (JavaScript) Source: https://xrpl.org/docs/tutorials/defi/lending/use-the-lending-protocol/pay-off-a-loan.md Verifies if lending setup data exists and runs a setup script if not. Loads borrower, loanID, and mptID from the setup file. ```js if (!fs.existsSync('lendingSetup.json')) { console.log(` === Lending tutorial data doesn't exist. Running setup script... === `) execSync('node lendingSetup.js', { stdio: 'inherit' }) } const setupData = JSON.parse(fs.readFileSync('lendingSetup.json', 'utf8')) const borrower = xrpl.Wallet.fromSeed(setupData.borrower.seed) const loanID = setupData.loanID2 const mptID = setupData.mptID console.log(` Borrower address: ${borrower.address}`) console.log(`LoanID: ${loanID}`) console.log(`MPT ID: ${mptID}`) ``` -------------------------------- ### TWaXLFrame GUI Setup Source: https://xrpl.org/docs/tutorials/sample-apps/build-a-desktop-wallet-in-python.md Initializes the main application frame, builds the user interface, and starts a background thread for XRP Ledger updates. It also schedules the initial ledger watching job. ```python class TWaXLFrame(wx.Frame): """ Tutorial Wallet for the XRP Ledger (TWaXL) user interface, main frame. """ def __init__(self, url): wx.Frame.__init__(self, None, title="TWaXL", size=wx.Size(800,400)) self.build_ui() # Start background thread for updates from the ledger ------------------ self.worker = XRPLMonitorThread(url, self) self.worker.start() self.run_bg_job(self.worker.watch_xrpl()) ``` -------------------------------- ### Install Dependencies with npm Source: https://xrpl.org/assign-a-regular-key-pair.html Installs project dependencies using npm. This is a prerequisite for running the JavaScript examples. ```bash npm i ``` -------------------------------- ### Set up XRPL Client and Wallet in Main Function Source: https://xrpl.org/docs/tutorials/sample-apps/credential-issuing-service-in-javascript.md Initializes the XRPL client connection and instantiates the issuer's wallet. Logs the XRPL address upon successful initialization. ```javascript async function main() { // Set up XRPL connection ------------------------------------------------------ const client = new Client("wss://s.devnet.rippletest.net:51233"); await client.connect(); const wallet = await initWallet(); console.log("✅ Starting credential issuer with XRPL address", wallet.address); ``` -------------------------------- ### Set up Python Client and Account Source: https://xrpl.org/docs/tutorials/payments/send-a-timed-escrow.md Instantiate a JsonRpcClient and generate a new wallet from the faucet for use in the tutorial. ```python import json from datetime import datetime, timedelta, UTC from time import sleep from xrpl.clients import JsonRpcClient from xrpl.models import EscrowCreate, EscrowFinish from xrpl.models.requests import Ledger from xrpl.transaction import submit_and_wait from xrpl.utils import datetime_to_ripple_time, ripple_time_to_datetime from xrpl.wallet import generate_faucet_wallet # Set up client and get a wallet client = JsonRpcClient("https://s.altnet.rippletest.net:51234") print("Funding new wallet from faucet...") wallet = generate_faucet_wallet(client, debug=True) # destination_address = "rPT1Sjq2YGrBMTttX4GZHjKu9dyfzbpAYe" # Testnet faucet # Alternative: Get another account to send the escrow to. Use this if you get # a tecDIR_FULL error trying to create escrows to the Testnet faucet. destination_address = generate_faucet_wallet(client, debug=True).address ``` -------------------------------- ### WebSocket API Request Example Source: https://xrpl.org/docs/tutorials/get-started/get-started-http-websocket-apis.md Send a server_info request over WebSocket to get the current status of the rippled server. This is a basic example of a WebSocket API call. ```json { "id": "my_first_request", "command": "server_info", "api_version": 1 } ``` -------------------------------- ### Setup Lending Protocol Data (Go) Source: https://xrpl.org/docs/tutorials/defi/lending/use-the-lending-protocol/create-a-loan.md Checks for and executes the 'lending-setup' script if 'lending-setup.json' is missing. Loads preconfigured accounts and the LoanBrokerID from the generated file. ```go // Check for setup data; run lending-setup if missing if _, err := os.Stat("lending-setup.json"); os.IsNotExist(err) { fmt.Printf("\n=== Lending tutorial data doesn't exist. Running setup script... ===\n\n") cmd := exec.Command("go", "run", "./lending-setup") cmd.Stdout = os.Stdout cmd.Stderr = os.Stderr if err := cmd.Run(); err != nil { panic(err) } } // Load preconfigured accounts and LoanBrokerID data, err := os.ReadFile("lending-setup.json") if err != nil { panic(err) } var setup map[string]any if err := json.Unmarshal(data, &setup); err != nil { panic(err) } // You can replace these values with your own loanBrokerWallet, err := wallet.FromSecret(setup["loanBroker"].(map[string]any)["seed"].(string)) if err != nil { panic(err) } borrowerWallet, err := wallet.FromSecret(setup["borrower"].(map[string]any)["seed"].(string)) if err != nil { panic(err) } loanBrokerID := setup["loanBrokerID"].(string) fmt.Printf("\nLoan broker address: %s\n", loanBrokerWallet.ClassicAddress) fmt.Printf("Borrower address: %s\n", borrowerWallet.ClassicAddress) fmt.Printf("LoanBrokerID: %s\n", loanBrokerID) ``` -------------------------------- ### Example package.json for xrpl.js Source: https://xrpl.org/docs/tutorials/get-started/get-started-javascript.md A sample package.json file after installing xrpl.js, indicating the dependency and module type. ```json { "dependencies": { "xrpl": "^4.4.0" }, "type": "module" } ``` -------------------------------- ### JSON-RPC Request Format for tx_history Source: https://xrpl.org/docs/references/http-websocket-apis/public-api-methods/transaction-methods/tx_history.md Example of a JSON-RPC request to the tx_history method. Specifies the method and parameters, including 'start'. ```json { "method": "tx_history", "params": [ { "start": 0 } ] } ``` -------------------------------- ### Set up JavaScript Client and Account Source: https://xrpl.org/docs/tutorials/payments/send-a-timed-escrow.md Instantiate an xrpl.js client and fund a new wallet from the faucet for use in the tutorial. ```javascript import xrpl from 'xrpl' const client = new xrpl.Client('wss://s.altnet.rippletest.net:51233') await client.connect() console.log('Funding new wallet from faucet...') const { wallet } = await client.fundWallet() // const destination_address = 'rPT1Sjq2YGrBMTttX4GZHjKu9dyfzbpAYe' // Testnet faucet // Alternative: Get another account to send the escrow to. Use this if you get // a tecDIR_FULL error trying to create escrows to the Testnet faucet. const destination_address = (await client.fundWallet()).wallet.address ``` -------------------------------- ### WebSocket Request Format for tx_history Source: https://xrpl.org/docs/references/http-websocket-apis/public-api-methods/transaction-methods/tx_history.md Example of a WebSocket request to the tx_history method. Includes an ID, the command, and the 'start' parameter. ```json { "id": 5, "command": "tx_history", "start": 0 } ``` -------------------------------- ### AMM Info JSON-RPC Request Source: https://xrpl.org/docs/references/http-websocket-apis/public-api-methods/path-and-order-book-methods/amm_info.md Example of a JSON-RPC request to the amm_info method to get information about an AMM trading TST and XRP. ```APIDOC ## amm_info JSON-RPC Request ### Description Retrieves information about an Automated Market Maker (AMM) instance. ### Method JSON-RPC ### Request Body ```json { "method": "amm_info", "params": [{ "asset": { "currency": "XRP" }, "asset2": { "currency": "TST", "issuer": "rP9jPyP5kyvFRb6ZiRghAGw5u8SGAmU4bd" }, "ledger_index": "validated" }] } ``` ### Parameters - `method` (String): Must be "amm_info". - `params` (Array): An array containing the method parameters. - `asset` (Object): One of the assets of the AMM to look up. Requires `currency` and optionally `issuer`. - `currency` (String): The currency code (e.g., "XRP"). - `issuer` (String): The issuer of the currency (omit for XRP). - `asset2` (Object): The other asset of the AMM. Requires `currency` and optionally `issuer`. - `currency` (String): The currency code. - `issuer` (String): The issuer of the currency (omit for XRP). - `account` (String): Optional. Show only LP Tokens held by this liquidity provider. - `amm_account` (String): Optional. The address of the AMM's special AccountRoot. - `ledger_hash` (String): Optional. The unique hash of the ledger version to use. - `ledger_index` (Number or String): Optional. The ledger index or a shortcut string (e.g., "validated") of the ledger to use. **Note:** You must specify either `amm_account` or both `asset` and `asset2`. ``` -------------------------------- ### AMM Info WebSocket Request Source: https://xrpl.org/docs/references/http-websocket-apis/public-api-methods/path-and-order-book-methods/amm_info.md Example of a WebSocket request to the amm_info method to get information about an AMM trading TST and XRP. ```APIDOC ## amm_info WebSocket Request ### Description Retrieves information about an Automated Market Maker (AMM) instance. ### Method WebSocket ### Request Body ```json { "command": "amm_info", "asset": { "currency": "XRP" }, "asset2": { "currency": "TST", "issuer": "rP9jPyP5kyvFRb6ZiRghAGw5u8SGAmU4bd" }, "ledger_index": "validated" } ``` ### Parameters - `command` (String): Must be "amm_info". - `asset` (Object): One of the assets of the AMM to look up. Requires `currency` and optionally `issuer`. - `currency` (String): The currency code (e.g., "XRP"). - `issuer` (String): The issuer of the currency (omit for XRP). - `asset2` (Object): The other asset of the AMM. Requires `currency` and optionally `issuer`. - `currency` (String): The currency code. - `issuer` (String): The issuer of the currency (omit for XRP). - `account` (String): Optional. Show only LP Tokens held by this liquidity provider. - `amm_account` (String): Optional. The address of the AMM's special AccountRoot. - `ledger_hash` (String): Optional. The unique hash of the ledger version to use. - `ledger_index` (Number or String): Optional. The ledger index or a shortcut string (e.g., "validated") of the ledger to use. **Note:** You must specify either `amm_account` or both `asset` and `asset2`. ``` -------------------------------- ### Set up Python Client and Account Source: https://xrpl.org/docs/tutorials/payments/send-a-conditional-escrow.md Initialize an XRP Ledger client, generate a new wallet from the faucet, and obtain a destination address for the escrow. ```python import json from datetime import datetime, timedelta, UTC from os import urandom from cryptoconditions import PreimageSha256 from xrpl.clients import JsonRpcClient from xrpl.models import EscrowCreate, EscrowFinish from xrpl.transaction import submit_and_wait from xrpl.utils import datetime_to_ripple_time from xrpl.wallet import generate_faucet_wallet # Set up client and get a wallet client = JsonRpcClient("https://s.altnet.rippletest.net:51234") print("Funding new wallet from faucet...") wallet = generate_faucet_wallet(client, debug=True) #destination_address = "rPT1Sjq2YGrBMTttX4GZHjKu9dyfzbpAYe" # Testnet faucet # Alternative: Get another account to send the escrow to. Use this if you get # a tecDIR_FULL error trying to create escrows to the Testnet faucet. destination_address = generate_faucet_wallet(client, debug=True).address ``` -------------------------------- ### Commandline Request Format for tx_history Source: https://xrpl.org/docs/references/http-websocket-apis/public-api-methods/transaction-methods/tx_history.md Example of a command-line request to the tx_history method using the rippled client. The 'start' parameter is provided as an argument. ```sh #Syntax: tx_history [start] rippled tx_history 0 ``` -------------------------------- ### Set up Go XRPL Client Source: https://xrpl.org/docs/tutorials/best-practices/account-management/calculate-reserves.md Initialize a WebSocket client and connect to the XRPL cluster. Ensure to defer disconnection. ```go // Set up client ---------------------- package main import ( "fmt" "strconv" "github.com/Peersyst/xrpl-go/xrpl/currency" "github.com/Peersyst/xrpl-go/xrpl/queries/account" "github.com/Peersyst/xrpl-go/xrpl/queries/server" "github.com/Peersyst/xrpl-go/xrpl/transaction/types" "github.com/Peersyst/xrpl-go/xrpl/websocket" ) func main() { client := websocket.NewClient( websocket.NewClientConfig(). WithHost("wss://xrplcluster.com"), ) defer client.Disconnect() if err := client.Connect(); err != nil { panic(err) } ``` -------------------------------- ### Get DID Entry (WebSocket) Source: https://xrpl.org/docs/references/http-websocket-apis/public-api-methods/ledger-methods/ledger_entry.md Fetch a DID entry by providing the DID's controlling account address. This WebSocket example uses 'validated' for the ledger index. ```json { "id": "example_get_did", "command": "ledger_entry", "did": "rFtKiHYdvmAiVvxAr6U6TNjcPSrAeANQa", "ledger_index": "validated" } ``` -------------------------------- ### Install xrpl-go Library Source: https://xrpl.org/docs/tutorials/get-started/get-started-go.md Initialize your Go module and fetch the latest version of the xrpl-go library using Go modules. ```bash # Initialize your module (if you haven't already) go mod init your-module-name # Fetch the latest version of xrpl-go go get -u github.com/Peersyst/xrpl-go ``` -------------------------------- ### Check and Load Lending Setup Data (Python) Source: https://xrpl.org/docs/tutorials/defi/lending/use-the-lending-protocol/pay-off-a-loan.md Checks for lending setup data and executes a setup script if necessary. It then loads the borrower's wallet, loan ID, and MPT ID. ```py if not os.path.exists("lending_setup.json"): print("\n=== Lending tutorial data doesn't exist. Running setup script... ===\n") subprocess.run([sys.executable, "lending_setup.py"], check=True) with open("lending_setup.json") as f: setup_data = json.load(f) borrower = Wallet.from_seed(setup_data["borrower"]["seed"]) loan_id = setup_data["loan_id_2"] mpt_id = setup_data["mpt_id"] print(f"\nBorrower address: {borrower.address}") print(f"LoanID: {loan_id}") print(f"MPT ID: {mpt_id}") ``` -------------------------------- ### Fetch Info Request (WebSocket/JSON-RPC) Source: https://xrpl.org/docs/references/http-websocket-apis/admin-api-methods/status-and-debugging-methods/fetch_info.md This is an example of the request format for the `fetch_info` command. Set `clear` to `true` to reset current fetches, or `false` to only get status. ```json { "id": 91, "command": "fetch_info", "clear": false } ``` -------------------------------- ### Setup Lending Protocol Data (Python) Source: https://xrpl.org/docs/tutorials/defi/lending/use-the-lending-protocol/create-a-loan.md Checks for and generates necessary setup data for the lending protocol tutorials if 'lending_setup.json' is missing. Loads preconfigured accounts and the loan_broker_id. ```python if not os.path.exists("lending_setup.json"): print("\n=== Lending tutorial data doesn't exist. Running setup script... ===\n") subprocess.run([sys.executable, "lending_setup.py"], check=True) # Load preconfigured accounts and loan_broker_id. with open("lending_setup.json") as f: setup_data = json.load(f) # You can replace these values with your own. loan_broker = Wallet.from_seed(setup_data["loan_broker"]["seed"]) borrower = Wallet.from_seed(setup_data["borrower"]["seed"]) loan_broker_id = setup_data["loan_broker_id"] print(f"\nLoan broker address: {loan_broker.address}") print(f"Borrower address: {borrower.address}") print(f"LoanBrokerID: {loan_broker_id}") ``` -------------------------------- ### Account Lines Command Line Example Source: https://xrpl.org/docs/references/http-websocket-apis/public-api-methods/account-methods/account_lines.md This example demonstrates how to use the account_lines method via the command line, showing the connection process and a sample response. ```bash Loading: "/etc/opt/ripple/rippled.cfg" 2025-Apr-09 21:10:16.085500844 UTC HTTPClient:NFO Connecting to 127.0.0.1:5005 { "result": { "account": "r9cZA1mLK5R5Am25ArfXFmqgNwjZgnfk59", "ledger_current_index": 95348091, "lines": [ { "account": "r3vi7mWxru9rJCxETCyA1CHvzL96eZWx5z", "balance": "0", "currency": "ASP", "limit": "0", "limit_peer": "10", "no_ripple": false, "no_ripple_peer": false, "quality_in": 0, "quality_out": 0 }, { "account": "r3vi7mWxru9rJCxETCyA1CHvzL96eZWx5z", "balance": "0", "currency": "XAU", "limit": "0", "limit_peer": "0", "no_ripple": true, "no_ripple_peer": true, "quality_in": 0, "quality_out": 0 }, { "account": "rMwjYedjc7qqtKYVLiAccJSmCwih4LnE2q", "balance": "5", "currency": "USD", "limit": "5", "limit_peer": "0", "no_ripple": true, "no_ripple_peer": false, "quality_in": 0, "quality_out": 0 }, { "account": "rHpXfibHgSb64n8kK9QWDpdbfqSpYbM9a4", "balance": "481.992867407479", "currency": "MXN", "limit": "1000", "limit_peer": "0", "no_ripple": false, "no_ripple_peer": false, "quality_in": 0, "quality_out": 0 }, { "account": "rLEsXccBGNR3UPuPu2hUXPjziKC3qKSBun", "balance": "0.793598266778297", "currency": "EUR", "limit": "1", "limit_peer": "0", "no_ripple": true, "no_ripple_peer": false, "quality_in": 0, "quality_out": 0 }, { "account": "rnuF96W4SZoCJmbHYBFoJZpR8eCaxNvekK", "balance": "0", "currency": "CNY", "limit": "3", "limit_peer": "0", "no_ripple": true, "no_ripple_peer": false, "quality_in": 0, "quality_out": 0 }, { "account": "rGwUWgN5BEg3QGNY3RX2HfYowjUTZdid3E", "balance": "1.336889190631542", "currency": "DYM", "limit": "3", "limit_peer": "0", "no_ripple": false, "no_ripple_peer": false, "quality_in": 0, "quality_out": 0 }, { "account": "rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B", "balance": "0.3488146605801446", "currency": "CHF", "limit": "0", "limit_peer": "0", "no_ripple": false, "no_ripple_peer": false, "quality_in": 0, "quality_out": 0 }, { "account": "rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B", "balance": "0", "currency": "BTC", "limit": "3", "limit_peer": "0", "no_ripple": false, "no_ripple_peer": false, "quality_in": 0, "quality_out": 0 }, { "account": "rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B", "balance": "11.68225001668339", "currency": "USD", "limit": "5000", "limit_peer": "0", "no_ripple": false, "no_ripple_peer": false, "quality_in": 0, "quality_out": 0 }, { "account": "rpgKWEmNqSDAGFhy5WDnsyPqfQxbWxKeVd", "balance": "-0.00111", "currency": "BTC", "limit": "0", "limit_peer": "10", "no_ripple": false, "no_ripple_peer": false, "quality_in": 0, "quality_out": 0 }, { "account": "rBJ3YjwXi2MGbg7GVLuTXUWQ8DjL7tDXh4", "balance": "-0.0008744482690504699", "currency": "BTC", "limit": "0", "limit_peer": "10", "no_ripple": false, "no_ripple_peer": false, "quality_in": 0, "quality_out": 0 }, { "account": "rLEsXccBGNR3UPuPu2hUXPjziKC3qKSBun", "balance": "0", "currency": "USD", "limit": "1", "limit_peer": "0", "no_ripple": false, "no_ripple_peer": false, "quality_in": 0, "quality_out": 0 }, { "account": "razqQKzJRdB4UxFPWf5NEpEG3WMkmwgcXA", "balance": "9.07619790068559", "currency": "CNY", "limit": "100", "limit_peer": "0", "no_ripple": true, ``` -------------------------------- ### Get Aggregate Price Response Source: https://xrpl.org/docs/references/http-websocket-apis/public-api-methods/path-and-order-book-methods/get_aggregate_price.md Example response containing aggregate price statistics. Includes statistics for the entire dataset and, if requested, for a trimmed set excluding outliers. ```json { "result": { "entire_set": { "mean": "0.78", "size": 3, "standard_deviation": "0.03464101615137754" }, "ledger_current_index": 3677185, "median": "0.8", "time": 1724877762, "trimmed_set": { "mean": "0.78", "size": 3, "standard_deviation": "0.03464101615137754" }, "validated": false }, "status": "success", "type": "response" } ``` -------------------------------- ### Ripple Source List Configuration Source: https://xrpl.org/blog/2026/gpg-key-rotation.md Example configuration for the Ripple source list file on Debian-based systems. Ensure the 'signed-by' path correctly points to the installed GPG key. ```bash deb [signed-by=/etc/apt/keyrings/ripple.gpg] https://repos.ripple.com/repos/rippled-deb jammy stable ``` -------------------------------- ### Set up XRPL Client and Initialize Wallet Source: https://xrpl.org/docs/tutorials/sample-apps/credential-issuing-service-in-javascript.md Sets up the XRPL client connection and instantiates a Wallet object by calling initWallet(). This is the initial setup within the main function. ```javascript async function main() { const client = new Client(XRPL_SERVER); await client.connect(); const wallet = await initWallet(); ``` -------------------------------- ### Set up JavaScript Client and Account Source: https://xrpl.org/docs/tutorials/payments/send-a-conditional-escrow.md Connect to the XRP Ledger testnet, fund a new wallet from the faucet, and obtain a destination address for the escrow. ```javascript import xrpl from 'xrpl' import { PreimageSha256 } from 'five-bells-condition' import { randomBytes } from 'crypto' const client = new xrpl.Client('wss://s.altnet.rippletest.net:51233') await client.connect() console.log('Funding new wallet from faucet...') const { wallet } = await client.fundWallet() // const destination_address = 'rPT1Sjq2YGrBMTttX4GZHjKu9dyfzbpAYe' // Testnet faucet // Alternative: Get another account to send the escrow to. Use this if you get // a tecDIR_FULL error trying to create escrows to the Testnet faucet. const destination_address = (await client.fundWallet()).wallet.address ``` -------------------------------- ### Set up rippledmon instance Source: https://xrpl.org/docs/infrastructure/configuration/configure-statsd.md Clone the rippledmon repository and start the Docker Compose service to set up an instance for receiving StatsD metrics. Ensure Docker and Docker Compose are installed. ```bash git clone https://github.com/ripple/rippledmon.git cd rippledmon docker-compose up ``` -------------------------------- ### Set Up Python Client and Accounts Source: https://xrpl.org/docs/tutorials/defi/lending/use-the-lending-protocol/pay-off-a-loan.md Import necessary libraries and instantiate an XRPL client for Python. This setup includes modules for client connection, transaction models, and wallet handling. ```python # IMPORTANT: This example pays off an existing loan and then deletes it. import json import os import subprocess import sys from xrpl.clients import JsonRpcClient from xrpl.models import LedgerEntry, LoanDelete, LoanPay, MPTAmount from xrpl.transaction import submit_and_wait from xrpl.wallet import Wallet ``` -------------------------------- ### Run rippled Server Info Commandline Source: https://xrpl.org/docs/tutorials/get-started/get-started-http-websocket-apis.md Use this command to get information about the rippled server. Ensure the configuration file path is correct for your setup. This commandline interface is for administrative purposes and may change without notice. ```bash rippled --conf=/etc/opt/ripple/rippled.cfg server_info ```