Ksana
EN

概念

KSA、奖励与手续费

KSA 是 Ksana 的内置代币。它用来支付路径 B 的手续费,也用来奖励出块并把区块数据写进比特币的出块者。在主网上,KSA 全部按固定的时间表作为出块奖励发行,上限 2.1 亿 KSA。

本页目录

KSA 是 Ksana 虚拟机的内置资产,而不是合约:它的名称是 KSA,资产 ID 是 32 个零字节,有 8 位小数。金额都是整数个最小单位,1 KSA 等于 100,000,000 个最小单位。路径 B 的手续费要用 KSA 支付;路径 C 只用比特币(见操作与手续费)。

Shell
export KSANA_RPC=https://signet.ksana.network/rpc
ksana-cli --chain signet asset
输出
{
  "asset": "0000000000000000000000000000000000000000000000000000000000000000",
  "at": {
    "hash": "2c1363cf56e91f58e8bd2167b74625120771ad3b0956ea215de540faa33df3ad",
    "height": "286"
  },
  "decimals": 8,
  "issuer": "0000000000000000000000000000000000000000000000000000000000000000",
  "name": "KSA",
  "total_supply": "11011956230000000"
}

signet 上的这个总量是 110,119,562.3 KSA:创世分配的 1.1 亿 KSA,加上至今已发放的奖励。signet 上的 KSA 没有价值,主网也还没有上线。

总量与发行

KSA 发行量(百万)

050100150200010203040

上线后的年数

  • KSA 发行量
  • 减半
  • 上限 2.1 亿

主网前 40 年的 KSA 发行量:历次减半和 2.1 亿 KSA 的上限。

新的 KSA 只以出块奖励的形式产生。在主网上,上限是 2.1 亿 KSA(KSA_MAX_SUPPLY),没有创世分配,奖励时间表加起来就是这个上限:所有周期的所有奖励槽合计发放 209,999,996 KSA,因为整数减半会向下取整,比上限少 4 KSA。发放奖励时同样会执行这个上限,所以总量永远不会超过它。

奖励槽

奖励以 DAA 分数为准。DAA 分数随每个区块的权重增长,出块合乎目标时每 5 秒前进一个单位。有条目的区块权重为 1;空块的权重是 12 到 120(原因见挖矿)。权重为 w 的区块占 w 个奖励槽,即截至它自己的 DAA 分数的那 w 个分数,每个槽按所在减半周期的奖励发放:主网第一个周期是 4.2 KSA。因此,空块和非空块在单位时间里挣得一样多,出块者刻意出空块,或者打断一串连续的空块,都得不到好处。

主链区块和它合并的蓝块会得到奖励。红块,即 GHOSTDAG 判定为太久没被其他区块看见的那些,拿不到出块奖励,不过其中的路径 B 手续费照样发放。

减半周期

每个周期结束时,每槽的奖励减半。在主网上,周期长度在前两次减半时各翻一倍,此后一直是 8 年:

周期 大约时间 每槽 KSA 到期末累计发行
0 第 0 至 2 年 4.2 52,500,000 (25%)
1 第 2 至 6 年 2.1 105,000,000 (50%)
2 第 6 至 14 年 1.05 157,500,000 (75%)
3 第 14 至 22 年 0.525 183,750,000 (87.5%)
4 第 22 至 30 年 0.2625 196,875,000 (93.75%)
5 至 28 每期 8 年 前一周期的一半 209,999,996(约 100%)

周期按 DAA 分数计(先是 12,500,000,然后是 25,000,000,之后每期 50,000,000),所以表中的年数假定出块合乎 5 秒的目标。最后一个最小单位在第 28 周期发放;从 DAA 分数 1,387,500,000 起,也就是大约 220 年后,奖励为零。

signet 和 devnet 用的是另一组数值:每槽 9.9 KSA,周期为 25,228,800 DAA 分数(约 4 年)且长度都相同,上限 10 亿 KSA,为测试分配留出了空间。协议参数列出了所有数值。

每个槽归谁

每个槽在它的区块解锁时发放。区块的携带者得到其中的 5%,主网第一个周期是 0.21 KSA,signet 上是 0.495 KSA;其余归出块者,只是在协议规则设有区块分享的期间,槽里还要先分出区块分享,付给创世配置指定的账户。如果区块没有携带者,或者出块者自己就是携带者,出块者连携带者那份也一并留下。如果一次发放碰到了总量上限,先付区块分享,再付携带者,出块者拿剩下的部分。

