2022区块链扫盲-闪电网络应用开发速成教程

当前位置:首页 > 币圈百科 > 2022区块链扫盲-闪电网络应用开发速成教程

2022区块链扫盲-闪电网络应用开发速成教程

2022-09-21币圈百科255

如果你想入门闪电网络编程,不在乎所谓的正确和最佳实践,这篇文章非常适合你。换句话说,这个指南是高度主观的。如果你喜欢的话?奥莱利式的权威文本,这篇文章可能不合你的口味。不过,如果你想了解闪电网的最低开发环境及其基本内容,不妨去看看。写这篇文章的目的是提炼出创建雷电网络应用的基础知识点,让新手快速搭建和实验。

相信只要掌握了基础知识,就能写出更复杂、更安全的应用。然而,每个人都要有一个开始。我个人的感觉是,万事开头难。我觉得整合这些想法可以帮助一些迷途羔羊减轻痛苦。

在深入细节之前,请允许我简单介绍一下我的背景:

大约一个月前,我辞去了数据架构师这份稳定的工作,开始研究日新月异的比特币生态。你会发现这篇文章,说明你已经迈出了这一步(或者正在考虑这么做)。

简单来说,我认为比特币是我见过的最有趣的技术创新。对比特币了解越多,就越被它吸引。比特币技术有望改变甚至重塑今天的交互方式,从而彻底转型。希望贡献自己的一份力量。

这就是我选择在比特币上发展的原因。希望本文能让不熟悉闪电网络生态及其潜力的开发者受益,鼓励更多开发者为比特币领域注入创造力。

老实说,我想写的比特币生态太多了(其中“以能量为后盾的货币”这个概念是第一位的),但只能改天再说了。现在言归正传:

区块链扫盲:闪电网络应用开发速成指南

闪电网的架构

区块链扫盲:闪电网络应用开发速成指南-来源:lnrouter.app-

闪电网的基本设计是利用通道实现节点间的一对一连接。开通通道需要存入一定数量的比特币,这笔交易会被记录在比特币区块链上。然后,用户可以使用特殊的链外合同在节点之间的通道中转移比特币,而无需向区块链提交新的交易。

实际做法是实时跟踪渠道中的余额变化。比如你在爱丽丝开通的通道里存了100个satoshi,你就有100个satoshi左右的转账金额(减去链条交易费),可以直接转账给爱丽丝,也可以通过爱丽丝间接转账给他人。这些转账几乎是瞬间的,因为我们只需要根据每笔交易来调整渠道的平衡。这种调整是通过在付款人和收款人之间传输加密消息来实现的。

lightning应用运行在lightning网络上(即所谓的比特币第二层)。闪电应用也使用比特币作为支付方式,但结算速度更快,交易费用更低。

虽然我只是非常简要的总结了一下闪电网络协议,但是知道这些就足够入门了。如果你想更多地了解闪电网络是如何工作的,这里有一些很好的阅读材料。注意不要沉湎于知识的海洋,坐在电脑前看书看到很晚,却一行代码都不打。并不是说这样就一定不好,而是我们的宗旨是修行。此外,充足的睡眠也很重要。

我认为,如果你想知道闪电网络及其节点是如何工作的,不如自己去运行一个节点,弄清楚如何通过节点路由支付。虽然这种方法需要更多的时间和金钱,但它是有趣的和有益的。1

实现

雷电网络是一个开放的协议。这意味着闪电网络有一个标准的信息交流和解释方式。比如?正如HTTPS和TCP/IP不属于任何人一样,闪电网络协议也不属于任何人。只要遵守标准,任何人都可以加入闪电网。不仅如此,随着开发人员不断加强协议和添加新功能,该标准还将继续发展。

目前有四家公司处于lightning网络协议开发的核心:Lightning Labs、Blockstream、ACINQ和Square Crypto,它们都有自己的实现:

Lightning Labs—?lnd?(Go)

Blockstream —?c照明?(C)

