欢迎阅读 KasWare 的集成文档。本文档用于学习如何将 KasWare 钱包与您的应用程序集成。
请注意:如果将来某天 kaspa 核心团队正式发布相关标准,则集成 API 可能会被修改。
入门
首先,在您的开发机器上安装 KasWare Wallet。安装并运行 KasWare Wallet 后,您应该会发现新浏览器选项卡在开发人员控制台中有一个可用的 window.kasware 对象。这就是您的网站与 KasWare Wallet 交互的方式。
浏览器检测
要验证浏览器是否正在运行 KasWare Wallet,请将以下代码片段复制并粘贴到 Web 浏览器的开发者控制台中:
复制
if (typeof window.kasware !== 'undefined') { console.log('KasWare Wallet is installed!');}
您可以在此处查看 window.kasware 对象的完整 API。
连接到 KasWare 钱包
“连接”或“登录” KasWare 钱包实际上意味着“访问用户的 Kaspa 帐户”。
您只应在响应直接用户操作(例如单击按钮)时发起连接请求。在连接请求待处理时,您应始终禁用“连接”按钮。您绝不应在页面加载时发起连接请求。
我们建议您提供一个按钮,允许用户将 KasWare Wallet 连接到您的 dapp。单击此按钮应调用以下方法:
复制
kasware.requestAccounts()
演示
方法
请求账户
复制
kasware.requestAccounts()
连接当前账户。
参数
没有任何
返回
Promise 返回string[]:当前账户的地址。
例子
复制
try { let accounts = await window.kasware.requestAccounts();
console.log('connect success', accounts);
} catch (e) {
console.log('connect failed');
}
> connect success ['kaspa:qzhkxxaully72gk23lyn7z3d9tdzdpw48ujsavrwlulekyk7pkxzzxj26hcsq']
获取账户信息
复制
kasware.getAccounts()
获取当前账户地址
参数
没有任何
返回
例子
复制
try { let res = await window.kasware.getAccounts();
console.log(res)} catch (e) {
console.log(e);
}
> ["kaspa:qzhkxxaully72gk23lyn7z3d9tdzdpw48ujsavrwlulekyk7pkxzzxj26hcsq"]
获取网络
复制
kasware.getNetwork()
获取网络
参数
没有任何
返回
承诺-字符串:网络。livenet 和 testnet
例子
复制
try {
let res = await window.kasware.getNetwork();
console.log(res)} catch (e) {
console.log(e);
}
> 0
交换网络
复制
kasware.switchNetwork(network)
交换网络
参数
网络- 字符串:网络。mainnet/testnet/devnet
返回
没有任何
例子
复制
try {
let res = await window.kasware.switchNetwork("mainnet");
console.log(res)
} catch (e) {
console.log(e);
}
> 0
获取公钥
复制
kasware.getPublicKey()
获取当前账户的公钥。
参数
没有任何
返回
例子
复制
try { let res = await window.kasware.getPublicKey();
console.log(res)} catch (e)
{
console.log(e);
}
> 03cbaedc26f03fd3ba02fc936f338e980c9e2172c5e23128877ed46827e935296f
获取余额
复制
kasware.getBalance()
获取比特币余额
参数
没有任何
返回
承诺-目标:
已确认数量:已确认的 Satoshis
未确认数字:未确认的 Satoshis
总数:总数
例子
复制
try { let res = await window.kasware.getBalance();
console.log(res)
} catch (e) {
console.log(e);
}
> {
"confirmed":0,
"unconfirmed":100000,
"total":100000
}
发送Kaspa
复制
kasware.sendKaspa(toAddress, satoshis, options)
发送BTC
参数
toAddress - 字符串:要发送的地址
satoshis - 数字:要发送的 satoshis
选项-对象:(可选)
返回
例子
复制
try {
let txid = await window.kasware.sendKaspa("kaspa:qzhkxxaully72gk23lyn7z3d9tdzdpw48ujsavrwlulekyk7pkxzzxj26hcsq",1000);
console.log(txid)} catch (e) {
console.log(e);
}
签到留言
复制
kasware.signMessage(msg[, type])
签署讯息
参数
msg - 字符串:要签名的字符串
类型 - 字符串:(可选)“ecdsa”|“bip322-simple”。默认为“ecdsa”
返回
例子
复制
// sign by ecdsatry {
let res = await window.kasware.signMessage("abcdefghijk123456789");
console.log(res)
} catch (e) {
console.log(e);
}
> G+LrYa7T5dUMDgQduAErw+i6ebK4GqTXYVWIDM+snYk7Yc6LdPitmaqM6j+iJOeID1CsMXOJFpVopvPiHBdulkE=
// verify by ecdsa
import { verifyMessage } from "@kasware/wallet-utils";
const pubkey = "026887958bcc4cb6f8c04ea49260f0d10e312c41baf485252953b14724db552aac";const message = "abcdefghijk123456789";const signature = "G+LrYa7T5dUMDgQduAErw+i6ebK4GqTXYVWIDM+snYk7Yc6LdPitmaqM6j+iJOeID1CsMXOJFpVopvPiHBdulkE=";
const result = verifyMessage(pubkey,message,signature);
console.log(result);
> true
// sign by bip322-simpletry {
let res = await window.kasware.signMessage("abcdefghijk123456789","bip322-simple");
console.log(res)
} catch (e) {
console.log(e);
}
> AkcwRAIgeHUcjr0jODaR7GMM8cenWnIj0MYdGmmrpGyMoryNSkgCICzVXWrLIKKp5cFtaCTErY7FGNXTFe6kuEofl4G+Vi5wASECaIeVi8xMtvjATqSSYPDRDjEsQbr0hSUpU7FHJNtVKqw=
推送
复制
kasware.pushTx(options)
推送交易
参数
选项-对象:
rawtx-字符串:要推送的rawtx
返回
例子
复制
try {
let txid = await window.kasware.pushTx({ rawtx:"0200000000010135bd7d..." });
console.log(txid)} catch (e) {
console.log(e);
}
活动
账户已更改
复制
kasware.on('accountsChanged', handler: (accounts: Array<string>) => void);
kasware.removeListener('accountsChanged',
handler: (accounts: Array<string>) => void);
每当用户的公开账户地址发生变化时,就会发出accountsChanged消息。
网络已更改
复制
kasware.on('networkChanged', handler: (network: string) => void);
kasware.removeListener('networkChanged', handler: (network: string) => void);
每当用户的网络发生变化时,就会发出 networkChanged 消息。