文档
跨链桥
连接 Tint 上的 TUSD 与 Ethereum、BNB Chain 上 USDT 的跨链桥,正在开发,并将先在 Sepolia 和 BSC Testnet 测试网络上试用。
测试网络:代币没有价值
工作原理
每个以太坊系网络上都有一个跨链桥合约。它持有代币;它并不了解 Tint 网络。
存入:从 Ethereum 或 BNB Chain 到 Tint
- 你在跨链桥上调用
deposit(token, amount, tintAddress),指明应收款的 Tint 地址。代币进入合约。 - 合约发出一个存入事件,包含代币、金额、你的地址和 Tint 地址。
- 跨链桥在 Tint 网络上向该地址支付等额的
TUSD。
提取:从 Tint 到 Ethereum 或 BNB Chain
- 你在 Tint 上向跨链桥支付
TUSD,并指明另一个网络上的地址。 - 跨链桥的签名者看到这笔付款到账,并为其签署放行。
- 之后任何人都可以提交
release(token, to, amount, order, signatures),附上不少于阈值数量的签名,每个签名 65 字节。合约会检查这些签名并支付代币;只有签名者才能生成这些签名。
每次放行都带有一个 order 编号,即 Tint 付款的哈希。合约会记住它已支付的每个 order,因此一笔 Tint 付款只会被支付一次。
目前哪些是托管式的
- 合约相信其签名者只会放行真正在 Tint 上到账的款项。一次放行需要达到阈值数量的签名者(例如 3 人中的 2 人)对 EIP-712 风格的摘要签名。
- 合约相信其所有者会指定诚实的签名者。所有者可以更改规则、更换签名者,并暂停跨链桥。所有权的转移分两步:先提出,再接受。
- 目前,所有者和签名者由 Tint 团队选定。如果他们不诚实或丢失了密钥,已存入的代币可能被拿走或被锁死。这就是托管式的含义。
合约强制执行的限制
设置这些限制,是为了限定失误或密钥被盗可能造成的损失。每种代币有各自的规则:
| 规则 | 含义 |
|---|---|
| 启用 | 该代币的存入和放行是否开放。 |
| 粒度 | 每个金额都必须是它的整数倍,这样在代币的小数位(Ethereum 上的 USDT 为 6 位,BNB Chain 上为 18 位)与 Tint 的 8 位之间就不会丢失零头。 |
| 下限 | 一次存入或放行至少要转移的数量。 |
| 上限 | 一次存入或放行最多可转移的数量。 |
| 每日限额 | 一个 UTC 日内所有放行合计最多可转移的数量。 |
| 暂停 | 跨链桥暂停期间,不会进行任何存入或放行。 |
跨链桥对隐私的影响
Ethereum 一侧是公开的。存入事件会显示代币、金额、发送方以及收款的 Tint 地址。放行会显示收款方和金额。通过跨链桥转移资金,会把你的公开地址与一个 Tint 地址和一个金额关联起来,因此请把一次跨链视为可见的。一旦你的 TUSD 到了 Tint 上,票据之间的付款就重新变回私密的。
测试代币
为了在没有真实稳定币的地方试用跨链桥,代码仓库中包含一个 TestDollar 合约。任何人都可以为自己铸造一些,每次调用有上限,而且它一文不值。它有 6 位小数,以模拟 Ethereum 上的 USDT,或 18 位,以模拟 BNB Chain 上的 USDT。切勿把它部署到有真实资金的网络上。
状态
- 跨链桥合约和测试代币已经编写完成,并附有测试。它们未经审计。
- Tint 一侧的部分,即存入如何支付、提取如何被发现,尚未公开,上述流程可能会变化。
- 钱包把跨链桥显示为“即将推出”。目前还没有什么可以跨链的。