无论你是准备做钱包集成、交易所对接,还是想在应用中实现去中心化支付通道,这篇 1,500 字左右的实战手册都能帮你快速上手 🔍 xrpl.js、XRP Ledger 与区块链开发。
1. 为什么选择 xrpl.js?
xrpl.js 是官方推荐的 JavaScript/TypeScript SDK,覆盖几乎所有核心特性:
- 创建与恢复钱包
- 发送跨境支付、流动挂单、发行自定义代币(IOU)
- 读取链上数据、订阅实时事件
- 构建多签、托管、支付通道、去中心化交易所(DEX)等进阶功能
一句话总结:只要想在浏览器或 Node 环境下调用 XRP Ledger,就该选 xrpl.js。
核心关键词
XRP Ledger、xrpl.js、JavaScript 钱包、去中心化交易所、支付通道、IOU 代币、区块链开发、实时订阅
2. 快速起步
2.1 环境要求
| 环境 | 最低版本 | 补充说明 |
|---|---|---|
| Node.js | 18 | 同时验证过 20 & 22;浏览器版支持 Chrome |
| 包管理器 | npm / yarn | 任选其一 |
2.2 30 秒安装
# NPM
npm install --save xrpl
# Yarn
yarn add xrpl2.3 “Hello Ledger” 代码片段
const xrpl = require('xrpl');
async function main() {
// 连接 XRPL 测试网
const client = new xrpl.Client('wss://s.altnet.rippletest.net:51233');
await client.connect();
// 查询账户信息
const info = await client.request({
command: 'account_info',
account: 'rPT1Sjq2YGrBMTttX4GZHjKu9dyfzbpAYe',
ledger_index: 'validated'
});
console.log(info);
await client.disconnect();
}
main();提示:对内网无法访问外网的情况,可以在本地 运行 rippled 节点 并切换至本地域名即可。
3. 深度特性拆解
3.1 Wallet 生命周期
生成
const { Wallet } = require('xrpl'); const wallet = Wallet.generate(); console.log(wallet.address, wallet.seed);助记词恢复
const wallet = Wallet.fromMnemonic('机组 坚持 类似 ...');免费测试网 faucet
const { Client } = require('xrpl'); const client = new Client('wss://s.altnet.rippletest.net:51233'); await client.connect(); const { wallet } = await client.fundWallet();
3.2 交易广播:5 种最常用类型
| 场景示例 | 交易类型 | 关键字段说明 |
|---|---|---|
| 基础转账 | Payment | amount、destination |
| 挂单 | OfferCreate | takerGets、takerPays,可搭配取消 OfferCancel |
| 发行代币 IOU | TrustSet | limitAmount(授信额度) |
| 创建支付通道 | PaymentChannelCreate | amount、destination、settleDelay |
| 多签 | SignerListSet | SignerEntries、SignerQuorum |
交易耗时平均 3–5 秒确认;测试网费用为 0 XRPL 主网极低。
3.3 实时数据订阅
await client.request({
command: 'subscribe',
streams: ['ledger']
}).then(() => {
client.on('ledgerClosed', (data) => {
console.log(`新区快高度:${data.ledger_index}`);
});
});使用场景:
- 余额变化提醒
- DEX 行情监听
- 节点健康监控
3.4 便利工具函数
xrpToDrops(10)→10000000(1 XRP = 1,000,000 drops)rippleTimeToISOTime(rippleTimestamp)→2025-06-18T08:30:00Z
避免手工换算的绞肉机时间!
4. 场景化部署
4.1 create-react-app
在项目根目录安装 xrpl.js 后,仅需在 webpack 里追加 crypto-browserify、stream-browserify、buffer,即可无坑运行热重载开发。
4.2 React Native
- 额外依赖:
react-native-crypto,react-native-randombytes - 路径提示:Metro 需加
resolver.extraNodeModules映射,否则会出现 “utilmodule not found” 的报错。
4.3 Vite + TypeScript
Vite 以原生 ESM 著称,直接使用:import { Client } from 'xrpl',无需额外配置。
4.4 Deno
import { Client } from 'npm:xrpl@latest';
await new Client('wss://xrplcluster.com').connect();5. 进阶资源
- xrpl.org 官方文档:概念、手续费、交易返费
- js.xrpl.org API 手册:所有函数签名 & 示例
- 官方示例代码库:GitHub
xrpl-dev-portal/_code-samples
订阅新版本提醒:xrpl-announce 邮件列表(每周约 1 封)。
6. FAQ
Q1:测试网 faucet 一天能领多少 XRP?
A:每账户限制 1,000 测试 XRP,重置周期 24 小时。大额测试推荐自建 private rippled。
Q2:为什么我收到 tecUNFUNDED_PAYMENT?
A:源地址缺少足量基础准备金(2 XRP + 每个对象 0.2 XRP)。使用 account_info 检查 Balance 与 OwnerCount。
Q3:如何监听单账户变化而不过载?
A:先呼叫 account_info 拿到 account_data.Sequence,再用 subscribe accounts=[ADDRESS] 方法仅订阅指定地址。
Q4:TypeScript 类型如何获得最佳体验?
A:升级到 “xrpl ≥ 2.14” 可获得完整 .d.ts 定义;手动确认 @tsconfig/ 已包含 "strict": true。
Q5:主网节点负载高时怎样降低延迟?
A:
1) 接入负载均衡优选 WSS 节点池;
2) 打开 ConnectionTimeout > 30s;
3) 若功能只需读数据,可改为 Reporting 模式 rippled。
Q6:浏览器环境下 seed 安全吗?
A:切勿硬编码;理想做法:用户托管(浏览器本地存储 + 加密)或使用硬件钱包(Ledger Nano、Trezor)。
小结
从安装 xrpl.js 到完成一次跨链支付,只需要三步:安装 → 连接 → 签名广播。如果你正计划深挖区块链开发、钱包集成,这篇指南已经给出所有必经之路。打开编辑器,下一笔交易就从你手中诞生。