这是对知乎文章 https://www.zhihu.com/column/p/92667917 的提炼,并且结合扩展阅读和搜索做了一些补充,以便于更好理解。

To Do:还需要一个更加直观的例子,比如分析一个以太坊和币安跨链交易的合约,回头我加上

换个方式来说共识,共识就是大家用同样的规则来打包,并且可以验证别人打包的内容是不是用的同样的规则和正确的数据,这样思考的话,跨链就能实现了,只要跨链的矿工用同样的方式把不同区块链的区块打包在一起,就可以创造出一种两条链都能接受并且共识的数据格式了。

先看几个方案

假设Alice想和Bob进行1个BTC换50个ETH的交易

中心化方案,公证人

不多说了,两人分别转给一个中间人在两条链上的地址,又中间人完成交易。问题是,只能处理交易。

哈希锁定

  1. Alice随机构建一个字符串s,并计算出其哈希h
  2. Alice将h发送给Bob;
  3. Alice通过合约锁定自己的1个BTC资产,设置一个较长的锁定时间T1, 再设置了获取该BTC的条件:Bob提供h的原始值s;
  4. Bob锁定50ETH到自己的合约,设置一个相对较短的锁定时间T2(T2 < T1)。再设置50ETH的获取条件:Alice提供h的原始值s
  5. Alice将字符串s发送到Bob的合约获得50个ETH;
  6. Bob观察到步骤5中Alice的s值,将其发送给Alice的合约成功获取1个BTC; 至此完成资产的交换。
  7. 如果超时,则锁定的资产返回原主。

SPV 简单交易验证

SPV 是一个基于侧链机制的方案。BTC-Relay 是号称的史上第一个侧链,其通过以太坊构建了一个比特币的侧链,运用以太坊的智能合约允许用户验证比特币的交易。SPV交易实例(仍以之前的交易需求为例):

  1. Bob将50ETH发送到BTCSwap的合约进行冻结(该合约若确认Bob接收到来自Alice的1BTC就自动将50ETH转给Alice);
  2. Alice确认Bob冻结信息后,将1BTC转到Bob比特币账户;
  3. BTC-Relay将比特币区块头推送到BTCSwap合约;Alice将自己转BTC给Bob的交易tx发给合约BTCSwap合约,请求50ETH;