* update definitions.json * add AMMInstanceCreate * renamed LPTokens to LPToken in definitions.json * update HISTORY.md * add amm_info RPC command * add AMMDeposit * use null check for missing fields * add AMMWithdraw * add AMMVote * fix lint error * add max trading fee check to AMMVote * refactor MAX_TRADING_FEE to be in one place * add AMMBid * add AuthAccount interface to AMMBid * refactor tests * add AMMID to AMMInfoResponse * update amm_info docstrings * fix EPrice type to be Amount * update EPrice validation error message and add missing tests * update definitions to fix AMM in LEDGER_ENTRY_TYPES * add missing test case Asset1In and Asset2In valid * add missing test case Asset1Out and Asset2Out valid * add negative FeeVal check * update HISTORY.md to specify XLS-30 * update wording on AMMDeposit & AMMWithdraw validation errors * add negative TradingFee check * fix ammInfo response * add AMMID as optional param in ammInfo response * fix EPrice validation checks in AMMDeposit & AMMWithdraw * add VoteSlots as optional param in AMMInfoResponse * update VoteEntry interface * fix deposit and withdraw tests * fix AMMBid ValidationError * update definitions.json with different AuthAccounts number * Change amm_info asset parameters to Currency type * API name changes with updated definitions.json * rename amm_info param asset1 -> asset * fix typo * change AMM_MAX_TRADING_FEE to 1% * Use Asset/Asset2 instead of AMMID for Deposit/Withdraw/Bid/Vote * add Deposit/Withdraw flags * rename FeeVal -> TradingFee in VoteEntry * rename MinBidPrice -> BidMin and MaxBidPrice -> BidMax * update definitions to change Asset & Asset2 nth values to 3 & 4 * update definitions * add Issue type and tests for Asset/Asset2 * remove AMMID from amm_info and use Issue type * update amm_info fields * fix lint errors * update unit tests * add AMM codec-fixtures * update Issue type * add one asset and withdraw all tests * refactor amm_info response fields to match AMMDevnet * update definitions.json with refactored error codes * update ammInfo.ts response model * remove invalid fields from ammInfo.ts response model * update time_interval description * rename test model names and fix lint errors * add Owner Reserve Fee for AMMCreate transaction * add missing asset_frozen field * replace Issue with IssuedCurrency * refactor: convert flags to number * update asset pair to use Currency type * refactor isIssue to isCurrency * add AMM ledger entry object, lsfAMM flag, amm fields to LedgerEntryRequest * update definitions.json * WIP defintions * update codec-fixtures * fix definitions test * update DiscountedFee definition * update definitions * update codec-fixtures * update definitions * update unit tests * update amm_info response * sort imports/exports * update jsdoc * update amm_info jsdoc * update jsdoc * convert caution to all caps * add validation for AuthAccounts * refactor and export interfaces * use Currency type * update definitions * add AMMDelete * rename Issue to Currency in error message * mark asset frozen as optional fields * refactor isAuthAccounts * add AMMDelete jsdoc * rename to validateAuthAccounts * fix typo * fix typo in unit test --------- Co-authored-by: Caleb Kniffen <ckniffen@ripple.com>
xrpl.js
A JavaScript/TypeScript library for interacting with the XRP Ledger
This is the recommended library for integrating a JavaScript/TypeScript app with the XRP Ledger, especially if you intend to use advanced functionality such as IOUs, payment paths, the decentralized exchange, account settings, payment channels, escrows, multi-signing, and more.
➡️ Reference Documentation
See the full reference documentation for all classes, methods, and utilities.
Features
- Managing keys & creating test credentials (
Wallet&&Client.fundWallet()) - Submitting transactions to the XRP Ledger (
Client.submit(...)& transaction types) - Sending requests to observe the ledger (
Client.request(...)using public API methods) - Subscribing to changes in the ledger (Ex. ledger, transactions, & more...)
- Parsing ledger data into more convenient formats (
xrpToDropsandrippleTimeToISOTime)
All of which works in Node.js (tested for v14+) & web browsers (tested for Chrome).
Quickstart
Requirements
- Node.js v16 is recommended. We also support v14, v18 and v20. Other versions may work but are not frequently tested.
Installing xrpl.js
In an existing project (with package.json), install xrpl.js with:
$ npm install --save xrpl
Or with yarn:
$ yarn add xrpl
Example usage:
const xrpl = require("xrpl");
async function main() {
const client = new xrpl.Client("wss://s.altnet.rippletest.net:51233");
await client.connect();
const response = await client.request({
command: "account_info",
account: "rPT1Sjq2YGrBMTttX4GZHjKu9dyfzbpAYe",
ledger_index: "validated",
});
console.log(response);
client.disconnect();
}
main();
For a more in-depth example, you can copy/forking this Code Sandbox template!
https://codesandbox.io/s/xrpl-intro-pxgdjr?file=/src/App.js
It goes through:
- Creating a new test account
- Sending a payment transaction
- And sending requests to see your account balance!
Case by Case Setup Steps
If you're using xrpl.js with React or Deno, you'll need to do a couple extra steps to set it up:
- Using xrpl.js with a CDN
- Using xrpl.js with
create-react-app - Using xrpl.js with
React Native - Using xrpl.js with
Vite React - Using xrpl.js with
Deno
Documentation
As you develop with xrpl.js, there's two sites you'll use extensively:
- xrpl.org is the primary source for:
- How the ledger works (See Concepts)
- What kinds of transactions there are (Transaction Types)
- Requests you can send (Public API Methods)
- Tutorials for interacting with various features of the ledger (Tutorials)
- js.xrpl.org has the reference docs for this library
Mailing Lists
If you want to hear when we release new versions of xrpl.js, you can join our low-traffic mailing list (About 1 email per week):
If you're using the XRP Ledger in production, you should run a rippled server and subscribe to the ripple-server mailing list as well.
Asking for help
One of the best spots to ask for help is in the XRPL Developer Discord - There's a channel for xrpl.js where other community members can help you figure out how to accomplish your goals.
You are also welcome to create an issue here and we'll do our best to respond within 3 days.
