火星链 火星链
Ctrl+D收藏火星链
首页 > 屎币 > 正文

ALI:深入解读闪电网络:HTLC 的工作方式与多跳支付的实现方式

作者:

时间:1900/1/1 0:00:00

在上一篇文章里,我们详细解释了支付通道的运作,以及多种保证支付安全发生的方法。不过,这些功能,还不足以支撑一个可用的支付通道网络:即使我们很确定在每个通道内每个参与者都是诚实守信的,也没法保证通过多个通道来支付同样是安全的。这就是我们需要“HTLC”这种智能合约的原因。在本文中,我们会讲解HTLC工作的方式,并使用一个例子来展示多跳支付是如何在闪电网络中实现的。

哈希时间锁合约

HTLC的结构并不复杂,但非常高效。它使我们可以创建具有明确“过期时间”的支付。你可能也猜得到,HTLC合约由两部分组成:哈希验证和过期验证。

我们先从哈希值开始。要创建一笔带有HTLC的支付事务,你先要生成一个?秘密数值?R,然后计算出其哈希值。任何词语、任何数字都可以充当这个秘密值,因为,对哈希函数来说,它们都是一堆数据的组合,没有什么分别。

H=Hash(R)

这个哈希值H会放在事务输出的锁定脚本中。如此,只有知道H所对应的秘密值的人才能使用这个输出。而R就是所谓的“原像”。

HTLC的第二部分是过期时间的验证。如果秘密值没有及时地公开,这笔支付就用不了了,发送者会收回所有的资金。

我们来考虑一个发给某人的HLTC支付事务:

#检查所提供的R是否为H的原像

HASH160EQUAL

IF??

?????#检查公开R的人是否为事务最初的接收者??

????CHECKSIG

ELSE??

????#检查时间锁是否已终止??

???CHECKLOCKTIMEVERIFY??

昆明两会:将深入推动云南省区块链中心建设:2月2日上午,昆明市第十四届人民代表大会第六次会议在昆开幕,昆明市委副书记、代市长刘佳晨作政府工作报告。

他表示,昆明将深入推进云南省数字经济开发区、云南省区块链中心建设,力争引进数字经济创新企业100家,打造3—5个区块链示范项目,新认定1—2家数字经济园区。

加大5G基础设施建设,新增5G基站1万个,实现主城区5G信号全覆盖,加快与VR/AR、医疗、旅游、智慧办会、刷脸就行等场景结合,拓展5G典型应用。[2021/2/2 18:41:39]

???#检查请求返回资金的是不是事务最初的发送者??

???CHECKSIG

ENDIF

在正确的R公开之后,我们进入IF流程,进一步验证提供R的是不是这笔支付事务一开始的支付对象。在花费这个输出时,接收方只需提供一个非常简单的解锁脚本:

如果解锁脚本所提供的R是错的,我们跳转入ELSE流程,首先验证时间锁解锁了没有。如果时间锁已然解锁,发送者就可以收回所有的资金。收回资金这个操作的解锁脚本也差不多,唯一的区别在于,为了进入ELSE流程,需要提供一个错误的秘密值:

当然,这只是HTLC的一个非常基础的实现,代表着一个普通的时间锁支付。你可以在脚本中加入任意多的其它条件,比如说,在IF流程中移除公钥验证,这样只要知道秘密值R的人都可以使用这个输出;也可以在其中加入多签名限制,要求提供多个预设私钥的签名才能解锁。

多说一句,在这个案例中,我们使用的操作码是?CHECKLOCKTIMEVERIFY,这个操作码使用绝对数值来定义时间锁,意思就像:“这个输出在区块#546212之前是无法动用的”。而在闪电网络中,还用上了另一种时间锁,更“灵活”的一种:CHECKSEQUENCEVERIFY,它用到的是相对数值,意思近于:“这个输出,在使用它的事务上链之后的1000个区块内,是无法使用的”。

