科普 | 神奇了,数字货币怎么能够离线支付

区块链资讯 发布在 区块链 67270

作者:陈利人

来源:待字闺中

 

常看到数字货币的文章写,“过不了多久,你的手机上,就能用上央行的数字货币,支付可以“离线”进行,不用网络和手机信号,手机和手机之间碰一碰,就可以完成。”

这么magic,你会不会很纳闷,都没有网络,数字货币怎么能够实现“离线”支付呢?

数字货币,又称加密货币,这恰好是区块链的魔力所致,后面的密码学,和由之而来的,公钥私钥体系(PKI),和数字签名。

每个手机上,都会运行一个公钥私钥生成应用,这个应用充分利用了随机性,每次运行,都会产生一个唯一的公钥和私钥对,这个对,不会和历史上已经产生的对重复,而且今后也不会重复。如果非要严谨,唯一仍然有很小很小很小的概率会重复,但对的位数足够长的话,几乎可以忽略不记。

公钥作为用户的账号,保证每个用户每次运行应用都是不同的,可以公开出去,用来接收别人发起的支付。私钥,也是唯一的,而且只有运行应用的用户才知道,是个高级秘密,这个秘密只有用户自己知道,也不应该透漏给任何人。以后,对每个用户发起的支付,必须以这个私钥来对交易进行签名。由于私钥只有用户自己知道,如果,有任何的交易,用这个私钥签名了,那么一定只可能是这个用户所为,不可抵赖。如果,用户泄露了私钥,用户也只能自行担当了,没有别人能够替他背这个锅。

有了这些基础知识,那么接下来就好理解数字货币的离线支付了。

假设Alice要给Bob支付10个数字货币。Alice和Bob都有自己的手机数字钱包。正好Alice和Bob都在荒郊野外,没有手机信号,没有网络,但Alice和Bob的手机之间是可以通过蓝牙,或是点对点,或是二维码通讯的。因为大家都熟悉扫描二维码支付,那我们就假定他们之间也是通过二维码来完成的。

首先,Bob打开手机数字钱包,点击二维码收款,这时,手机显示收款二维码,其实,二维码里包含的信息主要是Bob的手机钱包地址,也就是Bob的公钥。

接着,Alice打开手机数字钱包,开启摄像头,扫描Bob的收款二维码,其实就是得到了Bob的公钥。这时,Alice把Bob的公钥,自己的公钥和支付10个数字货币的信息,打包成一个交易,然后用只有Alice自己知道的私钥,给这个交易签名,但是没有网不能写到链上。当然,手机数字钱包,会检查Alice是否有足够的数字货币来支付。你可能会说,Alice用的是一个hacked钱包,没有足够的钱也能打包和签名这个交易。但没关系,我们仍然假定是正常的。然后,Alice的数字钱包把这个签名的交易生成一个二维码让Bob扫描。

接下来,Bob扫描Alice手机数字钱包上的二维码,把刚才包含Bob公钥,Alice公钥和支付10个数字货币的信息的交易保存下来,因为这时没有网,不能写到链上。暂且认为Alice是个诚实的人,而且使用的是正常的数字钱包。这时,暂且认为离线支付已经完成。

这个过程,就如同Alice给了Bob 10元现金,双方都记下了10元现金的序列号,并且手写签名。至于这10元是真钞还是假钞,Bob暂时没有办法验证。直到Bob某天去银行,才知道这10元的真伪。

在没有网的期间,Alice还可以继续给不同的人支付,就用类似上面的流程。

好了,Alice或者Bob,回到了繁华的市区,手机信号有了,网络有了。这时,Alice上网了,手机钱包会把签名的交易准备写到链上,这时,如果交易没有问题,就会正式写到链上。如果Alice故意不联网,或是交易是伪造的,那么链上没有这次交易的信息。这时,只有等着Bob上网了。Bob一上网,就会把Alice传给他的交易准备写到链上,成功的话,everything is OK,原来离线的支付,现在上线了。正式完成了支付和交易。

问题来了,如果Alice故意作弊,用了hacked的数字钱包,或者是伪造了交易,或者钱不够签名了交易,这时Alice和Bob要把这个交易写到链上都不会成功。这时,相当于离线的交易没有成功。如果Alice是诚实的,用的是自己的私钥签名的,这时Bob还能找到Alice,让她重新支付。如果Alice是不诚实的,用的都不是自己的私钥,那这种情况就麻烦了。为了避免这种情况发生,那么Bob最好等有网了,验证之后,再给Alice发货,或是提供服务。这和现实世界中的假币到银行(先忽略验钞机)才能被发现一样。

由此看来,离线支付,对诚实的双方来说,是完全没有问题的。而对不诚实的支付者来说,离线是有问题的,不到上网写到链上是没法解决的,就如同不到银行,现实世界的假币也没有解决。只能通过事后追责。

到此为止,谜底解开了,你是否明白了后面的magic。

本文链接:https://www.8btc.com/article/528759
转载请注明文章出处

评论(3)
登录 账号发表你的看法,还没有账号?立即免费 注册