使用网络
Signet 钱包
位于 https://signet.ksana.network/ 的网页钱包和区块浏览器。连接 Unisat 或 Xverse,领取测试 KSA,走路径 B 或路径 C 发送,用 signet 比特币充值,并查看每笔操作落在了比特币的什么位置。
signet 钱包是一个网页,既是公开 signet 的钱包,也是它的区块浏览器。它不保存任何密钥:签名由你的浏览器钱包完成,页面则从一个 Ksana 节点、一个索引器和一个比特币 RPC 读取链上数据;除非你选择自己的,否则用的都是托管的服务。
页面由仓库中的 web/ 构建。页脚和设置 › 关于会显示构建它的提交,web/README.md 说明了怎样重新构建这个提交,并逐字节比对文件。
支持的钱包
| 钱包 | 设置为 | 页面使用的账户 |
|---|---|---|
| Unisat | Bitcoin Signet,Taproot 地址类型 | 钱包的 Taproot 地址 |
| Xverse | Signet | Ordinals 地址,也就是 Taproot 地址 |
你的 Ksana 账户就是你的 Taproot(P2TR)地址,所以页面不接受其他类型的地址。连接之前,页面还会检查钱包是否在 signet 上,签署路径 C 交易或充值交易之前再查一次:光凭 tb1 地址分不清 signet 和 testnet,所以页面会询问钱包当前设在哪个网络(Unisat 的 getChain、Xverse 的 wallet_getNetwork)。
连接
打开 https://signet.ksana.network/,选择钱包,再选连接钱包,选中你的钱包,并在扩展里批准请求。页面只请求签名:路径 B 操作签为一条 BIP322 消息,路径 C 交易和充值交易签为 PSBT。设置里会显示已连接的地址,并提供断开钱包。
钱包首页依次显示三项余额:
- 比特币 · signet:你地址上的聪,经由托管的比特币 RPC 代理从 mempool.space 的 signet API 读取。页面在打开钱包时和每个比特币区块之后读取;角落的按钮可以刷新它们。
- 快轨 · KSA:你的余额,拆成已经 BTC 最终的部分和尚未最终的变动(BTC 最终余额、转入,尚未最终、转出与费用,尚未最终、当前余额(立即可用))。
- 代币:其他资产;某项资产有一部分尚未最终时,会附上它的 BTC 最终数额。
领取测试 KSA
钱包为空时,KSA 卡片会显示“还没有 KSA”,并提供领取测试 KSA。收款页上也有同一个水龙头,就是你的地址和二维码旁边的从 signet 水龙头领取测试 KSA。两者都发 100 KSA,每个账户每天一次;水龙头拒绝时,会有一条提示说明原因。水龙头的各项限制见公开 signet。
走路径 B 发送
路径 B 是默认方式:你用 KSA 付一小笔手续费,收录你操作的出块者则支付结算它所需的比特币手续费。
- 选择发送。粘贴收款账户:一个
tb1p…地址,或写成 64 位十六进制的账户。核对页面显示的首尾各 8 位;如果这个账户在链上还没有记录,页面会提醒你。 - 填写金额。KSA 有 8 位小数。
- 在提交方式下保持代付。手续费按节点的建议值,这个值来自最近 20 个区块中最低的路径 B 费率(目前 signet 上是 1 个最小单位)。在高级选项里可以另设手续费和
max_gas。 - 选择检查并签名。页面会用一句话说明你要做什么,显示完整的收款地址,列出所有警告,并在末尾折叠展示确切的操作内容(VmOp 及其签名哈希)。
- 选择签名并提交,在钱包里签署这条消息。
随后,发送页会跟踪这笔操作,依次经过待收录、快轨确认、已写入比特币和 BTC 最终。操作快轨确认之后,再发一笔才可以使用,这样下一笔操作就不会重复使用它的 nonce。这几道印记的含义见确认与最终性。
收到的转账按大额阈值区分,默认 10,000 KSA,可以在收款页或设置里修改。低于阈值的,快轨确认即算到账;达到或超过阈值的,钱包会提醒你等到 BTC 最终。
在页面上走路径 C
路径 C 把你的操作放进一笔你自己的比特币交易。这笔交易有了所需的确认数之后,每个出块者都必须收录它,所以没有哪个出块者能把它挡在外面;你用 sBTC 支付比特币矿工费,不付 KSA 手续费。两条路径的比较见操作与手续费。
路径 C 位于发送页的更多提交方式下。当你的 KSA 不够付路径 B 手续费、结算出现积压,或者出块者一直没有收录你的操作时,它会自动展开,并标为推荐。等待过久的操作会提供改走路径 C(或用路径 C 重新提交),沿用同一个 nonce。
- 资金:你的 Taproot 地址上需要有少量 sBTC。按 2 sat/vB 计,一笔转账的手续费约 700 聪。页面通过 mempool.space 的 signet API 列出你地址上的币;那边没有应答时,页面会告诉你,你可以重试,或者按
txid:vout:sats的格式手动填写输出。 - 签名:页面构建交易,钱包以 PSBT 的形式签署它的输入。操作的签名绑定在交易的第一个输入上,所以无法被复制到另一笔交易里。
- 广播:经由托管的比特币 RPC 代理。没有可用的广播途径时,页面会给出已签名的原始交易,由你自己广播。
- 收录:在 signet 上,锚定在该交易所在比特币区块或更高处的下一个快轨区块会收录它,这需要 2 个比特币确认(
NATIVE_CONFIRMATIONS1 加上ANCHOR_DEPTH1)。在此之前,节点并不知道这笔操作。
如果同一 nonce 的路径 B 操作先被收录,路径 C 操作就会记为失败,它的矿工费也不退。在你签署重新提交之前,页面会先说明这一点。
充值
充值就是用一笔比特币交易,拿 sBTC 向卖方买 KSA。卖方先在兑换合约(示例合约 ksa-exchange)里为你的账户锁定 KSA,并设定价格(以每聪多少 KSA 计)、收款地址和到期高度。你付给这个地址的款项以路径 C 的方式携带领取操作;它被收录之后,合约就把 KSA 记入卖方在锁定中指定的账户。
- 向卖方要来兑换合约的 ID(64 位十六进制)和锁定编号。
- 选择充值,填入兑换合约和锁定编号,再选读取。页面会显示卖方、受益账户(也就是你)、价格、锁定的 KSA、收款地址,以及距离到期还剩多少个比特币区块。
- 以聪为单位填写付款金额。全部会填入买下全部锁定 KSA 所需的金额。少付只买到其中一部分,其余继续为你锁定;多付也买不到更多。
- 核对用来付款的 BTC 输出和矿工费,然后选择签名并广播,在钱包里签署 PSBT。
受益账户是别人的锁定,页面会拒绝;距离到期只剩 3 个或更少的比特币区块时,页面也会拒绝付款;只剩 4 个或更少时会发出警告。广播之后,页面会显示这笔比特币交易、领取操作,以及付款应当在哪个高度之前确认。领取操作被强制收录之后,KSA 就会到账,在 signet 上是 2 个比特币确认之后。
领取操作由专为这笔付款生成的一次性密钥签名,而不是你账户的密钥,所以不会占用你账户的任何 nonce。signet 上没有常驻的卖方:得有持有 KSA 的人为你锁定一些。想一个人试试充值,可以用第二把密钥配合 ksana-cli 的 exchange 命令扮演卖方,再从页面付款。
历史记录与区块浏览器
钱包首页把尚未最终的操作列在进行中下,每笔都附有进度和预计何时最终;其余操作都列在活动下(可按发出、收到或失败筛选)。标为卡住的操作,详情里会写明原因。
区块浏览器的页面不连接钱包也能用:
- 概览:快轨和比特币并列为两条轨道,以及最新的区块和操作。
- 区块和结算:每个快轨区块,连同它的父块、条目和携带它的结算;结算交易、路径 C 交易和补发交易,连同它们的提交与揭示结构。
- 操作:最新的操作,以及一笔操作从所在区块到携带它的比特币交易的全过程。
- 验证:索引器的状态根与节点的比对、两种确认,以及网络的参数。
搜索框接受高度、区块哈希、操作 ID、比特币 txid 和高度、合约 ID 以及账户。节点不认识的比特币交易或区块,会链接到 mempool.space。
使用你自己的节点
顶栏里的网络标识(signet · 节点)会打开数据源面板;设置里也有同样的面板。在节点 JSON-RPC 一栏填入你节点的地址,选择 signet 网络,然后连接。
- 你的节点必须允许本页面的来源:启动时加上
--rpc-cors https://signet.ksana.network(或'*')。完整命令见运行节点。 - 索引器 JSON-RPC 和比特币 RPC 是可选的,而且只能填本页面同源下的路径,因为索引器和 bitcoind 都不发送 CORS 头。在托管的页面上,可以继续用托管的
/indexer和/btc。没有索引器时,验证页无从比对,页面也会注明此时“BTC 最终”只是节点的说法。 - 同样的选择也能写进地址栏:
?rpc=<node URL>&indexer=<indexer URL>&btc=<Bitcoin RPC URL>&chain=signet。?source=sim会切换到浏览器内模拟器,那是一个不需要任何服务的 devnet。
页面在同步之前读取节点的链 ID,每次签名之前再读一次,遇到其他网络的节点就拒绝。想在自己的机器上运行这个页面本身,并代理到你自己的节点、索引器和 bitcoind,请按 web/README.md 操作。
故障排查
| 你看到的 | 该怎么做 |
|---|---|
| 未检测到扩展 | 安装 Unisat 或 Xverse,然后刷新页面。 |
| … 不是 Taproot 地址,请在钱包里切换到 Taproot 账户。 | 把钱包切换到它的 Taproot 地址(在 Xverse 里是 Ordinals 地址)。 |
| … 现在设在 … 上,而本页的网络跑在 BTC signet 上 | 把钱包的比特币网络切换到 signet。 |
| 节点在另一个网络上 | 页面和节点所在的网络不一致:在数据源面板里选择 signet,或者连接一个 signet 节点。 |
连不上 …。确认节点在运行,并以 --rpc-cors 允许 …。 |
启动节点时用 --rpc-cors 允许本页面的来源。 |
| 水龙头没有发出 KSA | 提示里写着水龙头给出的原因;最常见的是这个账户今天已经领过 KSA。 |
| KSA 不够付代付费 | 领取测试 KSA、充值,或者改走路径 C 发送。 |
| 没有可用的 BTC 输出付矿工费 | 向你的地址转一些 sBTC,等它确认。 |
| 读不到 BTC 输出 | mempool.space 没有应答:重试,或者手动填写输出。 |
| 被跳过,等待重新收录 | 这笔操作在一个无法执行它的平行块里。没有扣任何费用;它会回到条目池,再次被收录。 |
| 结算积压已达上限,快速路径暂停 | 结算正在等待写入比特币。已经生效的余额不变;路径 C 照常可用。 |