姚前:区块链技术值得数据跨境流动及其监管各方深入研究:《中国金融》2020年第22期,中国证监会科技监管局局长姚前刊文《数据跨境流动的制度建设与技术支撑》表示,支付标记化技术将个人数据的“匿名化”交由可信第三方负责,而区块链技术则创造了用户完全自主可控的数据隐私保护新思路。用户的私钥可以本地生成,通过公钥计算发布有效的账户地址,从而隔断账户地址和账户持有人真实身份的关联。通过控制私钥,用户可以在区块链上自主完成交易,虽然在区块链网络上能够看到每一笔交易的细节,但无法对应到现实世界中的具体某个人。区块链技术从根本上打破中心化模式下数据控制者对数据的天然垄断,赋予用户真正的数据隐私保护权。区块链技术还可与先进密码学技术结合,发展出各类隐私保护方案。比如,利用基于环签名、群签名等密码学方案保护签名方身份;采用高效的同态加密方案实现密文的多方处理,隐藏用户交易金额等敏感信息;采用零知识证明方案,使交易数据能被审查和验证,但又不能被真实探知。区块链技术这一自主可控的隐私保护新思路,值得数据跨境流动及其监管各方深入研究。[2020/11/24 21:56:04]

闪电网络案例

现在,我们终于讲解完所有元素了,可以尝试理解闪电网络运作的全景了。

我们假设现在闪电网络有5个参与者:Alice、Bob、Carol、Diana和Eric,他们各自有一个支付通道相连,而每个通道的每一边都有2btc的余额可用。现在,我们尝试让Alice通过通道链条给Eric支付。

-一系列相连的双向支付通道,组成了闪电网络,可以转介Alice对Eric的支付-

假设Alice现在要给Eric支付1btc。但是,如我们所见,他们并无直接的通道相连,而开设通道需要时间和金钱。幸运的是,Alice连接着闪电网络,可以在一系列HTLC合约的帮助下完成间接支付。我们一步一步拆开来看。

动态 | 中国电信翼支付将在区块链核心应用等方面深入开展技术创新合作:金色财经报道,中国电信翼支付将深化\"5G+金融科技\"创新合作,在支付媒介创新、用户精准营销、智能授信、智慧风控、智能投顾、区块链核心应用等方面,深入开展技术创新合作,探索\"5G+金融科技\"新模式。[2019/12/12]

Eric生成了一个秘密值R,并把其哈希值发给了Alice

Alice使用这条哈希值创建了一个HTLC,而时间锁设置成未来10个区块,输出的数额是1.003btc。这额外的0.003btc是给支付通道链条中间方的手续费。那么,Alice现在用HTLC锁住了1.003btc,而HTCL的具体条件以大白话表述如下:“Alice会给Bob支付1.003btc,只要他能在10个区块内交出秘密值R,否则这些钱会返回给Alice”。他们之间的通道的余额也会因为这笔承诺事务而发生这般变化,现在Bob在通道内拥有2btc,Alice有0.997btc,还有1.003btc锁在HTLC里面

到了Bob这里,他可以随意处置Alice的承诺事务。他在自己跟Carol的通道中创建了一个HTLC输出,数额是1.002,时间锁设定为9个区块,使用了跟Alice所提供的同样的哈希值。Bob知道Carol如果想获得这笔钱,就不得不找出秘密数值R来解锁这个HTLC,而一旦她这么做了,他就会知道这个R,因此也能解锁Alice的HTLC,拿到1.003btc。如果Carol没法找到这个秘密值R,Bob和Alice都能在时间锁解锁后拿回自己的钱。注意,Bob发送的资金数额比自己能够得到的数额小0.001btc,这就是他收取的手续费数额。Bob和Carol在通道内的余额变成:Carol拥有2btc,Bob拥有0.998btc,还有1.002btc锁在HTLC中

