Skill flagged — suspicious patterns detected

ClawHub Security flagged this skill as suspicious. Review the scan results before using.

Kaspa Wallet

Simple wallet for Kaspa blockchain. Send KAS, check balances, generate payment URIs. Self-custody CLI wallet with JSON output for automation.

MIT-0 · Free to use, modify, and redistribute. No attribution required.
2 · 2.4k · 2 current installs · 2 all-time installs
MIT-0
Security Scan
VirusTotalVirusTotal
Suspicious
View report →
OpenClawOpenClaw
Suspicious
medium confidence
!
Purpose & Capability
The skill claims to be a Kaspa wallet and the code implements wallet functionality. However the registry metadata lists no required environment variables, while SKILL.md and the code require one of KASPA_PRIVATE_KEY or KASPA_MNEMONIC — a significant omission in the declared requirements.
Instruction Scope
The SKILL.md and scripts limit actions to wallet operations (balance, send, info, fees, URI generation) and instruct installing dependencies via install.py. The installer writes an install.log and creates a .venv under the skill directory. The runtime will read environment variables (KASPA_PRIVATE_KEY, KASPA_MNEMONIC, KASPA_RPC_URL, KASPA_NETWORK, KASPA_PYTHON) — all relevant to the wallet, but noted because these are sensitive and were not declared in the registry metadata.
Install Mechanism
No registry install spec, but an included install.py bootstraps a Python venv and may download get-pip.py from bootstrap.pypa.io and install the 'kaspa' package from PyPI. This is a typical Python install flow but introduces supply‑chain risk (unreviewed packages from PyPI). The installer and scripts do not use obscure or shortener URLs.
!
Credentials
The tool legitimately needs a private key or mnemonic for self‑custody, but the skill registry metadata did not declare these required credentials. Storing private keys in environment variables is expected for a CLI wallet but is high‑sensitivity — users must understand the risk. The code also logs system/installation info to install.log (executable path, platform), which is benign but may disclose environment details.
Persistence & Privilege
always is false and the skill does not request system‑wide privileges. Installation creates a local .venv, .pycache, and install.log under the skill directory — normal for this type of project and limited to the skill's directory.
What to consider before installing
This package appears to implement a Kaspa CLI wallet and will ask you to provide a private key or mnemonic (KASPA_PRIVATE_KEY or KASPA_MNEMONIC) and will install Python packages from PyPI. Before installing: - Treat the registry metadata mismatch as a red flag: the skill does require sensitive env vars even though the registry did not list them. Don't trust metadata alone. - Only use this with testnet or small amounts until you can fully audit the code and the 'kaspa' PyPI package it installs. Installing will pull code from the network (get-pip.py and PyPI), which is a supply‑chain risk. - Prefer generating and signing transactions with an offline or hardware wallet. If you must use an env var private key, isolate the environment (dedicated VM/container) and remove the key after use. - Inspect install.log and the installed packages before running with real funds. Consider pinning package versions and reviewing the 'kaspa' package maintainers. - If you want higher assurance, ask the publisher for a source repository, package hashes, or a signed release; absence of a homepage/source (metadata shows 'unknown') reduces confidence. If you want, I can: (a) scan the remaining truncated parts of scripts/kaswallet.py and install.py for specific suspicious calls, (b) list exact network endpoints the code will contact, or (c) suggest safer deployment steps (containerize, offline key handling).

Like a lobster shell, security has layers — review code before you run it.

Current versionv1.0.11
Download zip
latestvk97957jv2psjve0x9vrhk70zd180r500

License

MIT-0
Free to use, modify, and redistribute. No attribution required.

SKILL.md

Kaspa Wallet Skill

Simple self-custody wallet for Kaspa blockchain.

Overview

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

Features

FeatureDescription
Send KASTransfer KAS to any Kaspa address
Balance CheckCheck balance of any address
Payment URIsGenerate kaspa: payment request URIs
Fee EstimatesGet current network fee tiers
Network InfoCheck node sync status and blocks
Wallet GenerationGenerate new mnemonic phrases

Quick Start

Installation

python3 install.py

Requirements: Python 3.8+ with pip. Works on macOS, Linux, Windows.

Troubleshooting install:

  • If pip fails: pip install kaspa manually, or try KASPA_PYTHON=python3.12 python3 install.py
  • If venv missing: sudo apt install python3-venv (Ubuntu/Debian)
  • To reinstall: rm -rf .venv && python3 install.py

CLI Usage

# 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

Payment URI Format

Architecture

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

Configuration

# 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)

Core Functions

Check Balance

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

Output:

{"address": "kaspa:q...", "balance": "1.5", "sompi": "150000000", "network": "mainnet"}

Send KAS

./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

Output (success):

{"status": "sent", "txid": "abc123...", "from": "kaspa:q...", "to": "kaspa:q...", "amount": "0.5", "fee": "0.0002"}

Output (error):

{"error": "Storage mass exceeds maximum", "errorCode": "STORAGE_MASS_EXCEEDED", "hint": "...", "action": "consolidate_utxos"}

Network Info

./kaswallet.sh info

Output:

{"network": "mainnet", "url": "wss://...", "blocks": 12345678, "synced": true, "version": "1.0.0"}

Fee Estimates

./kaswallet.sh fees

Output:

{"network": "mainnet", "low": {"feerate": 1.0, "estimatedSeconds": 60}, "economic": {...}, "priority": {...}}

Generate New Wallet

./kaswallet.sh generate-mnemonic

Output:

{"mnemonic": "word1 word2 word3 ... word24"}

Payment URI

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

Error Handling

ErrorCauseSolution
STORAGE_MASS_EXCEEDEDAmount too small for current UTXOsSend max to yourself first to consolidate
NO_UTXOSNo spendable outputsWait for confirmations or fund wallet
INSUFFICIENT_FUNDSBalance too lowCheck balance, reduce amount
RPC_TIMEOUTNetwork slowRetry or increase timeout
NO_CREDENTIALSMissing wallet keySet KASPA_PRIVATE_KEY or KASPA_MNEMONIC
SDK_NOT_INSTALLEDKaspa SDK missingRun python3 install.py

Payment Flow

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

Common Workflows

Consolidate UTXOs (Fix Storage Mass Error)

When sending fails with STORAGE_MASS_EXCEEDED:

# 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

Check Transaction Status

After sending, use the txid to verify on a block explorer:

  • Mainnet: https://explorer.kaspa.org/txs/{txid}
  • Testnet: https://explorer-tn10.kaspa.org/txs/{txid}

Switch Networks

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

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

Units

  • KAS: Human-readable unit (e.g., 1.5 KAS)
  • sompi: Smallest unit, 1 KAS = 100,000,000 sompi

All command inputs accept KAS. Outputs include both KAS and sompi where relevant.

Security Notes

  • Private keys: Never expose in logs or error messages
  • Mnemonics: Passed via environment variables only
  • No disk storage: Wallet does not store credentials
  • Fresh connections: Each command establishes new RPC connection
  • Address format: Validate Kaspa addresses (kaspa:q... format)

Comparison with Traditional Wallets

FeatureTraditional WalletKaspa Wallet CLI
SetupGUI installpython3 install.py
InterfaceDesktop appCLI + JSON output
AutomationLimitedFull (JSON parsing)
CustodyVariesSelf-custody
Agent-friendlyNoYes

Roadmap

  • QR code generation for addresses
  • Payment links
  • Transaction history
  • Multi-address support
  • Batch payments
  • Telegram bot integration

Resources

Files

6 total
Select a file
Select a file to preview.

Comments

Loading comments…