主页 > imtoken官网安卓下载 > 干货| 闪电网络应用程序开发快速指南

干货| 闪电网络应用程序开发快速指南

imtoken官网安卓下载 2023-03-06 07:20:43

如果你想开始闪电网络编程,而不关心所谓的正确和最佳实践,这篇文章适合你。 换句话说,本指南是高度主观的。 如果您更喜欢 O'Reilly 风格的权威文本,这篇文章可能不合您的口味。 但是,如果你想了解闪电网络的最小开发环境和它的基本内容,还是值得一读的。 我写这篇文章的目的是提炼出创建闪电网络应用的基础知识点,让新手可以快速搭建和实验。

相信只要掌握了基础知识,就可以编写出更复杂、更安全的应用程序。 但是,每个人总要有个起点,我个人的感觉是万事开头难,我觉得把这些想法结合起来,可以帮助一些迷途的羔羊减轻他们的痛苦。

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

大约一个月前,我辞掉了稳定的数据架构师工作,开始研究瞬息万变的比特币生态系统。 您会发现这篇文章表明您已经采取了这一步(或正在考虑)。

简单地说,我认为比特币是我见过的最有趣的技术创新。 我对比特币了解得越多,就越被它吸引。 比特币技术有望改变甚至重塑我们今天的互动方式,使其焕然一新。 我希望贡献我的一份力量。

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

老实说,关于比特币生态系统我想写的太多了(“能源支持货币”的概念排在第一位),但我得再等一天。 现在让我们进入正题:

比特币交易网怎么充值_比特币充值到账时间_比特币充值网络选择

闪电网络的架构

比特币充值到账时间_比特币交易网怎么充值_比特币充值网络选择

-来源:lnrouter.app-

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

实用的做法是实时跟踪通道中的余额变化。 比如你在Alice开通的通道中存入100聪,你就有大约100聪的转账额度(减去链上交易手续费),可以直接转给Alice,也可以通过Alice间接转账给Alice。 这些转账几乎是即时的,因为我们只需要调整每笔交易的通道余额。 这种调整是通过在发送者和接收者之间传递加密消息来实现的。

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

虽然我只对闪电网络协议进行了非常简短的概述,但足以入门。 如果你想更详细地了解闪电网络的工作原理,这里有一些很好的读物。 注意不要沉迷于知识的海洋,坐在电脑前看书到很晚,却一行代码都不敲。 并不是说这样就一定不好,但是我们的目的还是为了修炼。 此外,保证充足的睡眠也很重要。

我认为了解闪电网络及其节点如何工作的更好方法是自己运行一个节点并弄清楚付款是如何通过该节点进行路由的。 虽然这种方法需要更多的时间和金钱,但它既有趣又长知识。 1个

完成

闪电网络是一个开放协议。 这意味着闪电网络具有标准的通信和解释消息的方式。 就像 HTTPS 和 TCP/IP 不属于任何人一样,闪电网络协议也不属于任何人。 只要遵守标准,任何人都可以参与闪电网络。 不仅如此,随着开发人员继续强化协议并添加新功能,该标准将继续发展。

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

闪电实验室—lnd(Go)

Blockstream—c-lighting (C)

ACINQ—eclair (Scala)

Square Crypto — Rust 闪电 (Rust)

上述所有实现都能够通过闪电网络进行通信。 不同之处在于这些实现的 API。 本文只关注Lightning Labs的lnd,因为这是我最先接触的,也是我了解最多的。 虽然因为偶然因素最终选择了Ind,但不得不夸一下Lightning Labs的Ind文档写的很好,开发者可以通过Slack官方渠道得到很多帮助和支持。

请注意,下面的讨论将围绕 Ind 展开,但基本概念适用于所有闪电网络实施。

你的开发环境

废话不多说,直接用Polar。

好吧,再多说几句。 无论你是开发者还是用户,构建闪电网络的最大障碍是如何创建后端。 我不只是在谈论钱包,因为有许多简单快速的托管解决方案可用。 我指的是实际的后端——运行比特币和闪电网络的节点。

比特币充值到账时间_比特币交易网怎么充值_比特币充值网络选择

我这样说是因为您的应用程序需要在节点上具有某些权限才能执行一些重要的事情,例如通过 API/gRPC 调用创建发票和监控付款。 如果节点运营商已授予您访问节点的权限,您也可以这样做,但最好自己运行一个节点。

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

如果你用的是普通的家庭宽带,光是同步区块链就至少需要几天的时间。 您可以尝试 Neutrino(一种轻量级比特币钱包),但我听说使用它在闪电网络上进行开发可能会导致一些问题。 我自己没有试过。 无论如何,如果您是这些工具的新手,我认为最好删除可能产生负面影响的变量。 所以,如果你负担得起,我建议只同步整个区块链。

如果我们对比特币的层进行排序,闪电网络层是比特币的第二层。 正如我上面提到的比特币充值网络选择,我们需要在闪电网络上开通通道来进行交易。 虽然在闪电网络上开通通道并不难,但您确实需要一些计划和协调,以及支付比特币。 您当然可以质押比特币以打开渠道并开始交易。 但是,您不必承担这种财务风险。 2个

暂时不要管它。 Polar 是一个很棒的工具,可以让您模拟在笔记本电脑上的 Docker 容器内运行这些进程。 此外,它还提供了精美的UI界面,为您展示网络可视化效果。

比特币充值网络选择_比特币交易网怎么充值_比特币充值到账时间

-看! 等不及要同步了! (极性界面)-

Polar 的伟大之处在于,当您准备好将您的应用程序移动到测试网或主网后端时,您只需要更新一些配置。 通过在应用程序中添加或注释掉几行代码,我已经可以轻松地在本地、测试网和主网后端之间切换。 (我将以 .env 文件结束。当然,分析工具不是本文的目的。)

Polar 还支持 lnd、c-lighting 和 eclair 节点。 这意味着您可以灵活地尝试其他实现。

重申一下:只需使用 Polar。 这是一种快速简便的入门方法。 另外,如果你根本不喜欢在闪电网络上开发怎么办? 及早发现这一点总比在您不一定会使用的系统上浪费太多时间和金钱要好。 话虽如此,如果您发现自己沉迷于 Stephan Livera 的播客,您每晚都无法停止收听,您可以设置一个更严肃的开发环境。

设置极坐标

比特币充值网络选择_比特币充值到账时间_比特币交易网怎么充值

点击“创建网络”即可在 Polar 中轻松创建模拟闪电网络环境。 您可以随意命名网络(我个人认为“测试”是一个明智的选择)并添加两个 lnd 节点和一个比特币核心节点。 其实对于刚入门的人来说,这些只是最低配置,后面还可以添加更多的节点。 创建网络后,您就可以启动它。 第一次启动网络的时间可能会稍长一些,因为需要下载所有的Docker镜像。 顺便说一句,您需要在自己的设备上运行 Docker。 就像我之前说的,你在这里还是要自己想办法。

最后,您将看到类似于下图的 Polar 界面:

比特币交易网怎么充值_比特币充值网络选择_比特币充值到账时间

在上图所示的界面中,我们可以看到Alice和Bob的Ind节点,这两个节点都连接到了Bitcoin Core后台进程。 另外注意此时的区块高度为1,这就是我们的创世区块! 与实时区块链不同,Polar 仅在开发和测试期间提交交易时才生成区块。

下一步是在 Alice 和 Bob 之间创建一个用于闪电支付的通道。 单击 Alice 的节点,右侧的控制面板显示我们可以与该节点交互的不同方式。 单击 Actions,我们会看到用模拟比特币为 Alice 的钱包提供资金并在 Alice 和 Bob 之间打开通道所需的一切。 接下来我们给Alice的钱包充值一些资金,然后打开Alice和Bob之间的通道。

点击“存款”,然后将 100 万聪存入爱丽丝的钱包。

比特币充值网络选择_比特币交易网怎么充值_比特币充值到账时间

如果一切按计划进行,您应该会看到区块高度和 Alice 的钱包余额发生变化。 如果没有,请寻求帮助。 这不是你的错。 3个

现在我们可以打开 Alice 和 Bob 之间的通道。 现在 Alice 有钱了,我们可以让她和 Bob 开一个“Outgoing”通道。 所谓转账通道,就是Alice可以通过这个通道将一定数量的比特币转给Bob。 Alice 和 Bob 之间可以进行多次转账交易,只要通道中有余额即可。 但是请注意,当通道首次打开时,只有 Alice 可以向 Bob 转账,因为可用余额在她那里。 当然,Alice 转账给 Bob 之后,Bob 就可以转账给 Alice。

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

