原文链接
维基上给出定义: 一种分布式数据库技术,通过维护数据块的链式结构,可以维持增长的、不可篡改的数据记录
区块链包括三个概念:
交易: 一次对账本的操作,导致账本状态的一次改变,如添加一条转账记录
区块: 记录一段时间内发生的所有交易和状态结果,是对当前账本状态的一次共识
链: 由区块按照发生顺序串联而成,是整个账本状态变化的日志记录
首先比特币客户端发起一项交易,广播到比特币网络中并等待确认。网络中的节点会将一些收到的等待确认的交易记录打包在一起(此外还要包括钱已给区块头部的哈希值等信息),组成一个候选区块。然后,试图找到一个nonce串(随机串)放到区块里,使得候选区块的哈希结果满足一定条件(比如小于某个值)。这个nonce串的查找需要一定的时间去进行计算尝试。一旦节点算出来满足条件的nonce串,这个区块在格式上就被认为是'合法'了,就可以尝试在网络中将它广播出去。其他节点收到候选区块,进行验证,发现确实符合约定条件了,就承认这个区块是一个合法的新区块,并添加到自己维护的区块链上。当大部分节点都将区块添加到自己维护的区块链结构上时,该区块被网络接受,区块中包括的交易也就得到确认。
关键步骤:
完成对一批交易的共识
新区块添加到区块链结构上,被大家认可,确保未来无法被篡改
比特币的这种基于算力寻找nonce串的共识机制称为工作量证明(PoW )。目前,要让哈希结果满足一定条件,只能进行尝试的暴力计算,尝试的次数越多(工作量越大),算出来的概率就越大。
比特币区块链已经支持了简单的脚本计算,但仅限于数字货币相关的处理。除了支持数字货币外,还可以将区块链上执行的处理过程意义不泛华,即提供智能合约。智能合约可以提供除了货币交易功能外更加灵活的合约功能,执行更为复杂的操作。
从计算特点上,可以看到现有区块链技术的三种典型演化场景:
跟传统的记账技术相比,基于区块链的分布式账本应该包括如下特点:
维护一条不断增长的链,只可能添加记录,而发生过的记录都不可篡改
去中心化,或者说多中心化,无需集中控制而能达成共识,实现上尽可能采用分布式
通过密码学的机制来确保交易无法被抵赖和破坏,并尽量保护用于信息和记录的隐私性
根据参与者的不同,可以分为公开链、联盟链、私有链:
公有链: 任何人都可以参与使用和维护,比如比特币区块链,信息是完全公开的。如果进一步引入许可机制,可以实现私有链和联盟链两种类型
私有链: 由集中管理者进行管理限制,只有内部少数人可以使用,信息不公开
联盟链: 介于两者之间,由若干组织一起合作维护一条区块链,该区块链的使用须是带有权限的限制访问,相关信息会得到保护,如供应链机构或银行联盟。
根据使用目的和场景的不同,又可以分为以数字货币为目的的货币链,以记录产权为目的的产权链,以众筹为目的的众筹链,也有不局限特定应用场景的通用链。
怎么防止交易记录被篡改?
怎么证明交易双方的身份?
怎么保护交易双方的隐私?
密码学的发展为解决这些问题提供了不少手段。
共识问题的核心指标将包括容错的节点比例、决策收敛速度、出错后的恢复、动态特性等。PoW等基于概率的系列算法理论上允许少于一半的不合作节点,PBFT等确定性算法理论上则允许不超过1/3的不合作几点。
区块链系统和传统分布式系统不同,其处理性能很难通过单纯增加节点数来进行横向扩展。实际上,传统区块链系统的性能,在很大程度上取决于单个节点的处理能力。高性能、安全、稳定性、硬件辅助加解密能力,都将是考察节点性能的核心要素。
常见的分布式系统可以通过增加节点来横向扩展整个系统的处理能力。对于区块链网络系统来说,根据共识机制的不同,并没有那么简单。
世界上没有绝对安全的系统
基于区块链的新业务系统必将与已有的中心化系统集成共存
区块链技术的进一步发展,将会使区块链技术大放异彩
区块链不等于比特币
区块链不等于数据库
区块链并非一门万能的颠覆性技术