携带者

一个区块的携带者,是最先把它的数据写进比特币的一方。对结算来说,携带者是携带这笔结算的那个区块的出块者;对补发来说,是补发指定的收款账户,但前提是数据写入的比特币区块比该区块的锚定块高出 ANCHOR_DEPTH + 2 个以上(signet 上多于 3 个,主网上多于 4 个),免得有人抢先写入本来马上就会由其出块者自己写入的数据,借此赚钱。携带者得到该区块每个槽的 5%(CARRIER_BPS),以及该区块路径 B 手续费的一半(CARRIER_FEE_BPS)。

把别的区块的数据写进比特币要花比特币,携带者报酬正是为此付费:靠它,每个比特币区块里的一笔结算才能携带许多区块的数据。在主网第一个周期,所有携带者每天从奖励中合计最多挣约 3,629 KSA。救援会照抄原来的载荷,所以奖励仍归原来的携带者,救援者只付钱、没有收入。

奖励和路径 B 手续费不在出块时入账,而是在解锁时发放:后来的某个主链区块带有一个解锁条目,把截至某个位置的款项全部付清;而解锁条目要推进到某个区块,必须等这个区块和它之前每个区块的数据都已写进比特币。在那之前,这些款项列在 ksana_getAccount 的 locked_fees 下。下面是一个 signet 出块者的列表:

Shell
ksana-cli --chain signet account tb1penqxc08g69mt8sgp8rw5uuy88yu6n3kuq4vh73d2ec28aukq057s0vh4h2 \
  | jq '.locked_fees[0:4]'
输出
[
  {
    "amount": "594000000",
    "block_hash": "ca81971355fdbae2693c4fe0b8a31670c5c410314524fd9e01dbd97aa01b5fe2"
  },
  {
    "amount": "1188000000",
    "block_hash": "792fd0dbb60d85f8195326e0ac83847c10d031ccb8b225a6fa64f3764289fee2"
  },
  {
    "amount": "38016000000",
    "block_hash": "d18e91c9383400d27166695177decadb89399456e55d79eb6e6164d625edaf95"
  },
  {
    "amount": "76032000000",
    "block_hash": "76ed3966dec4ddcd40fe31a777add64381a75b0daef81be1780549cf86e5bf7a"
  }
]

后两条是这个出块者自己出的空块,权重分别为 48 和 96,所以付的是 48 个槽和 96 个槽:出块者那份加上携带者那份,因为这些区块的数据是它自己写入的,或者还没有人写入。前两条是它作为携带者从其他出块者的区块里得到的 5%:12 个槽和 24 个槽,每槽 0.495 KSA。这些金额是节点根据当前的链推算出来的,所以其中一笔仍可能变化,例如另一个出块者的结算先把某个区块的数据写进了比特币。

只在数据写进比特币之后才付钱,出块者就会希望每个区块的数据都写进去,无论是自己的还是别人的:只要有一个区块缺了数据,它之后每个区块的收入都会被卡住。

手续费的去向

  • 路径 B 手续费(KSA):操作执行前从你这里扣除,随区块一起锁定,解锁时发放,一半给区块的携带者,一半给出块者(出块者自己携带了区块,或者没有谁够格成为携带者时,全部给出块者)。
  • 结算的比特币手续费:由写入数据的一方用 BTC 支付,通常是携带这笔结算的区块的出块者。出块者挣的是 KSA,付的是比特币;兑换合约让他们可以把 KSA 卖成比特币。
  • 路径 C 手续费:用 BTC 支付,只给比特币矿工。出块者从中拿不到任何手续费。

什么都不销毁:手续费全额归出块者和携带者。合约可以用 asset_burn 销毁自己持有的 KSA,这会减少总量。

创世

网络 创世分配 区块分享账户
主网 无:仅靠奖励就会达到上限 一个任何节点都不接受的占位符,上线前填入
signet 100,000,000 KSA 给水龙头,10,000,000 KSA 给运营方 在 signet/genesis.json 中设定
devnet 10,000 KSA 给一个测试账户,由 devnet/init.sh 写入 一个生成的账户

在主网上,第一个区块之前不存在任何 KSA,之后的每一枚 KSA 都是出块奖励。完整的规则见规范 §8.5(解锁)和 §8.6(KSA 与出块奖励)。