ClawSkills logoClawSkills

Kaspa Wallet

Kaspa 区块链的简单钱包。发送 KAS、检查余额、生成支付 URI。具有 JSON 输出功能用于自动化的自我托管 CLI 钱包。

介绍

# Kaspa Wallet Skill

适用于 Kaspa 区块链的简单自托管钱包。

## 概述

``` ┌─────────────────────────────────────────────────────────┐ │ KASPA WALLET │ ├─────────────────────────────────────────────────────────┤ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────────┐ │ │ │ Balance │ │ Send │ │ Payment URIs │ │ │ │ Check │ │ KAS │ │ Generator │ │ │ └─────────────┘ └─────────────┘ └─────────────────┘ │ │ │ │ │ │ │ └────────────────┴───────────────────┘ │ │ │ │ │ ┌──────────▼──────────┐ │ │ │ Kaspa Python SDK │ │ │ │ (wRPC Client) │ │ │ └─────────────────────┘ │ │ │ │ │ ┌───────────────┼───────────────┐ │ │ ▼ ▼ ▼ │ │ ┌─────────┐ ┌──────────┐ ┌──────────┐ │ │ │ Mainnet │ │ Testnet │ │ Custom │ │ │ │ wRPC │ │ wRPC │ │ RPC │ │ │ └─────────┘ └──────────┘ └──────────┘ │ └─────────────────────────────────────────────────────────┘ ```

## 功能

| 功能 | 描述 | |---------|-------------| | **发送 KAS** | 向任何 Kaspa 地址转账 KAS | | **余额查询** | 查询任意地址的余额 | | **支付 URI** | 生成 `kaspa:` 支付请求 URI | | **费率估算** | 获取当前网络费率等级 | | **网络信息** | 检查节点同步状态和区块 | | **钱包生成** | 生成新的助记词 |

## 快速开始

### 安装

```bash python3 install.py ```

**要求:** Python 3.8+ 及 pip。支持 macOS、Linux、Windows。

**安装故障排除:** - 如果 pip 失败:手动运行 `pip install kaspa`,或尝试 `KASPA_PYTHON=python3.12 python3 install.py` - 如果缺少 venv:`sudo apt install python3-venv` (Ubuntu/Debian) - 重新安装:`rm -rf .venv && python3 install.py`

### CLI 使用方法

```bash # Check balance ./kaswallet.sh balance ./kaswallet.sh balance kaspa:qrc8y...

# Send payment ./kaswallet.sh send kaspa:qrc8y... 0.5 ./kaswallet.sh send kaspa:qrc8y... max

# Generate payment URI ./kaswallet.sh uri kaspa:q... 1.5 "coffee payment"

# Network info ./kaswallet.sh info

# Fee estimates ./kaswallet.sh fees

# Generate new wallet ./kaswallet.sh generate-mnemonic ```

### 支付 URI 格式

## 架构

``` kaspa-wallet/ ├── SKILL.md ├── README.md ├── install.py # Auto-installer with venv ├── kaswallet.sh # CLI wrapper script ├── requirements.txt └── scripts/ └── kaswallet.py # Main wallet logic ```

## 配置

```bash # Environment variables (one required) export KASPA_PRIVATE_KEY="64-character-hex-string" # OR export KASPA_MNEMONIC="your twelve or twenty four word seed phrase"

# Optional export KASPA_NETWORK="mainnet" # mainnet (default), testnet-10 export KASPA_RPC_URL="wss://..." # Custom RPC endpoint export KASPA_RPC_CONNECT_TIMEOUT_MS="30000" # Connection timeout (default: 15000) ```

## 核心功能

### 查询余额

```bash ./kaswallet.sh balance # Your wallet balance ./kaswallet.sh balance kaspa:qrc8y... # Any address balance ```

**输出:** ```json {"address": "kaspa:q...", "balance": "1.5", "sompi": "150000000", "network": "mainnet"} ```

### 发送 KAS

```bash ./kaswallet.sh send <address> <amount> # Send specific amount ./kaswallet.sh send <address> max # Send entire balance ./kaswallet.sh send <address> <amount> priority # Priority fee tier ```

**输出(成功):** ```json {"status": "sent", "txid": "abc123...", "from": "kaspa:q...", "to": "kaspa:q...", "amount": "0.5", "fee": "0.0002"} ```

**输出(错误):** ```json {"error": "Storage mass exceeds maximum", "errorCode": "STORAGE_MASS_EXCEEDED", "hint": "...", "action": "consolidate_utxos"} ```

