区块链与比特币

购买比特币的app有哪些?正规,不跑路

发表:2019年12月24日 23:13:01
分类:比特币 浏览:61


如果我的理解没错,闪电网络其实存在一个有趣的特性:可以安全地花掉零确认收款。


Phoenix钱包就是这样:在没有预先打开任何通道的情况下,用户仍然可以直接通过闪电网络收款,然后立即就可以把收到的币花出去。

这个动作背后,就是ACINQ公司的节点自动打开了一个通道,然后,在零确认状态下,就立即允许用户使用这个通道。


先回到一切的开始:中本聪当初为什么提出“零确认不能直接计入可用余额”呢?

因为,交易都是一环扣一环的,如果前一笔交易有问题,那后续引用它的一串交易也会跟着全部被卡住,甚至被作废、丢弃。

有人曾经连续发出几笔这样环环相扣的零确认交易,然而,最初的那一笔零确认当初就碰到了问题,迟迟不能正常打包进链,导致后续发出的所有交易也都不能进链确认,于是他这样就“搞坏了自己的钱包”。

就是因为这件事,中本聪才提出:“零确认这种‘二等公民’不能直接计入可用余额。


如果我没记错,Bitcoin Core内置的钱包功能现在都还保留着这个限制,不提供花掉零确认收款的功能,即使修改钱包设置,也只允许用户花掉自己的零确认找零。

即便如此,花掉零确认找零后,也仍然可能被无关人员利用交易延展性进行攻击,导致后面跟随的交易可能作废、被丢弃。


(注意,Bitcoin Core全节点的内存池完全接受这种一连串的零确认交易,只不过是Bitcoin Core的钱包功能还保留了这个限制而已。其他钱包就有放开这个限制的)


隔离见证修正了延展性问题,可以让此类问题的暴露面大大缩小——因为无关人员不掌控私钥,所以一旦延展性问题被修正,他们就无法让交易的txid发生改变,也就无法破坏这种一连串的零确认交易。

但是,如果掌控有私钥的付款方自己想要进行双花,一旦双花成功,那还是会导致后续一连串交易全部被作废。


在闪电网络中,情况变得不一样了。零确认收款已经可以安全地花出去了。


根据BLW钱包开发者Anton Kumaigorodski提出的“秒速通道”(instant channel)方案,情况是这样的:


首先,这个“零确认收款”是哪来的?

“打开通道”和“给通道对端付款”这两个动作是可以一并完成的,闪电网络钱包把这种操作叫做push amount(推送金额)。


如果我收到了这样一笔付款,我立即就可以在闪电网络上把这笔钱花掉,不用等待打开通道的“入资交易(funding transaction)”进链确认。


其实,这种说法有点标题党:要保证这笔“推送”来的收款安全到账,还是逃不过要等待入资交易进链确认。

但是,在零确认状态下,花掉这个通道里的钱,也确实是安全的。


为什么通道对端愿意接受这种行为呢?

因为我没有机会作弊啊。

一般情况下,入资交易压根就没有来自我的输入,所以我本来就没有构造双花交易的能力,只有通道对端自己有能力双花。

如果通道对端进行了双花,也就是作废了这个通道,结果也总会是“我亏他赚”——因为,在这个通道内,我能花出去的钱全部都来自对端,我不可能花出更多的钱。

如果我也参与入资了,那在我花掉我入资的这部分金额时,通道对端转发我的交易确实是有风险的(我有能力“双花赖账”)——但是,他也完全可以在零确认状态下拒绝转发我的付款——正常情况下本来也就是这样。

如果我试图用旧余额状态关闭通道来作弊,那就更不用说了,对端可以直接罚没我的钱,结果还是我吃亏。


为什么我愿意这么做呢?首先,当然是因为快;其次,即使说通道对端可能双花作弊,这种风险也一直都存在,我用了这种技巧,风险也不会增加——相反,我面临的风险可以说还减小了——如果我把通道里的币几乎全部花完了,那即使通道对端双花作弊,我也几乎不会损失什么。


对于其他节点来说,他们压根就不在乎前面是不是有通道还没确认、入资交易有没有可能被双花,因为这对他们毫无影响,他们只需要照看好与自己直接相连的通道就行。


我最早是在BLW钱包上看到这种功能。既然Phoenix钱包也能实现类似的效果,我想,背后的原理和这个方案应该也是一致的。





上一篇:Just.game的新dapp 问题三点
下一篇:不确定因素不是来自比特币,而是来自世界经济形势