链资讯 链资讯
Ctrl+D收藏链资讯
首页 > 聚币 > 正文

NFT:一文读懂闪电网络应用开发速成指南_Polkazeck

作者:

时间:

如果你想要入门闪电网络编程,又不在乎所谓正确、最佳的做法,这篇文很适合你。换言之,这篇指南具有很强的?主观性。如果你偏好 O'Reilly 式的权威文本,这篇文章可能不对你的胃口。但是,如果你想要了解闪电网络的最小开发环境及其基本内容,不妨读一读。我写本文的目的是提炼出创建闪电网络应用的基础知识点,让新手能够快速构建和实验。

我相信,只要掌握了基础知识点,你就能编写出更加复杂安全的应用。但是,每个人都得有个开始,我个人的感受是万事开头难,我认为将这些思想整合到一起可以帮助一些迷途羔羊缓解痛苦。

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

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

简单来说,我认为比特币是我所见过最有趣的技术创新。我越了解比特币,就越被它吸引。比特币技术有希望改变乃至重塑如今的交互方式,使之脱胎换骨。我希望贡献自己的一份力量。

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

老实说,关于比特币生态,我想写的实在太多了(其中,“由能源支持的货币”这一概念排在第一位),但是只能择日再谈了。现在开始进入正题:

-图源:lnrouter.app-

闪电网络的基础设计是利用通道实现节点间的一对一连接。开通通道需要存入一定数量的比特币,该事务会记录在比特币区块链上。然后,用户可以使用特殊的链下合约在节点之间转移通道内的比特币,无需提交新的事务到区块链上。

实际做法是实时追踪通道内的余额变化。例如,你在与 Alice 开通的通道内存入 100 satoshi,你有大约 100 satoshi (减去链上交易手续费)的转账额度,既可以直接转给 Alice ,也可通过 Alice 间接转给其他人。这些转账几乎是即时的,因为我们只需根据每笔交易调整通道的余额。这种调整是通过在付款方和收款方之间传递加密消息实现的。

某持仓价值9700万美元巨鲸或正通过OTC出售UNI、MATIC、LINK,买入LDO、DYDX:金色财经报道,据链上数据分析师余烬监测,一巨鲸/机构最近可能在通过OTC出售 UNI、MATIC、LINK,并买入LDO、DYDX。自 8/18 以来,该巨鲸已将3,350,234 UNI(1650万美元)、9,478,165MATIC)528万美元)、1,889,713 LINK(1165万美元)转入 Coinbase Prime。然后从 Coinbase Prime、Amber Group等平台接收到2,753,677 LDO(447万美元)、1,183,525 DYDX(255万美元)。

目前该鲸鱼/机构两个地址共计持有价值9700万美元的代币:32,087 ETH(5293万美元)、10,197,682 LDO(1622万美元)、2,019,176 LINK(1211万美元)、2,318,456 UNI(1074万美元)、1,183,526 DYDX(248万美元)。[2023/8/27 12:59:52]

闪电应用是在闪电网络(所谓的比特币二层)上运行的。闪电应用同样以比特币作为支付方式,但是结算速度更快、交易费更低。

虽然我只是非常简略地概括了闪电网络协议,但是知道这些已经足够入门了。如果你想更详细地了解闪电网络是如何运作的,这里有一些很好的阅读材料。小心不要沉溺在知识的海洋里,坐在电脑前读到很晚,却一行代码都没有敲。也不是说这样一定不好,只是我们的目的还是在于实践。另外,保证充足的睡眠也很重要。

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

闪电网络是开放式协议。这就意味着,闪电网络有标准的消息通信和解释方式。就像 HTTPS 和 TCP/IP 不归任何人所有那样,闪电网络协议也是如此。任何人只要遵守标准都可以参与闪电网络。不仅如此,随着开发者不断加固协议并增加新功能,这一标准也会持续发展。

目前有四家公司在闪电网络协议开发中处于核心地位:Lightning Labs、Blockstream、ACINQ 和 Square Crypto,而且都有自己的实现:

dYdX:作为预防措施,将在以太坊合并期间暂停存款确认:金色财经消息,去中心化衍生品平台dYdX在其官方推特上表示,以太坊合并预计将于9月13日至9月15日之间进行。在合并期间,我们预计交易或提款不会受到任何干扰。作为预防措施,我们将暂停存款确认,直到合并完成。[2022/9/8 13:16:26]

Lightning Labs —?lnd?(Go)

Blockstream —?c-lighting?(C)

ACINQ —?eclair?(Scala)

Square Crypto —?Rust Lightning?(Rust)

上述所有实现都能通过闪电网络进行通信。区别在于这些实现的 API。本文只聚焦于 Lightning Labs 的 lnd,因为这是我最先接触、也是了解最多的。虽然我最终选择 Ind 有偶然成分在里面,但是不得不夸一下,Lightning Labs 的 Ind 文档写得很好,而且开发者能够通过官方 Slack 频道获得很多帮助和支持。

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

不废话,使用?Polar?就行了。

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

我之所以这么说,是因为你的应用需要拥有节点的某些权限,才能完成一些重要操作,例如,通过 API/gRPC 调用创建发票和监控付款。如果有节点运营者授予你节点的访问权限,你同样可以完成这些操作,但还是自己运营一个节点比较好。

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

如果你使用的是普通的家用宽带,光是同步区块链就需要花费至少几天的时间。你可以试一下 Neutrino(一款轻量级比特币钱包),但是我听说用它在闪电网络上开发可能会导致一些问题。我没有亲身尝试过。不管怎样,如果你才刚开始接触这类工具,我想最好去除那些可能会产生负面影响的变量。因此,如果你负担得起,我建议你同步完整的区块链就好。

Starkware联合创始人:昨日市场波动期间,dYdX每秒处理45笔交易:12月5日消息,Starkware联合创始人Eli Ben-Sasson发推称,“今天早些时候,在价格大变动期间,dYdX每秒处理45笔交易。如果在以太坊L1上处理这些交易需要规模大约1.5亿Gas的区块。STARK超级扩容方案让StarkWare能够用不到今天1%的Gas在L1上打包所有这些交易。”

据悉,以太坊主网目前的Gas上限为3000万。一笔简单的交易需要大约2.8万Gas,而合约交易需要大约10万Gas。dYdX上的ZK交易只需要486 Gas,这使得数据压缩了98%。

此前报道,StarkNet是一个无需许可的去中心化以太坊L2Rollup扩容方案。StarkNet基于安全和具可扩展性的加密证明系统STARK,它允许DApp在不影响可组合性和安全性的情况下实现计算规模。(Trustnodes)[2021/12/6 12:53:04]

如果我们对比特币的分层进行排序,闪电网络层就是比特币的二层。正如我上文提到的,我们需要在闪电网络上开启通道来进行交易。虽然在闪电网络上开启通道不是很难,但是你需要一些计划和协调,还要付出比特币。你当然可以质押比特币来开启通道,然后开始交易。但是,你没必要承担这种金融风险。2

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

-你看!是不是等不及想同步了!(Polar 界面)-

Polar 的优点在于,当你准备好将应用转移到测试网或主网后端时,你只需要更新一些配置即可。我已经可以做到在本地、测试网和主网后端之间轻松切换,只需在应用中添加或注释掉几行代码即可。(我最后会得到 .env 文件。当然了,测评工具不是本文的目的。)

Polar 也支持 lnd、c-lighting 和 eclair 节点。这就意味着你可以灵活尝试其它实现。

再重申一遍:使用?Polar?就好。这是一种快速且简单的入门方法。再者说,万一你根本不喜欢在闪电网络上开发呢?早日发现这一点,总好过在一个你不一定会使用的系统上浪费过多时间和金钱。话说回来,如果你发现自己沉迷于?Stephan Livera(知名比特币主播)的播客,每晚收听不可自拔,可以搭建一个更严肃的开发环境。

