核心技术概览
一、定义
关于区块链的定义,可从狭义和广义两个角度来理解。
狭义上,区块链是一种以区块为基本单位的链式数据结构,区块中利用数字摘要对之前的交易历史进行校验,适合分布式记账场景下防篡改和可扩展性的需求。
广义上,区块链还指代基于区块链结构实现的分布式记账技术,包括分布式共识、隐私与安全保护、点对点通信技术、网络协议、智能合约等。
二、基础原理
区块链的基本原理理解起来并不复杂。
交易(Transaction):一次对账本的操作,导致账本状态的一次改变,如添加一条转账记录;
区块(Block):记录一段时间内发生的所有交易和状态结果等,是对当前账本状态的一次共识;
链(Chain):由区块按照发生顺序串联而成,是整个账本状态变化的日志记录。
如果把区块链系统作为一个状态机,则每次交易意味着一次状态改变;生成的区块,就是参与者对其中交易导致状态改变结果的共识。
三、区块链与分布式记账
区块链是首个自带对账功能的数字账本结构。
更广泛地,区块链实现了非中心化的记录。参与到系统中的节点,并不属于同一组织,彼此可以信任或不信任;链上数据由所有节点共同维护,每个节点都存储一份完整或部分的记录拷贝。
跟传统的记账技术相比,基于区块链的分布式账本包括如下特点:
维护一条不断增长的链,只可能添加记录,而且记录一旦确认则不可篡改;
非中心化,或者说多中心化的共识,无需集中的控制,实现上尽量分布式;
通过密码学的机制来确保交易无法被抵赖和破坏,并尽量保护用户信息和记录的隐私性。
四、技术分类
根据参与者的不同,可以分为公有(Public 或 Permissionless)链、联盟(Consortium 或 Permissioned)链和私有(Private)链。
- 公有链,顾名思义,任何人都可以参与使用和维护,参与者多为匿名。典型的如比特币和以太坊区块链,信息是完全公开的。
如果进一步引入许可机制,可以实现私有链和联盟链两种类型。
私有链,由集中管理者进行管理限制,只有内部少数人可以使用,信息不公开。一般认为跟传统中心化记账系统的差异不明显。
联盟链则介于两者之间,由若干组织一起合作(如供应链机构或银行联盟等)维护一条区块链,该区块链的使用必须是带有权限的限制访问,相关信息会得到保护,典型如超级账本项目。在架构上,现有大部分区块链在实现都至少包括了网络层、共识层、智能合约和应用层等分层结构,联盟链实现往还会引入额外的权限管理机制。
另外,根据使用目的和场景的不同,又可以分为以数字货币为目的的货币链,以记录产权为目的的产权链,以众筹为目的的众筹链等,也有不局限特定应用场景的所谓通用链。通用链因为要兼顾不同场景下的应用特点,在设计上需要考虑更加全面。
五、关键问题和挑战
5.1 共识
共识是分布式系统领域经典的技术难题,学术界和业界都已有大量的研究成果(包括 Paxos、拜占庭系列算法等)。
问题的核心在于确保某个变更在分布式网络中得到一致的执行结果,是被参与多方都承认的,同时这个信息是不可推翻的。
最初,比特币区块链考虑的是公开匿名场景下的最坏保证。通过引入了“工作量证明”(Proof of Work)策略来规避少数人的恶意行为,并通过概率模型保证最终共识到最长链。
5.2 交易性能
目前,公开的比特币公有区块链只能支持平均每秒约 7 笔的吞吐量,其安全的交易确认时间为一小时。以太坊公有区块链的吞吐量略高,达到每秒几十笔,但仍不能满足较大的应用。
5.3 扩展性
大部分区块链系统的性能,很大程度上取决于单个节点的处理能力。对这些系统来说,节点需要满足 高性能、安全、稳定、硬件辅助加解密能力。
对于比特币和以太坊区块链而言,网络中每个参与维护的核心节点都要保持一份完整的存储,并且进行智能合约的处理。此时,整个网络的总存储和计算能力,取决于单个节点的能力。甚至当网络中节点数过多时,可能会因为共识延迟而降低整个网络的性能。尤其在公有网络中,由于大量低性能处理节点的存在,问题将更加明显。
要解决这个问题,根本上是放松对每个节点都必须参与完整处理的限制(当然,网络中节点要能合作完成完整的处理),这个思路已经在超级账本等项目中得到应用;同时尽量减少核心层的处理工作,甚至采用多层处理结构来分散交易。
5.4 安全防护
世界上并没有绝对安全的系统。
系统越复杂,攻击面越多,安全风险越高;另外系统是由人设计的和运营的,难免出现漏洞。
首先是立法。对区块链系统如何进行监管?攻击区块链系统是否属于犯罪?攻击银行系统是要承担后果的。但是目前还没有任何法律保护区块链(特别是公有链)以及基于它的实现。
另外,公有区块链所有交易记录都是公开可见的,这意味着所有的交易,即便被匿名化和加密处理,但总会在未来某天被破解。安全界一般认为,只要物理上可接触就不是彻底的安全。实际上,已有文献证明,比特币区块链的交易记录大部分都能追踪到真实用户。
5.5 数据库和存储系统
区块链网络中的大量信息需要写到文件和数据库中进行存储。
观察区块链的应用,大量的读写操作、Hash 计算和验证操作,跟传统数据库的行为十分不同。
目前已经出现了引入区块链特性的“账本数据库”,包括甲骨文和亚马逊等产品。它们通过签名来防抵赖,并追溯数据修改历史,提供审计功能。
此外,在高吞吐量的场景下,本地账本结构会快速累积大量数据。这些数据的保存、索引、清理,发生故障后的恢复,新加入节点的数据获取等,都是值得探索的开放问题。
六、认识上的误区
6.1 区块链离不开加密数字货币?
虽说区块链的早期应用之一是比特币等加密数字货币,但发展到今日,区块链技术早已脱颖而出,两者也各自朝着不同的目标向前发展。比特币侧重从金融角度发掘加密数字货币的实验和实践意义;区块链则从技术层面探讨和研究分布式账本科技的商业价值,并试图拓展到更多分布式互信的场景。