洒脱喜一周评 | 比特币锚定币遇“三难”问题,去中心化的tBTC有点太高冷

写在前面:对于很多比特币支持者而言,DeFi的最大诟病就在于系统本身实际是中心化的,例如一些将比特币带入以太坊DeFi世界的尝试,也都使用了一些偏中心化的方式,而新出现的tBTC协议,则尝试以一种复杂的方式实现最小化信任的比特币锚定币,因而赢得了一部分比特币支持者的关注,而在5月11日,tBTC将在以太坊主网上正式启动,那它会是DeFi生态想要的解决方案吗?

在这期的内容分享当中,我们将首先了解一些中心化比特币锚定币的设计优势及不足,然后了解去中心化tBTC的具体设计、它会遇到的一些问题,然后尝试判断它适合的使用人群。

而在硬核技术文章精选部分,我们还分享了一些关于比特币、以太坊、波卡、Filecoin、Gnosis协议以及USDT的一些有用知识。

洒脱喜一周评 | 比特币锚定币遇“三难”问题,去中心化的tBTC有点太高冷
(图片来自:tuchong.com)

 

一、最小化信任的tBTC,会是DeFi需要的吗?

 

tBTC是一个由Keep、Summa以及 Cross-Chain Group共同维护的开源项目,它是一种最小化信任的,由可赎回BTC作为担保的一种跨链比特币锚定系统。换句话说,通过这种方式,用户可通过存入他们的比特币,并在以太坊上铸造ERC-20比特币代币,而这个过程无需中间商或KYC,从而实现信任的最小化。

为了进行区分,它的整个系统被描述为“tBTC”,而其代币的名称则被称为“TBTC”。那它与我们现有的比特币锚定币有什么不同呢?

1、偏中心化的跨链比特币锚定币的优势与不足

正如很多人所知道的,加密货币社区已经有很多建立跨链比特币锚定币的尝试,目前市场上已有的解决方案主要有2种类型,而它们都是偏中心化的锚定方式,要么是依赖于受信任的第三方实体,要么是依赖于受信任的“联邦锚定”模式。

在联邦锚定模式中,比特币会通过多重签名或门限签名的方式来进行锁定,然后通过在另一条区块链上发行代表这些比特币的代币。

例如Liquid就是由Blockstream开发的一条联邦侧链,它是作为交易所间的一个结算网络。而Liquid网络中的比特币,被锁定在一个由15个签名组成的多重签名钱包中,而该钱包是由Blockstream预先审查的Liquid参与者组成的。这些签名者通过称为“强联邦”的方法来验证侧链,当多数投票者签名同意后,才允许退出到主链。

而WBTC则是使用了一种类似的“封装”类比特币ERC-20代币方法,“封装”类代币遵循了中心化的模型,但它们并不是完全依赖于一个机构,而是依赖于网络中扮演不同角色的一个联盟。

WBTC联盟负责投票管理token比特币储备的托管人。其中每个托管人都操作一个多签比特币钱包,并控制所有的私钥。不同于Liquid的设计, WBTC的托管人能够随意移动各自托管部分的比特币,并负责在以太坊上铸造WBTC,这相比Liquid要更中心化,但限制会少一些。

而最后一种,则是由单个机构发行的托管锚定币,这类“封装”类比特币锚定币的中心化程度最高,但它们的可扩展性却是最强的。

而以上这些偏中心化的方法,存在着几个明显的好处,比如:

  1. 它们都可以在其他区块链上以锚定token的形式呈现比特币;
  2. 储备资产都可以很容易地进行链上审计;
  3. 都使用了简单的机制,降低了操作失败的机会,以及操作的总成本;

然而,由于中心化的设计,这些方案都存在着明显的缺点,不可避免地引入了一种与比特币不兼容的信任模型。

比如在Liquid的模型中,假设出现恶意托管人,其就可以阻止提款,在某些情况下,甚至还可能会出现合谋携款跑路的情况。

那是否存在去中心化的锚定方式呢?

一种可能,就是创建一种去中心化的合成资产。

以太坊上Maker的Dai稳定币就是一个流行的例子,其通过锁定ETH,再加上喂价及很多稳定机制,就可以在不利条件下维持住锚定。

尽管Maker并没有推出一款合成型比特币锚定币,但通过这样的机制来创造一款比特币锚定币也是容易的。

合成比特币锚定币的最大好处,在于它的灵活性。合成资产不需要遵循管理锚定资产的规则,无论好坏。

例如,合成资产可能会有效地“膨胀”基础资产的供应量(相当于增发),这对某些金融系统来说可能是可取的。

尽管如此,推出这样的合成类资产还是会面临其他的风险,由波动性较大的ETH储备作为支持来生成比特币锚定币,这是一个危险的组合。

那还有没有更去中心化的方式呢?

2、tBTC的设计目标

我们想要的,是一款既能够维持比特币原有属性,同时能够在以太坊上进行流通的ERC-20代币,而它必须:

  1. 无论在任何司法管辖区,它都能够抗审查和扣押;
  2. 抗通胀,只有在提供BTC押金证明后,才能够铸造锚定币;
  3. 抗杠杆,其存在不应允许额外合成比特币的“印刷”;
  4. 没有中间人,就像比特币一样;
  5. 可赎回,锚定币的供应总是有相同数量的储备BTC作为支撑。这意味着,对于流通中的每个锚定币token,都有1 BTC会从流通中“消失”。

而这些属性,共同确保了一个健壮的跨链锚定币。那如何才能实现这些目标呢

在理解tBTC的设计之前,我们先来考虑一个简单的变体,它在理论上可以完成这些任务。

想象一个链外(off-chain)参与者,我们称它为签名者(Signer),然后是一个实现ERC-20接口的以太坊智能合约PeggedBitcoin(PBTC),以及另一个被许可铸造和燃烧PBTC的合约(称为PeggedBitcoinReserve)。

而另一个链外(off-chain)参与者——存款人(Depositor),他想要在PeggedBitcoin合约上铸造一个代币。存款人(Depositor)要求PeggedBitcoinReserve合约接受1 BTC存款。PeggedBitcoinReserve合约等待签名者确认并返回新的BTC地址,同时将相当于150%存款价值的ETH抵押品存入PeggedBitcoinReserve合约。存款人(Depositor)将1 BTC存入新的BTC地址,并向PeggedBitcoinReserve合约提供证明,然后铸造出1 PBTC,为简单起见,系统向存款人(Depositor)发送0.99 PBTC,向签名者(Signer)发送0.01 PBTC。

而取款过程则是相反的,任何参与者都可以使用比特币地址向PeggedBitcoinReserve合约发送 1 PBTC。签名者(Signer)为该比特币地址支付金额(1 BTC-比特币交易费),并向PeggedBitcoinReserve合约提供付款证明,而PeggedBitcoinReserve合约则燃烧掉剩余的 1 PBTC。现在,签名者(Signer)就可以从PeggedBitcoinReserve合约那提取出相应的抵押物。

尽管这种简单的设计是很吸引人的,但它跳过了一些棘手的问题,例如,在EVM上有效的比特币支付证明验证,以及可靠的喂价实现。此外,它也是基于一个非常不安全的托管解决方案。

首先,协议依赖于单个签名者,如果存款的价值超过了抵押签名者所支付的金额,就没有办法阻止签名者携款跑路。

