先祝大家情人节快乐!呵呵。。。
目前 Bitcoin 系统每个区块创建的时间间隔平均是 10 分钟,这是一个综合考虑多种影响因素而选择的一个折中值。太短的时间间隔难以充分广播一个较大的链块,这制约了每个块所能包含的交易数量,综合效率不高。但这样的间隔时长并不适合即时的购物交易——很难想象面对面的柜台付款之后,商家要并不安心地等待 10 分钟以上才能确认客户是否诚实,或者客户要等待 10 分钟才能证明自己诚实并拿走商品(这还只是一个平均时间,偶尔碰上迟迟不能确认也并非少见)。
无疑地,要么商家忐忑不安让客户即购即走以提供良好购物体验,要么客户购物后百无聊赖等待商家放行……(PS:如果虚拟币流行,以后的付款方式可能改变,如不再是柜台即时付款,而是顾客选购时即可自主扫描商品付款,柜台只是验证付款状态。~~但也不能排除急购急走的需求)
或许你会说,买的东西又不贵,暂且先相信素不相识的顾客吧——人之初性本善。
或者你又说,如果买的东西很贵的话,那就让客户委屈一下多等等咯~~
这样的对待方式和客户体验并不好:商家不安心,客户很无奈……而不老实的客户欺诈购买会很容易——10分钟内一笔款多次操作(如网购、转账、当面购等混合采用)。
那是否有一种方式,可以让没有确认的交易也安全可靠呢?购物顾客只管买了就走,付款绝无欺诈?答案是:有!~~但需要一些“基础设施”。
我们知道,比特币的转账交易其实有两种场景:
- A. 实时的买卖双方“收付款交易”,不论是网上的还是面对面的,双方都肯定实时在线(至少是可以同时在线);
- B. 收款方无需即时确认付款的“汇款交易”——没有商品或服务被拿走,收款由系统正常确认(非即时);
实时收付款无需考虑 B 场景,几十分钟的汇款时间基本上无关痛痒,而且收款方也必须等到转账完全确认之后才能使用收到的钱。
那么在 A 的场景中,我们如何实现即时的付款得到即时的“安全”呢?要知道,这些交易都尚未被 Bitcoin 系统初步认可,多花太容易了!
解决方案的原理其实很简单。
未确认的交易有如下特征:
- 顾客购买后的付款交易是已经广播了的,只不过还没有被正式确认(封装进区块);
- 这个交易的有效性依赖于已有的区块链账本和该顾客之前尚未确认的其它付款交易;
- 如果商家知道顾客之前尚未确认的付款交易,那本次交易就可验证!
- 但是,暂无机制可验证未确认交易的合法性(有效性)。
如果:我们解决了未确认交易的合法性问题,那就保证了当前交易的实时验证是可靠的。假设如下场景:
某甩男一个比特币账户上有 1000 mBTC,他向商家 X 买了一台价值 400 mBTC 的前卫电动车,然后 5 分钟内向商家 Y 买了一枚早已中意价值 500 mBTC 的钻戒,此时突然想起应该给情人先发一个比特币红包,于是掏出手机包了一个 214 mBTC 的比特币红包发到了一个新地址里……
10 分钟内,三笔交易发出了,都还处于未确认状态。或许你已发现,支出的总金额已经超了 114 mBTC。Bitcoin 系统会怎么处理这三笔由同一个地址发出来的超额交易呢(请忽略钱包有余额管理的功能,因为这个钱包可能有些问题,别把商家的安全寄托在顾客的客户端钱包上)?很明显,有一笔交易会被忽略,但会是哪一笔呢?不一定是发给情人的红包,有可能是骑在身下的前卫DD车~~呵呵,发财了……当然是不义之财。
有没有可能,被系统忽略的必然是那一笔红包交易(汇款)?并且珠宝店在卖出钻戒之前,还能知道该男子那个比特币账户实际上只剩 600 mBTC 了?如果两者都可能,那该男子就没法意外或不意外地“发财”了。于是,商家安心,交易实时进行。体验很好!
这里有两个要点:- 未确认交易可以被商家知道;
- 无需商家付出商品的“非实时类”汇款交易被 Bitcoin 系统降低验证处理的优先级(优先处理和商家的实时交易);
或许您已经看出来了,如果要实现第一点,只要商家有一个专用的“收款客户端”即可。收款客户端在收款时是开启的,它与其它收款客户端连接,并且在每一笔收款后广播该交易。收款客户端同样采用 P2P 式联网,每一个客户端都接收和维护那平均 10 分钟的全球未确认交易。于是,当甩男驾车到达珠宝店时,他的上一笔购车未确认交易记录已经在珠宝店的收款客户端里了。
对于第二点,实时交易可以由商家签名然后再转播,以区别于无需商家签名的普通“汇款”(即现有的转账交易)。要让 Bitcoin 系统优先处理实时交易(通过商家签名辨识),就需要 Bitcoin 的挖矿客户端升级了——无需修改已有的 Bitcoin 协议,只需矿工可以识别实时交易,并调整交易验证的优先级即可。
完了,问题解决。若您富裕,欢迎打赏:
1Q7U45ZNLyYNYe6yWT7gaf6H6JNRB9Jeih(BTC)
PXheD3xDPu2ZXUmjrXSDFZ4Yi3YJM3kmTu(PPC)
PS:如果担心顾客可能有的上一笔未确认交易广播尚未到达,可以跟顾客先瞎聊一下天……@¥&#*%..
如果有什么存疑,欢迎讨论!