新事物每每不是凭空而来,发展和演化也不多一蹴而就。认识新事物,首先要弄清楚它的前因后果,知其出身,方能知其因此然。此文章为《区块链技术指南》的读后笔记&摘要。git
区块链(Blockchain)的概念首次被人们关注,源于2009年初上线的比特币(Bitcoin)开源项目。从记帐科技的演化角度来看,区块链其实是记帐问题发展到分布式场景下的自然结果。帐本科技的演化过程大体能够分为四个阶段:简单帐本、复式帐本、数字化帐本、分布式帐本。简单帐本很好理解,就是数据没有备份,容易出错且很难发现是否被篡改过。复式帐本,简单理解就是,将每笔交易分别在来源方和目标方进行记录,且多方之间的帐本总额应该时刻保持相等,这样就解决了单个帐本的帐本可信问题。数字化帐本的记帐方法相对于复式帐本自己并无太多创新,但因为数字媒介的出现,使得帐本的规模、处理的速度、帐本的复杂度都有了天翻地覆的提高,这是如今的电子商务、互联网金融的技术基础。复式帐本虽然记录了交易的前因后果,不易出错,但本质上仍然是中心化模式,多方交易状况下若是某个或部分帐本数据出现不一致,对帐十分困难,分布式帐本:由交易多方共同维护同一个共享的分布式帐本,打通交易在不一样阶段的前因后果,同时凭借分布式技术进一步提升记帐的规模、效率、可靠性以及合规性。但在分布式场景下,如何避免参与方恶意篡改或者破坏记录?该由谁来决定每笔交易记录是否写入到帐本中?这些问题一直都还在探索最佳实践。github
为了防止有参与者对交易记录进行篡改,须要引入必定的验证机制。很天然地,咱们想到了数字摘要技术,一个多方参与且都有权限读写的帐本,每次当有新的交易记录被追加到帐本上时,参与各方可使用Hash算法对完整的交易历史计算数字摘要,获取当前交易历史的“指纹”。此后任意时刻,每一个参与方均可以对交易历史从新计算数字摘要,一旦发现指纹不匹配,则说明交易记录被篡改过。同时,经过追踪指纹改变位置,能够定位到被篡改的交易记录: 算法
直到今天,关于比特币的话题仍充满了很多争议。但大部分人应该都会承认,比特币是数字货币历史上,甚至整个金融历史上一次了不得的社会学实验。
比特币首次真正从实践意义上实现了安全可靠的非中心化数字货币机制,这也是它受到无数金融科技从业者热捧的根本缘由。做为一种概念货币,比特币主要是但愿解决已有货币系统面临的几个核心问题:数据库
若是说比特币是影响力巨大的社会学实验,那么从比特币核心设计中提炼出来的区块链技术,则让你们看到了塑造更高效、更安全的将来商业网络的可能。
2014 年开始,比特币背后的区块链技术开始逐渐受到你们关注,并进一步引起了分布式记帐本(Distributed Ledger)技术的革新浪潮。
实际上,人们很早就意识到,记帐相关的技术,对于资产(包括有形资产和无形资产)的管理(包括全部权和流通)十分关键;而多中心化的分布式记帐本技术,对于当前开放、多维的商业模式意义重大。区块链的思想和结构,正是实现这种分布式记帐本系统的一种极具可行潜力的技术。
区块链技术如今已经从比特币项目脱颖而出,在包括金融、贸易、征信、物联网、共享经济等诸多领域崭露头角。如今,除非特别指出是“比特币区块链”,不然当人们提到“区块链技术”时,每每已与比特币没有什么必然联系了。
商业行为的典型过程为:交易多方经过协商肯定商业合约,经过执行合约完成交易。区块链擅长的正是如何在多方之间达成合约,并确保合约的顺利执行。根据类别和应用场景不一样,区块链所体现的特色和价值也不一样。从技术角度,通常认为,区块链具备以下特色:安全
随之带来的业务特性将可能包括:网络
区块链并不是凭空诞生的新技术,更是多种技术演化到必定程度后的产物,所以,其商业应用场景也跟促生其出现的环境息息相关。对于基于数字方式的交易行为,区块链技术能潜在地下降交易成本、加快交易速度,同时能提升安全性。我认为,可否最终提升生产力,将是一项技术可否被实践接受的关键。数据结构
讨论区块链的定义能够从狭义和广义两个层面来看待。
狭义上,区块链是一种以区块为基本单位的链式数据结构,区块中利用数字摘要对以前的交易历史进行校验,适合分布式记帐场景下防篡改和可扩展性的需求。
广义上,区块链还指代基于区块链结构实现的分布式记帐技术,包括分布式共识、隐私与安全保护、点对点通讯技术、网络协议、智能合约等。
区块链的基本原理理解起来并不复杂。首先来看三个基本概念:分布式
交易(Transaction):一次对帐本的操做,致使帐本状态的一次改变,如添加一条转帐记录;ide
区块(Block):记录一段时间内发生的全部交易和状态结果等,是对当前帐本状态的一次共识;性能
链(Chain):由区块按照发生顺序串联而成,是整个帐本状态变化的日志记录。
若是把区块链系统做为一个状态机,则每次交易意味着一次状态改变;生成的区块,就是参与者对其中交易致使状态改变结果的共识。区块链的目标是实现一个分布的数据记录帐本,这个帐本只容许添加、不容许删除。帐本底层的基本结构是一个线性的链表。链表由一个个“区块”串联组成(以下图所示),后继区块中记录前导区块的哈希(Hash)值。某个区块(以及块里的交易)是否合法,可经过计算哈希值的方式进行快速检验。网络中节点能够提议添加一个新的区块,但必须通过共识机制来对区块达成确认。
目前,区块链自身还是一种相对年轻的技术,很多人对它的认识还存在一些不足。下面总结了在探讨区块链技术时候一些常见的误区:
区块链核心在于比特币?虽然说区块链的基本思想出如今比特币设计中,但发展到今日,加密货币和区块链已经俨然成为了两个不太相关的阵营。前者侧重从金融角度发掘比特币等代币的实验性意义;后者则从技术层面探讨和研究分布式帐本科技可能带来的商业价值,试图拓展到更多的场景。
区块链是一种数据库技术 虽然区块链也能够用来存储数据,但它要解决的核心问题是多方的互信协做问题。单纯从存储数据角度,区块链效率可能不高,通常也不推荐把大量原始数据直接放到区块链系统上。固然,现有区块链系统中大量使用了数据库技术。也有企业尝试将区块链技术引入到分布式数据库领域,解决非中心化的管理,如 BigchainDB。
Token 就是数字货币? 早在区块链概念出现以前,Token(令牌)就大量应用在计算机系统中,做为带有某种权限的证实,它能够协助系统应用进行快速协做。所以,在区块链系统中使用 Token 可能在某些应用场景(如游戏积分)下提供管理便利。而数字货币则强调经济价值,跟其在系统中的原生功能无必然联系。
区块链是万能的,是颠覆性的? 做为融合多项已有技术而出现的事物,区块链跟现有技术体系是一脉相承的。它在解决多方合做和可信处理上向前多走了一步,但并不意味着它解决了全部问题,更不会快速颠覆大量的商业模式。很长一段时间里,区块链最适用的场景仍需不断摸索,区块链也会跟已有系统共存使用。
区块链必然是非中心化的?非中心化的必定优于中心化设计?讨论技术的优劣必需要有场景前提,区块链也是如此。并不存在某种区块链技术能在任意场景下都优于其它方案,这也是为什么目前公开链和联盟链在技术选型上存在较大差别。中心化设计具备设计简单,管理完善,性能可控的特色,但每每容错性能比较差;非中心化(多中心化)的设计能够提升容错性能,利用多方共识来下降篡改风险,但意味着设计较复杂,要付出性能代价。实际上,根据实际场景的需求,现有大部分区块链技术都介于绝对的中心化和绝对的非中心化之间,以取得不一样指标上的平衡。例如公开链为了提升性能经过选择部分信任的节点来做为表明。