第二,协议依赖的是一个热钱包,随着PBTC市值的增长,黑客攻击风险将大大增加。

最后,在这样的协议下,如果出现一次取款出错,就可能会影响到整个系统,并对其他存取款产生不良的影响。

那tBTC的解决方案到底是什么呢?它是在上面的基础上,采用了一个多钱包多签名的解决方案,从而消除了单一失败点。

而要实现它,就需要用到以下这些组件:

  1. 一种用于签名者选择的分布式工作token;
  2. 签名者选择的随机信标(beacon);
  3. 一种基于secp256k1曲线的高效分布式密钥生成协议;
  4. 一种有效的基于secp256k1曲线的多方门限ECDSA协议;

好的,下面我们具体通过每个过程来了解tBTC的设计。

3、存款

上面提到,tBTC提供了一种在非比特币主链上创建TBTC代币的方式(在tBTC v1中,指的就是以太坊主链),并且实现与比特币的1:1锚定。对铸造TBTC感兴趣的各方,可要求tBTC系统为他们提供一个比特币地址。系统会选择一组签名者,这些签名者的任务是生成私有/公共密钥对,并将其提供给系统。 然后,相关方通过向钱包发送比特币成为存款人(Depositor)。而要保管这些存款,需要签名者提供ETH保证金以保证其良好的行为。而为了吸引签名者,存款人就需要支付一笔签名费。

具体步骤如下图所示:

洒脱喜一周评 | 比特币锚定币遇“三难”问题,去中心化的tBTC有点太高冷

获取TBTC的起点,就是生成一个存款请求。这个请求是向tBTC主链(短期指以太坊)智能合约发起的一笔交易。由于签名组不能免费创建,因此存款请求就需要有一笔保证金,以覆盖签名组的创建。在向生成的钱包成功存款后,这个保证金就会得到退还。

签名者选择

一旦收到存款请求,就可以通过随机选择一组签名者来创建签名组,下图大致描述了这个过程。

洒脱喜一周评 | 比特币锚定币遇“三难”问题,去中心化的tBTC有点太高冷

当请求创建签名组时,tBTC系统从安全的去中心化随机信标(beacon)请求一个随机种子。生成的随机种子用于从合格的签名者池中随机选择签名组成员。最后,这些签名者协调分布式密钥生成协议,生成组的公共ECDSA密钥,该密钥用于生成钱包地址,然后发布到以太坊区块链,这就完成了签名者选择阶段。

签名者保证金

在签名组的选定成员可执行分布式密钥生成之前,他们必须同意缴纳一笔ETH保证金(签名者保证金),然后才能成为签名组的成员,如果签名组在分布式密钥生成之成后对未经授权的数据段进行签名,则签名组的保证金就会遭到惩罚。而如果是某成员因错误行为导致分布式密钥生成失败,则他就会遭到特定的惩罚。

关于分布式密钥的生成协议,其应具有以下三个属性:

  1. 整个签名组应该具有一个ECDSA公钥,该公钥将在以太坊链上共享,并且对应于该签名组拥有的比特币钱包。
  2. 签名组的每个成员都应具有一个门限ECDSA密钥片段(key share),其可用于为涉及签名组钱包的任何交易创建门限ECDSA签名片段。
  3. 签名组的每个成员,都应能够将其自身和签名组其他成员的签名片段结合起来,以生成代表签名组执行的给定交易的签名。

进行存款

一旦tBTC系统具有可用于给定存款请求的钱包地址,存款人就可以广播一笔比特币交易,将BTC从他们控制的钱包发送到签名组的钱包地址。一旦交易得到比特币区块链的充分(6个)确认,存款人(depositor)必须向以太坊发出一笔交易,证明这笔存款已经完成。

而比特币区块链与以太坊区块链之间的桥梁就是tBTC系统,它是作为以太坊区块链上的一组智能合约而运行的。当系统接受存款证明时,存款保证金将退还给存款人。如果在给定的时间内未收到存款证明,则签名组将解散,然后签名组成员就可以收取这些保证金。

轻中继(Light Relays)

为了证明一笔存款,存款人提交交易已被确认的证明。该证明由以太坊链上的链上简单支付验证(SPV)合约验证。(关于跨链SPV系统及其安全属性更具体的描述,可看原论文)

轻中继(Light Relays)是为tBTC开发的一种新型链上SPV,其试图利用简洁高效的无状态SPV证明,同时传递足够的信息,为每个无状态证明提供一些保证。这利用了比特币协议的难度调整特性来实现这一点。

轻中继(Light Relays)不存储每个区块头,相反,它只在难度调整事件周围存储一部分区块头,并记录当前2016区块epoch的难度。其只负责跟踪比特币当前的难度,而不负责其他关于比特币状态的信息。

Lots(重要的1 BTC固定规模)

存款将按固定规模(Lots)分批管理,而每笔存款的金额都是相同的1 BTC。因此,提交存款证明的存款人,必须证明他们在签名组钱包中存入了 1 BTC。如果存款人希望存入超过这一规模的比特币,他们就需要创建多个存款请求,并为多笔存款提供资金。这允许每笔存款由不同的签名组提供支持,这在简化签名组保证金计算的同时,提高了系统对签名组失败(无论是否恶意)的恢复能力,但问题是,这是设计会造成存款错误的问题。

存款错误

存款人应在资金交易中发送确切数量的BTC,否则可能会损失资金。由于系统不可能强迫用户发送任何特定数量的金额,因此理想情况下,系统可以妥善处理多付款和少付款的情况。但实际上,这种多付与少付的行为,会被系统视为一种不良行为,并将相关费用移至存款人。

为了避免少付的影响,系统不会接受小于lot大小(最初为1 BTC)的资金证明。这意味着在资金交易中发送少于1 BTC的用户不会收到任何TBTC,并且将锁定在资金交易中的BTC移交给签名者。当发生这种情况时,签名者可以解锁交易中的资金并平均分配。(关于更多细节,看下面的多UTXO部分内容)

而出现多付的情况,会导致签名者保证金不足的问题,这种情况下,系统会接受资金证明,但会根据常规lot数铸造TBTC。

在一个有效市场中,这笔存款将被立即赎回,因为赎回者希望能够从中实现套利。

示例:当存款人存入1.6 BTC,并提供了证明,那他只能够铸造出1 TBTC。任何燃烧1.0 TBTC的用户,都能够申领这笔1.6 BTC的存款金

存款人应注意到这个问题,并立即尝试燃烧他的TBTC,以收回存款金。如果他没有意识到这个问题,那他多支出的资金,就会被其他参与者收走。

多UTXO

存款人可能会向签名组地址发送多个UTXO。这可能是人为或软件错误造成的。不幸的是,将资金返还给存款人,将对链的复杂性及gas费用造成重大影响,因为每个UTXO都需要通过SPV进行证明。此外,尽管UTXO的总价值未知,但tBTC必须还要开发一种机制,在经济上迫使签名者签署每笔交易。因此,系统仅接受大于1 BTC的第一个UTXO,而超额部分就会被没收。因此,存款人必须只发送一个适当大小的UTXO

举个特别悲伤的例子,考虑一个天真的存款人,如果她在一笔交易中错误地发送了0.5 BTC的资金,然后在另一笔交易中发送了剩下的0.5 BTC,那么这两个UTXO都将被没收。对于存款人而言,这是一个非常严重的问题,它必须要通过用户界面得到妥善解决,否则就会造成重大的资金损失

4、保证金(Bonding)与喂价

由于签名者可能会出现串通审查提款或携款逃跑的情况,因此签名者对于每次存款都需要提供保证金。

而这种保证金,必然是流动性大且市值较大的资产,对于tBTC v1而言,保证金就是ETH(随着生态系统的成熟,其他抵押品选择可能也会变得可行)。

考虑一笔1 BTC的存款,其所在的签名组有5人,而只要其中有3人签名,资金就可以得到放行。在糟糕的情况下,3个签名者都可能是恶意的,他们会试图窃取这笔存款,那他们每人就可以获得1/3 BTC的资金。为了防止这个问题,这5名签名者每人就要抵押价值0.33 BTC的资金,并以ETH支付。

注意,在tBTC v1中,签名协议中的可归属性限制,意味着签名组实际是3-of-3。也就是说,每个签名者需要缴纳的保证金是1 BTC的50%,三个签名者共计需缴纳150%的保证金,在后期经过优化后,保证金可以减少一些

喂价

喂价是系统不可或缺的一部分,它可以确保所有tBTC签名者获得足够的抵押,对于tBTC v1,喂价将基于MakerDAO的ETHBTC 预言机安全模块,目前由MakerDAO经营。

最低喂价设计完全由以下接口指定:


interface PriceFeed {
function getPrice() external view returns (uint128);
function updatePrice(uint128 price) public;
}

它主要用于计算比特币存款的价值,并以ETH计价。

喂价是tBTC安全的组成部分,将来,它将主要由tBTC生态系统控制。它的首次升级,重点是整合一种称为“无价馈送”(priceless feed)的喂价机制。

5、铸币

接下来是铸造TBTC的过程,它与存放BTC的过程是不同的。

铸造TBTC有两个阶段,一是零确认存款创建一个非同质代币,然后是通过智能合约,将非同质代币兑换成同质代币TBTC,这两个阶段,可以在强大的安全性与具有更好用户体验的重组及更灵活的用例之间取得平衡。

1、铸造非同质tBTC 存款代币

在请求存款并形成签名组之后,存款者会立即收到一个名为tBTC存款代币(TDT)的非同质代币,这代表了他们的存款所有权。

对TDT存款的任何攻击,都只应影响代币持有人,而不是整个供应锚定货币。而针对特定存款的攻击,可能包括比特币重组/双花、DoS攻击、恶意签名者或存款抵押不足等。

因此,TDT的任何接受者,都需要评估代币本身的风险。

2、铸造同质TBTC代币

一旦存款积累了足够的工作,就有资格被交易为同质TBTC代币。管理这个过程的合约被称为“自动售卖机”。

TBTC“自动售卖机”是以太坊链上负责铸造TBTC的一个合约。

任何代表合格存款的TDT都可用于交换,它们也可用于铸造同质TBTC代币,铸造TBTC是可选的,存款人可以选择保留TDT,这在维持存款的有效期内有效。请注意,如果TDT的持有人想要以任意金额进行交易,那么他们必须要铸造TBTC,因为tBTC存款代币(TDT)本身是非同质的

合格的TDT的持有人,可以将他的TDT兑换成TBTC,而每生成 1 TBTC,就要减去一笔签名者费用。

签名者费用

由于签名者会将自己的资金置于风险之中,因此需要提供给他们风险回报,才能保持竞争力。

根据设计,存款人每存入1 BTC,签名者就会得到0.009375 TBTC的奖励,由于每笔存款的固定期限为6个月,这意味着签名者群体每年的收入,就相当于TBTC总市值的1.875%。

6、签名

而上述的所有机制,都要求比特币区块链上的每一笔存款,都涉及一个M-of-N多重签名钱包。

比特币的共识规则将脚本大小限制为520字节(隔离见证输出为10000字节),将多签脚本的最大大小限制为大约80个参与者(OP_CHECKMULTISIG被限制为20个公钥,但这可以通过使用OP_CHECKSIG ADDOP_GREATERTHAN绕过)。而未来的提议(例如MAST),将允许实现更大的多签钱包,但要在比特币上激活一个新功能,历来都不是一件确定性事件。

最后,以太坊和比特币中的大型多签钱包,都会随参与者数量的增加而增加验证成本,而在以太坊上构建多签则会尤其的困难。那如何解决呢?

通过将聚合签名与公钥聚合结合使用,我们可以消除上述的所有复杂性,并用一个简单的单一签名验证来代替它们。

其中,每个参与者使用他们的私钥签署预期的消息,并贡献最终聚合签名的“片段”。假设是ECDSA,那么就可以使用比特币上的OP_CHECKSIGVERIFY或以太坊上的ECRECOVER操作对聚合公钥进行验证。该过程简单且成本低廉,其可避免复杂的多签验证逻辑,并且可针对不同的M-of-N配置进行升级。

1、门限ECDSA

对于私钥x、消息M、哈希函数H以及统一选择的k,ECDSA签名一个配对(r,s),其中s=k(M+xr)r = R_xR = g (k-1),以及m = H(m)。直观地说,如果通过n个协议参与者中的t个之间的秘密共享来计算kx,则可以将该签名转换为门限签名。Gennaro和Goldfeder详细描述了执行此过程的有效机制。

非正式地说,参与者会执行以下操作来签署消息:

  1. 生成一个k*x的附加片段,其中每个参与者i都拥有k_ix_i
  2. 使用Bar-Ilan和Beaver的反转技巧有效地计算R=g^(1/k),而不需要任何参与者i暴露k_i,并设置r = R_x
  3. 每个参与者计算其签名片段:s_i = m * k_i + r * k_i * x_i
  4. 门限签名就是所有签名s_i的总和。

2、改进版签名方案

目前,当签名者行为不当时,他们的所有保证金都会被扣押和烧毁。如果将系统参数化为使用M-of-N多重签名来支持存款,则意味着如果M个签名者行为不当,则N个签名者的保证金都会遭到惩罚,这是要避免的一种糟糕情况。而要解决这个问题,就可以采用可问责子群多重签名方案(Accountable-subgroup multisignatures),其可以仅惩罚行为不当的M个签名者,从而消除惩罚诚实签名者的风险。

但要注意的是,最初版本的tBTC并不支持这个改进方案,这需要在之后的协议升级中启用。

而其它可能应用的聚合签名方案,包括MuSigBLS签名,其中MuSig是由Blockstream开发的一个的聚合签名方案,此签名验证算法可防止恶意密钥攻击。而Boneh,Drijvers以及Neven则以MuSig和BLS签名的工作为基础,提出了一种高效的BLS签名结构变体,该结构仅需要进行两次配对操作即可进行验证,并且也可以防止恶意密钥攻击。

这种多重签名要比MuSig短,因为它只是1个组元素而不是2个。此外,MuSig还需要一轮额外的通信来生成nonce R,而在BLS中它是不存在的。

7、赎回

剩下的最后一个步骤,就是赎回。

只要存款保持良好信誉,非同质tBTC存款代币的持有人就可要求赎回,放弃其NFT并支付与该存款相关的任何未付签名者费用。

