闪电网络主心骨——HTLC(哈希时间锁定)简介

摘要:
为了解决这个问题,设计了HTLC。HTLC是HashedTimelockContract的缩写。当闪电网络非常流行时,可以通过支付路由算法找到任何两个人之间的最短支付路径,例如Alice--˃PayX--˃PayY--˃PayZ--˃Bob。支付渠道、到期时间、哈希原语和路由算法这四个核心要素构成了闪电网络,以消除信任的方式实现了比特币链外的支付。

无论是单向支付通道和RSMC双向支付通道,交易双方都需要一个建立通道和关闭通道的过程,这对于需要频繁持续进行交易支付的场景来说没什么问题,但是对于很多一次性支付的场景,比如Alice在旅行途中去Bob商店买东西,Alice不太可能成为Bob商店的回头客,这时建立双方的支付通道进行支付就很不合适了,直接广播支付交易到比特币网络会更划算一些。

而是否可能继续利用离线支付通道的方式进行支付?可以考虑一个简单的支付模型:

Alice需要支付0.1 BTC给Bob,Alice和Bob之间没有建立支付通道,但是Alice、Bob和支付服务公司PayX之间拥有已经建立的RSMC双向支付通道,这时,Alice可以将0.1BTC支付给PayX,然后PayX再将0.1BTC支付给Bob即可。

Alice-->PayX-->Bob,显然这是一个典型的中心化结构,Alice和Bob需要无条件的信任PayX会提供诚实可靠的服务。针对这个问题,HTLC就被设计出来,HTLC是Hashed Timelock Contract的缩写。有了HTLC,闪电网络才能被称之为“网络”,其核心思想是:

1)Bob生成一个随机数Secret,只有Bob自己知道;
2)Bob将Secret的哈希值HS发给Alice,由于哈希函数的特性,通过HS无法反推出Secret;
3)Alice和PayX利用RSMC通道,建立一个新合约:若PayX知道HS的原像Secret,则Alice支付0.11BTC给PayX,否则2天后交易失效;
4)PayX和Bob利用RSMC通道,建立一个新合约:若Bob知道HS的原像Secret,则Alice支付0.1BTC给PayX,否则1天后交易失效;

显然,Bob是知道Secret的,Bob通过Secret得到PayX的0.1 BTC,PayX验证Secret和HS是匹配的,PayX也得到了Secret,并通过Secret得到Alice的0.12 BTC,在这个过程中,PayX获得了0.01的手续费,这里假设是Alice支付了手续费,也可以是Bob支付手续费,比如Alice支付0.1 BTC,Bob得到0.09 BTC,PayX得到0.01手续费。在利益的驱驶下,即使Alice、Bob、PayX互相之间没有信任关系,PayX还是乐意为其他人做支付桥梁的。

当闪电网络非常普及的时候,通过支付路由算法,可以找到任何两个人之间的最短支付路径,比如Alice-->PayX-->PayY-->PayZ-->Bob。支付通道、失效时间、哈希原像、路由算法四个核心元素构筑了闪电网络,以去信任的方式实现了比特币链外支付。

这里只记录了一些核心思想,HTLC的实现细节还是很复杂的,可参考闪电网络的技术论文:《The Bitcoin Lightning Network: Scalable Off-Chain Instant Payments》

免责声明:文章转载自《闪电网络主心骨——HTLC(哈希时间锁定)简介》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇mysql trigger 权限的说明Blend4精选案例图解教程(三):一键拖拽下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Python 3: 加密简介

Python 3 的标准库中没多少用来解决加密的,不过却有用于处理哈希的库。在这里我们会对其进行一个简单的介绍,但重点会放在两个第三方的软件包:PyCrypto 和 cryptography 上。我们将学习如何使用这两个库,来加密和解密字符串。 哈希 如果需要用到安全哈希算法或是消息摘要算法,那么你可以使用标准库中的 hashlib 模块。这个模块包含了符...

[基础技能] 安全技术——数字签名与数字证书以及其中涉及到的相关伪造问题

1、首先总结一下数字签名的使用规则和相关流程 讲解比较详细的网络日志可以参考:这里以及这里,我这里只做一些自己的总结。 一般来说现在的加密领域或者是认证体系中,都是在使用双秘钥:公钥和私钥,其中公钥用来加密信息,私钥用来数字签名。任何人都可以生成自己的(公钥,私钥)对,所以为了防止有人散布伪造的公钥骗取信任,就需要一个可靠的第三方机构来生成经过认证的(公钥...

JavaScript加密库CryptoJS的使用

先来图片一张,看看效果(一个采用Crypto-JS实现的加密/解密工具展示): CryptoJS (crypto.js) 为 JavaScript 提供了各种各样的加密算法。目前已支持的算法包括: MD5 SHA-1 SHA-256 AES Rabbit MARC4 HMAC HMAC-MD5 HMAC-SHA1 HMAC-SHA256 PBKD...

微信公众号支付

一、微信公众号支付     1、获取微信授权         详情查看微信文档,用户同意授权后, 获取code, 根据code获取access_token, 因为access_token的时效性及安全级别系数比较高,因此我们将code传给后台, 由后台获取到access_token,并获取到用户信息返回。    2.引入微信jssdk      var j...

微信支付服务商模式支付与普通微信支付的配置区别

首先说明,这里默认你已经搭建好了普通的微信支付,本文仅简单的说下下单配置过程中的区别,也就是将普通的微信支付改为服务商模式下进行; 1、新增特约商户这个按照步骤来,就不用说了; 2、新增完毕,客户也签约过了之后,接着进行配置; 3、在“特约商户APPID配置”中若无对方的小程序APPID,则增加上; 4、还是服务商自己的商户支付平台,找到appid账号...

【mysql】Innodb三大特性之adaptive hash index

1、Adaptive Hash Indexes 定义 If a table fits almost entirely in main memory, the fastest way to perform queries on it is to use hash indexes. InnoDB has a mechanism that monitors in...