商业价值
现代商业的典型模式为,交易方通过协商和执行合约,完成交易过程。区块链擅长的正是如何管理合约,确保合约的顺利执行。
根据类别和应用场景不同,区块链所体现的特点和价值也不同。
从技术特点上,区块链一般被认为具有:
- 分布式容错性:网络极其鲁棒,容错 1/3 左右节点的异常状态。
- 不可篡改性:一致提交后的数据会一直存在,不可被销毁或修改。
- 隐私保护性:密码学保证了未经授权者能访问到数据,但无法解析。
随之带来的业务特性将可能包括:
- 可信任性:区块链技术可以提供天然可信的分布式账本平台,不需要额外第三方中介机构。
- 降低成本:跟传统技术相比,区块链技术可能带来更短的时间、更少的人力和维护成本。
- 增强安全:区块链技术将有利于安全可靠的审计管理和账目清算,减少犯罪可能性,和各种风险。
区块链并非凭空诞生的新技术,更像是技术演化到一定程度突破应用阈值后的产物,因此,其商业应用场景也跟促生其出现的环境息息相关。基于区块链技术,任何基于数字交易的活动成本和追踪成本都会降低,并且能提高安全性。笔者认为,能否最终带来成本的降低,将是一项技术能否被深入应用的关键。
笔者认为,所有跟信息、价值(包括货币、证券、专利、版权、数字商品、实际物品等)、信用等相关的交换过程,都将可能从区块链技术中得到启发或直接受益。但这个过程绝不是一蹴而就的,可能经过较长时间的探索和论证
目前,区块链技术已经得到了众多金融机构和商业公司的关注。
已经对区块链技术进行投入或应用的金融机构(排名不分先后)目前有:
- Visa
- 美国纳斯达克证券交易所(Nasdaq)
- 高盛投资银行(Goldman Sachs)
- 花旗银行(citibank)
- 美国富国银行(Wells Fargo)
- 中国央行
- 中国浦发银行
- 日本三菱日联金融集团
- 瑞士联合银行
- 德意志银行
- DTCC
- 全球同业银行金融电讯协会(SWIFT)
部分商业、技术公司包括:
- IBM
- 微软
- Intel
- 思科(Cisco)
- 埃森哲
关键技术和挑战
从技术角度讲,区块链涉及到的领域比较杂,包括分布式、存储、密码学、心理学、经济学、博弈论、网络协议等,下面列出了目前认为有待解决或改进的关键技术点。
密码学技术
怎么防止交易记录被篡改?
怎么证明交易方的身份?
怎么保护交易双方的隐私?
密码学正是要提供解决这些问题的有效手段。传统方案包括 hash 算法,加解密算法,数字证书和签名(盲签名、环签名)等。区块链技术的应用将可能刺激密码学的进一步发展,包括随机数的产生、安全强度、加解密处理的性能等。量子计算等新技术的出现,让 RSA 算法等已经无法提供足够的安全性。
这将依赖于数学科学的进一步发展和新一代计算技术的突破。
注:SONY PS3 私钥被破解事件 再次证明,即便足够安全的算法,如果没有被恰当的使用,都只是纸上谈兵。
分布式共识
这是个古老的话题,已有大量的研究成果(Paxos、拜占庭等)。
核心在于如何解决某个变更在网络中是一致的,是被大家都承认的,同时这个信息是被确定的,不可推翻的。该问题在公开匿名场景下和带权限管理的场景下需求差异较大。
比特币区块链考虑的是公开匿名场景下的最坏保证。引入了“工作量证明”(Proof of Work)策略来规避少数人恶意破坏数据,并通过概率模型保证最后大家看到的就是合法的最长链。此外,还有以权益为抵押的 PoS、DPoS 和 Casper 等。这些算法在思想上都是基于经济利益的博弈,让恶意破坏的参与者损失经济利益,从而保证大部分人的合作。同时,确认必须经过多个区块的生成之后从概率学上进行保证。
更广泛的区块链技术支持更多的共识机制,包括经典的拜占庭算法等,可以解决确定性的问题。
共识问题在很长一段时间内都将是极具学术价值的研究热点,核心的指标将包括容错的节点比例和收敛速度。PoW 等系列算法理论上允许少于一半的不合作节点,PBFT 等算法理论上允许不超过 $$\frac{1}{3}$$ 的不合作节点。
处理性能
如何提高交易的吞吐量,同时降低交易的确认延迟。
目前,公开的比特币区块链只能支持平均每秒约 7 笔的吞吐量,一般认为对于大额交易来说,安全的交易确认时间为一个小时。小额交易只要确认被广播到网络中并带有交易服务费用,即有较大概率被最终打包到区块中。
区块链系统跟传统分布式系统不同,其处理性能无法通过单纯增加节点数来进行扩展,实际上,很大程度上取决于单个节点的处理能力。高性能、安全、稳定性、硬件辅助加解密能力,都将是考察节点性能的核心要素。
一方面可以将单个节点采用高性能的处理硬件,同时设计优化的策略和算法,提高性能;另外一方面将大量高频的交易放到链外来,只用区块链记录最终交易信息,如 闪电网络 等。类似的,侧链(side chain)、影子链(shadow chain)等的思路在当前阶段也有一定的借鉴意义。类似设计可以很容易的将交易性能提升 1-2 个数量级。此外,如果采用联盟链的方式,在一定的信任前提和利益约束下优化设计,也可以换来性能的提升。
目前,开源区块链自身在平台层面已经实现普通配置,单客户端每秒数百次的交易吞吐量(参考后面的 性能评测数据),乐观预测将很快突破每秒数千次的基准线,但离现有证券交易系统的每秒数万笔的峰值还是有较大差距。
另外,从工程设计和平台部署上,都存在一些可以优化的地方。
注:VISA 系统的处理均值为 2000 tps,号称的峰值为 56,000 tps;某支付系统的处理峰值超过了 85,000 tps;某证券交易所号称的处理均(峰)值在 80,000 tps 左右。
扩展性
常见的分布式系统,可以通过增加节点来扩展整个系统的处理能力。
对于区块链网络系统来说,这个问题并非那么简单。
网络中每个参与维护的核心节点都要保持一份完整的存储,并且进行智能合约的处理。因此,整个网络的总存储和计算能力,取决于单个节点。甚至当网络中节点数过多时,可能会因为一致性的达成过程延迟降低整个网络的性能。尤其在公有网络中,由于大量低质量处理节点的存在问题将更明显。
比较直接的一些思路,是放松对每个节点都必须参与完整处理的限制(但至少部分节点要能合作完成完整的处理),这个思路已经在超级账本中启用;同时尽量减少核心层的处理工作。
在联盟链模式下,还可以专门采用高性能的节点作为核心节点,用相对较弱的节点作为代理访问节点。
系统安全
区块链目前最热门的应用前景是金融相关的服务,安全自然是讨论最多、挑战最大的话题。
区块链在设计上基于现有的成熟的密码学算法。但这是否就能确保其安全呢?
世界上并没有绝对安全的系统。
系统是由人设计的,系统也是由人来运营的,只要有人参与的系统,就容易出现漏洞。
可以参考,著名黑客米特尼克所著的《反欺骗的艺术——世界传奇黑客的经历分享》,介绍了大量的实际社交工程欺骗场景。
有如下几个方面是很难逃避的。
首先是立法。对区块链系统如何进行监管?攻击区块链系统是否属于犯罪?攻击银行系统是要承担后果的。但是目前还没有任何法律保护区块链以及基于它的实现。
其次是软件实现的潜在漏洞是无法避免的。考虑到使用了几十年的 openssl 还带着那么低级的漏洞(heart bleeding),而且是源代码就在大家眼皮底下。这背后曾经发生过啥,让人遐想连篇。对于金融系统来说,无论客户端还是平台侧,即便是很小的漏洞都可能造成难以估计的损失。
另外,公有区块链所有交易记录都是公开可见的。搞大数据的人听了是不是开始激动起来了,确实,这里面能分析的东西还真不少,而且规模够大、影响力够大……实际上,已有文献证明,比特币区块链的交易记录最终是能追踪到用户的。
还有就是作为一套完全的分布式系统,公有的区块链缺乏有效的调整机制,一旦运行起来,出现问题也难以修正。即使是让它变得更公平、更完善的修改,只要有部分既得利益者合起来反对,那就无法加入进去。这让比特币本身的价值也蒙上了一层阴影。
此外,运行在区块链上的智能合约应用可能是五花八门的,必须要有办法进行安全管控,在注册和运行前需要有机制进行探测,以规避恶意代码的破坏。
2016 年 6 月 17 日,发生 DAO 系统漏洞被利用 事件,直接导致价值 6000 万美元的数字货币被利用者获取。尽管对于这件事情的反思还在进行中,但事实再次证明,目前基于区块链技术进行生产应用时,务必要细心谨慎地进行设计和验证。
数据库和存储系统
区块链网络中的块信息需要写到数据库中进行存储。
观察区块链的应用,大量的写操作、hash 计算和验证操作,跟传统数据库的行为十分不同。
当年,人们观察到互联网应用大量非事务性的查询操作,而设计了非关系型(NoSql)数据库。那么,针对区块链应用的这些特点,是否可以设计出一些特殊的针对性的数据库呢?
levelDB、RocksDB 等键值数据库,具备很高的随机写和顺序读/写性能,以及相对较差随机读的性能,被广泛应用到了区块链信息存储中。但目前来看,面向区块链的数据库技术仍然是需要突破的技术难点之一。
笔者认为,未来将可能出现更具针对性的“块数据库(BlockDB)”,专门服务类似区块链这样的新型数据业务,其中每条记录将包括一个完整的区块信息,并天然地跟历史信息进行关联,一旦写入确认无法修改。所有操作的最小单位将是一个块。
可集成性
在相当长的一段时间内,基于区块链的新业务系统将与已有的中心化系统共存。
两种系统如何共存,如何分工,彼此的业务交易如何进行传递?
这些都是很迫切的问题。这个问题解决不好,将是区块链技术落地的很大阻碍。
其它
区块链提供的新应用和新的业务场景,也带来了对很多具体的运营问题。
例如:
- 智能合约的合法性、安全性和可执行性;
- 如何将现实中的合约和条约对应为电子合约;
- 分布式系统的伸缩可靠性和数据迁移;
- 对存储系统新的挑战,特别是性能。
趋势与展望
关于区块链的探讨和争论,自其诞生之日起就从未停息。
或许从计算技术的演变历史中能得到一些启发。
以云计算为代表的现代计算技术,其发展历史上有若干重要的时间点和事件:
- 1969 - ARPANet(Advanced Research Projects Agency Network):现代互联网的前身,被美国高级研究计划署(Advanced Research Project Agency)提出,其使用 NCP 协议,核心缺陷之一是无法做到和个别计算机网络交流;
- 1973 - TCP/IP:Vinton.Cerf(文特•瑟夫)与Bob Karn(鲍勃•卡恩)共同开发出 TCP 模型,解决了 NCP 的缺陷;
- 1982 - Internet:TCP/IP 正式成为规范,并被大规模应用,现代互联网诞生;
- 1989 - WWW:早期互联网的应用主要包括 telnet、ftp、email 等,蒂姆·伯纳斯-李(Tim Berners-Lee)设计的 WWW 协议成为互联网的杀手级应用,引爆了现代互联网,从那开始,互联网业务快速扩张;
- 1999 - salesforce:互联网出现后,一度只能进行通信应用,但 salesforce 开始以云的理念提供基于互联网的企业级服务;
- 2006 - aws ec2:AWS EC2 奠定了云计算的业界标杆,直到今天,竞争者们仍然在试图追赶 AWS 的脚步;
- 2013 - cognitive:以 IBM Watson 为代表的认知计算开始进入商业领域,计算开始变得智能,进入“后云计算时代”。
从这个历史中能看出哪些端倪呢?
一个是 技术领域也存在着周期律。 这个周期目前看是 7-8 年左右。或许正如人有“七年之痒”,技术也存在着七年这道坎,到了这道坎,要么自身突破迈过去,要么往往就被新的技术所取代。如果从比特币网络上线(2009 年 1 月)算起,到今年正是在坎上。因此,现在正是相关技术进行突破的好时机。
为何恰好是 7 年?7 年按照产品周期来看基本是 2~3 个产品周期,所谓事不过三,经过 2~3 个产品周期也差不多该有个结论了。
另外,最早出现的未必是先驱,也可能是先烈。 创新固然很好,但过早播撒的种子,没有合适的土壤,往往也难长大。技术创新与科研创新很不同的一点便是,技术创新必须立足于需求,过早过晚都会错失良机。科研创新则要越早越好,最好像二十世纪那批物理巨匠们一样,让后人吃了一百多年的老本。
最后,事物的发展往往是延续的、长期的。 新生事物大都不是凭空蹦出来的,往往是解决了前辈未能解决的问题,或是出现了之前未曾出现过的场景。而且很多时候,新生事物会在历史的舞台下面进行长期的演化,只要是往提高生产力的正确方向,迟早会出现在舞台上的一天。
目前,区块链在数字货币领域(以比特币为代表)的应用已经相对成熟,而在智能合约方向尚处于初步实践阶段。区块链技术的应用已经在许多领域都带来了生产力提升,笔者相信,随着技术进一步的发展,区块链将会促进金融和信息科技走向新的阶段。
小结
区块链是第一个试图自带信任化和防止篡改的分布式记录系统。它的出现,让大家意识到,除了互联网这样的尽力而为的基础设施外,我们还能打造一个彼此信任的基础设施。
类似比特币这样的大规模长时间自治运行的系统,也为区块链技术的应用开启了更多遐想的空间。如果人与人之间的交易无法伪造,合同都能确保可靠执行,世界是不是更美好一些了呢?这是技术进步再次给人类发展带来福利。
不提这种去中心化的金融系统是否能在现实中普及,在跨国交易、跨组织合作日益频繁的今天,已经有了不少有意的尝试和参考。
更进一步,比特币只是基于区块链技术的一种金融应用(而且是直接嵌入区块链中),区块链技术还能带来更通用的计算能力。Hyperledger 和 Ethereum 就试图做类似的事情,基于区块链再做一层平台层,让别人基于平台开发应用变得更简单。
另外,区块链本身可以作为分布式存储,也自然可以作为分布式计算引擎。可以想象,整个加入集群的设备都是计算引擎,大家通过付费来使用计算力,是不是就有点普适计算的意味了?
有理由相信,随着更多商业应用场景的出现,区块链技术将在未来金融和信息技术领域占据一席之地。