Ksana
EN

使用网络

公开 signet

Ksana 的公开测试网络运行在比特币的 signet 上。用它试用钱包、应用、合约和节点,所用的币没有任何价值。

本页目录

公开 signet 是目前可以使用的 Ksana 网络。它运行在比特币的公开 signet 上,也就是 Bitcoin Core 加上 -signet 所加入的那个测试网络,所以它的结算都是真实的比特币交易,位于真实的 signet 区块中,由 signet 的矿工挖出。主网尚未上线。

网络名 signet(节点、索引器和 CLI 都用 --chain signet)
链 ID 1002
比特币网络 signet:地址以 tb1 开头,账户以 tb1p 开头
启动 2026 年 10 月 13 日,锚定在 signet 高度 326,234
创世配置 仓库中的 signet/genesis.json

项目托管的服务

项目在 signet.ksana.network 上运行一台服务器,上面有运行在 signet 上的 Bitcoin Core、两个负责出块和结算的种子节点、一个核对它们的索引器、网页钱包、一个 KSA 水龙头,以及一个小型的比特币 RPC 代理。网络上的其余一切都由加入者自己运行:你可以用自己的节点跟随这条链,用自己的索引器核对它,还可以挖矿。

服务 地址 可跨源调用
网页钱包与区块浏览器 https://signet.ksana.network/
节点 JSON-RPC(HTTP) https://signet.ksana.network/rpc 是
节点 JSON-RPC(WebSocket) wss://signet.ksana.network/rpc 是
索引器 JSON-RPC https://signet.ksana.network/indexer 否
比特币 RPC 代理 https://signet.ksana.network/btc 否
KSA 水龙头 https://signet.ksana.network/faucet 否
种子节点 P2P {{signet.p2p}}

只有节点的 RPC 会应答来自其他来源的浏览器页面(它的 CORS 设为 *)。部署在自己域名上的网页应用可以在浏览器里直接调用 https://signet.ksana.network/rpc,但索引器、比特币 RPC 代理和水龙头只能经由它自己的服务器访问。命令行工具和服务器则可以调用以上所有服务。

向节点查询链顶
curl -sS https://signet.ksana.network/rpc -H 'content-type: application/json' \
  --data '{"jsonrpc":"2.0","id":1,"method":"ksana_getChainInfo","params":[]}'
输出
{"jsonrpc":"2.0","id":1,"result":{"chain_id":1002,"tip":{"height":"258","hash":"ab98f9995f46bd51d890ea0fe9b83e302b6c432ef99b8873dcca657e0428ba0a"},"daa_score":"12028","protocol_version":2,"next_upgrade":null,"max_known_version":2,"finalized":{"height":"241","hash":"0cb65c0a51c1200757560f9ed1a2aa28f5a01a236bbdda8005120eb609a8ae6b"}}}

JSON-RPC 参考列出了节点和索引器的每一个方法。

水龙头

水龙头从它的创世分配中拿出 100 KSA,以一笔普通的路径 B 转账发给任意 signet 账户。网页钱包会替你调用它;在其他地方,就 POST 一个带上你账户的 JSON 请求体:

Shell
curl -sS https://signet.ksana.network/faucet -H 'content-type: application/json' \
  --data '{"to": "tb1pg3geczvz5sj89cetm8vs7z5z9xrf0gvsekwg4skj8g47ar2c690surwrec"}'
输出
{"op_id":"92e22273a7fab8430c6ae16b69b1f649fa4056aa2a0c3f27d10bf38e77908a0d","to":"44519c0982a42472e32bd9d90f0a82298697a190cd9c8ac2d23a2bee8d58d15f","amount":"10000000000","nonce":"4"}

to 可以是 signet 的 Taproot 地址,也可以是写成 64 位十六进制的账户。节点把这笔转账接受进条目池时,应答就会返回,而不是等到区块收录它:用 ksana-cli op 或 ksana_getOpStatus 跟踪 op_id。amount 以最小单位计(KSA 有 8 位小数)。

GET 请求返回水龙头自身的状态:

Shell
curl -sS https://signet.ksana.network/faucet
输出
{"chain_id":1002,"account":"de6603f052fd5bfaae5678a2a20ae6ae4fe4ae00c89db70a2efea7429851afc0","address":"tb1pmenq8uzjl4dl4tjk0z32yzhx4e87ftsqezwmwz3wl6n59xz34lqqlgaqc2","balance":"9999939999999988","amount":"10000000000","cooldown_hours":24,"waiting":0}

waiting 是水龙头已经发出、但还没有被任何区块收录的转账笔数。

水龙头的限制

