文档
概念
屏蔽池、资产、手续费、备注、区块与验证者,以及兑换池。
测试网络:代币没有价值
屏蔽池与票据
你在 Tint 上的余额是一组票据。票据是一条加密给某个地址的记录,内容是“这么多这种代币属于你”。票据以承诺的形式存储在链上的默克尔树中,因此没有人能读取它们,也无法判断它们属于谁。
付款时,你的钱包会花费一些票据并创建新的票据:一张给收款人,一张是找给你的零钱。它用 Halo 2 证明来证明:自己拥有被花费的票据、这些票据确实存在、金额收支平衡,而不透露是哪些票据。每张被花费的票据都会公开一个作废标识(nullifier),网络借助这个标签拒绝同一张票据被第二次花费,却不会知道那是哪张票据。
收款人的钱包读取每个区块,并尝试用自己的查看密钥解密每张新票据。能解开的票据就是他们的。正是这种试解密,使节点无法判断一笔付款是给谁的。
资产
一种代币就是一个带编号的资产。资产 0 是原生代币 TINT;资产 1 是测试美元 TUSD。一条链最多可以定义 16 种资产。每种资产都是各自独立的屏蔽池:一笔付款转移的是同一种资产的票据,兑换是两种资产唯一相遇的地方。
金额是整数个单位。一个代币为 100,000,000 个单位(8 位小数),因此 TINT 的最小金额是 0.00000001。
手续费
一笔付款的每个操作都要支付最低手续费,手续费用你所发送的代币支付。你永远不需要第二种代币来支付 gas。在当前的测试网络上,最低手续费为:
| 代币 | 每个操作的手续费 |
|---|---|
TINT | 0.00005 |
TUSD | 0.001 |
一笔交易至少有一个操作,最多 64 个。钱包会在你确认之前显示确切的手续费。手续费是公开的。
备注
每张票据都带有一个 512 字节的备注字段,随票据一同加密。在其中写一小段文字,只有收款人的钱包能读取。空备注不会产生额外费用,因为每张票据本来就有这个字段。
区块与验证者
Tint 采用权益证明。一组固定的验证者使用 BFT 共识(Simplex,来自 commonware 库)对每个区块达成一致。验证者一旦就某个区块达成一致,它就是最终的:无需等待确认数不断累积。
- 只要有付款需要打包,就会立即生成含有付款的区块。
- 空闲的链大约每 5 秒生成一个空区块,以免空区块占满磁盘。付款不必等这段间隔。
- 共识参数规定两个区块之间至少间隔半秒。
- 验证者在创世时选定,目前不会变化。在公共测试网络上,四个验证者都运行在同一台服务器上。
区块奖励支付给验证者:测试网络起始为每个区块 2 TINT,每 15,768,000 个区块减半,最终稳定在 0.1 TINT 的尾部奖励。
兑换池
链上有一个内置的池,让 TINT 和 TUSD 相互兑换。它遵循恒定乘积规则(x · y = k):价格随着池中两种储备的变化而移动。池会留存所付入金额的 0.3%,这笔手续费留在池中。
它起始有 200,000 TINT 和 100,000 TUSD,价格为每个代币半个测试美元。没有人运营这个池,其中的代币也无法提取:它只能用于兑换。
兑换会声明自己最少能接受的数量。如果池的价格已经变动到无法再给出这个数量,节点会返回 price_moved,并且不会花费任何东西。
限制
| 限制项 | 测试网络上的取值 |
|---|---|
| 一笔交易中的操作数 | 64 |
| 一个区块中的操作数 | 2,048 |
| 一笔交易可锚定的近期根的范围 | 1,000 个区块 |
| 一笔交易可提前设置的过期时间范围 | 1,000 个区块 |