如何将比特币带到以太坊区块链

在过去的几个月里,我们一直在讨论如何以最放心和用户友好的方式将比特币和其他货币带入以太坊区块链。我们的想法是创建一个代表比特币的ERC20 Token,为了简洁起见,我们称之为BTCT。用户可以从他们现有的比特币创建新的BTCT,然后再兑换他们的BTCT以获得比特币。BTCT可以实现的应用程序各不相同,从去中心化交换到支付再到高级金融产品。在Kyber Network,允许用户在比特币和其他ERC20代币之间进行交易是我们的主要优先事项之一,因为它将有助于增加交易所的交易量。这篇文章描述了我们一直在考虑的这个挑战的一些可能的解决方案。

信托托管

这是技术性角度最简单,也许是最容易理解的解决方案。在这种方法中,将有一个许可的托管人充当受信任的第三方。该托管人将提供比特币地址供用户发送他们的比特币,然后他们将相应数量的BTCT令牌发回给用户。当用户希望将他们的BTCT兑换成比特币时,他们只需向托管人发送请求,托管人又将比特币直接发送到用户的地址。托管人可能会为每次存取款收取一些费用以资助其运营。

虽然托管人确实需要信任,但此解决方案的一大优势是用户始终可以验证托管人在托管钱包中具有等量的比特币。如果托管人行为不诚实,用户可以利用完全透明的公共记录对托管人采取法律行动。这与USDT解决方案不同,在该解决方案中,如果进行审计,用户需要信任审计决策,并且无法采取独立的法律行动。此外,在USDT系统中,审计将不是实时的,即人们需要等待保管人编制报告。

使用智能合约无信托托管

上述解决方案尽管在实践中可能运行良好,但需要集中实体作为可信第三方。这与去中心化的想法相冲突,甚至可能带来一些风险。例如,托管人有可能违反法律,留下用户的钱,或者当事方之间的沟通可能因低效的监管管理而中断或延迟。在本节中,我们提供了一种新的解决方案,利用智能合约使BTCT的发行和赎回完全无信任。

该解决方案利用BTCRelay,一种在基于以太坊的智能合约中运行的比特币轻客户端。BTCRelay允许以太坊智能合约验证比特币交易,从而使以太坊在线实体能够检查比特币网络上的支付是否实际发生。

在这个解决方案中,有一个第三方将准备初始资本,以促进BTCT的发行和赎回。在用户存入比特币之前,该初始资金将是所需的保证金,即如果发生任何不良事件,用户可以获得此保证金作为退款。为简单起见,作为一个例子,Kyber Network可以扮演第三方的角色,并在比特币合约中提供ETH和ERC20令牌的保证金。然后,Kyber将提供比特币地址,用户可以在其中存入比特币以创建BTCT令牌。在确认用户的存款后,Kyber在BitcoinToken合约中为用户创建相应数量的BTCT令牌。如果Kyber没有发行新的BTCT令牌,用户可以将该merkle存款证明提交给BitcoinToken智能合约,然后该合约与BTCRelay进行通信,以验证用户是否确实将比特币存入Kyber。如果检测到违规游戏,BitcoinToken合同将丧失Kyber的部分保证金,并用它来支付给用户。其他用户也可以开始兑换BTCT令牌以获得他们的比特币。由于保证金的价值总是超过托管人持有的当前比特币金额,因此用户将获得比特币的保证金。上面提到的场景如下图所示。

让我们考虑一个用户希望将比特币兑换成BTCT的情况。他们需要做的是在BitcoinToken合约中调用他们想要接收比特币的比特币地址的“burn function”。Kyber将监听销毁的事件,并将相应数量的比特币发送到用户的比特币地址。如果用户没有看到Kyber发送的付款,他们可以通过调用BitcoinToken智能合约来挑战Kyber(我们可能需要用户提供一些小额存款以防止滥用此功能)。如果Kyber无法提供付款的有效证明(如果没有付款,Kyber将无法提供),Kyber的存款将被部分没收,这样用户将获得更多的ETH和ERC20代币,以后可以卖掉他们的比特币。其他用户,一旦发现Kyber未能付款,可以要求兑换他们的BTCT。

这种方法在可信托管方法之上提供了几个很好的属性。

  • 1.无信托。用户无需信任Kyber Network或任何其他第三方。如果发生任何事情,他们可以提交证明,而Kyber Network将受到处罚。罚款金额将发给报告犯规的用户,并且用户从保证金中获得超过ETH/ERC20代币中比特币的原始值。请注意,保证金将足够大,所有用户都可以使用奖金领取比特币。
  • 2.成本效益。当事情好的时候,用户不需要提交太多数据,事实上他们不需要在以太坊上做任何事情来发布BTCT。他们只需要向以太坊发送一笔交易即可兑换其BTCT。
  • 3.公开可验证的。一切都是透明的,公开提供给用户。用户可以在决定发布BTCT之前验证锁定的存款。

然而,缺点是随着采用的增长,解决方案需要更多资金。

ETH和ERC20代币的总存款必须至少等于发行的BTCT总额加上额外的安全边际(10%-20%)以解释价格波动。例如,对于BTCT的X美元,我们需要1.2倍的初始资本。另一个主要缺点是,在无信托的托管人将数十亿作为抵押品的情况下,潜在的安全风险。此外,它没有完全去中心化的事实可能意味着该实体可以被一个集中的组织垄断。

移除BTCRelay以获得与Evm兼容的代币

