文档

概念

屏蔽池、资产、手续费、备注、区块与验证者,以及兑换池。

测试网络:代币没有价值

屏蔽池与票据

你在 Tint 上的余额是一组票据。票据是一条加密给某个地址的记录,内容是“这么多这种代币属于你”。票据以承诺的形式存储在链上的默克尔树中,因此没有人能读取它们,也无法判断它们属于谁。

付款时,你的钱包会花费一些票据并创建新的票据:一张给收款人,一张是找给你的零钱。它用 Halo 2 证明来证明:自己拥有被花费的票据、这些票据确实存在、金额收支平衡,而不透露是哪些票据。每张被花费的票据都会公开一个作废标识(nullifier),网络借助这个标签拒绝同一张票据被第二次花费,却不会知道那是哪张票据。

收款人的钱包读取每个区块,并尝试用自己的查看密钥解密每张新票据。能解开的票据就是他们的。正是这种试解密,使节点无法判断一笔付款是给谁的。

资产

一种代币就是一个带编号的资产。资产 0 是原生代币 TINT;资产 1 是测试美元 TUSD。一条链最多可以定义 16 种资产。每种资产都是各自独立的屏蔽池:一笔付款转移的是同一种资产的票据,兑换是两种资产唯一相遇的地方。

金额是整数个单位。一个代币为 100,000,000 个单位(8 位小数),因此 TINT 的最小金额是 0.00000001。

手续费

一笔付款的每个操作都要支付最低手续费,手续费用你所发送的代币支付。你永远不需要第二种代币来支付 gas。在当前的测试网络上,最低手续费为:

代币每个操作的手续费
TINT0.00005
TUSD0.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 个区块