带你了解tBTC:如何解决跨链难题
我们最近对Thesis的tBTC进行了安全评估:这是一种信任度最低,可赎回,由比特币支持的ERC20令牌。该项目使用Keep Network跨越比特币和以太坊,旨在通过允许用户使用比特币支持的ERC20在以太坊上进行交易来实现新的跨链经济。
我们很少会审查像tBTC这样的项目。毕竟tBTC跨越了几个系统:比特币、以太坊和Keep Network。促进所有这些互操作性的智能合约非常复杂,需要了解所有三种协议。促进所有这些互操作性的智能合约非常复杂,需要了解所有三种协议。尽管我们之前对流动性和原子贷款的研究在本质上是相似的,但tBTC庞大的代码库将其置于另一个层次。
在我们的审查过程中,,我们了解了很多有关跨链系统开发的知识。特别是,我们对比特币交易的研究揭示了以太坊上比特币交易验证的一个特别有趣的局限性。
什么是SPV证明?
在比特币的上下文中,SPV证明用于证明给定区块内交易的存在。简而言之,证明将Merkle证明与比特币区块的hashMerkleRoot配对,以表明该区块内存在交易:
经常使用此类证明,因为它们在计算量相对较轻。在组成tBTC的智能合约的背景下,此属性尤其重要。因为它运行在EVM(以太坊虚拟机)上,所以tBTC自然受到以太坊有限的计算资源的限制。
假设我们想证明比特币上存在某种交易。对于此SPV证明,我们需要一些输入:
1. 包含事务的块的块头
2. 原始事务本身
3. 交易的索引(其在区块中的位置)
4. 梅克尔证明(形成从交易到比特币块头的“路径”的节点列表)
使用这些输入,可以证明交易存在于区块中,而无需连接到比特币节点。如果人们接受所提供的比特币区块头来自最长的工作量证明链,那么简单付款验证(SPV)可以在任何设备上的任何地方进行。
跨链难题
在研究比特币交易时,我们遇到了在以太坊上执行的SPV证明的基本限制:比特币交易规模。
比特币交易主要受到最大4 MB比特币块大小的限制。此外由于SPV证明可以排除见证人数据,因此我们可以将理论上最大的比特币交易大小减少到1 MB。但是出于我们的目的,确切的上限实际上不是由比特币块大小决定的,因为它实际上受到以太坊区块链的限制。
为什么?与比特币不同,以太坊的交易受到其执行消耗的计算资源量的限制。执行的每个操作都需要一定数量的天然气,交易消耗的天然气不能超过单个区块中所包含的天然气。这称为气体限制,在撰写本文时,该限制约为1000万气体。
要了解这大致相当于比特币交易规模,我们可以使用以太坊黄皮书中的定义Gtxdatanonzero,这是交易中每个字节数据所需的气体成本。Gtxdatanonzero是每字节16个气体。
这意味着作为SPV证明的一部分提供的比特币交易的每个字节最少消耗16个气体。请注意,执行SPV证明需要支付额外费用,但出于粗略估算的目的,我将忽略这些费用。
那么在不可能对以太坊进行SPV证明之前,比特币交易能获得多大的收入?答案是以太坊的限制气体限制除以Gtxdatanonzero:
(10000000 gas)/(16 gas per byte)=625000字节,约为1MB最大比特币交易大小的63%。
这对tBTC意味着什么?
在tBTC中,SPV证明最初有两个目的:
存款证明:允许用户证明他们正确地进行了BTC存款,触发tBTC合约释放相应的由比特币支持的ERC20。
欺诈证明:允许用户证明BTC存款是由存款的保管签名组在未经授权的情况下使用的,从而触发签名者大幅削减并向存款所有者授予保证金。
欺诈证明
SPV欺诈证明使用户可以防范恶意签名者。如果签名者组串通,则无需用户的明确授权,他们就可以花费已存入的BTC。通过将这种未经授权的交易提供给tBTC的合同,用户可以证明已经发生了支出,对恶意签名者进行了处罚,并确保他们为存款损失承担了合理的赔偿。
但是使用上述的比特币交易规模限制,签署者可以通过将押金用于足够大的交易来避免这种损失。
幸运的是,SPV欺诈证明是tBTC中实施的两种欺诈证明机制之一。替代方法ECDSA欺诈证明为SPV欺诈证明提供了更强大的替代方法。结果SPV欺诈证据从tBTC的合约中删除。
存款证明
每个用户进入系统后,存款证明仍在tBTC中使用。为了在以太坊上发布比特币支持的ERC20,用户必须提供SPV成功存款证明。尽管比特币交易规模问题并未提供明确的滥用存款系统的方法,但用户可能会通过有效的BTC交易为存款注资,只是发现其交易规模太大而无法在tBTC合约中进行验证 。
不存在删除此依赖关系的明确路径;必须提供SPV证明才能验证存款。幸运的是,比特币交易规模的限制并不严重,无法阻止tBTC完全发挥作用;以单一输入和输出的简单支出,完全在以太坊当前的区块限制范围之内。只要努力确保用户充分了解此限制,在为存款提供资金时,比特币交易规模就不会构成重大问题。
tBTC(和其他跨链项目)如何确保其系统正常工作?
需要理解这两条链的原语。当使用以太坊时,了解EVM在复制其他链的原语方面的不足之处。跨链应用程序连接两个世界,每个世界都有自己的时间系统、规则和微妙的陷阱。
性能基准测试将提供一些基准,可以根据该基准来测量系统。例如在我们讨论了比特币交易规模问题之后,论文进行了一些基本的基准测试,以针对其SPV证明提出更准确的限制。
单元测试永远不够。从本质上讲,跨链dapp在系统的两端都有活动部件。为了确保这些部分协同工作,开发人员需要超越简单的单元测试。
集成测试将帮助揭示隔离的组件之间交互中的不一致之处,并在接近现实的条件下提供系统模型。
为最坏的情况做准备。高度复杂性带来巨大责任。在发布之前找出所有可能的问题是不现实的。
应急计划:制定快速应对问题的计划可以使严重问题的影响减弱。在发布前制定应急计划可能需要做一些工作,但这比没有准备要好得多。
最后教育你的用户。了解哪里可能出错是那一部分;下一步是确保您的用户分享您的理解。
微信掃描關注公眾號,及時掌握新動向
2.本文版權歸屬原作所有,僅代表作者本人觀點,不代表比特範的觀點或立場
2.本文版權歸屬原作所有,僅代表作者本人觀點,不代表比特範的觀點或立場