最近几天 ofo 退押金一直是个热门话题,据说排队退押金的人已经超过 1000 万了。

像 ofo 这种退押金机制的关键问题是退押金必须和商家协作完成,如果商家不协作,或者故意制造门槛,用户就很难退押金。当然更恶劣的情况就是直接跑路了,比如各种美容店,健身房卷了会员充值的钱跑路的例子。

从法律角度说,用户给服务方的押金以及充值,都是服务方代管的资金,当用户没发生实际消费之前,服务方无权动这些资金。但钱都转到人家帐上了,如何防止被挪用?

那能不能设计一种非协作式退款提现机制,把充值资金托管给有公信力的第三方,比如银行,然后用户退款的时候直接和银行交互,无需商家协作?比如直接拿从银行给商家充值的订单退款?

但实际上没这么简单,银行如何相信你没在商家的应用中花费掉了这笔钱?

如图所示(画图水平有限,将就着看),应用服务器和客户端实际上是一个体系的,客户端依附于应用服务器,无法独立运行。应用系统和银行系统之间通过支付接口连接,应用自己的账本和银行的账本之间是没有关联的,一旦应用方中断和银行或者和客户端的连接,用户就无法提现,也无法向银行证明自己的在应用中的余额。

要解决前面的问题,需要把关系调整为下面这样:

应用的账本和银行的账本之间需要建立一种映射关系,相互关联起来。客户端是独立的,它保存了带有数字签名的证据,同时和应用与银行连接,如果应用自己中断和银行的连接,用户可以通过客户端直接向银行提供数字证据来完成退款,而不需要应用的协作。

详细的说,要设计这样一个方案需要有以下关键点:

  1. 要找到这样一个有公信力(商家,用户都信任)的机构,如果只是一国内应用,就比较容易,比如银行吧。
  2. 要有一个账号,这个账号不受商家控制,用户直接把钱充进这个账号。

  3. 由于用户充值退款都是直接和银行交互,所以银行需要有一种机制通知商家有用户充值或者退款了。
  4. 用户中会有恶意用户,可能把钱消费了后迅速向银行发起退款。所以银行对退款必须有一个锁定期,这个锁定期内,商家可以提交证据,证明用户已经消费或者造成损失了,然后撤销退款。
  5. 而用户可能也会发现商家的作弊行为,比如私扣余额等,可以给银行提供证据,由银行裁决对商家进行惩罚。所以用户的本地客户端需要有离线能力,不能完全依赖商家的服务器,每次交易后,需要从商家获取证据,保存到本地,为以后提交证明准备。
  6. 由于银行实际上不可能保存用户在应用中的所有交易记录,它无法直接进行裁决,所以商家需要定期将自己本地记录的数据哈希(数据指纹),提交给银行,产生争议的时候,用户和商家互相举证进行挑战,证据需要和历史上提交的哈希相关。

这个方案看起来好像有点复杂,估计没有一个银行愿意干这个事情,因为成本有点高。但如果把上面的所有的举证以及裁决都数字化,由程序完成,相当于一个应用对用户的公开可执行合约,托管在银行,实际上成本就可以接受了。

熟悉区块链的朋友,可以看出上面的方案其实就是区块链的二层(layer2)方案的关键点,那个合约就是区块链的智能合约,这里的银行就是代表了区块链。区块链技术发展到现在,大家都认识到公链这样的全球共识系统本身成本肯定很高,很慢,短时间很难有大的突破,所以可扩展问题需要通过链外方案解决,比如交易所以及中心化钱包。但这些方案都完全依赖用户对这些服务提供方的信任,用户充值退款都需要服务提供方协作,一旦发生黑天鹅事件,出现 ofo 这样的情况还算好的,更恶劣的情况恐怕就是跑路了,而作为一个全球化的系统,用户想起诉估计都不知道找哪里的法院。

所以区块链二层的各种方案主要焦距点是如何设计一种机制,一方面让服务提供方可以自证清白,建立公信力,另外一方面给用户提供一种额外的制约机制,让用户来监督服务提供方,一旦有问题用户可以通过一层的链来进行裁决。这样链主要关注于安全,相当于扮演一种法院的角色,只需要处理有争议的交易,二层主要关注性能和扩展性,区块链就可以应用到更广阔的场景中。

一个行业中的企业如果不能自证清白,只能天下乌鸦一般黑,因为自我操守坚持不能形成竞争优势。比如有一个有良心的共享单车创业企业,承诺不挪用用户的资金,但它怎么证明自己呢?所有的企业在公开场景下都做这样的承诺,用户如何相信?如果你不挪用,别人挪用了,别人有了资金竞争优势,结果就是大家都挪用。而在前面的方案中,用户的资金是被锁在企业无法控制的账号中,并且用户可监督,就提供了这样一种证明机制。如果 ofo 现在有办法证明用户的押金都在,没有被挪用,未来也不可能挪用,用户可能就不着急退款了,越是不容易退,用户越要通过退款来验证,和银行挤兑一个道理。

而从监督方面看,随着互联网的发展,支付交易凭据都电子化,用户对服务提供方的监督能力在降低。没互联网的时候,用户可以保留服务提供方的纸质凭证来作为证明。

​ (图片来自新浪科技新闻 — 从现金到手机支付,你还记得记忆中的存折吗?)

比如,现金时代,我们取钱存钱都通过存折,存折实际上提供了一种证据保存能力。用户取钱的时候可以校对余额,如果存折和银行数据不一致就很容易发现。但现在都用客户端 App,App 的数据都是直接从银行服务器上下载的,没有客户端校验机制。如果数据有误,但误差不大,有几个人可以发现?比如前一段时间的一个银行内部员工盗钱的新闻,最后还是银行内部对账发现。更严重的是,万一银行把用户的数据丢了,如果没有存折,用户如何证明自己有多少钱存款?登陆银行APP查看?数据都没了怎么登陆?

当前,用户将一个封闭账本体系里的价值转移到外部系统,是制约服务提供方的终极方式。比如 ofo 退款,比如从交易所提出比特币,比如从银行把现金取出来。正是迫于用户提现的压力,服务提供方才会在意自己的信用。而区块链二层方案中,客户端的独立存证校验能力相当于重新实现了数字化的存折,并且把校验机制自动化。再配合数字化的举证和裁决,以及非协作式提现机制,就可以实现用户对服务提供方的监督和制约。

写到这里,提一个值得思考的问题:充值到商家账本里的钱可以通过提到银行来进行制约,那如果未来货币完全数字化,没有了现金,用户把银行发行的数字货币提到哪儿去?这个问题会在后面一篇关于央行的数字货币的文章中分析。

区块链的二层(layer2) 方案并不只是解决区块链自己造出来的问题,它具有普适性。虽然相关技术尚未成熟,但至少提供了一种解决思路。关于区块链二层的各种技术方案的详细对比,后面会写专门的文章进行分析。

最后再谈下对 ofo 的看法。ofo 的这个例子非常典型,无论结局最后如何,对未来的创业者以及用户都有警示作用。 有人觉得创业不易,这时候呼吁退押金好像有点落井下石。实际上我个人也挺愿意用这点押金去支持创业者,但关键问题是企业拿了用户的押金去创业,而用户有什么收益呢?成功了收益是创业者的,失败了用户的押金都没了。至少要明确告知用户这算作投资,做到风险收益对等才行。比如一个早期用户在 ofo A轮的时候加入,算 200 块入股,当时 ofo 融资 2500万人民币,估值大约 1 亿人民币左右吧。到 17 年 ofo E 轮融资估值到了 30 亿美元,市值涨了有 200 倍,用户的 200 块押金估值相当于 40000 元,如果 ofo 不倒闭,估计骑一辈子单车的钱也够了吧。用户愿不愿意拿 200 块堵一个一辈子免费骑单车的机会?当然,这样规模的股东是当前公司注册机制无法承载的,肯定需要组织以及金融模式上的革新,当然这就属于另外一个话题了。

相关链接


  1. 本文原始链接 http://jolestar.com/ofo-and-blockchain-layer2/

  2. 区块链的技术世界观 http://jolestar.com/blockchain-technology-overview/

  3. 无币区块链代表未来?浅谈联盟链以及对 Hyperledger、 Corda、FISCO BCOS 的比较 http://jolestar.com/consortium-blockchain-hyperledger-corda-fisco/