在上述解决方案中,强调BTCRelay需要开发和维护工作,并且对于以太坊Classic,Litecoin和ZCash的其他发送而言将非常昂贵。此外,处理以太坊上的比特币交易可能会引入一些复杂因素。在本节中,我们提出了另一种不涉及BTCRelay的解决方案,并且更加有效地简化了流程。为实现这一目标,我们必须要求另一个链支持基于EVM的智能合约。幸运的是,Rootstock将会开发并且它们与EVM兼容,他们已经使用联合侧链将比特币从比特币区块链转移到Rootstock。此解决方案也适用于其他加密货币,如以太坊经典和其他基于以太坊的货币。在本节中,当提到下面的比特币时,除非另有说明,否则我们将讨论的是比特币。

与之前的解决方案一样,托管人仍需要将其保证金存放在以太坊链上,无论是在ETH还是其他ERC20代币中,或两者兼而有之。此外,托管人还必须提供一笔小额的安全保证金,比如当前持有的比特币金额的5%左右。Rootstock上的这笔保证金将存入比特币,如果托管人在Rootstock连锁店行为不当,将对其进行处罚。

在用户将X比特币存入Rootstock上的DepositContract之后,托管人将签署一条消息“X比特币存放在块Z处的以太坊上的Y”,将其提交给Rootstock上的DepositContract。然后,托管人将在以太坊上的BitcoinToken合约上发行相同数量的BTCT代币。除非托管人因未能付款而受到质疑,否则只有托管人才有权将比特币从Rootstock的DepositContract合约中移走。如果托管人未提供签名消息,则用户可以对Rootstock进行质询并获得存入的比特币,并从Rootstock上的托管人的保证金中获得一些奖金。如果保管人在签署消息后未能在以太坊上发行新的BTCT令牌,则用户可以使用已签名的消息自行在以太坊上发出他们的BTCT令牌,并让保管人因未履行其职责而受到处罚。

当用户请求在以太坊上兑换他们的BTCT令牌时,他们会调用BitcoinToken合约上的burn函数,并提供他们的Rootstock地址来接收他们的比特币。

托管人将签署数据说“兑换X比特币以解决Rootstock的Y”并在以太坊上提交比特币合约的消息。托管人然后将X比特币转移到Rootstock上的用户地址以完成兑换。与发行过程类似,如果托管人要么没有在以太坊上提交已签名的消息,要么在砧木上进行比特币转移,则可能会受到处罚。

1.好处

  • 不需要BTCRelay或其他中转环节,这可能是昂贵和繁琐的维护。
  • 由于不必在以太坊上处理比特币交易,因此实施起来要简单得多。

2.缺点

  • 需要与EVM兼容的智能合约(因此需要Rootstock支持比特币)

结论

鉴于利弊,我们遵循的方法可能是上述所有提案的混合。我们希望为用户创建一个无信任且完全兼容的平台,以便将不同的加密货币移动到以太坊。具体而言,我们计划与拥有数字资产托管许可的合作伙伴合作,并与其他加密基金合作为保证金提供资金。我们相信这是我们长期运营的最佳方法,不会让用户牺牲其安全性或使监管机构更加困难。

最后但同样重要的是,我们认为这一举措不仅有利于Kyber Network,也有利于整个生态系统。因此,我们真的希望社区能够贡献并帮助我们构建解决方案并共同改进区块链的采用。如果您有兴趣参与此计划,请通过电子邮件hello@kyber.network与我们联系。

==================================================================

分享一些以太坊、EOS、比特币等区块链相关的交互式在线编程实战教程:

  • java以太坊开发教程,主要是针对java和android程序员进行区块链以太坊开发的web3j详解。
  • python以太坊,主要是针对python工程师使用web3.py进行区块链以太坊开发的详解。
  • php以太坊,主要是介绍使用php进行智能合约开发交互,进行账号创建、交易、转账、代币开发以及过滤器和交易等内容。
  • 以太坊入门教程,主要介绍智能合约与dapp应用开发,适合入门。
  • 以太坊开发进阶教程,主要是介绍使用node.js、mongodb、区块链、ipfs实现去中心化电商DApp实战,适合进阶。
  • C#以太坊,主要讲解如何使用C#开发基于.Net的以太坊应用,包括账户管理、状态与交易、智能合约开发与交互、过滤器和交易等。
  • EOS教程,本课程帮助你快速入门EOS区块链去中心化应用的开发,内容涵盖EOS工具链、账户与钱包、发行代币、智能合约开发与部署、使用代码与智能合约交互等核心知识点,最后综合运用各知识点完成一个便签DApp的开发。
  • java比特币开发教程,本课程面向初学者,内容即涵盖比特币的核心概念,例如区块链存储、去中心化共识机制、密钥与脚本、交易与UTXO等,同时也详细讲解如何在Java代码中集成比特币支持功能,例如创建地址、管理钱包、构造裸交易等,是Java工程师不可多得的比特币开发学习课程。
  • php比特币开发教程,本课程面向初学者,内容即涵盖比特币的核心概念,例如区块链存储、去中心化共识机制、密钥与脚本、交易与UTXO等,同时也详细讲解如何在Php代码中集成比特币支持功能,例如创建地址、管理钱包、构造裸交易等,是Php工程师不可多得的比特币开发学习课程。
  • tendermint区块链开发详解,本课程适合希望使用tendermint进行区块链开发的工程师,课程内容即包括tendermint应用开发模型中的核心概念,例如ABCI接口、默克尔树、多版本状态库等,也包括代币发行等丰富的实操代码,是go语言工程师快速入门区块链开发的最佳选择。

汇智网原创翻译,转载请标明出处。这里是原文如何将比特币带到以太坊区块链