动态 | 2019年7月国内一级市场区块链融资10强发布 区块链行业的发展不断向产业端深入:据中国金融信息网报道,8月8日,中国金融信息网与烯牛数据联合发布2019年7月份国内一级市场区块链项目融资10强榜单。从榜单来看,在整体融资大幅下滑的趋势下,2019年7月份国内区块链项目融资数量出现回升。监测数据显示,数字货币和交易平台类融资项目明显增多,天秤币白皮书的发布在一定程度上提振了市场预期,但是此类项目将面临与天秤币的直接竞争,其商业逻辑未来或将受到天秤币严酷打压。与实体经济结合的项目依然占据着榜单的主流,分别涉及金融、大数据、交通运输、电商、传媒、产权、房地产和游戏领域。从连续发布的榜单来看,区块链行业的发展不断向产业端深入,应用端的开发落地越来越具体,与实体经济结合发展的想象空间逐渐立体化。从技术角度来看,加密、数据库、共识、P2P和智能合约的发展日益成熟,区块链作为集成性创新技术的发挥边界正在逐步拓展。[2019/8/8]

Carol获得Bob发出的承诺事务之后,也如法炮制,在与Diana的通道中创建一个HTLC,使用的哈希值与Bob提供的无二,时间锁设置为8个区块,数额为1.001btc。如果Diana能在8个区块以内揭示这个秘密数值R,就能解锁这个HTLC,获得1.001btc,相应地,Carol也会知道这个秘密数值,解锁Bob给她的HTLC,获得1.002btc,赚得0.001btc。Carol和Diana通道内的余额变成:Diana拥有2btc、Carol拥有0.999btc,还有1.001btc锁在HTLC里面

最终,当Diana将一个HTLC通过通道发送给Eric时,她把数值设为1btc,时间锁设为7个区块。Diana和Eric的通道内余额变成:Eric拥有2btc、Diana拥有1btc,还有1btc锁在HTLC里面

英国金融监管机构发出承诺 将对新兴的ICO市场进行深入审查:金融市场行为监管局周五表示,将对ICO市场进行审查,以此作为更多监管行动的前奏。它已经告诫消费者与投资ICO有关的“非常高的风险”。“在初始投币(ICO)市场上,FCA将收集进一步的证据,并对快速发展进行更深入的研究。调查结果将有助于确定在9月份发布的消费者警告之外是否需要在这方面进一步采取监管行动。“FCA在一份声明中表示。[2017/12/15]

现在,我们来到了这个连锁支付的终点。Eric拥有这个秘密值R,这个R的哈希值用在了所有的HTLC承诺事务中。Eric可以解锁Diana发给他的HTLC,获得1btc;而Eric取回资金之后,Diana也会知道这个R。Diana与Eric的通道内余额会变成:Eric拥有3btc,Diana拥有1btc。

Diana收到这个秘密之后,也拿来解锁Carol发给她的HTLC,获得1.001btc的同时也向Carol公开了秘密值。他们通道内的余额变成了:Diana拥有3.001btc,Carol拥有0.999btc。

Carol收到秘密值R之后,解锁了Bob发过来的1.001btc,因此Bob也知道了这个秘密值。他们通道内的余额变成了:Carol拥有3.002btc和Bob拥有0.998btc

最后,Bob使用秘密值R获得了和Alice通道中的1.003btc。于是通道内的余额变成了:Bob拥有3.003btc,Alice拥有0.997。

这样一个流程下来,Alice就给Eric支付了1btc,无需在彼此间另开一个直接相连的通道。整个支付链条中,也没有人需要信任另一个人,而且他们还因为中介服务赚到了0.001btc。即使支付在某个环节卡住了,也没有人会遭受损失,因为资金还锁在那里,时间过了就可以取回。

清除故障

在我们这个例子中,整个流程都是很平滑、没有阻碍的,但在现实生活就像所谓的“墨菲定律”:如果某种坏事可能发生,那这种坏事就一定会发生。于是我们要考虑闪电网络的“保护”机制。