dYdX改进提案0(DIP 0)未通过:10月14日消息,据dYdX官方公告显示,dYdX改进提案0(DIP0)未通过。赞成票数为86,508,564.95,该提案通过所需票数为1亿票,差额票数约为1349万票。

此提案由Paradigm开发者DanRobinson提出,主要内容包括:将功能恢复到安全模块;允许目前参与质押的用户撤回资金;补偿因参与安全模块而错过奖励的用户。[2021/10/14 20:29:06]

点击 “Create Network(创建网络)”,即可在 Polar 中轻松创建模拟闪电网络环境。你可以随意命名这个网络(我个人认为 “test(测试)” 是个聪明的选择)并添加两个 lnd 节点和一个 Bitcoin Core 节点。实际上,对于刚入门的人来说,这些只是最低配,之后还可以添加更多节点。你创建好网络后就可以启动它。首次启动网络时需要的时间可能会长一些,因为你必须下载所有 Docker 镜像。顺带一提,你需要在自己的设备上运行 Docker。就像我之前说的,这里还是得靠自己摸索。

最后,你会看到一个类似下图的 Polar 界面:

在上图所示界面中,我们可以看到 Alice 和 Bob 的 Ind 节点,而且这两个节点都与 Bitcoin Core 后端进程相连。另外还要注意的是,这时的区块高度是 1。这是我们的创世块!不同于实时区块链,Polar 只有在开发和测试过程中提交交易时才会出块。

下一步是在 Alice 和 Bob 之间创建一条通道,用来进行闪电付款。点击 Alice 的节点,右侧控制面板会显示我们可以与该节点交互的不同方式。点击 “Actions(操作)” ,我们就会看到向 Alice 的钱包充值模拟比特币以及在 Alice 和 Bob 之间开启通道所需的一切工具。接下来,我们先向 Alice 的钱包充值一些资金,再开启 Alice 与 Bob 的通道吧。

点击 “Deposit(充值)” ,接着将 100 万 satoshi 充值进 Alice 的钱包。

加密分析师:dYdX等10个加密项目可能会效仿Uniswap进行代币空投:加密分析师Tyler Swope表示,dYdX等10个加密项目可能会效仿Uniswap的做法,将免费加密货币交给用户。除了dYdX,另外有可能进行大规模空投的项目是FURUCOMBO、Zapper、MetaMask、Paraswap、Polymarket、Catnip、DeFi Saver、Foundation.app和Dark Forest。(TheDailyHODL)[2020/12/29 15:59:23]

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

现在,我们可以在 Alice 和 Bob 之间开启通道。现在,Alice 已经有钱了,我们可以让她开启一个与 Bob 的 “Outgoing(转出)” 通道。所谓的转出通道,就是 Alice 可以通过该通道转给 Bob 一定数量的比特币。Alice 和 Bob 之间可以进行多笔转账交易,只要通道内有余额即可。但是,请注意,该通道刚开启时,只有 Alice 可以向 Bob 转账,因为可用余额都在她那里。当然了,等到 Alice 向 Bob 转过账之后,Bob 就可以向 Alice 转账了。

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

坦白来说,我在使用 Polar 开启通道时遇到过一些问题。我怀疑这是 UI 和后端之间的状态差异导致的,但是我并不确定。有时,关闭并重启节点(或整个网络)会有帮助。完全退出并重启 Polar 同样有效。另外,遇到这类情况时,出门晃悠 10 分钟可以让你的头脑和精神得到很好的放松。

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

首选选中 Alice 的 Ind 节点,进入 “Actions” 界面,点击 “Terminal(终端)” 下面的 “Launch(启动)”,接着会出现一个命令提示符,如下图所示:

现在,我们可以使用该 Ind 节点的 lncli 工具开启通道、创建发票和付款了。首先,运行下方命令来了解大致情况:

lncli?--help我们可以运行下方命令在 Alice 和 Bob 之间开启一条余额为 10 万 satoshi 的通道:

lncli?openchannel?--node_key?<bob's?public?node?key>?--local_amt?100000你会看到一个带有 “funding_txid” 的响应,对应的是 Alice 和 Bob 广播到我们的模拟比特币区块链上的充值交易。运行下方命令查看我们新创建的通道:

lncli?listchannels如果该命令返回的列表为空,请尝试使用( “Actions” 界面下的)比特币节点挖几个区块。这样做应该有助于确认交易并开启通道。

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

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

继续设置我们的 Polar,我们先创建一个发票,但是这回要用 Bob 的节点。因此,我们要启动 Bob 的终端并运行以下命令:

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

{????"r_hash":?"7d91cafaba85b6086924142dfd890f350eb53b17b80e2993d0a2ce5ccc7252f1",????"payment_request":?"lnbcrt1u1ps3lu04pp50kgu4746skmqs6fyzsklmzg0x58t2wchhq8zny7s5t89enrj2tcsdqqcqzpgsp55rtlzlf5rt0z5zg34nc2rlcm9mw6nd77x45r85z6zp07qumphr7q9qyyssqzrvxdlsluaeu7esscvv8skcmaly4794j7pg9ytapmn50uukezf4xpqma9758s39wpn4pwk475dztezg4tff8xpylksl4mww57q8hj7cq7s7222",????"add_index":?"1",????"payment_addr":?"a0d7f17d341ade2a0911acf0a1ff1b2edda9b7de356833d05a105fe07361b8fc"}现在,我们只关注 “payment_request” 部分,因为这部分数据包含 Alice 向 Bob 付款所需的一切信息,即,付款金额和收款方地址5。

如果我们切回 Alice 的节点终端,就可以得到付款请求并将它作为参数传递给下方命令:

lncli?sendpayment?--pay_req?<payment_request>结果得到:

这时,你应该已经具备了足够的基础知识和工具,可以开始构建应用了。上图概述了一个简单的示例应用,使用的正是我们在 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/

关于发票中其它字段的详细解释,可以查看这篇总结。如需了解更多关于底层合约的信息,请阅读这篇文章。

标签:NFTLICPOLOLANFTPunk.FinanceALICEPolkazeckpolar币多少钱一个

聚币热门资讯
ALA:DYDX的挑战者们:去中心化永续合约交易平台赛道扫描_TRA

关于#赛道扫描 本篇研报属于Mint Ventures的#赛道扫描?系列,相对于针对单独项目进行全方位分析的#深度研报 系列,#赛道扫描 系列文章的重点在于关注赛道的发展趋势.

以太坊:一览韩国区块链生态现状:交易所、头部企业与银行等_ETH

中国加密货币用户只是基数位于世界首位,而并非「百分比」。如果要提到真正的「人人皆币民」的大国,那一定是韩国.

BIT:8月NFT交易市场创记录 四大赚钱领域及不得不防的坑_区块链游戏币有哪些

本文聚焦: 1.创记录的名企NFT动作及NFT市场交易量2.NFT最赚钱的四大领域应用3.关于NFT交易不得不防的四大坑8月11日消息.

ROLL:Delphi Digital 深度报告:区块链扩容的终局_比特币

注:原文来自Delphi Digital,作者是Can Gurel。 报告要点: 单片链受限于单个节点可处理的内容,而模块化生态则越过了这一限制,提供了一种更可持续的扩容形式;模块化背后的一个关.

ROL:看不懂NFT 了解这几幅画就好了_Qrolli

越来越难分清到底谁是NFT的真正标签,艺术品、游戏、区块链、元宇宙、币圈,还是炒作?今年被称为NFT 的“元年”,但是NFT到底是什么?12岁小朋友靠卖一系列的像素画.

区块链:中国区块链产业生态地图报告(2021第三期)_数字货币

来源:清华大学社会治理与发展研究院;中关村大数据产业联盟;2021年12月 目录 导读 第一章 中国区块链产业发展宏观分析 一、 国际热点与趋势 二、 中国区块链产业发展概况三、 中国区块链产业.