这个时候,赎回过程可能是无法取消的。

一旦赎回申请发起,签名者必须产生有效的比特币签名,将基础BTC发送到所请求的地址。签名发布后,任何参与者都可使用该签名来构建赎回交易并将其提交至比特币区块链。

1、存款条款和赎回

需要指出的是,tBTC系统的存款是有固定期限的,在该期限到期后,存款将从存款所有人处解除锁定状态,以便可以通过任何帐户(尤其包括存款所有人帐户)赎回。在这个时候,赎回成本正好是1 TBTC,而无需支付签名者费用。如果在TBTC铸造期间,该存款已托管了签名者费用,则从托管处支付签名者费用,并向存款所有者发送完整的1 TBTC。如果存款没有托管费,则所有者会发送用于赎回的1 TBTC同时减去分配给签名者的签名费。

注意:对于存款所有者,在期限内,如果有托管费,则赎回是免费的,而如果没有托管费,则需要支付签名者费用。这与定期赎回有细微的区别,在定期赎回中,即使有托管费用,存款所有人也必须支付签名者费用。

2、赎回要求

在以下几种情况下,参与者可提交赎回请求:

  1. 如果保证金状况良好(尚未兑现,尚未被指控欺诈,并且尚未进入签名者清算),在有效期内,且申请人持有相应的tBTC存款代币;
  2. 如果保证金状况良好且已到期或过期,无论请求者是否持有相应的tBTC存款代币;
  3. 如果存款已进入“courtesy call”欠抵押状态,无论请求者是否持有相应的tBTC存款代币;

为了请求赎回,请求者需向以太坊区块链上的智能合约执行一笔赎回请求交易。赎回申请需包括:

  1. 一笔比特币交易费用(必须大于等于2345聪);
  2. 用于BTC交付的公钥哈希(PKH)(1、属于请求者公钥的20字节hash160,2、为了安全和隐私目的,这应该是一个新的密钥对)
  3. 存款人的偿还金额(TBTC);

从概念上讲,偿还金额是存款额加上0.005 TBTC的签名者费用。这可以确保签名者在提供签名时得到支付,但在实际情况下,偿还金额可能会根据赎回方、TDT持有人、FRT持有人以及存款的定期状态而发生变化。

赎回交易格式

赎回交易的格式,嵌入在以太坊区块链上运行的智能合约当中。这可以防止对tBTC系统的一些复杂攻击,并简化合约逻辑。请求者只能指定交易的两个方面:1、费用,2、目的地址。而所有其他特定于存款的信息(例如outpoint和UTXO大小),都已预先告知了存款合约。

赎回交易具有1个输入(存款UTXO)和1个输出(兑换输出),它没有找零输出或其他输入(因为不需要)。有关格式和结构的完整内容,读者可以在原论文附录中找到。

赎回证明

赎回证明是指比特币区块链确认赎回交易的一个SPV证明。一旦确认赎回请求,存款智能合约将在12小时内提供赎回证明。为了验证赎回证明,智能合约执行正常的SPV证明验证,并另外验证接收者与请求者的公钥哈希匹配,并且该值大于或等于UTXO大小。

一旦赎回证明被确认,并且支付了签名者费用后,FRT持有人将收到其托管资金(如果存款已提前赎回),而TDT持有人将获得剩余的还款额。与还款金额一样,成功赎回的各方各自收到的金额,会根据TDT持有者、FRT持有者、赎回者和存款状态的不同而不同。

验证签名

在赎回请求得到充分确认后,签名者必须按要求在赎回交易签名哈希上生成签名。他们将在3个小时内出示签名或赎回证明,超出这个时间就会遭到处罚。提交有效签名后,签名者仍需提供赎回证明,但最后期限总共延长到12个小时。

如前所述,管理存款的以太坊智能合约,具有计算赎回交易签名哈希所需的所有信息,这包括签名者的门限公钥。使用公钥、签名哈希和赎回请求,智能合约就可以知道签名的密码学有效性,以及该摘要上的签名是作为赎回过程的一部分被请求的。

此外,由于比特币费用是由网络拥堵等其他高度不可预测的因素共同决定的,因此请求者可能无法选择适当的费用。而如果未提交赎回证明,或未经明确授权进行了签名,则签名者将受到惩罚。这可能会给签名者造成一种无法取胜的局面,在这种情况下,签名者无法在当前的收费环境下确​​认请求者的交易,尽管其行为诚实,但最终还是会受到惩罚。不幸的是,我们不能依赖请求者保持在线或诚实地更新费率。因此,系统需要一些机制来公平地调整费率,而无需请求者的明确同意。

最简单的方案,是允许签名者在超时后在无需请求者同意的情况下增加费用。因此,tBTC允许签名者每4小时线性增加一次费用。也就是说,如果费用为f,则在4小时后,签名者可通知存款合约将费用增加到2f,如果8小时后交易仍未确认,则签名者可通知存款合约将费用增加到3f。这确保了在当前网络处于拥堵的情况下,最终将在最低费用率附近确认赎回交易。而为了防止签名者反复请求增加费用,他们必须在每个费用级别上提供签名,这可以确保在请求增加之前,实际尝试每一种费率。

洒脱喜简评:以上就是tBTC的大致设计,尽管这篇文章只是讲了一个基础框架,而没有涉及到更具体的细节内容,但其设计的复杂性是显而易见的。为了实现最大程度的去中心化,tBTC采用了各种不利于扩展的设定,例如每次存款请求只适合1 BTC,无论是过多还是过少都可能会遭受损失,此外,像多UTXO的问题也会导致资金损失问题,总而言之,该方案的重点是考虑了去中心化,但牺牲了可扩展性,并可能在安全方面引发新的问题,从这一角度来看,这种方案似乎并不适合普通人使用,而更适合专业的参与者,即便如此,其合约安全性也有待于验证,但我们不能否认的是,tBTC的引入,为比特币、以太坊以及DeFi都带来了新的可能。

 

二、硬核技术文章精选

 

除了以上关于tBTC的一些小知识,本期周评我们还有很多硬核内容要和大家分享哦,它们分别是:

  1. 以太坊2.0信标链中的状态转换
  2. ETH 1.0 需要为 ETH 2.0 提供什么支持?
  3. 波卡的 NPoS 机制是如何运作的?
  4. 手把手教你构建一个无需银行的商业DAO
  5.  5分钟了解MIT比特币改进方案Utreexo,手机运行全节点不再是梦
  6. Filecoin复制证明(PoRep)发展现状
  7.   一文了解以太坊最新研发进展,零知识证明、分片等话题一网打尽
  8. Gnosis协议:如何从协议层解决去中心化交易所的老大难
  9. 比特币技术周报丨 PayJoin隐私协议得到启用,BTC交易可以匿名了?
  10. 干货丨详解以太坊2.0如何与1.0合并
  11. 印钞机的秘密:USDT增发最全技术细节披露

本期的分享就到这里啦,下周再见~

本文链接:https://www.8btc.com/article/589172
转载请注明文章出处

转载声明:本文 由CoinON抓取收录,观点仅代表作者本人,不代表CoinON资讯立场,CoinON不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证。若以此作为投资依据,请自行承担全部责任。

声明:图文来源于网络,如有侵权请联系删除

风险提示:投资有风险,入市需谨慎。本资讯不作为投资理财建议。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 2020年4月28日 下午8:15
下一篇 2020年4月28日 下午9:14

相关推荐

洒脱喜一周评 | 比特币锚定币遇“三难”问题,去中心化的tBTC有点太高冷

星期二 2020-04-28 20:18:15

写在前面:对于很多比特币支持者而言,DeFi的最大诟病就在于系统本身实际是中心化的,例如一些将比特币带入以太坊DeFi世界的尝试,也都使用了一些偏中心化的方式,而新出现的tBTC协议,则尝试以一种复杂的方式实现最小化信任的比特币锚定币,因而赢得了一部分比特币支持者的关注,而在5月11日,tBTC将在以太坊主网上正式启动,那它会是DeFi生态想要的解决方案吗?

在这期的内容分享当中,我们将首先了解一些中心化比特币锚定币的设计优势及不足,然后了解去中心化tBTC的具体设计、它会遇到的一些问题,然后尝试判断它适合的使用人群。

而在硬核技术文章精选部分,我们还分享了一些关于比特币、以太坊、波卡、Filecoin、Gnosis协议以及USDT的一些有用知识。

洒脱喜一周评 | 比特币锚定币遇“三难”问题,去中心化的tBTC有点太高冷
(图片来自:tuchong.com)

 

一、最小化信任的tBTC,会是DeFi需要的吗?

 

tBTC是一个由Keep、Summa以及 Cross-Chain Group共同维护的开源项目,它是一种最小化信任的,由可赎回BTC作为担保的一种跨链比特币锚定系统。换句话说,通过这种方式,用户可通过存入他们的比特币,并在以太坊上铸造ERC-20比特币代币,而这个过程无需中间商或KYC,从而实现信任的最小化。

为了进行区分,它的整个系统被描述为“tBTC”,而其代币的名称则被称为“TBTC”。那它与我们现有的比特币锚定币有什么不同呢?

1、偏中心化的跨链比特币锚定币的优势与不足

正如很多人所知道的,加密货币社区已经有很多建立跨链比特币锚定币的尝试,目前市场上已有的解决方案主要有2种类型,而它们都是偏中心化的锚定方式,要么是依赖于受信任的第三方实体,要么是依赖于受信任的“联邦锚定”模式。

在联邦锚定模式中,比特币会通过多重签名或门限签名的方式来进行锁定,然后通过在另一条区块链上发行代表这些比特币的代币。

例如Liquid就是由Blockstream开发的一条联邦侧链,它是作为交易所间的一个结算网络。而Liquid网络中的比特币,被锁定在一个由15个签名组成的多重签名钱包中,而该钱包是由Blockstream预先审查的Liquid参与者组成的。这些签名者通过称为“强联邦”的方法来验证侧链,当多数投票者签名同意后,才允许退出到主链。

而WBTC则是使用了一种类似的“封装”类比特币ERC-20代币方法,“封装”类代币遵循了中心化的模型,但它们并不是完全依赖于一个机构,而是依赖于网络中扮演不同角色的一个联盟。

WBTC联盟负责投票管理token比特币储备的托管人。其中每个托管人都操作一个多签比特币钱包,并控制所有的私钥。不同于Liquid的设计, WBTC的托管人能够随意移动各自托管部分的比特币,并负责在以太坊上铸造WBTC,这相比Liquid要更中心化,但限制会少一些。

而最后一种,则是由单个机构发行的托管锚定币,这类“封装”类比特币锚定币的中心化程度最高,但它们的可扩展性却是最强的。

而以上这些偏中心化的方法,存在着几个明显的好处,比如:

  1. 它们都可以在其他区块链上以锚定token的形式呈现比特币;
  2. 储备资产都可以很容易地进行链上审计;
  3. 都使用了简单的机制,降低了操作失败的机会,以及操作的总成本;

然而,由于中心化的设计,这些方案都存在着明显的缺点,不可避免地引入了一种与比特币不兼容的信任模型。

比如在Liquid的模型中,假设出现恶意托管人,其就可以阻止提款,在某些情况下,甚至还可能会出现合谋携款跑路的情况。

那是否存在去中心化的锚定方式呢?

一种可能,就是创建一种去中心化的合成资产。

以太坊上Maker的Dai稳定币就是一个流行的例子,其通过锁定ETH,再加上喂价及很多稳定机制,就可以在不利条件下维持住锚定。

尽管Maker并没有推出一款合成型比特币锚定币,但通过这样的机制来创造一款比特币锚定币也是容易的。

合成比特币锚定币的最大好处,在于它的灵活性。合成资产不需要遵循管理锚定资产的规则,无论好坏。

例如,合成资产可能会有效地“膨胀”基础资产的供应量(相当于增发),这对某些金融系统来说可能是可取的。

尽管如此,推出这样的合成类资产还是会面临其他的风险,由波动性较大的ETH储备作为支持来生成比特币锚定币,这是一个危险的组合。

那还有没有更去中心化的方式呢?

2、tBTC的设计目标

我们想要的,是一款既能够维持比特币原有属性,同时能够在以太坊上进行流通的ERC-20代币,而它必须:

  1. 无论在任何司法管辖区,它都能够抗审查和扣押;
  2. 抗通胀,只有在提供BTC押金证明后,才能够铸造锚定币;
  3. 抗杠杆,其存在不应允许额外合成比特币的“印刷”;
  4. 没有中间人,就像比特币一样;
  5. 可赎回,锚定币的供应总是有相同数量的储备BTC作为支撑。这意味着,对于流通中的每个锚定币token,都有1 BTC会从流通中“消失”。

而这些属性,共同确保了一个健壮的跨链锚定币。那如何才能实现这些目标呢

在理解tBTC的设计之前,我们先来考虑一个简单的变体,它在理论上可以完成这些任务。

想象一个链外(off-chain)参与者,我们称它为签名者(Signer),然后是一个实现ERC-20接口的以太坊智能合约PeggedBitcoin(PBTC),以及另一个被许可铸造和燃烧PBTC的合约(称为PeggedBitcoinReserve)。

而另一个链外(off-chain)参与者——存款人(Depositor),他想要在PeggedBitcoin合约上铸造一个代币。存款人(Depositor)要求PeggedBitcoinReserve合约接受1 BTC存款。PeggedBitcoinReserve合约等待签名者确认并返回新的BTC地址,同时将相当于150%存款价值的ETH抵押品存入PeggedBitcoinReserve合约。存款人(Depositor)将1 BTC存入新的BTC地址,并向PeggedBitcoinReserve合约提供证明,然后铸造出1 PBTC,为简单起见,系统向存款人(Depositor)发送0.99 PBTC,向签名者(Signer)发送0.01 PBTC。

而取款过程则是相反的,任何参与者都可以使用比特币地址向PeggedBitcoinReserve合约发送 1 PBTC。签名者(Signer)为该比特币地址支付金额(1 BTC-比特币交易费),并向PeggedBitcoinReserve合约提供付款证明,而PeggedBitcoinReserve合约则燃烧掉剩余的 1 PBTC。现在,签名者(Signer)就可以从PeggedBitcoinReserve合约那提取出相应的抵押物。

