Kaspa Development
Overview
This skill provides comprehensive support for Kaspa blockchain development across multiple programming languages and use cases. Whether you're building a simple wallet integration, a full dApp, a block explorer, or working with KRC20 tokens, this skill provides the patterns, SDK references, and boilerplate code you need.
Quick Start
Choose Your SDK
Kaspa provides official SDKs for multiple languages:
- - JavaScript/TypeScript:
kaspa-wasm - WebAssembly-based SDK for browser and Node.js - Rust:
kaspa-rpc-client and kaspa-wallet-core - Native Rust SDK - Go:
github.com/kaspanet/kaspad - Official Go implementation - Python: Community SDKs available via PyPI
- Motoko:
kaspa package on Mops for Internet Computer integration
Common Tasks
Generate a Kaspa Address
JavaScript/TypeScript:
CODEBLOCK0
Rust:
CODEBLOCK1
Go:
CODEBLOCK2
Build and Broadcast a Transaction
JavaScript/TypeScript:
CODEBLOCK3
SDK References
For detailed SDK documentation and examples:
Integration Guides
Wallet Integration
For integrating Kaspa into wallets like RainbowKit, OisyWallet, or custom wallets:
See references/wallet-integration.md for:
- - Wallet connection patterns
- Transaction signing flows
- Address management
- Network switching
Node Operations
For setting up and operating Kaspa nodes:
See references/node-operations.md for:
- - Docker deployment
- Binary installation
- Building from source
- Configuration options
- RPC node setup
- Monitoring and maintenance
dApp Development
When building a Kaspa dApp:
- 1. Setup: Use the WASM SDK for browser compatibility
- Wallet Connection: Implement wallet adapter pattern
- State Management: Track balances, transactions, and UTXOs
- Transaction Building: Use UTXO selection algorithms
- Error Handling: Handle network failures and reorgs
Block Explorer
To build a block explorer:
- 1. Data Source: Use Kaspa Developer Platform API or run your own node
- Indexing: Index blocks, transactions, and addresses
- API Layer: Build REST/GraphQL API for frontend
- Frontend: Display blocks, transactions, addresses, and network stats
See API reference for available endpoints.
KRC20 Tokens
Kaspa supports KRC20 tokens (similar to ERC20 on Ethereum). For token development:
See references/krc20-tokens.md for:
- - Token contract structure
- Transfer and approval mechanisms
- Token metadata
- Integration patterns
Network Types
Kaspa has three network types:
- - Mainnet: Production network (prefix:
kaspa:) - Testnet: Testing network (prefix:
kaspatest:) - Devnet: Development network (prefix:
kaspadev:)
Always use the correct network type for your use case.
Address Formats
Kaspa uses Bech32 encoding for addresses:
- - Mainnet:
kaspa:qqkqkzjvr7zwxxmjxjkmxx (62 characters total) - Testnet: INLINECODE9
- Devnet: INLINECODE10
Scripts and Utilities
The scripts/ directory contains utility scripts:
- -
generate-address.py: Generate Kaspa addresses - INLINECODE13 : Build and sign transactions
- INLINECODE14 : Monitor address for incoming transactions
Resources
References
- - api-reference.md: Kaspa Developer Platform API documentation
- kaspa-wasm-sdk.md: JavaScript/TypeScript WASM SDK guide
- kaspa-rust-sdk.md: Rust SDK documentation
- kaspa-go-sdk.md: Go SDK documentation
- kaspa-python-sdk.md: Python SDK documentation
- krc20-tokens.md: KRC20 token standard documentation
- wallet-integration.md: Wallet integration patterns and examples
- node-operations.md: Complete guide for running Kaspa nodes
Assets
The assets/ directory contains boilerplate templates:
- -
dapp-template/: React/Next.js dApp starter - INLINECODE17 : Block explorer starter
- INLINECODE18 : Wallet adapter implementation
Best Practices
- 1. Always validate addresses before using them
- Handle UTXO selection carefully to avoid dust outputs
- Implement proper error handling for network failures
- Test on testnet before mainnet deployment
- Monitor for chain reorganizations when confirming transactions
- Use fee estimation for timely transaction confirmation
- Secure private keys - never expose them in client-side code
Getting Help
- - Documentation: https://docs.kas.fyi/
- GitHub: https://github.com/kaspanet
- Developer Platform: https://kas.fyi/
- Motoko Package: https://mops.one/kaspa
Kaspa 开发
概述
本技能为跨多种编程语言和用例的 Kaspa 区块链开发提供全面支持。无论您是在构建简单的钱包集成、完整的 dApp、区块浏览器,还是处理 KRC20 代币,本技能都能提供您所需的模式、SDK 参考和样板代码。
快速入门
选择您的 SDK
Kaspa 为多种语言提供官方 SDK:
- - JavaScript/TypeScript:kaspa-wasm - 基于 WebAssembly 的 SDK,适用于浏览器和 Node.js
- Rust:kaspa-rpc-client 和 kaspa-wallet-core - 原生 Rust SDK
- Go:github.com/kaspanet/kaspad - 官方 Go 实现
- Python:通过 PyPI 获取社区 SDK
- Motoko:Mops 上的 kaspa 包,用于互联网计算机集成
常见任务
生成 Kaspa 地址
JavaScript/TypeScript:
javascript
import { PrivateKey, NetworkType } from kaspa-wasm;
const privateKey = PrivateKey.random(NetworkType.Mainnet);
const publicKey = privateKey.toPublicKey();
const address = publicKey.toAddress(NetworkType.Mainnet);
console.log(地址:, address.toString());
console.log(私钥:, privateKey.toString());
Rust:
rust
use kaspawalletcore::keys::{PrivateKey, PublicKey};
use kaspaconsensuscore::network::NetworkType;
let private_key = PrivateKey::random(NetworkType::Mainnet);
let publickey = privatekey.topublickey();
let address = publickey.toaddress(NetworkType::Mainnet);
println!(地址:{}, address.to_string());
Go:
go
import (
github.com/kaspanet/kaspad/domain/consensus/model/externalapi
github.com/kaspanet/kaspad/util
)
privateKey, _ := util.GeneratePrivateKey()
publicKey := privateKey.PublicKey()
address, _ := util.NewAddressPublicKey(publicKey.Serialize(), util.Bech32PrefixKaspaMain)
fmt.Printf(地址:%s\n, address.String())
构建并广播交易
JavaScript/TypeScript:
javascript
import { Transaction, RpcClient, NetworkType } from kaspa-wasm;
const rpc = new RpcClient({
url: wss://api.kaspa.org,
network: NetworkType.Mainnet
});
await rpc.connect();
// 获取发送地址的 UTXO
const utxos = await rpc.getUtxosByAddresses([senderAddress]);
// 构建交易
const tx = new Transaction({
version: 0,
inputs: utxos.map(utxo => ({
previousOutpoint: utxo.outpoint,
signatureScript: , // 签名后将填充
sequence: 0,
sigOpCount: 1
})),
outputs: [{
amount: amount,
scriptPublicKey: recipientScriptPublicKey
}],
lockTime: 0,
subnetworkId: 00000000000000000000000000000000
});
// 签名交易
const signedTx = await signTransaction(tx, privateKey);
// 广播
const txId = await rpc.submitTransaction(signedTx);
console.log(交易 ID:, txId);
SDK 参考
有关详细的 SDK 文档和示例:
集成指南
钱包集成
有关将 Kaspa 集成到 RainbowKit、OisyWallet 或自定义钱包等钱包中:
参见 references/wallet-integration.md 了解:
节点操作
有关设置和运行 Kaspa 节点:
参见 references/node-operations.md 了解:
- - Docker 部署
- 二进制安装
- 从源码构建
- 配置选项
- RPC 节点设置
- 监控和维护
dApp 开发
构建 Kaspa dApp 时:
- 1. 设置:使用 WASM SDK 实现浏览器兼容性
- 钱包连接:实现钱包适配器模式
- 状态管理:跟踪余额、交易和 UTXO
- 交易构建:使用 UTXO 选择算法
- 错误处理:处理网络故障和重组
区块浏览器
构建区块浏览器:
- 1. 数据源:使用 Kaspa 开发者平台 API 或运行自己的节点
- 索引:索引区块、交易和地址
- API 层:为前端构建 REST/GraphQL API
- 前端:显示区块、交易、地址和网络统计信息
参见 API 参考了解可用端点。
KRC20 代币
Kaspa 支持 KRC20 代币(类似于以太坊上的 ERC20)。有关代币开发:
参见 references/krc20-tokens.md 了解:
网络类型
Kaspa 有三种网络类型:
- - 主网:生产网络(前缀:kaspa:)
- 测试网:测试网络(前缀:kaspatest:)
- 开发网:开发网络(前缀:kaspadev:)
始终为您的用例使用正确的网络类型。
地址格式
Kaspa 使用 Bech32 编码的地址:
- - 主网:kaspa:qqkqkzjvr7zwxxmjxjkmxx(共 62 个字符)
- 测试网:kaspatest:qqkqkzjvr7zwxxmjxjkmxx
- 开发网:kaspadev:qqkqkzjvr7zwxxmjxjkmxx
脚本和工具
scripts/ 目录包含实用脚本:
- - generate-address.py:生成 Kaspa 地址
- build-transaction.py:构建和签名交易
- monitor-address.py:监控地址的传入交易
资源
参考
- - api-reference.md:Kaspa 开发者平台 API 文档
- kaspa-wasm-sdk.md:JavaScript/TypeScript WASM SDK 指南
- kaspa-rust-sdk.md:Rust SDK 文档
- kaspa-go-sdk.md:Go SDK 文档
- kaspa-python-sdk.md:Python SDK 文档
- krc20-tokens.md:KRC20 代币标准文档
- wallet-integration.md:钱包集成模式和示例
- node-operations.md:运行 Kaspa 节点的完整指南
资产
assets/ 目录包含样板模板:
- - dapp-template/:React/Next.js dApp 启动模板
- explorer-template/:区块浏览器启动模板
- wallet-adapter/:钱包适配器实现
最佳实践
- 1. 始终验证地址后再使用
- 谨慎处理 UTXO 选择以避免粉尘输出
- 实现适当的错误处理以应对网络故障
- 在主网部署前先在测试网上测试
- 确认交易时监控链重组
- 使用费用估算以确保交易及时确认
- 保护私钥安全 - 切勿在客户端代码中暴露
获取帮助
- - 文档:https://docs.kas.fyi/
- GitHub:https://github.com/kaspanet
- 开发者平台:https://kas.fyi/
- Motoko 包:https://mops.one/kaspa