### 网络信息

```bash ./kaswallet.sh info ```

**输出:** ```json {"network": "mainnet", "url": "wss://...", "blocks": 12345678, "synced": true, "version": "1.0.0"} ```

### 费率估算

```bash ./kaswallet.sh fees ```

**输出:** ```json {"network": "mainnet", "low": {"feerate": 1.0, "estimatedSeconds": 60}, "economic": {...}, "priority": {...}} ```

### 生成新钱包

```bash ./kaswallet.sh generate-mnemonic ```

**输出:** ```json {"mnemonic": "word1 word2 word3 ... word24"} ```

### 支付 URI

```bash ./kaswallet.sh uri # Your address ./kaswallet.sh uri kaspa:q... 1.5 "payment" # With amount and message ```

## 错误处理

| 错误 | 原因 | 解决方案 | |-------|-------|----------| | `STORAGE_MASS_EXCEEDED` | 金额对于当前 UTXO 来说太小 | 先向自己发送 `max` 以合并 | | `NO_UTXOS` | 没有可用的输出 | 等待确认或向钱包充值 | | `INSUFFICIENT_FUNDS` | 余额过低 | 检查余额,减少金额 | | `RPC_TIMEOUT` | 网络缓慢 | 重试或增加超时时间 | | `NO_CREDENTIALS` | 缺少钱包密钥 | 设置 KASPA_PRIVATE_KEY 或 KASPA_MNEMONIC | | `SDK_NOT_INSTALLED` | 缺少 Kaspa SDK | 运行 `python3 install.py` |

## 支付流程

``` ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ Sender │ │ Kaspa Wallet│ │ Recipient │ └──────┬──────┘ └──────┬──────┘ └──────┬──────┘ │ │ │ │ 1. Initiate │ │ │──────────────────▶│ │ │ │ │ │ │ 2. Execute │ │ │ KAS Transfer │ │ │─────────────────▶│ │ │ │ │ │ 3. Confirm │ │ │◀──────────────────│ │ 4. Success │ │ │◀──────────────────│ │ │ │ │ ```

## 常见工作流程

### 合并 UTXO(修复存储质量错误)

当发送失败并提示 `STORAGE_MASS_EXCEEDED` 时:

```bash # 1. Get your address ./kaswallet.sh balance # Returns: {"address": "kaspa:qYOUR_ADDRESS...", ...}

# 2. Send max to yourself (consolidates UTXOs) ./kaswallet.sh send kaspa:qYOUR_ADDRESS... max

# 3. Now send the original amount (will work) ./kaswallet.sh send kaspa:qRECIPIENT... 0.5 ```

### 检查交易状态

发送后,使用 `txid` 在区块浏览器上验证: - 主网:`https://explorer.kaspa.org/txs/{txid}` - 测试网:`https://explorer-tn10.kaspa.org/txs/{txid}`

### 切换网络

```bash # Testnet export KASPA_NETWORK="testnet-10" ./kaswallet.sh info

# Back to mainnet export KASPA_NETWORK="mainnet" ./kaswallet.sh info ```

## 单位

- **KAS**:人类可读单位(例如 1.5 KAS) - **sompi**:最小单位,1 KAS = 100,000,000 sompi

所有命令输入均接受 KAS。输出在相关时会同时包含 KAS 和 sompi。

## 安全注意事项

- **私钥**:切勿在日志或错误消息中暴露 - **助记词**:仅通过环境变量传递 - **无磁盘存储**:钱包不存储凭据 - **新建连接**:每个命令建立新的 RPC 连接 - **地址格式**:验证 Kaspa 地址(`kaspa:q...` 格式)

## 与传统钱包的比较

| 功能 | 传统钱包 | Kaspa Wallet CLI | |---------|-------------------|------------------| | 设置 | GUI 安装 | `python3 install.py` | | 界面 | 桌面应用 | CLI + JSON 输出 | | 自动化 | 有限 | 完全(JSON 解析) | | 托管 | 各不相同 | 自托管 | | Agent 友好 | 否 | 是 |

## 路线图

- [ ] 地址二维码生成 - [ ] 支付链接 - [ ] 交易历史 - [ ] 多地址支持 - [ ] 批量支付 - [ ] Telegram 机器人集成

## 资源

- [Kaspa 文档](https://docs.kaspa.org/) - [Kaspa 浏览器](https://explorer.kaspa.org/) - [kaspa-py SDK](https://github.com/aspect-build/kaspa-py)

更多产品