尽管这种简单的设计是很吸引人的,但它跳过了一些棘手的问题,例如,在EVM上有效的比特币支付证明验证,以及可靠的喂价实现。此外,它也是基于一个非常不安全的托管解决方案。

首先,协议依赖于单个签名者,如果存款的价值超过了抵押签名者所支付的金额,就没有办法阻止签名者携款跑路。

第二,协议依赖的是一个热钱包,随着PBTC市值的增长,黑客攻击风险将大大增加。

最后,在这样的协议下,如果出现一次取款出错,就可能会影响到整个系统,并对其他存取款产生不良的影响。

那tBTC的解决方案到底是什么呢?它是在上面的基础上,采用了一个多钱包多签名的解决方案,从而消除了单一失败点。

而要实现它,就需要用到以下这些组件:

  1. 一种用于签名者选择的分布式工作token;
  2. 签名者选择的随机信标(beacon);
  3. 一种基于secp256k1曲线的高效分布式密钥生成协议;
  4. 一种有效的基于secp256k1曲线的多方门限ECDSA协议;

好的,下面我们具体通过每个过程来了解tBTC的设计。

3、存款

上面提到,tBTC提供了一种在非比特币主链上创建TBTC代币的方式(在tBTC v1中,指的就是以太坊主链),并且实现与比特币的1:1锚定。对铸造TBTC感兴趣的各方,可要求tBTC系统为他们提供一个比特币地址。系统会选择一组签名者,这些签名者的任务是生成私有/公共密钥对,并将其提供给系统。 然后,相关方通过向钱包发送比特币成为存款人(Depositor)。而要保管这些存款,需要签名者提供ETH保证金以保证其良好的行为。而为了吸引签名者,存款人就需要支付一笔签名费。

具体步骤如下图所示:

洒脱喜一周评 | 比特币锚定币遇“三难”问题,去中心化的tBTC有点太高冷

获取TBTC的起点,就是生成一个存款请求。这个请求是向tBTC主链(短期指以太坊)智能合约发起的一笔交易。由于签名组不能免费创建,因此存款请求就需要有一笔保证金,以覆盖签名组的创建。在向生成的钱包成功存款后,这个保证金就会得到退还。

签名者选择

一旦收到存款请求,就可以通过随机选择一组签名者来创建签名组,下图大致描述了这个过程。

洒脱喜一周评 | 比特币锚定币遇“三难”问题,去中心化的tBTC有点太高冷

当请求创建签名组时,tBTC系统从安全的去中心化随机信标(beacon)请求一个随机种子。生成的随机种子用于从合格的签名者池中随机选择签名组成员。最后,这些签名者协调分布式密钥生成协议,生成组的公共ECDSA密钥,该密钥用于生成钱包地址,然后发布到以太坊区块链,这就完成了签名者选择阶段。

签名者保证金

在签名组的选定成员可执行分布式密钥生成之前,他们必须同意缴纳一笔ETH保证金(签名者保证金),然后才能成为签名组的成员,如果签名组在分布式密钥生成之成后对未经授权的数据段进行签名,则签名组的保证金就会遭到惩罚。而如果是某成员因错误行为导致分布式密钥生成失败,则他就会遭到特定的惩罚。

关于分布式密钥的生成协议,其应具有以下三个属性:

  1. 整个签名组应该具有一个ECDSA公钥,该公钥将在以太坊链上共享,并且对应于该签名组拥有的比特币钱包。
  2. 签名组的每个成员都应具有一个门限ECDSA密钥片段(key share),其可用于为涉及签名组钱包的任何交易创建门限ECDSA签名片段。
  3. 签名组的每个成员,都应能够将其自身和签名组其他成员的签名片段结合起来,以生成代表签名组执行的给定交易的签名。

进行存款

一旦tBTC系统具有可用于给定存款请求的钱包地址,存款人就可以广播一笔比特币交易,将BTC从他们控制的钱包发送到签名组的钱包地址。一旦交易得到比特币区块链的充分(6个)确认,存款人(depositor)必须向以太坊发出一笔交易,证明这笔存款已经完成。

而比特币区块链与以太坊区块链之间的桥梁就是tBTC系统,它是作为以太坊区块链上的一组智能合约而运行的。当系统接受存款证明时,存款保证金将退还给存款人。如果在给定的时间内未收到存款证明,则签名组将解散,然后签名组成员就可以收取这些保证金。

轻中继(Light Relays)

为了证明一笔存款,存款人提交交易已被确认的证明。该证明由以太坊链上的链上简单支付验证(SPV)合约验证。(关于跨链SPV系统及其安全属性更具体的描述,可看原论文)

轻中继(Light Relays)是为tBTC开发的一种新型链上SPV,其试图利用简洁高效的无状态SPV证明,同时传递足够的信息,为每个无状态证明提供一些保证。这利用了比特币协议的难度调整特性来实现这一点。

轻中继(Light Relays)不存储每个区块头,相反,它只在难度调整事件周围存储一部分区块头,并记录当前2016区块epoch的难度。其只负责跟踪比特币当前的难度,而不负责其他关于比特币状态的信息。

Lots(重要的1 BTC固定规模)

存款将按固定规模(Lots)分批管理,而每笔存款的金额都是相同的1 BTC。因此,提交存款证明的存款人,必须证明他们在签名组钱包中存入了 1 BTC。如果存款人希望存入超过这一规模的比特币,他们就需要创建多个存款请求,并为多笔存款提供资金。这允许每笔存款由不同的签名组提供支持,这在简化签名组保证金计算的同时,提高了系统对签名组失败(无论是否恶意)的恢复能力,但问题是,这是设计会造成存款错误的问题。

存款错误

存款人应在资金交易中发送确切数量的BTC,否则可能会损失资金。由于系统不可能强迫用户发送任何特定数量的金额,因此理想情况下,系统可以妥善处理多付款和少付款的情况。但实际上,这种多付与少付的行为,会被系统视为一种不良行为,并将相关费用移至存款人。

为了避免少付的影响,系统不会接受小于lot大小(最初为1 BTC)的资金证明。这意味着在资金交易中发送少于1 BTC的用户不会收到任何TBTC,并且将锁定在资金交易中的BTC移交给签名者。当发生这种情况时,签名者可以解锁交易中的资金并平均分配。(关于更多细节,看下面的多UTXO部分内容)

而出现多付的情况,会导致签名者保证金不足的问题,这种情况下,系统会接受资金证明,但会根据常规lot数铸造TBTC。

在一个有效市场中,这笔存款将被立即赎回,因为赎回者希望能够从中实现套利。

示例:当存款人存入1.6 BTC,并提供了证明,那他只能够铸造出1 TBTC。任何燃烧1.0 TBTC的用户,都能够申领这笔1.6 BTC的存款金

存款人应注意到这个问题,并立即尝试燃烧他的TBTC,以收回存款金。如果他没有意识到这个问题,那他多支出的资金,就会被其他参与者收走。

多UTXO

存款人可能会向签名组地址发送多个UTXO。这可能是人为或软件错误造成的。不幸的是,将资金返还给存款人,将对链的复杂性及gas费用造成重大影响,因为每个UTXO都需要通过SPV进行证明。此外,尽管UTXO的总价值未知,但tBTC必须还要开发一种机制,在经济上迫使签名者签署每笔交易。因此,系统仅接受大于1 BTC的第一个UTXO,而超额部分就会被没收。因此,存款人必须只发送一个适当大小的UTXO