从实践来看,支付链条越长,最终无法交付资金的概率就越大:某些参与者可能会关闭通道,或者某些节点会掉线。我们来考虑两种可能的出错情形。

通道故障

先考虑一种情形:我们假设资金已经达到了目的地,但在秘密数值一路返回到支付起点的过程中,某个参与者拒绝合作或者无法配合。假设是Bob。

-因为一个通道关闭,资金无法交付-

当Diana收到了秘密值时,就立即取回了资金,并把秘密值暴露给了Carol。Carol也想从Bob发出的HTLC里面拿回资金,但Bob没有响应,为了避免风险,她关闭了通道,将自己手上的最后一笔承诺事务广播到了比特币网络中,而且,因为她知道秘密值,所以能取回资金。此时,Bob还有三天时间可以从Alice处拿回自己的钱。否则,等时间锁一解锁,Alice就可以收回资金。

可以看出,即使某个参与者因为某种原因离开了网络,TA自己是唯一一个可能损失资金的人,而其他人的资金都是安全的。

重新路由

在第二种情形中,我们假设资金无法到达目的地,也是因为某个参与者出了错。假设是Carol。

第一种也是最明显的解决方法是,等待HTLC的时间锁过期,然后各参议者各自拿回自己的资金。

-支付路径中的某个节点没有响应-

但如果Alice就是着急支付,该怎么办呢?当然,Alice可以通过另一条路径发起新的支付,不需要死等资金返回,但要是Carol突然之间又回来了,跟Bob把链条续上了呢?那Alice不就发送了两倍资金了吗?

-Alice如果使用另一条路径-

这是否意味着,但凡出现了支付失败的情形,都应该乖乖等时间锁超时,然后再发起新的一笔支付呢?

好在,要避免这种等待,我们可以“取消”这一次的支付。Diana要发送等量的一笔资金给Alice,也使用跟原来一样的哈希值,也可以使用另一条路径。现在,如果Carol重新上线并参与中介,那么资金会走完一个环路,这就意味着那笔原来失败的支付被抵消了,Alice可以安全地使用另一个路径来支付了。

-Alice“取消”了旧的支付,新的支付现在可以安全地发送了-

支付数额

你可以也注意到了,当Alice“取消”其第一笔支付时,现在的确是可以安全地发起新的一次支付了,但这并没有改变一个事实:她的第一笔支付的资金现在仍然是锁定的,而她可能没有足够的钱来发起第二次支付了。这就是为什么在使用闪电网络时,用HTLC来支付时资金额度应该更小。因为承诺事务不会上链,数额可以分割成多个很小的额度。这样,无论什么时候一个路径不通了,都只有一小部分资金会被冻结。

传输协议

闪电网络的另一个非常重要的特点是:有关这个路径的所有信息都是完全匿名的。也就意味着对于任何一个参与者来说,TA都只知道跟自己有关的这部分,比如,对于Carol来说,这笔支付就像是Bob在给Diana转账,她不知道Bob会从Alice处收到资金,也不知道Diana会继续转账给Eric。

闪电网络使用Sphinx多重加密协议。在使用闪电网络时,Alice会为网络的每一部分都做一层加密,从支付路径的末端开始。她使用Eric的公钥为Eric加密了消息。这条加密消息会被嵌套在给Diana的消息里,并用Diana的公钥对整个消息再做一次加密。再然后,这条给Diana的消息又会嵌套在给Carol的消息里,也用Carol的公钥对整个消息再做一次加密。如此不断重复,得出可以交给下一个人的消息。这样一来,Bob只能解密消息的最外一层,得到本意发给他的内容;然后把消息转给Carol;Carol也是如此。每经过一个人,都只会公开绝对必要的消息:支付的数额、佣金的数额、时间锁的内容,等等。

为了让人不能从消息的长度中推测链条的长度,消息的长度都是一样的,总是像有20个人参与这个链条一样。每个人,包括最后一个,得到的都是同样大小的图像,都以为除了自己以外还有20个伙伴。

