支付通道和闪电网络在比特币中如何工作?

本文专门讨论链下支付渠道:它们的类型,操作原理和应用程序功能。 所提供的材料将有助于理解为什么付款渠道的概念在财务会计系统中具有革命性意义。 我们将讨论专门针对比特币的支付渠道。 本文对于不熟悉支付渠道概念的人将非常有用,并且还将使您了解闪电网络的原理。

付款渠道及其基本信息


什么是付款渠道?


支付渠道是一种无需向区块链添加交易即可进行多次支付的方法。 同时,通道成员仅彼此交互。 不需要其他验证者或第三方信任的存在。

付款渠道的好处


与常规交易相比,付款渠道有什么好处?
作为已经开放的付款渠道的一部分,参与者有机会进行即时付款。 接收方执行快速独立验证并接受付款。 基本版本中没有佣金。 因此,小额支付有一个地方。 由于此功能,支付渠道也称为小额支付渠道。

另一个有趣的优势是,渠道参与者的交互可以私下进行。 因此,尽管每个人都知道在特定比特币地址之间使用支付渠道这一事实,但每个小额支付的细节仍将对其他所有人保密。

付款渠道功能


这并不是说与常规交易相比,支付渠道存在严重缺陷,但是存在一些特征。

必须打开支付渠道,因此迟早要关闭。 这是通过单独的链上交易完成的。 对于他们来说,支付佣金是不可避免的,需要等待确认。 对于未完成的交易,最好等待完全确认。

在特定渠道内,只能在预定金额内付款。 它由参与者自己设置,并使用特殊的比特币脚本冻结所需的数量。

支付渠道可以分别为单向和双向,单向或双向。 这取决于渠道实施方法本身。

渠道的有效期和最高付款次数可能会受到限制,也可能不受限制。 这取决于技术。 因此,可以在一定时间之后或提前关闭通道。 此外,可以通过参与者的相互同意或应参与者之一的要求关闭该通道,但具有某些功能。

在简化的版本中,可以以这种方案来描述支付通道的操作。

图片

有一个比特币网络。 有两个用户:Alice和Bob。 他们有比特币钱包,带有用于支付渠道的附加模块,可以根据某种方法工作。 这些模块交换数据以直接付款。

谁的主意?


中本聪(Satoshi Nakamoto)本人在多年前给活跃协议开发者之一的一封私人信中首次描述了支付渠道的想法。 然后回到比特币,没有接受非常重要的更新,这使得设计可靠的支付渠道成为可能。 但是,后来成为可能,并在2013年恢复了这一真正有前途的想法。

关于实现支付渠道的方法


我们将考虑四个主要方面。
Spillman式付款渠道是单向渠道的最简单版本,使用寿命有限,付款次数不受限制。

后来,采用了比特币协议的另一种改进,代表了先前方法的改进的CLTV式支付渠道成为可能。

Poon-Dryja支付渠道是一种具有无限运行时间的双向渠道方法。 他们需要对最近采用的比特币协议进行更多更新。 此外,这些通道还用于闪电网络的设计中。

Decker-Wattenhofer双向支付渠道是可以同时使用两个单向渠道的一种选择,它通过形成可替换交易的顺序链而不是整个可替换交易树来改善其性能。 此外,此类渠道可以有两个以上的参与者。

我们将更详细地介绍前两种方法,但首先,我们将重复比特币协议的某些功能。

一些比特币协议


nLockTime是每个事务主体中的一个字段,其中包含时间戳或块号。 在此时间或区块链高度之前,不允许验证者在区块中包含交易。

nSequence是每个交易输入中的一个字段,其中包含无法确认该交易的时间值。 而且,该时间是相对于确认该输入所花费的输出的时间而计算的。

MultiSignature使得可以在交易结束时设置此类条件,根据该条件有必要提供多个电子签名。 这些签名将通过特定的公共密钥进行验证。

Spillman式付款渠道


因此,Spillman样式的支付渠道是一种创建具有发送者角色和接收者角色的单向支付渠道的方法。 这样的频道的工作时间由发送方任意设置,而接收方可以过早关闭该频道。

让我们在图中查看该通道的主要步骤。

图片

为了方便起见,假设有一些服务可以通过wi-fi接入点来交换对全球网络的访问权,而某些客户想要一天访问该网络。 该服务将花费一个比特币。 显然,客户端不信任该数量的服务,而是想为每秒的流量付费。

然后,他们决定打开一天的支付渠道,充值一个比特币。 该服务生成用于电子签名的新密钥对,并将公共密钥传输给客户端。 客户端依次生成一个新的密钥对,并使用其公共密钥和服务的公共密钥形成多重签名地址2-of-2。 此外,客户形成第一笔交易,在其中他将一个比特币发送到一个多重签名地址进行签名,但不将其分发给比特币网络,因为该服务可以替代客户并拒绝签署任何交易以进一步转移一个比特币。

因此,客户形成第二笔交易,将具有多重签名地址的硬币发送到他控制的地址。 此外,它设置nLockTime字段,以便可以在一天内确认交易。 他不签署该交易,而是将其发送到服务。 反过来,服务商同意客户可以自己(但不能在一天之内)拿起全部硬币,并用他的钥匙签署交易。 他将签名传递给客户端,客户端对其进行检查。 现在,他有机会用他的钥匙对交易进行预签名,并且如果服务决定拒绝服务,则可以保证取回硬币。

下一步,客户端将交易号1分发到比特币网络,或者将其转移到服务中进行分发(如果它本身没有连接)。 在确认第一笔交易后,付款渠道被认为是开放的。

在这种情况下,第一交易称为资金交易,第二交易称为退款交易。

付款渠道中的计算如何进行交互? 让我们看下图。

图片

为了发送第一笔付款,客户要求比特币服务地址,由他独立控制。 此外,客户形成第三笔交易,其中具有多重签名地址的硬币被分配在两个输出之间:第一个是在访问点操作的一秒钟内向服务地址付款,第二个是到客户自己的地址的交货。 客户用他的密钥签署第三笔交易,并将其传递给服务。 该服务会检查交易和签名的准确性,然后接受付款,因为该服务可以使用其私钥对交易进行重新签名,并且保证在24小时之内可以收到流量的第一秒。 但是,如果服务打算继续向客户提供服务并在渠道内接收付款,则只需在本地保存第三笔交易,直到渠道关闭。

要发送所有后续付款,客户分别更改第三笔交易的输出,将其重新签名,然后仅将签名和零钱转移给服务。 该服务还检查接收到的数据并保存新的交易编号3版本,因为在此版本中它将接收更多硬币。

如何关闭频道?

图片

该图显示,该服务必须有时间在该频道的运营时间结束之前在比特币网络上发布最新版本的第三笔交易。 否则,发件人可以作弊,预先签名并发布第二笔交易,他会将全部金额带到他的地址。

值得注意的是,客户可以在频道运作期间的任何时间发布退款交易。 服务人员会将此类行为视为麻瓜。 因此,他不断监视此交易在网络上的外观,并且如果检测到该交易,则终止与客户的合同,并通过发布最新版本的第三交易来提前关闭渠道。

CLTV风格的支付渠道


现在让我们看一下这种方法的改进版本,即CLTV风格的支付渠道。

在通过添加新脚本代码OP_CHECKLOCKTIMEVERIF进行了软叉比特币更新后,这种付款渠道方法变得适用。 它的特殊之处在于,现在您可以在交易输出中设置这样的规则,根据这些规则,只有在设置的nLockTime参数不小于指定的nLockTime参数的情况下,才能在交易中花费硬币。 实际上,这意味着,除其他条件外,硬币只能在一定时间后使用。 现在,使用脚本化条件分支操作(即IF-ELSE),您可以根据时间设置不同的支出条件。 与以前的付款渠道相比,这些付款渠道的优势在于您无需创建退款交易。 相反,您可以在资金交易的输出脚本中为花硬币指定双重条件。 即,在通道关闭时间之前,可以根据多重签名规则花费硬币,并且在关闭之后一个签名就足够了。

付款渠道如何应用?


有两种选择:要么以纯形式在预先建立的当事方之间定期付款,要么通过在彼此之间切换信道来形成闪电网络。 切换意味着可以在尚未彼此打开支付渠道但与其他网络参与者具有开放渠道的用户之间进行支付。 然后,该值将通过一系列未经授权的参与者(如果存在)进行传输。

对于雷电网络,还有其他困难和功能。 这是用于交换信道和通信协议节点的普遍接受的格式的发展。 重要的是,一些开发人员的钱包可以与其他开发人员的钱包一起使用。 另一个挑战是该网络上的路由问题。 考虑到在每个通道中每个方向上的转移量都受到限制这一事实,您需要找到最短的转移价值的方法。

网络功能


在下图中,让我们看一下比特币网络和闪电网络的功能。

图片

在比特币网络中,节点交换有关交易和区块的数据,以及彼此的网络地址。 在这种情况下,达成共识并形成一个公共数据库。 除了完整的节点外,比特币网络中还有一些轻量级节点,它们仅接收所需信息,而不处理和存储整个历史记录。

在闪电网络中,节点不会交换现成的事务,也不会达成共识。 但是对他们来说,更新彼此状态的信息并交换消息以维持付款渠道内的工作也很重要。 应该注意的是,闪电网络也不会是同质的,从某种意义上说,将存在负载越来越大的节点以及活动不稳定的节点。 最有可能的是,网络中将存在集线器,节点具有大量开放的支付渠道,并且它们将不得不应付大量的负载。 普通用户最多可以使用这些中心之一打开一个或两个付款渠道。

之所以会这样,是因为要打开每个付款渠道,您需要冻结一定数量的硬币,然后您只能接受并发送有限数量的付款。 如果普通用户将他的硬币分成几个部分并打开几个渠道,那么实际上,与原始金额相比,他在每个渠道中会收到很小的付款窗口。 同时,大型组织(例如钱包开发人员,集中式交易所或受欢迎的商人)将充当枢纽。 他们有能力维持大量频道的大量开放,并且长时间不脱机。

热点问题


考虑有关支付渠道和闪电网络的常见问题。

-与常规比特币交易相比,渠道中的付款有多可靠?

通过可靠性,可以将渠道中的付款与普通付款进行比较,也就是说,不会取走硬币,也不会取消付款。 但是有很多功能,例如需要及时打开和关闭通道,限制通道内的数量,需要与比特币网络持续同步,冻结硬币一段时间的可能性。

-通道和闪电网络的带宽是否受到限制?

事实是没有任何限制,但是可能存在与信道处理,网络侦察和路由构建相关的延迟,具体取决于特定参与者的性能。 另外,节点可能会意外地脱机,这在其他参与者进行付款时可能会受到某些限制。

-频道成员应该互相信任吗?

不可以,支付渠道的机制可以防止交互方进行任何恶意操作。

-对于只想发送一笔付款的人,渠道有什么用?

如果某人想摆脱最新的硬币,而不再打算接受和发送付款,那么打开渠道就没有意义,您需要发送正常的链上交易。 在所有其他情况下,打开频道将很有用。

区块链在线课程“ 脱链支付渠道 ”的演讲之一也致力于该主题。

Source: https://habr.com/ru/post/zh-CN414793/


All Articles