老实说,我在使用 Polar 打开频道时遇到了一些问题。 我怀疑这是用户界面和后端之间的状态差异,但我不确定。 有时,关闭并重新启动一个节点(或整个网络)会有所帮助。 完全退出并重新启动 Polar 也可以。 另外,当您遇到这种情况时,到户外活动 10 分钟是放松身心的好方法。

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

首先选择Alice的Ind节点,进入“Actions”界面,点击“Terminal”下的“Launch”,然后会出现命令提示符,如下图:

比特币交易网怎么充值_比特币充值到账时间_比特币充值网络选择

现在我们可以使用 Ind 节点的 lncli 工具来打开通道、创建发票和进行支付。 首先,运行以下命令以获得概览:

lncli --help

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

lncli openchannel --node_key  --local_amt 100000

您会看到带有“funding_txid”的响应,它对应于 Alice 和 Bob 向我们的模拟比特币区块链广播的资金交易。 运行以下命令以查看我们新创建的频道:

lncli listchannels

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

现在,我们可以通过 listchannels 响应看到 Alice 和 Bob 之间的通道已经成功开通,通道余额约为 100,000 satoshi(减去交易手续费)。 不足 100,000 satoshi 是 Alice 可以通过闪电网络支付给 Bob 的可用余额。

支付流程

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

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

lncli addinvoice --amt 100

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

{    "r_hash": "7d91cafaba85b6086924142dfd890f350eb53b17b80e2993d0a2ce5ccc7252f1",    "payment_request": "lnbcrt1u1ps3lu04pp50kgu4746skmqs6fyzsklmzg0x58t2wchhq8zny7s5t89enrj2tcsdqqcqzpgsp55rtlzlf5rt0z5zg34nc2rlcm9mw6nd77x45r85z6zp07qumphr7q9qyyssqzrvxdlsluaeu7esscvv8skcmaly4794j7pg9ytapmn50uukezf4xpqma9758s39wpn4pwk475dztezg4tff8xpylksl4mww57q8hj7cq7s7222",    "add_index": "1",    "payment_addr": "a0d7f17d341ade2a0911acf0a1ff1b2edda9b7de356833d05a105fe07361b8fc"}

目前,我们只关注“payment_request”部分,因为这部分数据包含 Alice 向 Bob 付款所需的一切,即付款金额和收款人地址 5。

如果我们切换回 Alice 的节点终端,我们可以获得支付请求并将其作为参数传递给以下命令:

lncli sendpayment --pay_req 

结果是:

比特币交易网怎么充值_比特币充值网络选择_比特币充值到账时间

成功。

开始你的冒险

比特币交易网怎么充值_比特币充值到账时间_比特币充值网络选择

此时,您应该具备足够的基础知识和工具来开始构建应用程序。 上图概述了一个简单的示例应用程序,它使用我们在 Polar 中使用的相同 API 调用来创建和支付发票。 这就是构建基本应用程序架构所需的全部内容。 当然,这只是一个例子,我们在开发过程中还会遇到很多其他的问题(这只是开始),但是你会慢慢弄清楚你需要什么以及如何解决这些问题。

一些额外的建议和参考:

最后,如果您认为本文中的任何内容不清楚或不准确,请随时向我发送反馈或问题。 谢谢阅读。 快点。 如果您想运行节点,Umbrel 非常适合初学者。 我听说 MyNode、RaspiBolt 和 RaspiBlitz 也不错。 如果您喜欢修补软件系统(或模拟城市),那么运行节点充其量只是一种有趣的消遣,充其量是一种代价高昂且无休止的优化游戏(需要真金白银)。 您还可以在测试网上运行实验,并通过比特币水龙头赚取一些实验比特币。 这些硬币一文不值,但守财奴也很有趣。 如果您对自己配置和管理节点不感兴趣,可以使用像 Voltage 这样的服务。 Voltage 是一种按需付费的云服务,支持测试网和主网节点。 好吧,我们不能 100% 确定。 为谨慎起见,请查看 lnd Slack 上的开发者频道。 我在这里遇到了很多构建和维护这些工具的开发人员。 你可能会看到我! 可能有人遇到过您面临的问题。 如果没有,那就太好了 - 每个人都可以从你的问题中学习。 区块链是一个公共数据库,每个人都有root权限。 更多信息请查看:发票中其他字段的详细解释,可以查看本汇总。 要了解有关基础合约的更多信息,请阅读本文。

(结束)

(本文链接较多,可点击左下方“阅读原文”从EthFans网站获取)

原文链接:

@rheedio/a-crash-course-in-lightning-app-development-5be5b8d2d558