区块链跨链技术之BTC Relay

目前很多文章都将Btc relay称为跨链技术其实并不完全准确,我们来看下一个原文描述

BTC Relay is a building block that allows Ethereum contracts to securely verify Bitcoin transactions without any intermediaries: in short users can pay with Bitcoin to use Ethereum DAPPs

翻译过来就是BTC Relay使得以太坊智能合约不需要任何第三方媒介就能够安全验证BTC交易。简单来说就是,用户可以在以太坊Dapp中使用BTC支付。

可见BTC Relay可以看成是区块链里的一个可信预言机,通过BTC Relay引入的BTC交易信息是完全可信。BTC Relay解决的是以太坊中使用BTC支付问题,是一个跨链支付解决方案。BTC Relay是个单向解决方案,只可以将BTC引入以太坊而没法将以太坊中的BTC转移回BTC系统, 而一般意义上的跨链技术是指资金可以跨出去也能跨回来。

项目地址:http://btcrelay.org

整体结构如下

实现原理分析

BTC Relay的核心是在以太坊智能合约里保存一份轻量的BTC交易数据,这个就是区块头Hash数据,且是完整的BTC区块头Hash,并以链表的方式维护。然后和我以前文章提到的Plasma技术一样,当需要验证一笔BTC交易的合法性时,只需提交交易信息+merkle路径,智能合约即可通过合约里保存的交易区块头Hash验证这笔交易的合法性。

1)谁来提交BTC区块头hash数据

我们知道调用以太坊智能合约是需要gas, 因而提交区块头hash数据自然也需要消耗gas, 所以需要适当的激励来鼓励这种提交数据的行为。以太坊用户使用Btc Relay验证BTC交易时是需要付费,这个费用就给这笔交易所在区块的数据提交者。也就是说用户提交BTC区块头hash数据,将来是可以收到手续费的。

2)怎么验证BTC区块头hash数据的正确性

任何人都可以提交BTC区块头hash数据,这里就存在一个合法性问题。其实智能合约通过采取BTC一样的主链验证方法一样来验证区块头的合法性,Btc Relay自身也维护了一个主链,当有新的区块头提交上来,会找到该区块头的父亲,进而能知道该区块头的累积工作量,如果该区块头的工作量大于当前链的工作量,则将新的区块头作为主链。如果该区块头的累积工作量小于当前主链的累积工作量,也不会丢弃该区块头,由于BTC存在分叉,该区块头所在的分支仍有可能成为主链的。所以不存在合法不合法的问题,只有该区块头在不在主链的问题,不在主链就得不到收益,因而用户不会乱提交区块头。用户只有乖乖的按照BTC主网生产出来的区块提交区块头信息,工作量才是最大的(个人的算力永远没法超过BTC主网的算力),最可能成为主链的,进而能获取收益。

源码分析

1)提交区块头

2)检测是否需要更新主链

3)验证BTC交易合法性

公众号:区块链斜杠青年

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181019G0SF4T00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券