闪电网络的好处和应用场景

当然,闪电网络的好处并不像很多人以为的那样,只有可扩展性一项。我们想想闪电网络到底带来了哪些可能。

即时交易。使用闪电网络时,事务几乎是即时完成的。所以用比特币来买咖啡就变得可行了

交易所套利。当前,从一个交易所转出资金并转入另一个交易所是很不方便的,需要等待3至6个区块来确认交易。如果交易所能使用闪电网络,那用户就能即时转入资金、参与套利。交易所也不再需要冷钱包来存储资金,极大地降低了盗窃风险。

小额支付。比特币区块链的手续费对小额支付来说太高了。很难想象谁会愿意支付0.001btc就为了转账同等数量乃至更少的金额。有了闪电网络,你就可以即时转移任意大小的金额,举个例子,你可以按MB来支付网费。

金融智能合约和交易。金融合约对时延是极度敏感的,而且通常需要许多计算。把大多数负担移到了区块链外,我们就有机会能创建非常复杂的事务以及合约,而无需把这些都记录到区块链上。

跨链支付。如果使用不同共识规则的区块链使用同一种哈希函数,就有可能使用闪电网络来跨链支付。参与者无需信任任何人,也无需使用中介。

隐私。在闪电网络中,事务比起在比特币区块链上要更加隐秘,因为支付链条的参与者并不知道交易的发起方和目的地。

结论

我们已经讲完了闪电网络。在下一篇文章中,我会告诉你如何使用HTLC来执行一次跨链的原子互换,用btc交换ltc。

链接

Lightningnetworkindepth,part1:Paymentchannels

“Masteringbitcoin”—AndreasM.Antonopoulos

Lightningnetworkwhitepaper

Segregatedwitnessfordummies

原文链接:

https://medium.com/softblocks/lightning-network-in-depth-part-2-htlc-and-payment-routing-db46aea445a8

作者:?MagomedAliev

翻译:?阿剑

标签:BTCALIICEALICEBTCDEFIALISTJuiicealice币前景

屎币热门资讯
BCH:关于WBF即将上线TBP的公告

尊敬的用户:WBF即将在小目标专区上线TBP/USDT交易对,具体上线时间请关注官方公告。项目介绍:TBP,Three-BodyProblemMetaverse是由英美三体爱好者与Metaver.

1900/1/1 0:00:00
VEN:内容营销平台 FUFU 私募轮融资 170 万美元以推出更多功能和测验类型

链闻消息,内容营销平台FUFU获得170万美元私募轮融资,参与投资者包括alphanonce,、BlackEdgeCapital、Boxmining、FacultyGroup、FourSeaso.

1900/1/1 0:00:00
ZKN:中币关于上线ZKN(ZKN Network)的公告

尊敬的中币用户:????中币将于香港时间2021年9月17日上线ZKN。具体安排如下:????1、2021年9月17日10:00开放ZKN充值;????2、2021年9月18日14:00开放ZK.

1900/1/1 0:00:00
HTT:XT关于即将上线ODC的公告

尊敬的XT用户:XT即将上线ODC,并在创新区开放ODC/USDT交易对。具体开通时间,请关注后续公告。“OneDay是一个允许消费者使用智能手机或真正的卡进行区块链资产离线和在线支付的系统.

1900/1/1 0:00:00
LYG:真Layer2来了,Polygon的TVL暴跌55%,要凉?

DeFiLlama数据显示,Polygon网络目前的锁仓价值约为47亿美元。而6月15日,该数据为105亿。这意味着,过去3个月,Polygon的锁仓价值跌了整整55%.

1900/1/1 0:00:00
USDT:ZT创新板即将上线ADAPAD

亲爱的ZT用户:ZT创新板即将上线ADAPAD,并开启ADAPAD/USDT交易对。具体上线时间如下:充值:已开启;交易:2021年9月15日16:30?;ADAPAD项目简介:?ADAPad是.

1900/1/1 0:00:00