文档

跨链桥

连接 Tint 上的 TUSD 与 Ethereum、BNB Chain 上 USDT 的跨链桥,正在开发,并将先在 Sepolia 和 BSC Testnet 测试网络上试用。

测试网络:代币没有价值

工作原理

每个以太坊系网络上都有一个跨链桥合约。它持有代币;它并不了解 Tint 网络。

存入:从 Ethereum 或 BNB Chain 到 Tint

  1. 你在跨链桥上调用 deposit(token, amount, tintAddress),指明应收款的 Tint 地址。代币进入合约。
  2. 合约发出一个存入事件,包含代币、金额、你的地址和 Tint 地址。
  3. 跨链桥在 Tint 网络上向该地址支付等额的 TUSD。

提取:从 Tint 到 Ethereum 或 BNB Chain

  1. 你在 Tint 上向跨链桥支付 TUSD,并指明另一个网络上的地址。
  2. 跨链桥的签名者看到这笔付款到账,并为其签署放行。
  3. 之后任何人都可以提交 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 一侧的部分,即存入如何支付、提取如何被发现,尚未公开,上述流程可能会变化。
  • 钱包把跨链桥显示为“即将推出”。目前还没有什么可以跨链的。