作者 | 佩奇
出品 | CSDN、区块链大本营
春节过后,闪电网络再次火了起来。
一方面是由于国内外圈内大佬纷纷参与的“闪电火炬“计划,另一方面是闪电网络节点数的明显增加。不禁一想,难道「比特币2.0」要来了?
闪电网络是什么?简单来说,它是比特币的侧链技术,其在2015年就已发布技术白皮书,在2017年底上线了比特币主网,可以实现“即时到账”的比特币“微支付”,其交易费用理论上甚至可以是0。硬性科普戳这里!
那什么是“闪电火炬”呢?就是由币圈发起的一场考验人性的活动。什么意思?如果别人给你转了1美元,或者10美元、1000美元、10000美元,再让你转给其他人,你会老老实实照做吗?“闪电火炬”就是一种在区块链上玩的接力游戏。
今天营长不强行科普,咱们通过一些有趣的、好玩的闪电网络应用场景来了解闪电网络!
你买画吗?只接受比特币支付的那种
为筹集足够的钱给自己买一台任天堂游戏机(Nintendo Switch),9岁的 Dennis 正在网上出售他的艺术杰作——简笔画。
Dennis 通过一个极为简洁的网站“lightning.pictures”,向全球各地的人们出售着一张又一张、独一无二的简笔画。
网站欢迎语
听起来并不是很吸引人,是不是?但如果说这个年仅9岁的小男孩是在通过比特币闪电网络乐此不疲地进行交易呢?
在网站的首页,他是这样说的:
我很喜欢画画,所以我通过闪电网络出售我的简笔画来获得比特币。
我想买一台 Nintendo Switch(任天堂游戏公司于2017年3月首发的一款便携掌上游戏机),但我每周只能获得2美元的零用钱。我父亲说如果我想要一个,我必须自己赚钱。
你可以花1美元得到一张快速素描,或者花10美元买一个我认为画得更棒的作品。
让我知道你希望我为你画的是什么。
请在下方选择。我会尽快给你发电子邮件。
感谢阅读!
可以看到,目前有两种类型的简笔画,售价分别为1美元和10美元。
交易方式有两种:如果只希望得到电子版简笔画,可通过电子邮件发送;如果买家想拿到真实的简笔画,可进行邮寄,但并不包邮。
显然,这小家伙真的想买一台 Nintendo Switch,其零售价约300美元,但父亲并不给予他一丁点的「经济援助」,他只能自己想办法赚钱。由于平时喜欢和父亲研究比特币,所以他的赚钱计划里出现了「闪电网络」这个名词。
而且,由于 Dennis 喜欢绘画,有什么是比出售一些独特的、私人定制的简笔画更好的赚钱方式呢?
一款 Nintendo Switch 零售价为32378日元,折合292.57美元
“你想要一张非常棒的照片吗?”Dennis问道。“如果你这样做,你必须支付10美元。你可以选择通过电子邮件接收电子版手稿,也可以选择通过快递获取实物手稿,但需要你到付。你需要使用 OpenNode 进行支付,通过比特币的闪电网络实现交易。“
想法很美好,那他能卖出作品赚到钱吗?
一位 ID为 johnturtle 的 Reddit 用户透漏到,他似乎已经完成50单了!
另一位 ID 为 revaneavn 的 Reddit 用户发帖称他已收到 Dennis 的作品(一只比特币熊,寓意深刻啊!)。
“9岁的 Dennis 为我画了一个比特币吉祥物,他没有让我失望!支持这个孩子,通过闪电网络进行交易感觉很 cool!”
这个帖子下面也产生了关于 Dennis 真假的激烈讨论,如图:
无论 Dennis 究竟是谁,通过闪电网络的比特币交易不是已经达成了吗?
此外,营长还发现,Dennis 的父亲在今天上午更新了网站内容,一则关于「简笔画缺货」的通知。
哇!!Dennis 在他的小冒险中确实感受到了互联网的强大力量。
在3天的时间内,他就已完成了2/3的目标,然而,他现在仍有大量的订单要求通过。感谢所有购买简笔画和所有支持他的人。
很抱歉,他已停止接受更多的订单,直到他完成大量手中现有的订单。
如果你已成功购买简笔画,非常感谢!!他现在正在全力以赴,并将尽快送出。
Out of stock!缺货了!!
简笔画为何如此火爆?是网友对 Dennis 的怜悯(他老爸不给钱买游戏机!!)?还是对闪电网络的认同?
黑天鹅、Poketoshi、Satoshi 's Place...
很显然,Dennis 为 Nintendo Switch 筹集资金的尝试是一个非常有趣的闪电网络应用案例,但它绝对不是唯一的,且仍旧十分有趣。
在2018年末,据 Bitcoinist 报道,为挑战闪电网络的微支付能力,一位艺术家将名为“BLACK SWAN”的艺术品拍卖给了最低出价者。令人惊讶的是,这件作品售价仅为1毫聪,折合为0.000000037美元。这是有史以来通过比特币区块链转账的最低金额。
这位艺术家也有自己的在线商品商店(https://cryptograffiti.com/),用户可以在那里购买各种与密码相关的设计,比如T恤和马克杯等。
此外,去年6月,Bitcoinist 公司就发布了一个名为 Poketoshi 的新平台,用户可以在该平台上玩广受欢迎的 Pokemon 游戏(https://poketoshi.com/),每一次移动需支付10聪(约0.00040447美元)。
在更早之前,另外一群十分有创意的开发者开发了一块名为“Satoshi 's Place”的在线数字画布(https://satoshis.place/),它允许用户在画布上作画。数字画布由100万像素组成,每一个像素的绘制成本是1聪。
营长试着玩了玩,写下了「区块链大本营」六个字,需支付537聪!
随着人们越来越多地将比特币 second layer 应用于更便宜、更快的在线支付,闪电网络的容量已达到 710 BTC 以上。
节点数量目前迅速攀升至 6481个,目前的活跃通道数也已超过2.9万个,按目前市场价格计算,其容量超过了280万美元。
那么,未来闪电网络会开创一个微支付新时代吗?你看好闪电网络吗?
请在文末留言告诉我们吧!
— END —
EOS工作原理 | EOS开发环境 | 智能合约 | DAPP开发
推荐阅读:
点击“阅读原文”,打开 APP 获取更多干货哟!
算法思想与问题解决:从两数之和到最长无重复子串
1. 引言
在我们的对话中,我们讨论了两个经典的算法问题:两数之和和无重复字符的最长子串。这两个问题虽然看似不同,但它们都体现了一些重要的算法思想和问题解决技巧。本文将总结这些核心概念,并探讨如何将它们应用到更广泛的问题中。
2. 核心算法思想
2.1 哈希表(Hash Table)
哈希表是一种强大的数据结构,它允许我们在平均情况下以 O(1) 的时间复杂度进行插入、删除和查找操作。
应用场景:
- 在"两数之和"问题中,我们使用哈希表来存储每个数字及其索引,以便快速查找补数。
- 在"最长无重复子串"问题中,我们使用哈希表(Set 或 Map)来跟踪当前窗口中的字符。
核心优势:
- 快速查找
- 空间换时间的典型应用
2.2 滑动窗口(Sliding Window)
滑动窗口是一种解决数组或字符串的子元素问题的通用方法,它可以将嵌套循环问题转化为单循环问题。
应用场景:
- 在"最长无重复子串"问题中,我们使用滑动窗口来维护当前的无重复字符子串。
核心优势:
- 降低时间复杂度(通常从 O(n^2) 到 O(n))
- 特别适合处理连续子数组或子字符串问题
3. 问题解决思路
3.1 问题分析
- 理解问题:仔细阅读问题描述,确保理解所有要求和约束条件。
- 识别问题类型:是否是查找问题?是否涉及子数组/子字符串?
- 考虑特殊情况:空输入、边界情况等。
3.2 方法选择
- 暴力解法:始终考虑暴力解法,它有助于理解问题本质。
- 优化思路:考虑如何优化暴力解法,通常涉及以下几点:
- 使用额外的数据结构(如哈希表)来降低时间复杂度
- 使用特定的算法技巧(如滑动窗口)来简化问题
3.3 实现细节
-
选择合适的数据结构:
- 对于"两数之和",我们选择 Map 来存储数字和索引。
- 对于"最长无重复子串",我们可以选择 Set 或 Map。
-
处理边界条件:
- 检查输入有效性
- 处理特殊情况(如空字符串)
-
主逻辑实现:
- 对于哈希表方法,关注如何有效地存储和查询数据
- 对于滑动窗口,关注窗口的移动策略和状态维护
-
优化代码:
- 考虑是否可以合并某些步骤
- 是否可以通过early return提前结束
4. 常见陷阱和注意事项
- 索引处理:在处理数组或字符串索引时,要特别注意边界条件。
- 更新遗漏:在使用滑动窗口时,确保正确更新所有相关变量(如最大长度)。
- 死循环:在while循环中,确保每次迭代都有条件更新,避免死循环。
- 重复元素处理:在使用哈希表时,正确处理重复元素的情况。
5. 扩展思考
-
问题变体:
- 如果输入是排序的,会如何影响我们的解决方案?
- 如果需要找出所有可能的解,而不仅仅是一个解,应该如何修改算法?
-
大规模数据:
- 如果输入数据量非常大,不能一次性加载到内存,如何处理?
- 是否可以使用分布式算法来解决?
-
算法思想的泛化:
- 滑动窗口技术可以应用于哪些其他类型的问题?
- 哈希表在其他什么场景下特别有用?
6. 编程技巧
- 使用有意义的变量名:如
left
、right
而不是i
、j
。 - 模块化代码:将复杂逻辑拆分成小函数,提高可读性。
- 注释关键步骤:特别是对于复杂的逻辑,添加清晰的注释。
- 考虑代码的可扩展性:写代码时考虑未来可能的需求变化。
7. 结语
通过研究"两数之和"和"最长无重复子串"这两个问题,我们不仅学习了解决这些特定问题的方法,更重要的是,我们掌握了一些通用的算法思想和问题解决技巧。哈希表和滑动窗口是两种强大的工具,它们在许多其他问题中都有广泛的应用。
记住,算法的学习不仅仅是为了解决特定的问题,更是为了培养一种思维方式。通过不断实践和思考,我们可以将这些思想应用到各种各样的编程挑战中。保持好奇心,勇于尝试不同的方法,你会发现算法的魅力远不止于此!
评论记录:
回复评论: