按:原文发表于2016年4月13日
作为英国央行和伦敦大学学院合作发起的加密法币实验项目,RSCoin在公布后受到了各方关注。本文尝试从业务目标和技术方案角度对其进行了简评。
本文只代表作者个人观点,不代表上海证券交易所官方立场。
朱立,谢晗剑
E-mail: lzhu@sse.com.cn
RSCoin项目(代码[注1] 、论文[注2])据称背后有英国央行的影子,笔者没有亲见英国央行的相关公告。鉴于近期Bitcoin Magazine一篇文章[注3]中明确提及英格兰银行是于2016年2月21日发布的报告,那不妨就先接受这个说法。
作为首个发达国家央行公布的加密法币实验项目,RSCoin无论受到何种程度的关注可能都并不过分。本文将对此项目的业务目标和技术方案进行检视和评论。
一.RSCoin业务目标评论
货币供应集中化
RSCoin的首要业务目标,是确保央行能通过加密货币继续行使货币政策,为此RSCoin并不准备通过挖矿方式创建货币。
这点本是意料中事,毕竟行使货币政策的权力是难以抵御的诱惑。一国央行如果当真要放弃货币政策,大可直接从回归金本位开始,不必等到加密货币出现。
有限的法币支持
很可能对于大部分基于区块链的金融应用而言法币交收都是一道难以绕过的坎。作为区块链金融应用的必要润滑剂,一国央行在设计其加密法币之初就应该立意高远,不应只把目标局限于实现一套安全可靠、防篡改、可审计的独立转账支付系统,还应尝试为其他区块链提供更为快捷成本更低的法币交收支持,毕竟央行一家的区块链系统不能包打天下,未来一定会出现多种独立的金融联盟链,它们都可能需要央行加密法币的支持。
很遗憾的是,在目前的RSCoin设计中看不到太多这方面的创新。不能说设计者完全没有考虑到这个问题,毕竟在附录中提及了原子跨链交易,但通过这种方式实现的银货对付交收效率低下,且对手方如果恶意超时虽可自动触发交易回滚,但金融行情瞬息万变,必须锁定资产至超时会带来很大的机会成本。因此,RSCoin不足以帮助实现其他金融资产的实时逐笔交收,可能会抵消区块链技术带来的潜在收益。
变化的领域模型
对RSCoin业务目标的另一批评是:RSCoin照搬了Bitcoin的UTXO模型,这意味着银行等机构要摒弃长期以来的习惯,将其领域模型从账户/余额转向UTXO。区块链/分布式总账的本质是拜占庭容错的只追加总账,并不需要也并不应该限制用户的业务模型。RSCoin的设计者若要削足适履去挑战用户的业务领域模型,很可能会影响该项目的推广和成功。
二.RSCoin技术方案评论
可扩展性的幻像
RSCoin的主要技术亮点是宣称突破了比特币的可扩展性限制,打造了完全可扩展的分布式账本。RSCoin的测试数据看起来确实不错,随着分区数量的上升系统吞吐量呈现完美的线性增长,这一切的关键,其实是因为RSCoin试图通过client的主动参与和协调实现类似2PC的某种算法。
RSCoin协议目前看还很粗糙。作为一个关键应用的分布式算法,协议居然并未说明其假设的网络通信模型是异步、同步还是部分同步。FLP不可能性定理早已证明:在纯异步的网络通信模型下(也即消息传输和处理时间无法预设上限),哪怕单个进程的失效-终止也会破坏共识的达成。与之相对的是,通篇论文都没有看到超时的使用,也没有对于单个分区最多能容忍的拜占庭节点数进行假设,一切似乎都是发生于完美的世界。但很明显,比特币POW的电力开销、传统拜占庭算法的复杂通信,都只是为了能在一个不完美的世界中达成共识。必须假设一个完美世界的算法,是不能用于实际业务的。
实际世界是复杂的,即使同一分区的不同mintette都是没有拜占庭故障的正常节点,从client到mintette的网络也可能中断,mintette也可能失效,因此client可能只能及时联络到同一分区的大部分mintette,因此同一分区中各mintette之间的通信及同步是必不可少的,RSCoin中完全没有体现这部分必要的设计。不仅仅是论文中没有,其开源代码中也没有。
在mintette彼此互不通信的情况下,算法的活动性和正确性存在一种矛盾。假设有100笔不同的交易都向地址A转入资金,其中10笔转入交易的txid经查属于同一个分区F照看,再假设分区F由5个mintette负责照管。
如果这5个mintette永远不会出现拜占庭故障(节点停机或不响应也是一种拜占庭故障),则这10笔转入交易的发起方只要联络上这5个mintette、传送完毕转入交易的全部核准信息就可以了。但如果有1个mintette就是不回复应答,转入方是否应该无限期等待其响应?如果回答是需要不断等待,就是牺牲算法的活动性。
如果允许5个mintette中个别节点出现故障,假设允许1台好了,故障节点比例将只有20%,小于通常拜占庭容错算法所容忍的33%上限。那么交易发起方每次只需接洽到5个mintette中的4个算法就可以继续。这时又可能出现下面的问题,从而牺牲算法的正确性。
TX 1到TX 5各自给A地址转入100元,每次通过不同的4个mintette转入。5笔资金转入后,在此分区中,地址A名下应该至少有500元。TX 6准备通过该分区从地址A转出500元,但其接洽的4个mintette一致认为该地址中只有400元从而转出失败!这个问题正是由于mintette可能失效且又互不通气引起的。
因此,如果同一分区的不同mintette各自可能有不同的账本及最终状态,系统设计者将面临一个两难问题:如果央行需要要收集、比对、汇总各分区的低层块,然后构成高层账本,就将被迫进行复杂的比对和整合(都是在其他协议中应该且可以由mintette事先完成的),此时央行将成为整个体系的瓶颈;如果央行只想做最简单的合并,就需要靠mintette完成这些琐碎的整合,RSCoin的可扩展性就不免要打折扣。无论何者,可扩展性问题都没有得到解决。再加上RSCoin的代码和论文都未说明央行所执行算法的逻辑为何,当然更没有测试过。所以RSCoin的扩展性云云,其实也没有真的得到验证和解决。
较弱的智能合约
RSCoin的原型实现尚未显示其是否考虑应用某种类比特币脚本技术。从其计划支持跨链原子合约来看这是很可能的事情。但过于拘泥比特币的UTXO模型,很可能即使有了图灵完备的脚本也很难实现比较复杂的智能合约,Vitalik对此已有专文[注4]分析。
当然,只要这和RSCoin的业务定位相符,就不能算是设计缺陷。
三.总结
RSCoin项目的推出体现了加密货币技术向传统金融及政府机构的渗透,也反映了英国央行对加密货币技术的重视,从这点上说具有重要的意义。
但就RSCoin项目的业务目标和技术实现看,该项目的象征意义目前大于实际意义。其要真正进入现实金融世界,尚有许多有待解决的障碍。
注1: https://github.com/gdanezis/rscoin
注2: http://www0.cs.ucl.ac.uk/staff/G.Danezis/papers/ndss16currencies.pdf
注3: https://bitcoinmagazine.com/articles/the-bank-of-england-s-rscoin-an-experiment-for-central-banks-or-a-bitcoin-alternative-1459183955 (需翻墙)
注4: https://medium.com/@ConsenSys/thoughts-on-utxo-by-vitalik-buterin-2bb782c67e53#.trse0k21k
作者简介
- 朱立,上海证券交易所技术公司规划部执行经理
- 谢晗剑(Jan),Cryptape公司联合创始人,ruby-ethereum及pyethereum开发者