E07·闪电网络服务的互通性和安全性
曾汨: 听众朋友们大家好,欢迎收听《亿聪哲史》第七期,我是主播曾汨。
阿剑: 我是主播阿剑。
曾汨: 有学习和了解过闪电网络的朋友可能知道,闪电网络是一个由支付通道连接而成的网络。在这个网络当中,流动性至关重要。闪电网络上的每一笔交易都在影响着网络的流动性,同时也被网络的流动性所影响。今天这期播客,我们很高兴能邀请到一位闪电网络相关的开发者 Antonio 来和我们分享他的见解。欢迎 Antonio,请你先和我们的听众朋友打个招呼,做一下自我介绍吧。
Antonio: 大家好,很高兴能参与这个节目,然后我是 Antonio,然后我是在 kuutamo lab 做一个闪电网络的产品相关的开发,然后对闪电网络也是稍微有一些理解,然后也很高兴今天能来这个节目上,然后分享一些我知道的事情给大家,然后也希望这生态能越来越好。
曾汨: 能先和我们讲一讲你在这个行业的经历吗?就是你是什么时候开始接触比特币的?然后做闪电网络的相关开发之前,你有做过一些其他的和密码货币有关的工作吗?
Antonio: 好的,这个可能要回到 2020 年啦。2020 年刚好在 COVID 爆发前,我开始在区块链产业工作。在这过程当中,我待过了一些区块链公司,然后有公链的,有私链的,然后有转接的,有一些做合约的,有做 VN 相关的。到我现在公司其实一开始也不是做比特币或 Lightning 网络的,我们一开始其实是比较是希望做一个 Infra,然后各个 Blockchain 都可以用,到后来慢慢的开始转型到只做 Lightning,尤其是针对 Lightning 这一块,大概是在半年前左右。
曾汨: 请问比特币或者说闪电网络,它是怎么吸引了你,然后让你决定来开发这方面相关的东西的呢?
Antonio: 嗯,我觉得吸引到有时候也不见得是那么好,因为应该这样讲说,使用比特币或是闪电网络其实也毕竟我只是一个工程师嘛,所以是跟着公司跟着环境的大方向去改变自己去移动在这产业一方面求生存,然后在这样子的地方去做选择,但是可以很明确感觉到比特币或闪电网络跟其他的区块链网络是是蛮有蛮大差别的就是像这样说就是大部分我们看到的区块链可能都还是有一个比较明确的所谓的项目方或是官方的这样的单位。然后在比特币或闪电网络它真的就是一个蛮社区社群取向的这样子的区块链网络,然后也是当任何一件事情要发生也都是需要比较多方的意见,不同角度的声音进来这样子。这也是蛮吸引人的,我觉得这一点对我来说是蛮吸引人的,对。
阿剑: 这个就是大家习惯上说的 decentralized,就是去中心化,对吧?
Antonio: 哎,对对,就是应该说它去中心化程度应该是,说是最高应该当之无愧的,对。
曾汨: 大家的社区参与感远远胜过其他的那些密码学货币。
Antonio: 嗯,对,没错。
曾汨: 那么能请 Antonio 你给我们听众介绍一下闪电网络吗?以你自己理解的方式,什么是闪电网络?
Antonio: 可以可以。我觉得闪电网络在最近或是在以后应该会越来越蓬勃吧。因为在之前闪电网络这个概念其实被提出来很久,应该是几年了,然后它一直都没有比较好的被大量的使用。我最近感觉到整个生态开始蓬勃,然后实用性越来越高。这里有一部分是大家开始往这边转向。我自己观察还有看到是有几个点在触发。之前比较没有那么热络,其实本质上有个很大的原因是因为闪电网络或比特币的生态是比较没有一个官方的角色去调整它,所以闪电网络就是变成说要有这个需求,很大的需求去推动它才会发生。那它发生的原因是因为现在很多人在 Bitcoin 圈上面做应用嘛,所以像 BRC20 有什么,所以造成链上面的费会上升,那闪电网络费比较少,然后比较快速的这些特性就会,这需求就会越来越重要,因为这种比较 decentralized 的链,比较 decentralized 的社区就是当需求发生的时候才有可能去推动事情发生,所以闪电网络就是这时候开始发生。闪电网络是 BTC 的 Layer 2 嘛,所以它最核心的概念就是说,我如果要跟某个人有频繁的交易,那我们可以私底下先交易。就像是我跟我朋友常常中午去吃饭,有时候这一餐他请,有时候这一餐我没带钱他付,有时候他没带钱我付,这样来来回回,最后可能在一个月或是什么,再去修调整一下,然后把这个钱算清两边。闪电网络其实基本,它的基本概念就是这样,就跟我们一般生活非常非常贴近。那它的做法其实就是,你在一开始的时候,你必须在 BTC 的链上说,我要跟某个人建立一个 channel,那这个 channel 就是说我们两个私底下有一笔这样的钱,我们会来来往往。
在网络当中,我们会有一些 HTLC,会去记这些帐,这些帐就是存在于我们两个之中,这是我们两个的私帐,然后我们两个自己去算,然后可能一段时间,或者我们觉得有需要,会把这个再回到 BTC 的链上,所以我们不用频繁地在链上出块,等着链上的块帮我们做确认,我们可以私底下去做交易,这是闪电网络最初始的形状。那因为这个形状就像我们出去出门有时候没带手机或是钱不方便的时候,朋友帮忙垫一下那种概念,所以很容易处理。然后这是两个人的这件事。那如果我们把扩大一点就是。有时候,比如说像我跟你在不同的地方嘛,我现在有个钱想要给我个朋友,但是我不方便。那举个例好了,假装我有个朋友在北京,我现在他急需一笔钱,但是我不方便给他,那我北京有另外一个朋友,那我可以请我北京那个朋友帮忙把钱交给他,或是这一类的,或甚至是在不同国家也常常会有这种事情发生,闪电网络就可以利用这个这样子的关系,我把每一个人两个两个人的关系,这个 channel 全部连接起来,那就形成一个多跳网络。这就是闪电网络,用 channel 组成的一个网络。然后当我要把钱给某一个人的时候,我只要确保我的人际关系这个链或是我的频道这个关系这个链,有最后有通道我要收的那个人,然后就可以透过这样每一个不知名的人都彼此互相把钱传递一下,然后就可以最终把钱传到我要传的那个人。这也是蛮有趣的就是好像很早以前就有那种研究说,这世界上你如果……你的朋友的朋友,如果可以这样七次,你可以达到世界上的所有人。就是我的朋友的朋友的朋友的朋友的朋友,这样七次,你就可以达到世界上任何一个人。
闪电网络这种概念其实就像你,如果你跟你朋友建立一个圈哦,大家都建立一个 channel,那实际上只要 channel 丰富程度有够,每个人都跟自己朋友建立 channel,那你就可以很容易地把钱转给世界上任何一个人。然后透过这样子的网络你可以转给任何一个人,然后你不需要太多的手续费,不需要等出块,然后也不需要有什么中间人,不需要银行,你就可以达到这件事。那这个闪电网络,我想是蛮本质,而且蛮美好的地方。
曾汨: 哇,这个比喻绝了。我第一次听到拿人处理人这个概念来比喻闪电网络中间的这个通道的连接。就是我之前从来没有想过那个人脉好像是有个叫什么六度理论。
阿剑: 六度人际理论,对。
曾汨: 对,我从来没有想过把这两个东西那笔粘合在一起。哇,这个解释真的非常棒。那么你现在是在开发什么闪电网络上的工具呢?
Antonio: 嗯,我们现在开发,就坦白跟大家说就是我现在公司也在转向闪电网络一段时间,是大概半年左右半年的。尤其我啦,因为我是比较晚进来这个计划,可能这个计划应该开始有接近一年,然后我大概是半年多进来。其实闪电网络有很多的客户端程式,很多的程式可以用,那我们这些程式其实还没有,没有说很完备,然后也还没有找到一个定位。但闪电网络它有一些特性,所以它会需要一些 backend 的服务,那我们现在是尝试提供这些 backend 的服务,然后也希望能打造一个比较健康的生存模式,对公司来说。闪电网络我们知道说,刚才讲解释过那个关系嘛,然后你要怎么传,那有一个很核心我们可以理解就是说,如果今天要传一个钱,比方说传给远在南极的某个人好了,那我怎么知道他的朋友关系啊,还有我的朋友关系怎么接触到他,所以其实是需要有一张网络地图的,那这网络地图实际上是随着时刻在变动的,那我是不是有办法下载到这个网络地图,然后根据这个网络地图找到一条可以传钱给南极的这个朋友的方法?其实这个地图你当然也可以抛弃一个层次,然后去获取这完整的资讯去达到这件事情。当然也可以透过说直接下载这张地图,那我们尝试着做类似这样子的服务。可以让想要参与闪电网络的使用者,不用有太多背景,也不用运行太多复杂的东西。
我觉得坦白说,程式也许运作不是那么复杂,可是是需要时间的,因为你可能起起来,然后去同步一些资料,可是毕竟我们大家都知道,闪电网络的初衷就是希望很快速的付钱,很简单,我如果是小额的话,我可能很快的付出去,所以我们是尝试在这一个地方提供这个,当然我们也开发这个 Open Source 的程式,有一部分是因为这个程式也是基于我们的需要,然后会去做调整,我们去获取资讯这样子。
阿剑: 之前我在你的那个项目的这个信息上了解到你是在做一个其实是提供给 LSP,也就是闪电网络服务商使用的软体。那请问闪电网络服务商是什么东西呢?就是为什么用户会需要闪电网络服务商?
Antonio: 这个是要先讲闪电网络的理想与现实。闪电网络的理想就是我刚才讲的之前这个,我跟我朋友有办法建立链接,那我只要足够多的人在这个生态里面,大家都彼此跟自己的彼此朋友建立,我们很容易就可以获得。足够好强健的网络,可是如果在网络不是那么完整,还有在说有些人可能不想要跑一个节点,因为建立连结这件事就代表我一台机器要在网络上持续的运作,持续的跟另外一台我朋友的机器保持着握手的状态,这样子这个 Bitcoin 在闪电网络上的流动性才有办法流通嘛,要持续这样做。那终归这件事情还是对大部分人可能还是有困难的。这是现实。大家会带手机出门,可是手机没有人能保证他的手机是 24 小时永远都不会断网。多多少少都会有人进电梯的时候就会断网嘛。各式各样的可能。而且再来说把整个闪电网络搬到一台手机上,跑一个闪电网络节点在手机上 24 小时运作。我们先不考虑什么功效啊、储存的那些可能性。我想这些都可以解决。可是光是耗电可能很多人都不愿意这样做。所以这必然就是会有商业性的模式。刚才讲的理想是任何人都可以跟他的朋友握手。那现实是这件事情是实际上有点困难。那是不是有办法有个服务的人,他代表你去帮别人握手。那这就是服务商在做的事情。我觉得闪电网络的初衷跟它的做法其实是一个很明确的,然后任何服务商都可以架构自己想要做的方式,只要我的客户愿意相信我。技术上最简单达到的方式就是你就把 private key 给我,我帮你跑,对不对?这就是我们最常见的方式,或者说任何一个交易所的账户其实就是用这种思考在做事情嘛,对不对?你在那边开一个账户,实际上我帮你捐一把 key 在这里。跟你把 key 给我其实是一样的嘛。但是实际上还是有很多种比较好的做法。
你是握有你的 key,然后我在中间想办法帮你做这个服务。那这个部分其实就是刚才提到的看到一些 LSP 这些东西在讨论的,希望能做出像这样子的东西。然后像 LSPS2 就是我能不能开我的支付某一个 channel 到某一个地方是那个人那个时候还没有 channel,那 channel 同时建立起来。做这一类的事情。这个就是想要把它规格化,然后跟算是集思广益设计出一个比较好的方法。但是我坦白说,现实就是它现在离落地还……应该说就在这个点了啦,就即将要落地了。可能也不会太远,到底会多快我没办法保证,因为这个网络没有一个官方权威的人说了算,而是大家有 input 慢慢去支持。如果大家愿意支持这样子类似的服务商的协议多了,那这个东西就会变成主流,然后有 spec 就可以有人提供服务,有人提供服务就可以有人使用,这个整个生态会活络起来。那现在是有比较大的力量在推动这件事情发生,就是因为我们 BTC Layer 1,比特币网络的 Layer 1 的 Fee,因为一些应用开始上升,那闪电网络的需求越来越上升,所以会催生这件事情更快的发生,这样。
阿剑: OK,那我们会演的几个细节,我们希望聊得更清晰一点,就是说刚刚 Antonio,你刚刚提到了对于闪电网络用户来说,它会面临一个理想跟现实之间是有一定的落差的,就是这个落差在于其实用户对于他自己想要跑一个节点或者是保证自己的节点的长期的运行,对他来说其实并不是那么便利的事情,所以会出现各种各样可能为他提供这样便利的措施,而在你看来其实闪电网络服务商它是其中的一种,但是其实你也拿它跟其他方式做对比,比如说你也对比了其实现在交易所给自己的用户提供闪电网络支付服务的这种做法,对于交易所来说,它是一个完全的我们所谓的这个托管式钱包,那么它这个托管式钱包它就自己掌握着这个用户的这个私钥,然后在后台帮用户把所有事情做完,但是相应的情况是用户是需要信任它的。那么其实在你看来的话,其实 LSP 跟这种交易所的这种方式,包括我们现在看到的那个托管式闪电钱包,包括 Wallet of Satoshi,或者是其他这种托管式钱包,它其实是不一样的,对吗?
Antonio: 嗯,我们讲的应该是 LSPS,就是说,现在其实它还是一个,我觉得它没有被定型,还有一点模糊,相对之下啦,我觉得有点模糊,而且,任何服务,想要做服务的人都可能有方式做服务,然后再来就是说,最好是有个标准,就是说我们其实还是可以传统任何服务商都可以说我的客户的私钥只存在比如说存在他的 browser,只存在他的手机,我们并没有。可是我觉得使用区块链网络还有去中心化其实还有另外一个点,所谓就是自由。你可以自由自在的控制你的钱。你可以转到任何一个账户。可是今天如果今天这个东西没有成为 protocol,那换个角度来讲就是他并不自由。我只能在某一个钱包里面,某一个网页某个钱包,后面 backend 是某一个某一家服务商,然后这家公司如果出问题他倒掉了,我就没有,我没办法动我的,对,就会有很容易会有这些问题。我觉得是这一层也是一个可以进步的点,就是说如果他有一个 protocol,然后变成说任何人甚至可以成为一个纯 backend 的服务商,就是我符合这个标准。然后你前端要用什么样的钱包?你是手机、是电脑、是网页?都可以。反正你看你要接这个服务,然后接那个服务。所以我现在觉得说这件事情是会被催生啦。我自己觉得是会被催生,因为需求催生。但是我坦白说,当然这是我的看法啦。有些人可能会看闪电网络会觉得说,诶,它不是这样或是什么。因为我觉得这件事情是会一再被需求刺激,然后去讨论出来的。对,我们可以知道就是 LSPS,至少我看到的事,就是,呃,零也才刚刚好,二也才刚刚好,明年可能才会有比较多的 Hexon 啊,或是什么之类的,有这些相关的。
我觉得现在还是在摸索,我们大家都知道这些东西是需要的,因为 spec 就是把一刀切下去,这个属于谁,这个属于谁做,这个怎么做,这件事情,然后这一刀怎么切,其实大家还拿不定,所以我也不好说他会怎么切,怎么去处理这样的事情,但是我想大家应该能理解说,这个 spec 大家都想要,尤其像我这种在这个行业工作的,就很像是今天有标准,盖房子的人就是你今天有标准说房子要怎么盖,我们就有办法盖房子。你今天没有标准,我怎么盖都是不合规的。所以我们希望有个合规的标准慢慢出来。但是因为它不是一个有项目方决定那个规格,所以需要生态慢慢讨论出来的。
阿剑: OK,所以你刚刚介绍的这个东西实际上是 LSPS,就是 LSP Specification,就是现在大家最近在讨论的闪电网络服务商的规范,然后其实你认为它的核心的作用是在于帮助用户解除对于这个单个 LSP 的锁定,对吧?就是有了这个规范之后的话,我们就可以产生大量的 LSP,然后用户也可以自己选。比如说我要用 A 或者我要用 B,因为它们之间是有一个共通的规格的,所以那么我也可以用完 A 之后我可以切换,然后使得前端跟后端,就是我的用户的钱包界面前端跟实际的那个服务的这个后端可以充分的分工和分离,对吧?
Antonio: 对,如果真的标准达到的话是可以。理想上是我们刚才那样讲,但实际上有很多东西都是需要被储存跟记忆的嘛。像是网络的地图,然后如果我想要有 channel 的 backup,那我要怎么样去 backup 这些事情。这些东西可能不见得在 LSPS 里面,有一些像 LSPS2 是就是说我要怎么去跟一个不存在的人同时建立一个 channel,然后同时把钱给他,那我要怎么做,去把这东西标准化,对。然后像 LSPS0 就是最简单的,就是说我是一个 LSPS 节点,我必须要怎么样告诉大家我提供哪些 LSPS 的服务,不一样的服务。因为有些节点可能不接受的是同时建立一个 channel 不存在,那你就不能利用这个节点去做这件事情了。就很像是这个世界上你虽然可以透过钱当某个人,可是有些人他可能有一些层次上的差异,或是他个性上的差异,你不能做其他的操作。我虽然保持着光明地讲说这个可以这样完成,但是也必须很坦白地告诉大家其实它还是有很多不顺的地方。就很像是我很容易跟你握手,我可以决定说我要跟你握手,可是我在网路上谁要来跟我握手?你懂我意思吗?那我永远是单向的节点,我接了一个人而已。我不是一个连通的,那谁来跟我握手?这又变成另外一个困难。你会觉得说这件事好像没有什么特别,我直接跟一个不存在的人握手,可是它其实是解决了很容易去让网络延伸的一个 spec。可是你必须要先有这个 spec,然后先有那个,然后开始做。因为你想想看,如果我今天一个都不是用闪电网络的人,我突然想要收一笔钱,那我有什么办法?我要跑一个节点吗?太遥远了。那我必须要有一些这样的 spec 让我可以做这件事情。
我是服务商,然后我信任你,我是 server,那你可不可以马上建立一个 channel 给我,把那个踏入的成本降到最低。大概是在做这样子的事情啦,但是还有一点距离。不是说我现在所有东西都是打开箱子就可以用,网络上 download,按下去,click,跑就可以跑。没有,现在都没有这些东西,我必须坦承说,还没有。也基本的,如果你运行一个节点,然后你跟别人已经是连在网络里面,你要赚钱都可以。但是除此之外,我们还有很多美好的想象都还没有完全真的落地,还有距离。
阿剑: 我们还是回到这样一个问题吧,就是的确用户他想要获得能够在闪电网络当中给别人支付的这个功能是有很多种方式的。有一些方式,比如说像是托管钱包,或者是他使用的这个交易所本身提供了这种闪电支付的服务,或者是他使用的其他的一些互联网上的这个产品提供了这部分的服务。那在你看来,LSP,就是说我们说的闪电网络服务商,跟这些托管式的服务它是有区别的吗?还是说应该把它理解成是一种托管服务呢?
Antonio: 我觉得它不是托管服务,它不会是托管服务。因为在这个生态里面会讨论,会去讨论这个议题的人,并不会喜欢把自己的钥匙给别人,做一个托管。所以最终这个 Spec 不会是采用一个托管式服务的方式。而且托管式服务其实不需要这样的 Spec,它直接就是跑一个 Lightning 的节点,就可以了。它在它的机器里面跑了这样的服务,你跟我要求,然后我就直接去用我的节点帮你付钱。所以他不需要这个。
阿剑: 所以托管式钱包跟 LSP 其实是有区别的。那能不能给我们的听众举几个你知道的正在使用 LSP 的这个闪电钱包呢?
Antonio: 像 Mutiny 就是一个闪电钱包,这是我知道的,他们有做,然后因为我的面向还是比较工程背景,所以我并没有特别对 survey 说我们现在到底有哪些支持,但我相信大部分的托管式钱包应该很容易支持闪电网络,他只要想要他随时都可以很快速的把这功能装进来,只要这生态大了,这工程量不是很大,他们很快就可以把这东西做出来。
阿剑: 我自己个人的理解是,比如说像 Phoenix 的钱包的话,在我看来也是一个使用了我们所谓的 LSP 的这个钱包,因为他的 LSP 就是 Phoenix 的开发者,也就是我们所谓的那个 Eclair 的那个闪电网络客户端的那个开发者团队,包括像 Breeze 的钱包里面其实也有这样的闪电网络服务商。我还想问一个比较傻的问题,就是在我使用这种比如说像 Phoenix 或者 Breeze 钱包的这个时候的话,我不可能一天 24 小时打开这个钱包,对吧?我其实都是基本上是打开一下关一下,甚至可能几天打开一次,那我在钱包里面的那个资金是安全的吗?我的确不是 24 小时在线,我可能只是收款的时候或者是要给别人支付的时候,我才会打开这个软件,那我在里面的钱是安全的吗?
Antonio: 是安全的,不要太久。闪电网络其实是可以允许你离线的。然后这个离线其实是如果回到工程面都是可以被定义的。所以其实这个取决于服务商。那个离线其实是蛮久的,就是它 default 可能就是 72 小时之类的。那至于它是设定短到三个小时还是三天之类的,这种是看服务商去调整的。对。因为他毕竟闪电网络的初衷是希望解决满足生活应用场景,我小额支付手机拿出来就可以付,理想上确实不应该让手机永远都跑着这个,他还是可以执行,他不用一直打开这钱包,对。
阿剑: OK,那我们聊聊 kld 吧,就是你正在开发的这个软体,你能不能给我们介绍一下它是一个什么样的工具呢?它会做什么样的事情?
Antonio: kld 其实这个工具它现在形状是有点特别,所以我可能要先解释那个当初的背景。当初的背景就是我刚才讲我们原本是做云服务,我们希望帮助任何人起一个节点,然后这个节点是我们把 Security 放到第一位,它是完全不依赖别人,它是自己可以起起来,然后自己是保持所有它需要的东西。然后它是安全的。kld 还没有完整做到这件事。还有部分,就是它起起来的时候,其实它背后有个有个 DB 的 cluster,去服务我要存的东西。所以 DB 本身就可以忍受掉一个节点,它其实是三个节点的。它是三台机器的组成的 DB cluster,去储存需要的东西。所以它自己也要一个 Bitcoin 的 bitcoind。我不会另外去仰赖其他的。是服务,它里面就有比特币与闪电。它也不会去仰赖 Explorer,它自己去做 index,所有东西都自己做。这个程式所以你就是指定下去,这些东西它就帮你做到位。所以这样起起来之后,你是自立的。你是真的去网络上 sync,验证 block,然后自己做 index,得到所有东西。所以你不会去在任何一个地方遭受欺骗。然后这个程式是基于 NixOS,所以它起起来之后,其实它是一个 read-only image。然后另外比较特别的是,现在还没有百分之百达到它,但是几乎 99 啦,除非真的很熟的项目。就是你起起来的时候你是没有 root access,你没办法 root login。完全没办法,没办法 login 他,他就是自己就停在那边,他他会开 API 让你去做我们定义好的操作,然后他也可以更新,他自己会去 watch。某一个 repo,你指定的 repo,你只能在指定的 repo 里面更新。
他有更新时间,他只有去看那个 repo,知道说他的程式旧了,他必须更新,然后他会主动去更新。所以更新是他由内而外,就很像所有的区块链网络一样。我要验证什么东西是真的,我是从我自己肚子里面去验证。我每个 hash 都检查是对的,从 Genesis 实验证完以后我就知道这是真的。我不需要通过外面的人告诉我它是真的或是假的。所以这个节点它的起来的方式跟它的执行方式都是比较特别的。我 build 完装上去之后它就 read-only 了。你没办法进去改,比方说你想要进去把某个 port 关掉,不行的。进去改谁可以 access,不行的。你没办法用连线进去,但是他主动会去外面问某个地方,当初给他的地方。然后那边设定档里面有允许可以修改的东西他看到以后他会自己按照自己的排程去把他自己更新。他的设定上是这样,所以他是一个不是很亲民给一般人使用的东西。我必须坦诚说,但是他是如果你是非常把 Security 放非常非常非常前面,你不想要用任何外面的人服务,因为我知道 Bitcoin 生态里面有些人是我连整个 OS 都想自己 Build 什么东西都是自己来,那我们这个 Tool 其实就是做到这件事情。那个 OS 是自己 build 出来的。
它有 cache,你可以把 cache 那一行,就是不使用 cache,因为 binary build 是要很久的,你就会发现它真的是从头到尾都是自己 build,那个 image 是自己 build 完,然后自己找台机器,kd-sys 起来,就是它会先有个小 kernel,小 linux 在它 memory 起起来,然后那个 image 起起来以后,再把你这个特别 build 好,专门跑 Bitcoin,里面有 bitcoind,有 Bitcoin,有自己做 Index 的 Service,然后那些全部再把它安装进你的电脑里面,然后装完以后你还没有 root,再也进不去,你唯一能做的就是实体按键,把它强迫关掉重新装,要不然就是没有办法,就是这样。这个就是这一套 tool 我想要做到的。它是一个属于一个利基性的啦,就是利基的市场,某些人会想要这样子的工具。以前要做这样子的事情是很痛苦的,但是我们现在把它自动化,让它很简单。尽量让它贴近到你可能一行指令按下去,它就可以做到。也因为这样的开发它脚步会慢,然后功能不全面。这样也是起不来。各式各样因素。对。
阿剑: 我这么总结一下行吗?就是 kld 实际上是在一种专门的或者说特殊的安全思想和设计理念下开发出来的一款工具,而且它的那个架构会比较特殊。那我问几个问题。第一个问题是你需要自己重新实现一个比特币的节点对吗?就你不是用的比特币的代码,你是自己重新实现。
Antonio: 我是用 Bitcoin Core 的代码。
阿剑: 哦,是用 Bitcoin Core 的代码。
Antonio: 但是它起来的时候是它是独立自己起来,我没有不会再去修改它。然后再来是说我去跟它的中介连接是直接跟它连接,我不会有透过其他的 Service 或其他的东西,就是单纯全部都是自己的 Core 在自己的机器上。然后 Bitcoin Core 的那个组成是其实都是有 Hash 锁死的,基本上是不可能被篡改的。
阿剑: 所以最终的效果是说,比如说当我用 kld 的时候,其实我是一件事把它装完之后,然后其实我就只能用非常有限的方式来操作它,对吗?
Antonio: 对,就是所有被预先定义好的操作。
阿剑: 那我的下一个问题是,没错,我能够意识到它是为了实现很高的安全性而去这样设计和开发的。那么我想问的是,你们有哪一些安全上的考虑以及产品上的考虑?换句话说,这个东西它到底会被谁运行呢?很显然它不会是一个任何普通的只是想跑一个闪电节点的这个用户去使用它,一定是会应对某些专业场景。那在你看来就是说它会被用到哪一些的场景当中?
Antonio: 对我们来说,这一开始势必是一个 to B 的 solution。比如说像前面讲到的,即便是交易所,它背后还是要跑一个 lightning client。那你的 lightning client,你要怎么确保它的安全性?那这一类的用户他们就会想要。或者是我真的握有非常非常大量的比特币的话,那我就会需要有提高我的安全性。毕竟我不是 business 相关的,所以我没办法很明确的说谁会需要,但是我可以从这应用场景,从它的实用上来理解可能会想要用到的人,然后我没办法 reach 到这些人,对我来说。
阿剑: OK,那么再问一个问题吧,就是说在开发 kld 的这个过程当中选择的这些安全上的这个决策来去增加它的安全性,这些措施是不可被其他的安全措施替代的吗?我举个例子好了,就是我之前看过那个 Phoenix 钱包的开发者,也就是 Eclair 的那个开发者,他们是因为他们自己会运行一个很大的闪电的节点,因为他们是有很多通道的,有大量的通道,有大量的资金,然后他们又专门写了一篇文章说他们自己怎么去部署这样的一个节点,然后用各式各样的权限控制,包括更新的权限,包括进入的这个权限,各式各样的权限来去保证它的安全性,并且让真正签名的那个那个私钥跟这个软件本身的这个运行环境是有一定的程度的隔离的。这些在我理解来他们也是一些安全措施,那这些安全措施跟 kld 的现在做的这些安全上的这个抉择是可以相互替代的吗?还是不能相互替代的?
Antonio: 我觉得应该是说大家对安全都是一个渴望跟追求,尤其大家某一种程度分担了银行的角色,然后再来就是说想要做到多安全,安全就跟便利永远是互相拉扯的嘛,然后我们的做法其实是我们没有访问啊,你没有办法 login 啊。而且你装完以后,你的 key 进去就是进去,你拿不出来啊。即便它更新或什么,我们要做到的事就是,它就是一个黑盒子,真的是一个黑盒子。你唯一能做的就是把整个敲毁,什么东西都没有。要么就是黑盒子,你只能在有线的窗口跟他沟通,这样子。只能开着那些 API 跟他沟通。只要他不断电,他就是死死的在那边。我们的做法是一个比较笨重的做法。也许未来会改变。这个都是当客户跟我们接触,如果我们有比较好的客户,会受客户的状况,一定会有 tradeoff。我想这是老板会去思考的啦。但现阶段我们是不是一个没有什么防范,没有什么权限,进不去啊。他/etc 下面全部都 read-only 啊,所有东西都 read-only,你要做什么,没有什么东西可以做的。他唯一会碰到的问题就是,写到硬碟不够,那你就准备台新机器,准备去换他。就这样而已。因为他是 cluster,所以他允许你调一个,然后再回来。你可以说我们是笨方法,但是我觉得这个笨方法就是我不敢说是最安全,但是有时候就很像是我们怕失火,可是我们每天家里都要用火啊,要煮饭啊,要什么要火,那我可不可以就是我绝对都不要火,没有瓦斯,没有火柴,没有蜡烛,什么都没有,就是这样,我们说一个笨方法,但是它可以从道理上去保障它很强的安全性。
因为我们是用 NixOS 嘛,所以所有 binary 都是一个 hash,dependency,整个 OS 最后也回归到,顺便简单带一下 NixOS 的基本想法,就是 blockchain 为什么强健,每个 block 都是 hash 直到前一个节点嘛。那我们知道我们的程式运行的时候,也都是我有一个程式在跑,它会需要其他程式,它也是相依的某一个。可是这个相依的过程当中,实际上我们的程式运行都是基于 Path,基于你摆在某一个位置,所以它就会被执行。可是这件事情就是危险嘛,任何人只要有机会换到程式或什么,或是名字换成一样,因为配词其实是包含名字的。那在 Nix 的系统里面,所有的程式就是达成都是平等的,你们唯一能彼此相连的就是透过 Hash,然后你的 Hash 是来自你的原始码。所以你原始码变了,你 hash 又变了。当然不是一个链状,它是一个树状,因为一个程式可能会需要好几个程式去植,所以整个系统它是一个大的 hash 的一个 tree,所以它整个就是长在那里,然后又起起来又是 read-only,你不能动它。这种方式我没办法说它是最安全的,但是我说这种是一个因为我曾经有思考过,这个工作如果真的走不下去,去哪边找工作,我看一下哪边,看到了,有用这样工具的,都是做国防相关的。对,就是差不多是这种等级的东西会选,因为它不是那么易用,然后开发也是很麻烦的工具,但是,对,但是我觉得,这就是不要乱说我们自己是最安全或什么之类的,但是我觉得我们选了一个在这个行业界里面真的就是目前看起来就是我觉得好像找不到什么方法。当然有可能有人写有问题的代码,那我们都是 Open Source。
在没有恶意代码的情况下,这个部分是整个思维架构是用这种方式去保证它的安全性。所以我们没有 SSH,我们不是从那什么 SSH 去管理的。当然如果客户要对这个节点操作,他是有 SSH 的 token,毕竟还是像 key 一样的东西,今天有人把你 token 拿走,他就可以去帮你乱建 channel,然后帮你把 channel 里面的钱乱转,这是有点像的,这还是会发生,但是这个规则不能规则在系统上,系统已经。
阿剑: 已经做到他能做的全部了。
Antonio: 对对对,但我们把它简化了,原本你是记一个 secret key 变成有个 token 在你安装的时候你留下来。对,就是这样。然后是有线操作这样。想法是这样,但是我觉得理想跟现实还会拉扯,所以未来我们能不能保持一直这样我不能说,但现在是长这样。
曾汨: 听得出来,阿剑老师和 Antonio 聊得应该很尽兴,但是不得不说,对于我这样一个技术小白来说,我听懵了。
阿剑: 不不不,我郑重声明一点,就是我相信 Antonio 说的所有话当中,我能听懂的大概应该只有 50%,甚至不到,就是我能听懂那部分纯粹是因为我大概自己比如说我也有一些运行,比如说运行闪电节点的一些经验,包括也大概知道说程序的这个相互依赖啊这些事是怎么一回事,所以就我应该怎么说就非常感谢 Antonio 给我们上了一堂那个关于软件开发和那个设计的这个课。非常非常专业,真的是非常专业。
Antonio: 我也不知道怎么说,我只是觉得说我觉得我们在做是一个利基市场,然后是也许真的这行业里面有些人会经历的痛苦,然后我们尝试把它简化达到。可能一开始的人没办法那么容易去理解,可是慢慢的你就很像是也许大家会听了我一开始讲那个闪电网络握手就觉得好像非常理想,那我试着来做做看。可是当你做了几次,越做越多以后,你就会开始衍生出各式各样的问题。那你也许回来再想想的话,我们是不是可以这样做,就像我们说的这样做。这个解决的东西是藏在后面的问题。所以这个后面的问题一定要让,一定当你自己真的去触碰它的时候,你才会看到这个问题,才会觉得说这个是个问题。在你没有真的做之前,你完全感受不到那个问题。
阿剑: 我先说一下我的想法。其实我觉得 Antonio 可能太悲观了,因为我不觉得这是一个小众的市场。这个翻译有很多,但反正就是 niche market,我自己把它翻译成小众市场,其实我自己并不觉得这是一种小众市场,因为在过去的一年当中,我自己也关注到了很多的这个团队,他们会介绍自己在部署闪电节点上的这种安全实践,包括现在也有一些项目,比如说像 VLS,我不知道 Antonio 有没有听过,也是在今年出现的,那他其实他的这个基本的想法也是说我怎么让用于闪电支付和转发签名的私钥能够跟它的运行环境有一定程度的隔离,并且在隔离的基础之上它还是支持一定程度上的验证的,就是说当我需要签一个东西的时候,我可以有一些基本的验证,验证它是不是一个应该签的东西。也就是说其实现在大家开始越来越关注到闪电节点本身作为一个你可以认为它是一个有自身的商业前景的一个东西,我怎么去在各个方面去加强它的安全性,所以我觉得 kld 其实并不是在做一个市场,我们相信大家在不同方向上去尝试加强它的安全性,可能最终都会找到一部分,甚至可能很多喜欢用特殊的这种安全实践的这些企业或者说这些商业团体。这是我的想法。那我们还是再回过头来,因为如果老是让 Antonio 给我们讲那个软件开发这个东西,我们也会被绕晕。所以我们还是回过头来,再回到比特币和闪电网络的话题上。那我想先问一个问题是 Antonio,你认为闪电网络如果它要走向这个大规模的采用的话,现在有哪一些困难是你觉得一定要被解决的?
Antonio: 我觉得任何一个东西要被大规模采用。视觉化是很重要的。就是可视化,因为使用者,尤其刚入门的使用者对于看不到的东西是很难理解,即便是一个很简单,比方说像我们关电脑。我们如果是工程师,可能就是下一行指令,电脑就关了。可是一般使用者很难接受这件事情,他就是需要一个 button,去把它按下去。它要有一点跟真实世界的连结。我觉得闪电网络如果要拓展,它生态要起来的话,有一部分是要让更多人愿意接进来,然后更多人使用嘛,这是基本。而且可能不只是使用,可能需要更多人跑闪电网络的节点。我们刚刚最早的那些美好的假设是要有足够多人使用,我们才有办法用六度空间达到每个地方,可是如果我们没有足够多的话,那他的体验就会非常糟。我觉得比较偏向使用者的部分其实是缺乏的啦。如果今天是一个大家都或多或少看过或使用过闪电网络,有这样子的我很容易就跑起一个节点,然后去跟他的朋友握手,即便他没有说用了很久,或者说他没有维持很久,但是他对于那个整个脉络会是清晰的。那到这样的情况下,我觉得闪电网络就成功了。要把成为一个节点的门槛降低,因为这是健康的网络啦。当然我们可能很多人都有,比方说有用 Lightning,可是他可能不是节点。我说离节点很远,它是用托管的。Bitcoin 要成功也是要有很多节点在上面。即便它不出块,但是它是一个节点。它上面有它的钱包,它可以直接利用它转账。这时候它网络安全性就会上升嘛。闪电网络我觉得,我心中啦,我觉得要达到这样子,就会是安全的。也是够强健的。所以这个门槛要降下来。任何人想要,他可以上网找一找,很轻易的就有办法成为一个节点,然后很轻易的就可以透过闪电网络转账。差在这里啦。
但这个我没办法很明确,我不是这个行业的大佬,或是这个行业很资深,就是说很明确说你只要做这个,做哪个,做哪个,然后就可以达到这件事情。我大概感觉缺少的是这些东西,但是我可能也是我经验不够,没办法很具体的就是给你点出就是缺这个程式,或者就是缺这项工具。
阿剑: 其实确实是这样的,就是你刚刚说到这个可视化或者视觉化的时候,确实是我们现在看到的这些特别是移动端的闪电钱包产品确实在这方面我觉得是做的不够的,就给用户的信息不够多,或解释的不够多,这个我觉得是一个非常中肯的,你可以说是非常中肯的意见,或者非常中肯的批评,确实是这样的,我觉得他们确实应该做更多,当然这个过程也要就是说不仅是产品层面的,其实包括还有其他的很多的就后台的这些技术上要解决的这些问题。那我们来聊聊你的期待吧。比如说包括比特币和闪电网络,你期待它接下来会发生什么有趣的事情。
Antonio: 我的期待,有一些事情是看起来好像在发生啊,就是比特币好像慢慢的正规化,就是有国家级或是。像之前有现货 ETF 嘛,对不对。我觉得这件事情是对这整个生态,因为这是同一个生态的好处。我期待会慢慢正视它。国家级或是比较官方权威的慢慢正视它,然后让它有落地的空间。这是对整个行业生态的想法,所以这绝对是一件好事。那当然另外一个期待就是说我们希望 spec 快一点,因为相对之下共识凝聚是慢的,因为不是有一个官方的角色去推动它,所以共识凝聚是慢的。然后 spec 如果能推动快,因为有时候我们做一些事情就会感受到这 spec 不完整,或是好不容易有东西出来,然后然后都会在祈祷说这只是一个暂时的 spec,也许未来还是会变,因为没有人能把握说会不会社区里面大家不接受这个会变动之类的。这一点对,尤其对开发的人是有点痛苦的。就是你永远不知道你做的是不是完全会符合期待的人。当然我能理解他的困难啦。但私心下还是希望说能不能就是有一个神啊,出来把这个 spec 定了就长这样。然后大家都是人,所以大家遵守这个 spec。可是没有,我想是没有人能 play God,对吧。有期待,但是我知道他不大可行,对,不大现实。这样讲得有点抽象。
阿剑: 没有,不会很抽象。确实是这种社区化的开发的确会面临这种不同事情的关注的人多或少,开发力量的多或少,或者讨论的密集的程度高或低的问题。就有一些协议我们是看到它会很密集,很快地就推出新的想法,新的规范,但是有一些确实是会需要经过比较长时间的讨论,包括像闪电网络自身的这个规范,BOLT,其实也是一样的,就我们看到了很多很多的这个讨论,就是你要讨论很长一长时间,才会最终确定有一个成果,甚至这个成果它还不一定是规范级别的,它仅仅是各个客户端实现的这个级别。
Antonio: 对对,只是一个指导。
阿剑: 对,只是一个指导。
Antonio: 因为是个指导,所以大家也会长得真的不一样。这就是我衍生出问题来。我觉得这个是如果在 Bitcoin 或 Lightning 生态上必然会面对的事情。那这个是好的,也是坏的。就是它是坏的,但是实际上是好的。它为了一个好的事情,然后所以节奏会比较慢一点。坏是坏在节奏比较慢,所以有时候你想要急也急,赶不得。
曾汨: 有时候那句话,慢就是快嘛。
Antonio: 也是,因为毕竟如果方向错了要重来就是嘛。
阿剑: 是啊,是啊。
曾汨: 好的,那么感谢 Antonio 的精彩分享。我承认今天这一期聊天,我有很多东西还没有听明白,我可能得回去再好好多听几遍。那么我们本期播客到此结束,下期再见,拜拜。
Antonio: 拜拜,谢谢大家。
