上篇介绍了一个场景《比特币买汉堡--区块链应用场景模拟分析》,接下来分析一下在应用设计时是如何考虑的。
1. 用户终端通过中介服务连接比特币网络
用户终端,特别在手机、浏览器上是属于“瘦”客户端,难以部署直连比特币的设施
首先,存储容量问题,完整的比特币客户端Bitcoin Core,应用本身有40M,首次同步需要花费很长的时间才能完成,必须确保有足够的带宽以及存储整个块链大小的磁盘空间(超过65GB)。
其次,密钥管理问题,访问比特币账户发生交易需要用复杂的安全加密,并需要保管及提供密钥的方问,终端如果出问题(遗失或损坏)将永远失去该账户,在用户端使用时体验也不好。
因此,常见的应用服务提供方都是使用中介服务方式将用户终端与比特币相连。
注册:用户终端向中介服务注册帐号,中介服务在BlockChain中生成比特币账户,并将生成的密钥与帐号/账户绑定、存储在服务端;生成的账户将同步到比特币网上。
登录:用户在终端登录(密码、指纹等,由中介服务端约定),此过程仅验证用户在中介服务中的合法性,与比特币无关。
交易: 用户终端将交易请求通过专用协议(服务方提供的定制安全通道)发送给中介服务,中介服务,中介服务根据帐号绑定的账户/密钥生成比特币交易,将交易写入本地BlockChain。
交易确认:中介服务通过异步方式将本地的交易,通过比特币协议向比特币网广播。比特币网上收到此交易信息的节点(挖矿机),对交易进行验证确认(防篡改、账户合法性、是否重复交易、来源等),记录交易到新的区块,当该区块被证实后(挖矿成功),该交易即被确认并被永久记录在比特币网中。
查询: 用户终端可向任何有效的比特币节点查询所有交易和账户,理论上可以不通过中介服务,但一般情况中介服务与用户终端是对等绑定,所以用户终端会向中介服务用专用协议查询。
实际上中介服务也是个挖矿机,但由于其算力不足,很难抢到区块,交易的确认最终可能是由算力高的矿池收录并证实。
可见交易过程中有一段(用户终端到中介服务)不在比特币网之内,不受其安全防护,用户终端的安全性得由服务提供方保证。另一方面,支付宝、微信支付等公认安全性高的终端,要接入比特币其实是很容易做到的。
2. 只有转出方可以发起交易
比特币应用的交易支持send(付款)和request(请款),其实所谓请款只是将自已的账号通过邮件发给对方,或者将自已的账号显示为二维码供付款方扫描。
真正的交易发起是Send,只有支付方才能发起,在场景中收款机上显示的二维码实际上是该收款机绑定的比特币账号,小明的手机应用通过扫描二维码得到收款方账号,录入金额后发送。
收款机是通过查询比特币网,查其绑定的账户是否收到新的交易且金额相符,来确定订单是否已付款。由于确认过程比较漫长(2分钟到60分钟,视网络、同步时间、挖矿进度),用户体验不太好。
要提升体验,需要用户终端的供应方与收款机的供应方达成合作,只要有一方记录了交易,即使未确认的交易,也可认为已付款,这样付款过程可缩短到毫秒级。例如支付宝与KFC的收款机达成了比特币支付的合作,小明只需象现在用人民币支付一样,只需点开“向商家付款”的二维码,店员一扫码,马上确认已付款,无需小明再输金额与确认,体验就象是收款方可以直接请款一样。这个过程其实最终还是以小明的比特币账户发起的付款交易,只不过是在此之前手机APP与支付宝后端及收款机进行了一次确认,支付宝后端在得到确认后直接用小明账户绑定的密钥发起了Send的比特币交易,而收款机也不再查比特币网的交易确认,有支付宝的确认就可以了。
这样可能要牺牲一些安全度和可信度,也就是所谓的通过服务降级提升用户体验吧。
3. 比特币钱包账户不可绑定于其它钱包
由于账户的密钥是存储在钱包后端的中介服务上,虽然可通过任意比特币应用查看账户交易信息(查询是公开的服务,无需密钥),但却只能在此钱包中付款。
所以在钱包中开立的比特币账户并不能象银行卡一样,绑到到多家支付平台使用。
4. 使用其它区块网络提升确认时效
以太坊等使有区块链技术的网络,声称其时效速度可达到比特币的好几倍,最近也有的区块网络表示可媲美VISA的交易量(见《Visa被甩出一条街!测试版Thunder Network代码已开源》)。这些区块网络同样使用安全可信的区块链技术,只是其上发行的“币”不如比特币流行广泛,信用度的口碑也不如比特币。比特币全球堪称恐怖的算力池提供了趋于无穷大的安全保障,这是其它区块网络一时间难以比拟的。安全与用户体验在应用设计方案时需要小心平衡。
5. 用户资金风险
由于比特币匿名开户,若用户出问题(密钥遗失等)将无可申诉,不象银行还可以用身份证挂失补办,如果钱包里余额太大容易引起大的纠纷,为使风险可控,应设置钱包余额上限,日交易额上限等安全防控措施。
同时由于比特币的价值变动大变动快,汇率损失的风险较大,不提倡用户留太多余额在钱包中。
而交易所的账户则不同,在交易所开户需要具备一定的投资风险意识,量大的账户应有专业操盘手以规避风险,甚至收获投资利润。
从商业应用来说,用户留存的资金有很大的融资价值,推行支付业务的服务商可以结合交易所、基金等为用户提供资金保值升值的服务,完善业务生态圈。