限制 达到限制时的应答
每个账户每 24 小时一次 429 this account already received KSA; it can ask again in N hour(s)
每个客户端地址每天 5 次 429 this address has asked too often today
每个客户端地址每分钟 30 次 429 too many requests from this address; slow down
所有人合计每小时约 120 笔转账 429 the faucet is busy; try again in a few minutes
48 笔转账在等待区块收录 503 the faucet has many transfers waiting for a block; try again in a minute

每个错误都是一个 JSON 对象 {"error": "<message>"};在等待时间可知时,429 和 503 应答会带上以秒为单位的 Retry-After 头。请求体或账户格式不对,返回 400 并附上原因;节点拒绝这笔转账,则返回 502 the node refused the transfer: …。

比特币 RPC 代理

借助 https://signet.ksana.network/btc,网页钱包不需要你自己的比特币节点,就能构建并广播路径 C 交易和充值交易。它转发四个 bitcoind 方法,每次调用只能是一个 JSON-RPC 请求,参数都会经过检查:

方法 说明
getblockcount 缓存 2 秒
getblockchaininfo 缓存 2 秒
estimatesmartfee 目标为 1 到 1008 个区块,缓存 60 秒
sendrawtransaction 已签名交易的十六进制
Shell
curl -sS https://signet.ksana.network/btc -H 'content-type: application/json' \
  --data '{"jsonrpc":"2.0","id":1,"method":"estimatesmartfee","params":[2]}'
输出
{"jsonrpc":"2.0","id":1,"result":{"feerate":0.00001045,"blocks":2}}

它还转发 mempool.space signet API 的两个 GET 路径:esplora/block-height/0,以及列出某个 signet Taproot 地址上的币的 esplora/address/<tb1p…>/utxo。其他方法一律拒绝,scantxoutset 也不例外:扫描一遍 signet 的 UTXO 集要 30 到 50 秒。每个客户端地址每分钟可发 120 个请求,其中至多 20 个广播、30 个 Esplora 请求。

代理没有钱包方法。ksana-cli 的路径 C 命令和 top-up 命令用你自己 bitcoind 里的钱包为交易出资,见 ksana-cli。

Signet 比特币

只有需要你自己付比特币手续费的事,才用得到 sBTC:路径 C 操作、充值,或结算你挖出的区块。路径 B 转账和水龙头都不需要。sBTC 可以从任何公开的比特币 signet 水龙头领取;项目自己不运营这样的水龙头。

把它发到你的 Taproot 地址,也就是存放你 KSA 的那个地址。按 2 sat/vB 计,一笔路径 C 转账的手续费约 700 聪,所以几千聪就够用很久。结算自己区块的出块者需要更多:具体数额见运行节点。

Signet 与主网的区别

signet 采用与主网相同的规则,大部分取值也相同:每 5 秒一个区块,GHOSTDAG 取 K = 16,六个比特币确认后最终,gas 限制相同,Argon2id 用 2 MiB 内存,携带者分成也相同。以下取值不同:

参数 Signet 主网
链 ID 1002 1000
ANCHOR_DEPTH(区块的锚定块落后比特币链顶多少块) 1 2
NATIVE_CONFIRMATIONS 1 3
路径 C 操作的收录时机 2 个比特币确认之后 5 个比特币确认之后
每个奖励槽的奖励 9.9 KSA 4.2 KSA
减半周期(以 DAA 分数计) 25,228,800,每期相同 先 12,500,000,再 25,000,000,之后 50,000,000
KSA 总量上限 1,000,000,000 210,000,000
创世分配 水龙头 100,000,000 KSA,运营方账户 10,000,000 无
最低难度(pow_limit_bits) 0x207fffff 0x1f00ffff

devnet 是运行在比特币 regtest 上的本地网络,取值与 signet 相同,只有链 ID 是 1001、ANCHOR_DEPTH 是 0。三个网络的全部取值见参数。

没有人发送操作时,signet 的出块者只出空块,空块的难度最高可达含条目区块的 120 倍,所以空闲的 signet 会从大约一分钟一块,放慢到大约十分钟一块。第一笔操作一到,就又恢复每隔几秒一块。挖矿一页解释了这种两速难度。

从创世重启

主网上线之前,共识规则一旦改动,signet 就会换上新的 signet/genesis.json,从创世重新开始。重启意味着一条新链:余额、合约和操作历史都不会带过去;你的密钥和地址依然有效,只是在新链上什么也没有。

重启之后:

  • 拉取仓库,获取新的 signet/genesis.json 和与之配套的代码。
  • 用新的数据目录启动你的节点和索引器。数据目录会记住创建它时所用的创世配置,节点和索引器遇到旧的数据目录会拒绝启动,报错 data directory belongs to a different genesis config。
  • 重新向水龙头申请测试 KSA。