举个特别悲伤的例子,考虑一个天真的存款人,如果她在一笔交易中错误地发送了0.5 BTC的资金,然后在另一笔交易中发送了剩下的0.5 BTC,那么这两个UTXO都将被没收。对于存款人而言,这是一个非常严重的问题,它必须要通过用户界面得到妥善解决,否则就会造成重大的资金损失

4、保证金(Bonding)与喂价

由于签名者可能会出现串通审查提款或携款逃跑的情况,因此签名者对于每次存款都需要提供保证金。

而这种保证金,必然是流动性大且市值较大的资产,对于tBTC v1而言,保证金就是ETH(随着生态系统的成熟,其他抵押品选择可能也会变得可行)。

考虑一笔1 BTC的存款,其所在的签名组有5人,而只要其中有3人签名,资金就可以得到放行。在糟糕的情况下,3个签名者都可能是恶意的,他们会试图窃取这笔存款,那他们每人就可以获得1/3 BTC的资金。为了防止这个问题,这5名签名者每人就要抵押价值0.33 BTC的资金,并以ETH支付。

注意,在tBTC v1中,签名协议中的可归属性限制,意味着签名组实际是3-of-3。也就是说,每个签名者需要缴纳的保证金是1 BTC的50%,三个签名者共计需缴纳150%的保证金,在后期经过优化后,保证金可以减少一些

喂价

喂价是系统不可或缺的一部分,它可以确保所有tBTC签名者获得足够的抵押,对于tBTC v1,喂价将基于MakerDAO的ETHBTC 预言机安全模块,目前由MakerDAO经营。

最低喂价设计完全由以下接口指定:


interface PriceFeed {
function getPrice() external view returns (uint128);
function updatePrice(uint128 price) public;
}

它主要用于计算比特币存款的价值,并以ETH计价。

喂价是tBTC安全的组成部分,将来,它将主要由tBTC生态系统控制。它的首次升级,重点是整合一种称为“无价馈送”(priceless feed)的喂价机制。

5、铸币

接下来是铸造TBTC的过程,它与存放BTC的过程是不同的。

铸造TBTC有两个阶段,一是零确认存款创建一个非同质代币,然后是通过智能合约,将非同质代币兑换成同质代币TBTC,这两个阶段,可以在强大的安全性与具有更好用户体验的重组及更灵活的用例之间取得平衡。

1、铸造非同质tBTC 存款代币

在请求存款并形成签名组之后,存款者会立即收到一个名为tBTC存款代币(TDT)的非同质代币,这代表了他们的存款所有权。

对TDT存款的任何攻击,都只应影响代币持有人,而不是整个供应锚定货币。而针对特定存款的攻击,可能包括比特币重组/双花、DoS攻击、恶意签名者或存款抵押不足等。

因此,TDT的任何接受者,都需要评估代币本身的风险。

2、铸造同质TBTC代币

一旦存款积累了足够的工作,就有资格被交易为同质TBTC代币。管理这个过程的合约被称为“自动售卖机”。

TBTC“自动售卖机”是以太坊链上负责铸造TBTC的一个合约。

任何代表合格存款的TDT都可用于交换,它们也可用于铸造同质TBTC代币,铸造TBTC是可选的,存款人可以选择保留TDT,这在维持存款的有效期内有效。请注意,如果TDT的持有人想要以任意金额进行交易,那么他们必须要铸造TBTC,因为tBTC存款代币(TDT)本身是非同质的

合格的TDT的持有人,可以将他的TDT兑换成TBTC,而每生成 1 TBTC,就要减去一笔签名者费用。

签名者费用

由于签名者会将自己的资金置于风险之中,因此需要提供给他们风险回报,才能保持竞争力。

根据设计,存款人每存入1 BTC,签名者就会得到0.009375 TBTC的奖励,由于每笔存款的固定期限为6个月,这意味着签名者群体每年的收入,就相当于TBTC总市值的1.875%。

6、签名

而上述的所有机制,都要求比特币区块链上的每一笔存款,都涉及一个M-of-N多重签名钱包。

比特币的共识规则将脚本大小限制为520字节(隔离见证输出为10000字节),将多签脚本的最大大小限制为大约80个参与者(OP_CHECKMULTISIG被限制为20个公钥,但这可以通过使用OP_CHECKSIG ADDOP_GREATERTHAN绕过)。而未来的提议(例如MAST),将允许实现更大的多签钱包,但要在比特币上激活一个新功能,历来都不是一件确定性事件。

最后,以太坊和比特币中的大型多签钱包,都会随参与者数量的增加而增加验证成本,而在以太坊上构建多签则会尤其的困难。那如何解决呢?

通过将聚合签名与公钥聚合结合使用,我们可以消除上述的所有复杂性,并用一个简单的单一签名验证来代替它们。

其中,每个参与者使用他们的私钥签署预期的消息,并贡献最终聚合签名的“片段”。假设是ECDSA,那么就可以使用比特币上的OP_CHECKSIGVERIFY或以太坊上的ECRECOVER操作对聚合公钥进行验证。该过程简单且成本低廉,其可避免复杂的多签验证逻辑,并且可针对不同的M-of-N配置进行升级。

1、门限ECDSA

对于私钥x、消息M、哈希函数H以及统一选择的k,ECDSA签名一个配对(r,s),其中s=k(M+xr)r = R_xR = g (k-1),以及m = H(m)。直观地说,如果通过n个协议参与者中的t个之间的秘密共享来计算kx,则可以将该签名转换为门限签名。Gennaro和Goldfeder详细描述了执行此过程的有效机制。

非正式地说,参与者会执行以下操作来签署消息:

  1. 生成一个k*x的附加片段,其中每个参与者i都拥有k_ix_i
  2. 使用Bar-Ilan和Beaver的反转技巧有效地计算R=g^(1/k),而不需要任何参与者i暴露k_i,并设置r = R_x
  3. 每个参与者计算其签名片段:s_i = m * k_i + r * k_i * x_i
  4. 门限签名就是所有签名s_i的总和。

2、改进版签名方案

目前,当签名者行为不当时,他们的所有保证金都会被扣押和烧毁。如果将系统参数化为使用M-of-N多重签名来支持存款,则意味着如果M个签名者行为不当,则N个签名者的保证金都会遭到惩罚,这是要避免的一种糟糕情况。而要解决这个问题,就可以采用可问责子群多重签名方案(Accountable-subgroup multisignatures),其可以仅惩罚行为不当的M个签名者,从而消除惩罚诚实签名者的风险。

但要注意的是,最初版本的tBTC并不支持这个改进方案,这需要在之后的协议升级中启用。

而其它可能应用的聚合签名方案,包括MuSigBLS签名,其中MuSig是由Blockstream开发的一个的聚合签名方案,此签名验证算法可防止恶意密钥攻击。而Boneh,Drijvers以及Neven则以MuSig和BLS签名的工作为基础,提出了一种高效的BLS签名结构变体,该结构仅需要进行两次配对操作即可进行验证,并且也可以防止恶意密钥攻击。

这种多重签名要比MuSig短,因为它只是1个组元素而不是2个。此外,MuSig还需要一轮额外的通信来生成nonce R,而在BLS中它是不存在的。

