下面是一个 简单 Dash 支付应用 的完整示例,使用 Dash Platform(DAPI + DashJS)实现以下功能:
- 显示钱包余额
- 生成接收地址(二维码)
- 发送 DASH(带 InstantSend)
- 查询最新交易记录
前提条件
- Node.js 已安装(v16+)
- 一个 Dash 钱包种子短语(测试网用,不要用主网真实资金)
- 访问 Dash Testnet(测试网)
1. 初始化项目
mkdir dash-simple-app
cd dash-simple-app
npm init -y
npm install dash axios qrcode
2. 创建 app.js
// app.js
const Dash = require('dash');
const qrcode = require('qrcode');
const axios = require('axios');
const MNEMONIC = 'your 12-word testnet mnemonic here'; // 替换为你的测试网助记词
const clientOpts = {
network: 'testnet',
wallet: {
mnemonic: MNEMONIC,
unsafeOptions: {
skipSynchronizationBeforeHeight: 900000, // 加速同步(测试网)
},
},
};
const client = new Dash.Client(clientOpts);
async function startApp() {
try {
const account = await client.wallet.getAccount();
const address = account.getUnusedAddress().address;
const balance = account.getTotalBalance() / 1e8; // 转换为 DASH
console.log('Dash 简单支付应用');
console.log('='.repeat(50));
console.log(`地址: ${address}`);
console.log(`余额: ${balance} DASH`);
// 生成二维码
const qrData = await qrcode.toDataURL(address);
console.log('\n扫描二维码接收 DASH:');
console.log(qrData); // 可在浏览器中打开查看
// 发送 DASH 示例(取消注释后运行)
// await sendDash('yP...', 0.01);
// 显示最近交易
await showRecentTransactions(account);
} catch (e) {
console.error('错误:', e.message || e);
} finally {
client.disconnect();
}
}
// 发送 DASH(支持 InstantSend)
async function sendDash(toAddress, amountDash) {
const account = await client.wallet.getAccount();
const transaction = account.createTransaction({
recipient: toAddress,
satoshis: Math.floor(amountDash * 1e8),
instantSend: true, // 启用 InstantSend
});
const result = await account.broadcastTransaction(transaction);
console.log(`交易已发送!TXID: ${result}`);
}
// 显示最近 5 笔交易
async function showRecentTransactions(account) {
const identity = await client.platform.identities.get(account.getIdentityIds()[0]);
const txs = await client.getDAPIClient().core.getAddressSummary(account.getUnusedAddress().address);
console.log('\n最近交易:');
if (txs.transactions && txs.transactions.length > 0) {
txs.transactions.slice(0, 5).forEach(tx => {
const value = tx.value / 1e8;
console.log(` ${tx.txid.slice(0, 16)}... ${value > 0 ? '+' : ''}${value} DASH`);
});
} else {
console.log(' 暂无交易');
}
}
startApp();
3. 获取测试网 DASH(用于测试)
访问测试网水龙头:
输入你的地址,领取 1-5 tDASH
4. 运行应用
node app.js
示例输出:
Dash 简单支付应用
==================================================
地址: yR8sZ5vT9kL3mN8pQ2wX1cV7bN4jH6gF9d
余额: 2.5 DASH
扫描二维码接收 DASH:
data:image/png;base64,iVBORw0KGgoAAAANSUhEU...
最近交易:
2f8a9c1d4e5f6g7h... +1.0 DASH
8b3c4d5e6f7g8h9i... -0.5 DASH
5. 进阶功能(可选)
| 功能 | 实现方式 |
|---|---|
| Web 界面 | 用 Express + EJS 搭建前端 |
| 保存助记词 | 加密存储到 .env 文件 |
| 监听新交易 | 使用 client.getDAPIClient().core.subscribeToAddress() |
| DashPay 联系人 | 使用 Dash Platform Names |
安全提示(生产环境)
- 不要硬编码助记词 → 使用
.env+dotenv - 使用硬件钱包 → Ledger/Trezor 集成
- 启用 InstantSend + ChainLocks
- 定期备份钱包
相关链接
- Dash 开发者文档:https://dashplatform.readme.io
- DashJS GitHub:https://github.com/dashevo/dashjs
- Testnet 浏览器:https://testnet-insight.dashevo.org
一键运行版(复制粘贴):
curl -fsSL https://raw.githubusercontent.com/dashpay/docs/master/examples/simple-wallet.js -o dash-app.js
# 编辑 MNEMONIC 后运行:
node dash-app.js
需要我为你生成 Web 版界面(HTML + JS)或 支持扫码支付 的完整前端吗?告诉我!