TumbleBit的总体框架结构如下: 1. 链上部分使用的密码学原语较少且简单,需要兼容比特币这种仅支持非图灵完备语言的区块链。 2. 尽管是中心化协议,但恶意的Tumbler也无法偷币,同时在不与参与用户共谋的情况下,也无法找到交易输入和输出的链接关系。 3. 与区中心的混币协议如coinjoin、coinshuffle相比,TumbleBit的优点在于交互只发生在交易双方和Tumbler之间,不需要交易方与其他用户交互。
TumbleBit可以将多笔交易聚合为两笔链上交易,而这些交易无需在区块链上存储或验证,因此可以扩展区块链的交易量。此外,TumbleBit的链下交易可以在秒级时间内完成,从而扩展区块链的交易速度。
TumbleBit的核心思想是使用链下解谜来替代链上支付。当Alice想要向Bob支付一笔钱时,Alice给Bob一个谜题的解,这个解是Alice和Tumbler交互产生的。每解一个谜题,Alice给Tumbler转一个比特币,然后Tumbler再转给Bob一个比特币。
TumbleBit协议以epoch为周期运行,每个epoch分为三个阶段: 1. 掉头和退款阶段,Alice提交退款请求并接收到比特币。 2. 混淆阶段,Alice将资金发送到一个临时地址,并从Tumbler获取对应的比特币。 3. Cash-out阶段,Alice和Bob分别收回剩余的比特币。
除了总体框架结构外,TumbleBit还包括解谜协议和谜题协议: 1. 解谜协议(RSA-puzzle-solving协议)是Alice和Tumbler之间运行的公平交换协议,允许Alice支付给Tumbler一个比特币,仅当Tumbler给Alice一个RSA谜题的解。这个协议还可独立运行在其他场景中。 2. 谜题协议(Puzzle-Promise协议)是在escrow阶段运行在Bob和Tumbler之间的链下协议,旨在让Bob获得一个promise-puzzle对。这个协议使用cut-and-choose来确保至少有一个puzzle是正确的,并借助RSA商链技术确保Bob拿到一个谜题的解后能得到所有谜题的解。
TumbleBit的不可关联性是指Tumbler无法看到交易间的关联性,而只能知道付款人与自己的交互时间。然而,结合额外信息,他们仍然可以对交易间的关联性进行分析,因此存在一些攻击例如天花板攻击、Bob和Tumbler共谋、Potato攻击以及中止攻击。尽管存在这些攻击,但如果交易量足够大,交易的不可连接性仍然可以得到保证。
总结起来,尽管TumbleBit存在一些限制和攻击,但对于金额隐私性要求不高的情况下,它仍然是一个优秀的混币方案。