7、赎回

剩下的最后一个步骤,就是赎回。

只要存款保持良好信誉,非同质tBTC存款代币的持有人就可要求赎回,放弃其NFT并支付与该存款相关的任何未付签名者费用。

这个时候,赎回过程可能是无法取消的。

一旦赎回申请发起,签名者必须产生有效的比特币签名,将基础BTC发送到所请求的地址。签名发布后,任何参与者都可使用该签名来构建赎回交易并将其提交至比特币区块链。

1、存款条款和赎回

需要指出的是,tBTC系统的存款是有固定期限的,在该期限到期后,存款将从存款所有人处解除锁定状态,以便可以通过任何帐户(尤其包括存款所有人帐户)赎回。在这个时候,赎回成本正好是1 TBTC,而无需支付签名者费用。如果在TBTC铸造期间,该存款已托管了签名者费用,则从托管处支付签名者费用,并向存款所有者发送完整的1 TBTC。如果存款没有托管费,则所有者会发送用于赎回的1 TBTC同时减去分配给签名者的签名费。

注意:对于存款所有者,在期限内,如果有托管费,则赎回是免费的,而如果没有托管费,则需要支付签名者费用。这与定期赎回有细微的区别,在定期赎回中,即使有托管费用,存款所有人也必须支付签名者费用。

2、赎回要求

在以下几种情况下,参与者可提交赎回请求:

  1. 如果保证金状况良好(尚未兑现,尚未被指控欺诈,并且尚未进入签名者清算),在有效期内,且申请人持有相应的tBTC存款代币;
  2. 如果保证金状况良好且已到期或过期,无论请求者是否持有相应的tBTC存款代币;
  3. 如果存款已进入“courtesy call”欠抵押状态,无论请求者是否持有相应的tBTC存款代币;

为了请求赎回,请求者需向以太坊区块链上的智能合约执行一笔赎回请求交易。赎回申请需包括:

  1. 一笔比特币交易费用(必须大于等于2345聪);
  2. 用于BTC交付的公钥哈希(PKH)(1、属于请求者公钥的20字节hash160,2、为了安全和隐私目的,这应该是一个新的密钥对)
  3. 存款人的偿还金额(TBTC);

从概念上讲,偿还金额是存款额加上0.005 TBTC的签名者费用。这可以确保签名者在提供签名时得到支付,但在实际情况下,偿还金额可能会根据赎回方、TDT持有人、FRT持有人以及存款的定期状态而发生变化。

赎回交易格式

赎回交易的格式,嵌入在以太坊区块链上运行的智能合约当中。这可以防止对tBTC系统的一些复杂攻击,并简化合约逻辑。请求者只能指定交易的两个方面:1、费用,2、目的地址。而所有其他特定于存款的信息(例如outpoint和UTXO大小),都已预先告知了存款合约。

赎回交易具有1个输入(存款UTXO)和1个输出(兑换输出),它没有找零输出或其他输入(因为不需要)。有关格式和结构的完整内容,读者可以在原论文附录中找到。

赎回证明

赎回证明是指比特币区块链确认赎回交易的一个SPV证明。一旦确认赎回请求,存款智能合约将在12小时内提供赎回证明。为了验证赎回证明,智能合约执行正常的SPV证明验证,并另外验证接收者与请求者的公钥哈希匹配,并且该值大于或等于UTXO大小。

一旦赎回证明被确认,并且支付了签名者费用后,FRT持有人将收到其托管资金(如果存款已提前赎回),而TDT持有人将获得剩余的还款额。与还款金额一样,成功赎回的各方各自收到的金额,会根据TDT持有者、FRT持有者、赎回者和存款状态的不同而不同。

验证签名

在赎回请求得到充分确认后,签名者必须按要求在赎回交易签名哈希上生成签名。他们将在3个小时内出示签名或赎回证明,超出这个时间就会遭到处罚。提交有效签名后,签名者仍需提供赎回证明,但最后期限总共延长到12个小时。

如前所述,管理存款的以太坊智能合约,具有计算赎回交易签名哈希所需的所有信息,这包括签名者的门限公钥。使用公钥、签名哈希和赎回请求,智能合约就可以知道签名的密码学有效性,以及该摘要上的签名是作为赎回过程的一部分被请求的。

此外,由于比特币费用是由网络拥堵等其他高度不可预测的因素共同决定的,因此请求者可能无法选择适当的费用。而如果未提交赎回证明,或未经明确授权进行了签名,则签名者将受到惩罚。这可能会给签名者造成一种无法取胜的局面,在这种情况下,签名者无法在当前的收费环境下确​​认请求者的交易,尽管其行为诚实,但最终还是会受到惩罚。不幸的是,我们不能依赖请求者保持在线或诚实地更新费率。因此,系统需要一些机制来公平地调整费率,而无需请求者的明确同意。

最简单的方案,是允许签名者在超时后在无需请求者同意的情况下增加费用。因此,tBTC允许签名者每4小时线性增加一次费用。也就是说,如果费用为f,则在4小时后,签名者可通知存款合约将费用增加到2f,如果8小时后交易仍未确认,则签名者可通知存款合约将费用增加到3f。这确保了在当前网络处于拥堵的情况下,最终将在最低费用率附近确认赎回交易。而为了防止签名者反复请求增加费用,他们必须在每个费用级别上提供签名,这可以确保在请求增加之前,实际尝试每一种费率。

洒脱喜简评:以上就是tBTC的大致设计,尽管这篇文章只是讲了一个基础框架,而没有涉及到更具体的细节内容,但其设计的复杂性是显而易见的。为了实现最大程度的去中心化,tBTC采用了各种不利于扩展的设定,例如每次存款请求只适合1 BTC,无论是过多还是过少都可能会遭受损失,此外,像多UTXO的问题也会导致资金损失问题,总而言之,该方案的重点是考虑了去中心化,但牺牲了可扩展性,并可能在安全方面引发新的问题,从这一角度来看,这种方案似乎并不适合普通人使用,而更适合专业的参与者,即便如此,其合约安全性也有待于验证,但我们不能否认的是,tBTC的引入,为比特币、以太坊以及DeFi都带来了新的可能。

 

二、硬核技术文章精选

 

除了以上关于tBTC的一些小知识,本期周评我们还有很多硬核内容要和大家分享哦,它们分别是:

  1. 以太坊2.0信标链中的状态转换
  2. ETH 1.0 需要为 ETH 2.0 提供什么支持?
  3. 波卡的 NPoS 机制是如何运作的?
  4. 手把手教你构建一个无需银行的商业DAO
  5.  5分钟了解MIT比特币改进方案Utreexo,手机运行全节点不再是梦
  6. Filecoin复制证明(PoRep)发展现状
  7.   一文了解以太坊最新研发进展,零知识证明、分片等话题一网打尽
  8. Gnosis协议:如何从协议层解决去中心化交易所的老大难
  9. 比特币技术周报丨 PayJoin隐私协议得到启用,BTC交易可以匿名了?
  10. 干货丨详解以太坊2.0如何与1.0合并
  11. 印钞机的秘密:USDT增发最全技术细节披露

本期的分享就到这里啦,下周再见~

本文链接:https://www.8btc.com/article/589172
转载请注明文章出处