Kaspa钱包框架(go版)
Kaspa钱包框架
Kaspa 钱包为Kaspa 网络实现钱包功能
请注意:该项目正在大力开发中 Kaspa钱包使用以下模块: kaspa-grpc - 提供 gRPC 绑定 kaspa-grpc-node - 服务器端的 gRPC 传输(NodeJs) kaspa-grpc-web - 客户端(浏览器)的 gRPC 传输 kaspacore-lib - Kaspa UTXO 和交易数据结构 基于 Kaspa 钱包框架构建的应用程序: 卡斯帕水龙头- 卡斯帕水龙头网站 kaspa-wallet-cli - 命令行钱包 KDX - Kaspa桌面钱包 请注意:所有 Kaspa 应用程序和库都正在大力开发中 在使用 Kaspa 钱包之前,您需要初始化框架。框架初始化加载各种依赖项,例如底层事务加密中使用的模块 网络类型由地址前缀标识: 可以使用两个静态函数创建钱包类: 钱包创建函数接受以下配置对象: 以下选项很重要: 从助记符创建: 使用动态生成的助记词创建新的钱包实例: 从加密助记词恢复: Wallet 类包含一个集成记录器,可以设置为以下级别之一: 该功能 当启用监控功能时,钱包将保持与钱包 UTXO 条目和余额的连接 该函数接受 失败时, 钱包保留两种类型的余额: 可用- 余额包含可供使用的 KAS,由区块成熟度蓝色分数超过 10 的 UTXO 记录组成。 待处理- 余额包含新收到的 UTXO 区块到期时间小于 10 的交易。每个 UTXO 到期时,余额都会从待处理状态重新定位为可用状态。 Wallet 类发出以下事件:成分
kaspad
Kaspa钱包框架
secp256k1-wasm
。blake2b-wasm
const { Wallet, initKaspaFramework } = require('@kaspa/wallet');const { RPC } = require('@kaspa/grpc-node');(async () => {
await initKaspaFramework();
...})();
创建钱包
kaspa
(主网)kaspatest
(测试网)kaspadev
(开发网)kaspasim
(模拟网)static fromMnemonic(
seedPhrase: string,
networkOptions: NetworkOptions,
options: WalletOptions = {}): Wallet { }static async import(
password: string,
encryptedMnemonic: string,
networkOptions: NetworkOptions,
options: WalletOptions = {}): Promise <Wallet> { }
export interface WalletOptions{
skipSyncBalance?:boolean; // do not perform balance sync
addressDiscoveryExtent?:number; // address derivation scan (default 64)
syncOnce?:boolean; // 'sync-and-exit' (true) or 'monitoring' mode
logLevel?:string; // wallet log level
disableAddressDerivation?:boolean; // disable address derivation and discovery}export interface NetworkOptions{
network:Network; // network: kaspa, kaspatest, kaspadev, kaspasim
rpc?:IRPC; // gRPC interface (must be bound to transport before use)}
addressDiscoveryExtent
- 从上次已知使用的地址向前扫描的 HD 地址派生数syncOnce
- 允许暂时启动钱包,而不启动监控服务disableAddressDerivation
- 以单地址模式启动钱包,接收地址和找零地址始终是私钥生成的第一个接收地址。const network = "kaspatest";const { port } = Wallet.networkTypes[kaspatest].port; // default port for testnetconst rpc = new RPC({ clientConfig:{ host : '127.0.0.1:'+port } });Wallet.fromMnemonic(
"user mnemonic string",
{ network, rpc },
{disableAddressDerivation:true});
const wallet = new Wallet(null, null, {network, rpc});const encryptedMnemonic = await wallet.export(cmd.password);console.log('mnemonic:',wallet.mnemonic);console.log('encrypted mnemonic:',encryptedMnemonic);
const password = "user password";const encryptedMnemonic = "previously encrypted mnemonic";let wallet = await Wallet.import(password, encryptedMnemonic, { network, rpc })
日志记录和调试
error
、warn
、info
、verbose
、debug
。默认日志级别为info
.您可以将日志级别设置为verbose
查看内部钱包数据处理活动。WalletOptions
钱包日志级别可以作为(如上所述)的一部分提供或在运行时设置,如下所示:wallet.setLogLevel('verbose');
同步钱包
Wallet::sync(once?:boolean)
可用于进行钱包同步。钱包同步将连接到kaspad
并扫描可用的 UTXO 条目以查找钱包地址,更新钱包余额,如果once
为 true,则退出,如果once
为 false,则启动钱包监控服务。kaspad
,并动态更新钱包 UTXO 条目和余额。wallet.sync()
- 以监控模式启动钱包wallet.sync(true)
- 执行单次同步发送交易
submitTransaction()
函数可用于在 Kaspa 网络上创建交易:async submitTransaction(txParamsArg: TxSend): Promise < TxResp | null > {
// ...}
TxSend
输入对象并返回一个Promise<TxResp>
对象:export interface TxSend {
toAddr: string;
amount: number;
fee: number;
changeAddrOverride? : string;
networkFeeMax?:number;}
toAddr
- 目的地地址amount
- 以基本单位 (sompis) 表示的 KAS 数量fee
- 交易优先费changeAddrOverride
-(可选)允许您为找零交易提供自己的地址networkFeeMax
-(可选)允许您设置自动网络(数据存储)费用计算的上限。 Kaspa Wallet会根据交易规模自动计算适当的费用并添加到交易中。如果该属性被省略或设置为零,则此功能将被禁用。export interface TxResp {
txid: string;
rpctx?: string; // reserved}
txid
- 生成的交易IDtry {
let response = await this.wallet.submitTransaction({
address, // destination address
amount, // amount in base units
fee, // user fees
});
if(!response)
console.log('general error'); // if kaspad returns null (should never occur)
else
console.log('success:', txid);} catch(ex) {
console.log('error:',ex.toString());}
submitTransaction()
拒绝并显示错误,指出失败的原因。钱包余额
Wallet::balance
是一个包含以下属性的对象,这些属性在钱包操作期间更新:wallet.balance = {
available: 5150000000000,
pending: 247500000000,
total: 5397500000000}
钱包活动
Wallet::on(subject, (data) => { ... })
允许事件处理程序注册。与 NodeJ 类似,EventEmitter
您可以通过提供原始回调来取消注册事件,Wallet::removeEventListener(subject, handler)
如下所示:const balanceHandler = (balance)=>{ console.log(balance); }wallet.on('balance-update', balanceHandler);wallet.removeEventListener('balance-update', balanceHandler);
api-online
- gPRC API上线api-offline
- gRPC API 离线sync-start
- 钱包同步开始(每次 gRPC API 连接或重新连接时发生)sync-finish
- 钱包同步完成ready
- 钱包已准备好使用(同步完成后发送,事件数据包含余额对象)blue-score-changed
- 表示Kaspa蓝色分数变化(新区块生成)utxo-change
- 当UTXO添加到钱包UTXO集中或从钱包UTXO集中删除时发出信号balance-update
- 表示钱包余额变化(事件数据包含余额对象)
感动 | 同情 | 无聊 | 愤怒 | 搞笑 | 难过 | 高兴 | 路过 |
相关文章
-
没有相关内容