区块链核心技术之基本问题
对区块链的基础问题进行讨论,并澄清一些认识误区
定义及原理
区块链的定义
公认的最早的关于区块链的描述性文献,便是中本聪所撰写的《比特币:一种点对点的的电子现金系统》(该文献在之前的文章里提到过),但是该文献并没有明确提出区块链的概念,而是更加侧重于电子现金系统。 另外,在维基百科上,将区块链类比为一种分布式数据库技术,通过维护数据块的链式结构,可以维持持续增长的、不可篡改的数据记录。 在参考文献[1]中,从两个方面来看待区块链的
- 狭义角度:区块链是一种以区块为基本单位的链式数据结构,区块中利用数字摘要对之前的交易历史进行校验,适合分布式记账场景下防篡改和可扩展性的需求
- 广义角度: 区块链还指代基于区块链结构实现的分布式记账技术,包括分布式共识、隐私与安全保护、点对点通信技术、网络协议、智能合约等
区块链的演化
比特币区块链面向转账场景,支持简单的脚本计算。很自然想到如果引入更多复杂的计算逻辑,将能支持更多应用场景,这就是智能合约(Smart Contract)。智能合约可以提供除了货币交易功能外更灵活的功能,执行更为复杂的操作。 引入智能合约后的区块链,已经超越了单纯的数据记录功能,实际上带有点“智能计算”的意味了;更进一步地,还可以为区块链加入权限管理、高级编程语言支持等,实现更强大的、支持更多商用场景的分布式账本系统。 从计算特点上,可以看到现有区块链技术的三种典型演化场景[1]:
场景 | 功能 | 智能合约 | 一致性 | 权限 | 类型 | 性能 | 编程语言 | 代表 |
---|---|---|---|---|---|---|---|---|
数字货币 | 记账功能 | 不带有或较弱 | PoW | 无 | 公有链 | 较低 | 简单脚本 | 比特币网络 |
分布式应用引擎 | 智能合约 | 图灵完备 | PoW、PoS | 无 | 公有链 | 受限 | 特定语言 | 以太坊网络 |
带权限的分布式账本 | 商业处理 | 多种语言,图灵完备 | 包括 CFT、BFT 在内的多种机制,可插拔 | 支持 | 联盟链 | 可扩展 | 高级编程语言 | 超级账本 |
认识上的误区
1.区块链是完全创新的,是颠覆性的 作为融合多项已有技术而出现的事物,区块链跟现有记账科技和信息体系是一脉相承的。区块链在解决多方合作和可信计算问题上向前多走了一步,但并不意味着它就是万能的(从来不会存在一项万能的科技),更不会快速颠覆已有的众多商业模式。很长一段时间里,区块链的应用场景仍需不断摸索,区块链在自身发展的同时也会与已有系统共存互通。
2. 区块链必然是非中心化的,非中心化的一定优于中心化设计 比较两种技术的优劣必须要先确定场景前提,区块链也是如此。不可能存在某种技术在任意场景下都是最优的。目前区块链两大形态——公有链和联盟链之所以在技术选型上存在较大差异,正是因为它们面向的场景不同。中心化设计往往具有设计简单、管理完善、性能高、安全可控的特点,但容错性能比较差;非中心化(多中心化)的设计可以提高容错性能,可以利用多方共识来降低篡改风险,但意味着设计较复杂,性能较差。从实际需求出发,现有大部分区块链技术都介于绝对的中心化和绝对的非中心化之间,以取得不同指标上的平衡。例如某些公有链为了提高性能,选择部分代表节点来参与共识。
3. 区块链离不开加密数字货币 虽说区块链的早期应用之一是比特币等加密数字货币,但发展到今日,区块链技术早已脱颖而出,两者也各自发展为不同的目标。前者侧重从金融角度发掘加密数字货币的实验和实践意义;后者则从技术层面探讨和研究分布式账本科技的商业价值,并试图拓展到更多分布式互信的场景。
4. 区块链是一种数据库技术 虽然区块链中可以使用数据库技术,也可以用来存储或管理数据(Data Management)技术,但它要面向的核心问题是多方数据互信协作(Data Collaboration)问题,这是传统数据技术无法解决的。另外,单纯从数据存储或管理角度,区块链效率可能不如传统数据库效率高,因此一般不推荐把大量原始数据直接放到区块链系统中。当然,区块链系统可以很好的与现有数据库和大数据等技术集成,也有人尝试将区块链的一些特点引入到数据库设计中,解决非中心化的管理问题,如 BigchainDB。
5. Token 等于加密数字货币 早在区块链概念出现之前,Token(令牌)就大量应用在计算机系统中。作为权限证明,它可以协助计算机系统进行认证等操作。作为分布式系统,区块链中很自然也可以在某些场景(如游戏积分)下借用 Token 机制,带来应用生态的管理便利。而加密数字货币试图借用数字化技术来实现货币功能,更强调经济价值,跟计算机系统中的原生功能无必然联系。
参考文献
- [1] 《区块链原理、设计与应用》