V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Skmgo
V2EX  ›  Bitcoin

如何让比特币支付过程加快,除了激进的不需要 6 个确认外

  •  
  •   Skmgo · 2021-01-15 05:27:45 +08:00 · 1077 次点击
    这是一个创建于 1443 天前的主题,其中的信息可能已经有所发展或是发生改变。

    这个问题我想了很久想不明白,谁能指点下?

    26 条回复    2021-03-10 20:25:54 +08:00
    wysnylc
        1
    wysnylc  
       2021-01-15 10:23:47 +08:00
    安全和便捷不可皆得
    uqin
        2
    uqin  
       2021-01-15 23:46:41 +08:00
    闪电网络啊
    Skmgo
        3
    Skmgo  
    OP
       2021-01-16 00:18:25 +08:00
    @uqin 愿问详情,方便发个微信请教下吗?
    Skmgo
        4
    Skmgo  
    OP
       2021-01-16 00:18:54 +08:00
    @wysnylc 币安就很激进: https://www.binance.com/cn/support/faq/115003736451 具体如何做还在研究.
    uqin
        5
    uqin  
       2021-01-16 14:55:21 +08:00
    @Skmgo 技术方面信息很多你自己网上搜一下了解。就我个人使用体验基本上就是实时的,也几乎不用手续费,你自己找个支持 Lightning Network 的钱包(我用的是国内的 bitpie )用一下就知道了。
    acess
        6
    acess  
       2021-01-16 23:49:17 +08:00
    @uqin bitpie 我记得是中心化托管的吧,“派银行”。就是个交易所账户余额。
    非托管的钱包也有不少,最傻瓜的应该是 ACINQ 公司出品的 Phoenix 。

    @Skmgo 有一说一,闪电网络局限性蛮大的……不然的话 BTC 一直那么堵,秒速确认不拥堵的闪电网络为啥还一直不火呢……也就真爱粉会感觉“诶,秒速确认啊,不错不错,能用,甚至还蛮好用”;一般人感觉大概率是“什么辣鸡玩意儿,麻烦陷阱那么多,还动不动就失败,这压根不能用啊”。
    Skmgo
        7
    Skmgo  
    OP
       2021-01-17 00:32:36 +08:00
    @acess 朋友要做个在线支付插件,必须要解决支付速度问题,没办法.
    acess
        8
    acess  
       2021-01-17 00:56:15 +08:00
    我个人有种模糊的理解……

    有人问中本聪,说你这系统扩展性堪忧啊,每个节点都要(从头)下载完整账本,这还得了。中本聪他当然不愿意自己的作品被说有问题啊,所以他就说,没事没事,只有矿工才需要跑(全)节点,一般用户不需要管那么多,账本那么大,交给矿工去搞就行,一般用户就用轻量级客户端。

    但是……“比特币扩展性不行”“未来可能出现‘比特币银行’负责分流处理交易”这种观点,也是源远流长,Hal Finney 就这么说过(不过老实说,我不知道他老人家后来有没有改变看法……而且他老人家很多年前就已经去世了)。

    闪电网络呢,它的很多麻烦(甚至说是陷阱),其实归根到底就是:本来由矿工担任的记账工作,被用户自己给揽过来了。

    就比如闪电网络的备份,很蛋疼,必须保证备份是最新的;不像链上钱包那样一劳永逸,有个 HD 种子就够了(也有看上去比较“一劳永逸”的办法,不过需要信任通道对端不会作恶)。
    为啥链上钱包备份能一劳永逸呢?因为交易记录都在区·块·链账本上啊,即便用户自己不想折腾全节点,一般也总有别人会跑,还有区块浏览器、钱包服务器这样的服务,不仅跑了全节点,还给区·块·链账本编制了各种索引,(用占硬盘更多的代价换来)实现查询秒速返回结果。至少至少,原则上矿工(现实中就是矿池)需要跑全节点。
    闪电网络的通道,里面的交易是双方“私下协商”的,不需要登记到区·块·链账本(所以才能秒速确认,还不占区块空间)。既然是私下里完成的,那交易凭据就只能是双方自己保存好了,即便自己懒得保存、托管给别人保存,也总得有个人要保存。

    再比如闪电网络理论上需要用户至少保持定期上线,这样万一通道对端作弊偷钱(撤回交易,等效于偷钱)了,才能及时抓住、并执行罚没。类似地,即使用户自己懒得进行这个工作,外包给第三方“监视塔”,也总得有人完成这个工作。
    链上交易,表面上看起来,SPV 轻钱包有“密码学上的证明”,但实际上 SPV 钱包是盲信矿工(多数算力)的,是在绝大多数算力诚实的情况下,SPV 才可靠。
    密码学并不是魔法,比特币归根到底是用了最笨的办法,也就是每一个全节点,都[独立地]把所有交易(重复)完整验证一遍,才得已排除凭空造币、(没有数字签名)强行偷币等违规行为,这个工作总得有人做,按照设计就是矿工们去做。按照目前 BTC 社区主流的观点,用户自己也得跑全节点来验证账本,防止自己收到打破规则的“假比特币”。
    闪电网络归根到底还是依赖于这一段上述对区·块·链账本的“笨办法”验证,它的意义就在于给区·块·链账本分流减负,同时还仍然保有“自己掌控私钥”的去中心化属性。
    acess
        9
    acess  
       2021-01-17 01:11:19 +08:00
    @Skmgo 诶,我好像一知半解地扯了很多,都是理论上的……

    其实 6 个确认我觉得都不算什么,只要有了第 1 个确认,“上车”了,那等到 6 个确认一般情况下只是时间问题。比特币最麻烦的问题不是拥堵么,卡在零确认好几天,等到第 1 个确认很难,前面掏钱付更贵矿工费的交易排队太长……

    关于零确认,我以前听说过一种解释,为什么有些地方愿意接受零确认呢,因为收款方有办法把发出去的货品收回,所以不怕自己被恶意付款方坑到钱货两空。(不过我印象里这方面也存在一个误解,或者陷阱:就比如各种 dice 站,恶意玩家可以把赌输的交易双花作废,只留下赢钱的交易等确认,这样网站就会亏惨了)

    也许有些地方接受不到 6 个确认的收款,也是类似的情况吧。就像你说的币安,其实存款不是 1 确认到账,1 确认资金是冻结的,至少还是得等 2 确认后才会解冻(然后,还说不定提款需要不需要什么人工审核呢)。
    比特币网络即便没有有意攻击的恶意矿工,每过个十天半月也会自然产生 1 个区块的分叉,我猜币安设定 1 确认到账、2 确认解冻,就是排除自然 /无意产生的分叉,并且假定矿工不会为了眼前的利益执行双花攻击、从而破坏比特币的品牌形象(然后还是会伤害到矿工自己的利益)。
    acess
        10
    acess  
       2021-01-17 01:18:26 +08:00
    除了闪电网络(作为收款方,也有中心化托管的方案,比如……OpenNode,不过这个我没真正用过,看上去需要 KYC 实名认证),BTC 还有侧链,比如 Liquid 侧链、RSK 侧链。
    但是侧链现在并不是去中心化的,本质上还是 N 个大佬坐在一起组了一个多重签名钱包。而且主链 /侧链币的互相兑换也有点麻烦。(原则上侧链币和主链币是 1:1 锚定的,但 peg in 或 peg out 都耗时比较长(目前还需要 N 个大佬的认证),所以我印象里,交易所也有上架 L-BTC/BTC 、RBTC/BTC 这样的交易对)
    Skmgo
        11
    Skmgo  
    OP
       2021-01-17 04:38:08 +08:00
    @acess 方便加个微信吗? T21uYWVfQ2hpbmE=
    uqin
        12
    uqin  
       2021-01-17 14:46:18 +08:00
    @acess bitpie 钱包本身是链上的,但“派银行”什么的这种涉及增值服务肯定是托管的,我一般也不想用。闪电网络局限性是很大,但作为使用者我个人感受到的就是快速方便啊。至于为什么用的人不多我的想法是,把 btc 作为支付工具的人本来就微乎其微吧,比 btc 更侧着支付的项目成千上万。btc 至少现阶段还是以储值投资避险大额转移等方面为需要吧,
    Skmgo
        13
    Skmgo  
    OP
       2021-01-17 18:56:26 +08:00
    @acess 我们简单,直接扣除手续费然后转给接受,不做任何停留,这是设计的初衷.
    acess
        14
    acess  
       2021-01-17 19:41:47 +08:00
    @uqin 啊,是我表达不好。我想说的是,bitpie 的闪电网络钱包是中心化托管的,闪电网络余额就是派银行的余额。
    比特派的链上钱包确实不是托管的,但是这一点和本帖关系不大。
    Skmgo
        15
    Skmgo  
    OP
       2021-01-18 03:22:30 +08:00
    @acess
    @uqin 我们想做个在线的钱包管理系统, 收到买家转来的币后扣除手续费然后直接转给卖家,不做任何停留,所以转账速度会是考虑的重要性.
    acess
        16
    acess  
       2021-01-18 14:02:22 +08:00
    @Skmgo
    (不好意思……其实继续跟我聊我也只能聊比较理论的东西)
    “收到买家转来的币后扣除手续费然后直接转给卖家,不做任何停留”——其实闪电网络的中间节点就是这样的。但是付款方未必会选择你的节点来转发(闪电网络的支·付路径是付款方决定的),除非到收·款方只有你这一条路能走通。

    不过,你说“做个在线的钱包管理系统”……不知道这样有什么意义呢?是不是说,卖家自己没有能力维护钱包(尤其是自己的闪电网络收·款节点),你这个系统帮他们维护,但是要收费?
    感觉有点奇怪啊,如果不涉及兑换成法币或其他币,那中间加这一道有什么意义呢?如果转给卖家的还是比特币,那卖家不还是要维护好自己的钱包么。
    uqin
        17
    uqin  
       2021-01-18 16:13:05 +08:00 via iPad
    我基本同意 @acess 说的,不做停留的管理系统的价值在哪儿呢?何况你光靠承诺不做停留是难以让人信任的,要么你就做智能合约。 那么你就没必要自己用 btc 支付,用 wbtc 之类的即可。
    Skmgo
        18
    Skmgo  
    OP
       2021-01-18 18:24:33 +08:00
    @acess 比如在线商城的支付通道,买家通过我们提供的支付通道,这样你就明白了吧.
    @uqin
    acess
        19
    acess  
       2021-01-18 19:46:47 +08:00
    哎……我侃了那么多,好像也没能力真正帮到你……

    你们自己做一个中心化托管的钱包,类似于交易所,卖家在你们的这里注册账户,你们替卖家保管币(卖家不掌控私钥),买家买东西时进行付·款,就类似于交易所充值,充值到卖家的账户里(这里可以在你们自己的系统里扣除手续费),卖家可以随时选择提币?
    然后,也许你们还可以提供担保交易,在出现纠纷时提供仲裁?

    听你说的,好像是上面这样?
    uqin
        20
    uqin  
       2021-01-18 20:47:05 +08:00
    Skmgo
        21
    Skmgo  
    OP
       2021-01-18 23:35:48 +08:00
    @acess 卖家自己的钱包,可以在我们这,也可以不在我们这.
    uqin
        22
    uqin  
       2021-01-18 23:56:24 +08:00
    https://www.coinpayments.net/ 的服务似乎跟你想的差不多
    Skmgo
        23
    Skmgo  
    OP
       2021-01-19 08:44:34 +08:00
    @uqin 基本就是这个,谢谢,方便留个联系方式吗?
    @uqin 你也留个呗,互相沟通学习下.
    frienmo
        24
    frienmo  
       2021-01-19 19:13:20 +08:00
    @acess acinq 出的是 eclaire,我用的就是这个,通道信息备份是自动在 google drive 上的。

    我觉得闪电网络现在最大的问题是开完通道得先花钱( eclaire 有收费服务,提供有接收容量的通道开启),但是收闪电网络的地方有很少(我是开完之后发了一笔去 bfx )。

    另外一个问题问下大佬?闪电网络的收款地址是不是有过期这一说,反正 bfx 上想用闪电网络取 btc 一直没成功,不知道是地址过期还是接受的时候 eclaire 要一直开着。
    acess
        25
    acess  
       2021-01-19 19:59:05 +08:00
    @frienmo 我不算大佬……只能算话痨。
    不止 Eclair,Phoenix 也是 ACINQ 出的,你可以试试,不过目前拥堵貌似还是蛮严重,矿工费蛮高,最好还是等等。

    走闪电网络收·款的 invoice (应该是你说的“地址”,但它不叫“地址”)好像也不太好翻译,直译应该是“发·票”,但是貌似很多时候说“发·票”都是“收·据”的意思,是钱已经收到了;而 invoice 实际上是请求付·款的,付·款还没发生。
    invoice 确实是有过期时间的,不过我刚刚去 bitcoin stackexchange 看了一下,这个过期时间其实没有特别硬性的技术理由,只是为了规避一些可能存在的问题(比如币价波动,毕竟绝大多数时候还是法币标价)才设计成这样。
    还有,invoice 是不能重复使用的,这也是闪电网络的一个不方便之处。开发者有在研究解决这个问题,比如 keysend,但是我记得仍然不能离线收·款——所以没错,eclair 在收·款时确实必须开着。
    还有,如果你没有公网 IP,即便钱包 /节点开着( eclair 或 phoenix 本身也算一个闪电网络节点,只不过它不广播自己的存在),我记得也无法付款,这个问题可以通过在 invoice 里加 routing hint,指定和自己开通道的其他节点 IP 来解决,eclair 默认就加了 routing hint 。

    你说的支·付通道刚打开时,只有付·款额度没有收·款额度,导致只能付·款、不能收·款——Phoenix 用户就不会受这个问题打扰,它是“纯闪电网络”钱包,完全不需要手动管理通道,直接拿着 invoice 就可以收·款,收·款过来的时候,ACINQ 公司的节点会自动开一个通道给你,而且在打开通道的 funding tx 还是零确认状态的时候,你也可以直接走闪电网络把刚刚收到的币花出去。

    不过很显然,Phoenix 钱包的种种便利,包括自动通道管理(尤其是自动提供有收·款额度的新通道),无需自己操心通道数据备份( ACINQ 的服务器负责随时备份),其实都依赖于 ACINQ 的服务器,包括支·付寻路也是交给 ACINQ 的服务器完成的,所以理论上隐私性也存在问题,去中心化程度也大大降低。不过我记得 ACINQ 也没有打算垄断 Phoenix 的钱包服务器,他们打算把这种钱包服务器搞成公开的技术标准。
    Skmgo
        26
    Skmgo  
    OP
       2021-03-10 20:25:54 +08:00
    @acess @uqin 再次读你们的回复,收获很多,方便加我微信吗? base64: U0tNR084OA==

    @frienmo 请问您方便也加下微信沟通下.
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1435 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 17:20 · PVG 01:20 · LAX 09:20 · JFK 12:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.