为了账号安全,请及时绑定邮箱和手机立即绑定

『学概念找员外』哈希时间锁定协议(一)

标签:
区块链

概念科普:

哈希时间锁定协议(Hashed-Timelock Agreements, HTLAs):是一项可以使不同链上发行的代币之间进行交易和互换的技术。

对于大多数读者来说,一看到这个题目就会想这个概念有点高大上,跟我好像没有什么关系,点个赞就好了,阅读就算了吧。哎,员外也理解大家,如果不是币乎,我也不会去写这种枯燥还没人看的文章的,说到底还是为了赚点外快嘛。


好吧,我们言归正传。大多数人都做过币币交易,在交易的时候,我们需要先把自己的币存到交易所里面,然后才能去选择自己想要换的币去交易。那么在我们把币存到交易所的时候,就带来了一定的风险,毕竟交易所频繁出事,搞的大家都不太放心了。同时在交易中还需要支付一定的手续费,也可谓是一重风险加一层损失了。所以,我们今天的主角出该出场了,那就是哈希时间锁定协议,在这个协议中大家在交易的时候,只需要发送方、连接方和接受方,然后就可实现币币交易了。在这个过程中不需要任何的交易所介入,如果交易失败了,也不用支付任何的gas,而且您发出的币将原路返回。

what?这不是还有一个连接方了吗?这根交易所的中间方的模式差到哪里了?别着急,看员外给大家好好解释一番。与交易所相比,哈希时间锁定协议的连接方其实不是第三方,仅仅是起到了牵线的作用。

背景

我们之前写过关于闪电网络(一)闪电网络(二)的文章,没有印象的朋友员外在这里给大家复习一下。在闪电网络中,为了提升交易效率,为两个用户开辟了一个小额的支付通道,用户需要提前锁定一定量的代币,然后这两方用户才能够在链下进行交易。在这两个用户最后交易完成之后,就可以把自己的交易数据上传到主链,进行区块的确认。这样做的目的是,大量的小额交易在线下完成,就可以从整体上提高比特币网络的交易速度。

那这个闪电网络跟今天的主题有什么关系呢?其实是闪电网络中用于锁定用户代币的哈希锁合同(Hashed Timelock Contracts, HTLC)启发了后来的开发者们。在闪电网络中,代币之间的交易,需要由中间人来进行转换,所以这个中间人就必须取得用户的信任。而对代币锁定的过程,不就是一个可以产生信任的质押过程吗?

构思

为了能够保证交易双方和中间连接方的利益,需要做到的是交易双方同时释放手中的代币,然后才能实现双方同时受到对方发来的代币,这实际是提现了交易的“原子性”,要么代币交易全部完成,要么代币没有转移,不存在任何中间的过渡状态。然后这一问题由预共享密钥(Pre-Shared Key, PSK)技术解决。

什么是预共享密钥

如果员外想用自己的1个BTC换死柯侠的20个ETH,然后死柯侠居然也愿意。在这笔交易中,如果我们把1个BTC看成一个交易包,20个ETH也看成一个交易包,那么这两个交易包就需要同一个密钥才能启动,然后真正的实现同时交易。即如果一方收到BTC,那么另一方也在同一时间点受到了ETH。

如何实现的

首先员外需要用特定的加密算法,得到一个密钥,把这把密钥发送给死柯侠,然后把员外想要用1个BTC换死柯侠的20个ETH的信息告诉给连接方。同时员外将自己的1个BTC锁定在交易包A中,但是这个交易包需要用员外生成的那把密钥才能解锁取币。

同理,死柯侠也这么做。然后连接方识别到员外发出的信息,制作一个包含20个ETH的交易包B并发给员外。当员外用密钥打开这个交易包B的时候,就获得了20个ETH,同时密钥也被发送给死柯侠,死柯侠即可以使用该密钥获得交易包A里面的1个BTC。这样就实现了代币之间的互换。

为了避免单方延误交易,所以这其中的交易包A和交易包B都需要设定时间限制,超出这个时间限制后,自己的代币立即解锁,原路返回,这就是时间锁的功能。这个功能结合了哈希加密,所以这个技术叫做哈希时间锁定协议。

局限性

在这个过程中,连接方是存在一定的风险的。在交易过程中,连接方需要向交易包A提供密钥才能获得比特币,也就是BTC和ETH在交付的过程中是不在同一时间发生的。但是这两个交易包在交易的过程中是设置了时间锁的,如果B的时间限制大于A,就有可能使得员外获得20个ETH后,连接方无法收回应得的1个BTC了。不过这一风险可以通过设定A的时间限制总大于B来了避免。

总结

其实,不管是什么技术,都是想解决中间方的信任问题,然后在这个信任的基础上,再做一些扩展,比如最重要的一点交易速度。在哈希时间锁定协议中,双方代币的锁定实现了资产的同时质押,这一点解决的双方的信任基础。然而密钥的传递,则保证了交易的原子性。还有一个最重要的时间锁的引入,可以高效的避免交易时间过长而引起的麻烦。当然,这种技术不仅仅只是可以应用在区块链中。

其实这个哈希时间锁定协议技术已经由Ripple Interledger项目基本实现了,在不久的以后凡是有智能合约的区块链项目中,币币交易的落地将会更加普遍。

看到这儿,你可能会想,这个技术听起来好像也就那样吧。这会对这个行业带来哪些改变呢?

员外畅想:如果BTC这个主流货币有机会可以诶作为区块链项目的主结算系统的话,其他应用类的项目主要是针对性的解决用户的其他需求。当用户在某个链上使用过服务后,进行结算的时候,就可以使用这种技术来进行币币交易支付。长此以往,主流币的流通会越来越广泛,而其他的区块来项目可以专注于面向细分的需求,同时为主流项目分摊服务的压力,各取所需。最终整个生态越来越完善,真正的实现一个丰富的区块链应用生态。


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
Web前端工程师
手记
粉丝
8381
获赞与收藏
109

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消