ACINQ —?eclair?(Scala)

Square Crypto —?锈闪电?(Rust)

以上所有实现都可以通过闪电网进行通信。区别在于这些实现的API。本文只关注?闪电实验室的Lnd,因为这是我第一次接触,也是我最了解的一次。虽然最终带着偶然的成分选择了Ind,但不得不夸一下,Lightning Labs的Ind文档写得很好,开发者可以通过官方Slack渠道获得很多帮助和支持。

请注意,下面的讨论将集中在Ind上,但基本概念适用于所有lightning网络实施。

你的开发环境

不废话,用?极地?去做吧。

好吧,多说两句。无论你是开发者还是用户,在闪电网上搭建最大的障碍就是如何创建后端。我说的不仅仅是一个钱包,因为有很多简单快捷的托管解决方案。我指的是真正运行比特币和闪电网的后端——节点。

区块链扫盲:闪电网络应用开发速成指南我这样说是因为你的应用需要拥有节点的一定权限才能完成一些重要的操作,比如创建发票,通过API/gRPC调用监控支付等。如果一个节点操作员授予你访问该节点的权限,你也可以完成这些操作,但最好是自己操作一个节点。可用于闪电网络开发的

个节点必须运行两个进程:(1)同步到比特币区块链最新区块的比特币客户端;(2)已开通通道的闪电网客户端(可收发付费)。

如果您使用普通家庭宽带,仅同步区块链就需要至少几天时间。你可以试一试。中微子(一种轻量级的比特币钱包),不过听说用它在闪电网上开发可能会出一些问题。我自己没试过。无论如何,如果你是这类工具的新手,我认为最好是去掉可能产生负面影响的变量。因此,如果你能负担得起,我建议你只是同步完整的区块链。

如果我们把比特币的各层进行排序,闪电网络层就是比特币的第二层。我上面提到过,我们需要在闪电网上开一个通道进行交易。虽然在闪电网上开一个通道不难,但是需要一些策划和协调,还要交比特币。当然,你可以质押比特币打开通道,然后开始交易。但是,你不必承担这种财务风险。2

暂时不去管这些。极地?是一个很棒的工具,它允许您在笔记本电脑上的Docker容器中运行这些过程。此外,它还提供了一个漂亮的UI界面,向您展示网络可视化效果。

-看!迫不及待同步!(Polar接口)-区块链扫盲:闪电网络应用开发速成指南

Polar的优势在于,当你准备将应用转移到测试网后端或者主网时,只需要更新一些配置即可。我可以轻松地在本地网络、测试网络和主网络后端之间切换,只需在应用程序中添加或注释掉几行代码。我最终会得到它?环境文件。当然,评估工具不是本文的目的。)

Polar也支持?Lnd,c-lighting和?艾克蕾尔节点。这意味着您可以灵活地尝试其他实现。再来一遍

:用Polar就行了。这是一种快速简单的入门方式。另外,如果你根本不喜欢在闪电网上开发怎么办?与其浪费太多时间和金钱在一个你不一定会用到的系统上,不如早点发现这一点。话说回来,如果你发现自己沉迷于?Stephan Livera(知名比特币主播)每天晚上都会忍不住去听播客,可以搭建一个更严肃的开发环境。

设置Polar

点击“创建网络”,在Polar中轻松创建模拟闪电网2022蓑衣网小编络环境。 可以随意给这个网络命名(个人认为“测试”是个聪明的选择)加两个lnd?和一个比特币核心节点。其实对于新手来说,这些只是最起码的,后面还可以增加更多的节点。创建网络后,您可以启动它。第一次启动网络可能需要更长时间,因为你要下载所有Docker镜像。顺便说一下,你需要在你自己的设备上运行Docker。我之前说过,我们在这里还是要自己摸索。

区块链扫盲:闪电网络应用开发速成指南最后,你会看到一个类似下图的极坐标界面:

在上图所示的界面中,我们可以看到Alice和Bob的Ind节点,这两个节点都连接到了比特币核心后端进程。还要注意,此时的块高度是1。这是我们的创作板块!与实时区块链不同,Polar只会在开发和测试期间提交事务时进行封锁。

下一步是在Alice和Bob之间创建闪电支付的通道。点击Alice的节点,右边的控制面板会显示我们与这个节点交互的不同方式。点击“操作”,我们会看到用模拟比特币给爱丽丝的钱包充值,打开爱丽丝和鲍勃之间的通道所需的所有工具。接下来,我们先往爱丽丝的钱包里充值一些钱,然后打开爱丽丝和鲍勃之间的通道。区块链扫盲:闪电网络应用开发速成指南

点击“存款”,然后充值100万satoshi到爱丽丝的钱包里。

如果一切按计划进行,您会看到积木高度和爱丽丝的钱包余额发生了变化。如果没有,请寻求帮助。这不是你的错。3

现在,我们可以打开爱丽丝和鲍勃之间的通道了。现在Alice有钱了,我们可以让她和Bob开一个“外向”通道。所谓转出渠道,就是爱丽丝可以通过这个渠道将一定数量的比特币转给鲍勃。只要渠道中有余额,Alice和Bob之间就可以有多次转账交易。但是,请注意,通道刚开通时,只有爱丽丝可以给鲍勃转账,因为可用余额在她那里。当然,在爱丽丝把账户转给鲍勃后,鲍勃可以把钱转给爱丽丝。区块链扫盲:闪电网络应用开发速成指南

这种渠道资金管理方式是为了保证交易双方都有交易的能力,也就是我们所说的闪电网的流动性。实际上,用户只能使用渠道中的余额。进一步说,只有当支付方和收款方之间的通道有足够的余额(并且资金流向正确)时,支付才能成功。否则支付会失败。如何在闪电网络中管理有限的移动性,以及如何找到一种变通方法是一个值得讨论的话题。

坦白说,我在使用Polar打开通道时遇到过一些问题。我怀疑这是UI和后端的状态差异造成的,但我不确定。有时,关闭并重启节点(或整个网络)会有所帮助。彻底退出重启Polar同样有效。此外,在这种情况下,出去10分钟可以放松你的头脑和精神。

不管是什么原因,我发现操作这些节点的最佳方式是通过Polar提供的CLI。虽然UI不一定显示变化,但是我们可以直接查询数据库(可以这么说,4)来确定?UI?是否如实反映变化。Polar让这一切变得简单。让我们现在就做吧。

首先选择爱丽丝的Ind节点,进入“动作”界面,点击“终端”下的“启动”,然后会出现一个命令提示符,如下图所示:

现在,我们可以使用?lncli工具打开渠道、创建发票并进行支付。 首先,运行下面的命令得到一个概述:

lncli-help

我们可以运行下面的命令在Alice和Bob之间打开一个余额为100,000 satoshi的通道:

lncli打开通道-Node _ Key-Local _ AMT 10000 区块链扫盲:闪电网络应用开发速成指南你会看到一个带有“funding_txid”的响应,对应Alice和Bob向我们模拟的比特币区块链广播的充值交易。运行以下命令查看我们新创建的通道:

lncli listchannels

如果此命令返回的列表为空,请尝试使用比特币节点(在“操作”界面下)挖掘几个块。这样做应该有助于确认交易,打开渠道。

现在通过listchannels的回应可以看到,爱丽丝和鲍勃之间的通道已经成功打开,通道余额约为10万satoshi(减去交易费)。10万元以内的Satoshi,是Alice可以通过闪电网支付给Bob的可用余额。

支付流程

到目前为止,闪电网上最简单的(我相信也是最常见的)支付流程是通过发票。发票本质上是一组带有“金额”和“收款人”的付款指令。还有其他参数和变量可以帮助支付指令解锁更多有趣的可能性(例如,hodl invoice和BOLT12?Proposal),但本文只关注最基本的模型。

继续设置我们的极坐标。我们将首先创建一张发票,但这次我们将使用Bob的节点。所以我们要启动Bob的终端,运行以下命令:

ln CLI Add Invoice-amt100

上面的命令创建了一张价值100 satoshi的发票(实际上,我在执行这些步骤时遇到了连接错误。如果有同样的问题,请停止并重新启动Bob的节点)。通过返回的响应我们可以看到这张发票的信息:

{ ' r _ hash ':' 7d 91 ca faba 85 b 6086924142 df 890 f 350 EB 53 b 17 b 80 e 2993d 0 a2 ce 5c C5 cc 7252 f 1 ',' Payment _ request ':' lnb CRT 1 u 1 PS 3 Lu 04 p 50 kgu 4746 skm QS 6 fyzsklmzg 0 x 58 twchhq 8 zny 7s 5t 89 ENR 2 tcsdqcqzpgx]

成功。

开始你的冒险征程

这时,你应该已经具备了足够的基础知识和工具,可以开始构建应用了。上图概述了一个简单的示例应用,使用的正是我们在 Polar 中用来创建并支付发票的 API 调用。这就是搭建一个最基础的应用架构所需的一切。当然了,这只是一个例子,我们在开发过程中还会遇到许多其它问题(目前还只是开始),但是你会慢慢弄清楚自己需要什么以及如何解决这些问题。

一些额外的建议和参考:

有很多库可以帮助开发者少写些样板代码、直奔主题。就我本人而言,学习如何使用这些库带给我的更多是挫败感,而非更高的效率。问题主要出在我身上。抽象确实很棒,但前提是你要对被抽象的内容有基本了解。我在起步时还没有领悟到这一点。我觉得 Ind 的?API 文档学起来最容易。当我按照这个指南使用?Javascript 编写 gRPC 客户端时,我就已经步入正轨了。如果你想看一个更具体的应用示例,不妨看看?Lightning Labs 构建者指南的教程。如果你熟悉教程中用到的工具 express、mobx 和 React,那么我很推荐这个教程。如果你不熟悉这些工具,你可能不会从这篇教程中得到很大帮助,但还是能够学到一些东西。我喜欢这个教程的一个原因是,它展示了利用闪电网络(和密码学证明)构建应用可以实现的一些有趣功能。

区块链扫盲:闪电网络应用开发速成指南最后,如果你认为本文有任何写的不清楚或不准确之处,欢迎向我提出反馈或问题。

如果你想运行节点,Umbrel?很适合初学者。我听说?MyNode、RaspiBolt?和?RaspiBlitz?也不错。如果你喜欢修补软件系统(或 SimCity(模拟城市游戏)),那么运行节点往坏了说是一种有趣的消遣,往好了说是一场高成本且无休止的优化游戏(需要付出真金白银的那种)。 你还可以在测试网上进行实验,通过比特币水龙头获得一些实验用比特币。这些币一文不值,但是当个守财奴的体验会很有趣。如果你对自己配置和管理节点不感兴趣,可以使用?Voltage?之类的服务。Voltage?是即用即付的云上服务,支持测试网和主网节点。 好吧,我们不能百分之百确定。谨慎起见,请查看?lnd Slack?的开发者频道。我在这里遇到过很多构建并维护这些工具的开发者。你可能会看到我!有人可能经历过你正在面临的问题。如果没有,那就太棒了 —— 大家都能从你的问题中有所收获。 区块链是一个公共数据库,每个人都有 root 权限。如需了解更多信息,请查看:https://balajis.com/yes-you-may-need-a-blockchain/ 关于发票中其它字段的详细解释,可以查看这篇总结。如需了解更多关于底层合约的信息,请阅读这篇文章。

以上就是区块链扫盲:闪电网络应用开发速成指南的详细内容,更多关于闪电网络应用开发速成指南的资料请关注蓑衣网其它相关文章!

2022区块链扫盲-闪电网络应用开发速成教程 | 分享给朋友: