区块链技术软件开发实践区块链及其核心技术概览.docx
- 文档编号:13273135
- 上传时间:2023-06-12
- 格式:DOCX
- 页数:23
- 大小:542.36KB
区块链技术软件开发实践区块链及其核心技术概览.docx
《区块链技术软件开发实践区块链及其核心技术概览.docx》由会员分享,可在线阅读,更多相关《区块链技术软件开发实践区块链及其核心技术概览.docx(23页珍藏版)》请在冰点文库上搜索。
区块链技术软件开发实践区块链及其核心技术概览
区块链及其核心技术概览
1从实体货币到数字货币
区块链最初的思想诞生于无数先哲对于用数字货币替代实体货币的探讨和设计中。
1.货币的历史演化众所周知,货币是人类文明发展过程中的一大发明。
其最重要的职能包括价值
尺度、流通手段、贮藏手段等。
很难想象离开了货币,现代社会庞大而复杂的经济
和金融体系如何保持运转。
也正是因为它如此重要,货币的设计和发行机制是关系到国计民生的大事。
历史上,在自然和人为因素的干预下,货币的形态经历了多个阶段的演化,包括实物货币、金属货币、代用货币、信用货币、电子货币、数字货币等。
近代以前相当长的一段时间里,货币的形态一直是以实体的形式存在,可统称为“实体货币”。
计算机诞生后,为货币的虚拟化提供了可能性。
同时,货币自身的价值依托也不断发生演化,从最早的实物价值、发行方信用价值,直到今天的对科学技术和信息系统(包括算法、数学、密码学、软件等)的信任价值。
提示中国最早关于货币的确切记载“夏后以玄币”,出现在恒宽的《盐铁论·错币》。
2.纸币的缺陷理论上,一般等价物都可以作为货币使用。
当今世界最常见的货币制度是纸币
本位制,因为纸质货币既方便携带、不易仿制,又相对容易辨伪。
或许有人会认为信用卡等电子方式相对于纸币等货币形式使用起来更为方便。
确实,信用卡在某些场景下会更为便捷,但它依赖背后的集中式支付体系,一旦碰到支付系统故障、断网、缺乏支付终端等情况,信用卡就无法使用。
另外,货币形式相对电子支付方式还可以提供更好的匿名性。
目前,无论是货币形式,还是信用卡形式,都需要额外的支持机构(例如银
行)来完成生产、分发、管理等操作。
中心化的结构固然易于管理,但也带来了额外成本和安全风险。
诸如伪造、信用卡诈骗、盗刷、转账骗局等安全事件屡见不鲜。
很显然,如果能实现一种数字货币,既有货币方便易用的特性,又能消除纸质货币的缺陷,无疑将极大提高社会整体经济活动的运作效率。
让我们来对比一下现有的数字货币(以比特币为例)和现实生活中的纸币,两者的优劣见表1-1。
表1-1数字货币和纸币的对比
可见,数字货币并非在所有领域都优于已有的货币形式。
要比较两者的优劣应该针对具体情况具体分析。
不带前提地鼓吹数字货币并不是一种科学和严谨的态度。
实际上,仔细观察数字货币的应用情况就会发现,虽然以比特币为代表的数字货币已在众多领域得到应用,但目前还没有任何一种数字货币能完全替代已有货币。
另外,虽然当前的数字货币“实验”已经取得了巨大成功,但局限也很明显:
其依赖的区块链和分布式账本技术还缺乏大规模场景的考验;系统的性能和安全性
还有待提升;资源的消耗还过高等。
这些问题的解决,有待金融科技的进一步发
展。
注意严格来讲,货币(money)不等于现金或通货(cash/currency),货币的含义范围更广。
3.“去中心化”的技术难关虽然数字货币带来的预期优势可能很美好,但要设计和实现一套能经得住实用考验的数字货币并非易事。
现实生活中常用的纸币具备良好的可转移性,可以相对容易地完成价值的交割。
但是对于数字货币来说,数字化内容容易被复制,数字货币持有人可以将同一份货币发给多个接收者,这种攻击称为“双重支付攻击”(double-spend)。
也许有人会想到,银行中的货币实际上也是数字化的,因为通过电子账号里面的数字记录了客户的资产。
说的没错,有人称这种电子货币模式为“数字货币1.0”,它实际上依赖于一个前提:
假定存在一个安全可靠的第三方记账机构负责记账,这个机构负责所有的担保环节,最终完成交易。
中心化控制下,数字货币的实现相对容易。
但是,很多时候很难找到一个安全可靠的第三方记账机构来充当这个中心管控的角色。
例如,发生贸易的两国可能缺乏足够的外汇储备用以支付;汇率的变化等导致双方对合同有不同意见;网络上的匿名双方进行直接买卖而不通过电子商务平台;交易的两个机构彼此互不信任,找不到双方都认可的第三方担保;使用第三方担保系统,但某些时候可能无法连接;第三方的系统可能会出现故障或受到篡改攻击……
这个时候,就只有实现去中心化(de-centralized)或多中心化(multi-centralized)的数字货币系统。
在“去中心化”的场景下,实现数字货币存在如下几个难题:
·货币的防伪:
谁来负责对货币的真伪进行鉴定;
·货币的交易:
如何确保货币从一方安全转移到另外一方;
·避免双重支付:
如何避免同一份货币支付给多个接收者。
可见,在不存在第三方记账机构的情况下,实现一个数字货币系统的挑战着实不小。
能否通过技术创新来解决这个难题呢?
众多金融专家、科研人员向着这个方向不懈努力了数十年,创造出了许多具有深远影响的巧妙设计。
2站在巨人的肩膀上
从上世纪80年代开始,数字货币技术就一直是研究的热门,前后经历了几代演进,比较典型的成果包括e-Cash、HashCash、B-money等。
1983年,DavidChaum最早在论文《BlindSignatureforUntraceablePayments》中提出了e-Cash,并于1989年创建了Digicash公司。
e-Cash系统是首个匿名化的数字加密货币(anonymouscryptographicelectronicmoney或electroniccashsystem),基于DavidChaum自己发明的盲签名技术,曾被应用于部分银行的小额支付系统中。
e-Cash依赖于一个中心化的中介机构,这导致它最终失败。
1997年,AdamBack发明了HashCash,来解决邮件系统中DoS攻击问题。
HashCash首次提出用工作量证明(ProofofWork,PoW)机制来获取额度,该机制后来被随后出现的数字货币技术所采用。
1998年,WeiDai提出了B-money,将PoW引入数字货币生成过程中。
B-money同时是首个面向去中心化设计的数字货币。
从概念上看B-money已经比较完善,但是很遗憾,其未能提出具体的设计实现。
上面这些数字货币都或多或少地依赖于一个第三方的信用担保系统。
直到比特币的出现,将PoW与共识机制联系在一起,首次从实践意义上实现了一套去中心化的数字货币系统。
比特币依托的分布式网络无需任何管理机构,自身通过数学和密码学原理来确保所有交易的成功进行,并且,比特币自身的价值通过背后的计算力进行背书。
这也促使人们开始思考,在越来越数字化的世界中,应该如何发行货币,以及如何衡量价值。
目前,除了像比特币这样完全丢弃已有体系的分布式技术之外,仍然存在中心化代理模式的数字货币机制,包括类似PayPal这样的平台,通过跟已有的支付系统合作,代理完成交易。
现在还很难讲哪种模式将会成为日后的主流,未来甚至还可能出现更先进的技
术。
但毫无疑问,这些成果都为后来的数字货币设计提供了极具价值的参考;而站在巨人们肩膀上的比特币,必将在人类货币史上留下难以磨灭的印记。
3了不起的社会学实验
1.比特币的诞生
2008年10月31日,一位化名SatoshiNakamoto(中本聪)的人在metzdowd密码学邮件列表中提出了比特币(Bitcoin)的设计白皮书《Bitcoin:
APeer-to-PeerElectronicCashSystem》,并在2009年公开了最初的实现代码。
首个比特币于UTC时间2009年1月3日18∶15∶05生成。
但比特币真正流行开来并被人们所关注则是至少两年以后了。
作为开源项目,比特币很快吸引了大量开发者的加入,目前的官方网站bitcoin.org提供了比特币相关的代码实现和各种工具软件。
除了精妙的设计理念外,比特币最为人津津乐道的一点是发明人“中本聪”到目前为止尚无法确认真实身份。
也有人推测,“中本聪”背后可能不止一个人,而是一个团队。
这些猜测都为比特币项目带来了不少传奇色彩。
2.比特币的意义和价值直到今天,关于比特币的话题仍充满了不少争议。
但大部分人应该都会认可,
比特币是数字货币历史上,甚至整个金融历史上一次了不起的社会学实验。
比特币网络自2009年上线以来,在无人管理的情况下,已经在全球范围内7×24小时运行超过8年时间,成功处理了几百万笔交易,甚至支持过单笔1.5亿美元的交易。
更为难得的是,比特币网络从未出现过重大的系统故障。
比特币网络目前由数千个核心节点参与构成,不需要任何中心化的支持机构参与,纯靠分布式机制支持了稳定上升的交易量。
比特币首次真正从实践意义上实现了安全可靠的去中心化数字货币机制,这也是它受到无数金融科技从业者热捧的根本原因。
作为一种概念货币,比特币主要希望解决已有货币系统面临的几个核心问题:
·被掌控在单一机构手中,容易被攻击;
·自身的价值无法保证,容易出现波动;
·无法匿名化交易,不够隐私。
在前文中曾探讨过,要实现一套去中心化的数字货币机制,最关键的是要建立
一套可靠的交易记录系统,以及形成一套合理的货币发行机制。
这个交易记录系统要能准确、公正地记录发生过的每一笔交易,并且无法被恶意篡改。
对比已有的银行系统,可以看出,现有的银行机制作为金融交易的第三方中介机构,有代价地提供了交易记录服务。
如果参与交易的多方都完全相信银行的记录(数据库),就不存在信任问题。
可是如果是更大范围(甚至跨多家银行)进行流通的货币呢?
哪家银行的系统能提供完全可靠不中断的服务呢?
唯一可能的方案是一套分布式账本。
这个账本可以被所有用户自由访问,而且任何个体都无法对所记录的数据进行恶意篡改和控制。
为了实现这样一个前所未有的账本系统,比特币网络巧妙地设计了区块链结构,提供了可靠、无法被恶意篡改的数字货币账本功能。
比特币网络中,货币的发行是通过比特币协议来规定的。
货币总量受到控制,发行速度随时间自动进行调整。
既然总量一定,那么单个比特币的价值会随着越来越多的经济实体认可比特币而水涨船高。
发行速度的自动调整则避免出现通胀或者滞涨的情况。
另一方面,也要冷静地看到,作为社会学实验,比特币已经获得了巨大的成功,特别是基于区块链技术,已经出现了许多颇有价值的商业场景和创新技术。
但这绝不意味着比特币自身必然能够进入未来的商业体系中。
3.更有价值的区块链技术如果说比特币是影响力巨大的社会学实验,那么从比特币核心设计中提炼出来
的区块链技术,则让大家看到了塑造更高效、更安全的未来商业网络的可能。
2014年开始,比特币背后的区块链技术开始逐渐受到大家关注,并进一步引发了分布式记账本(distributedledger)技术的革新浪潮。
实际上,人们很早就意识到,记账相关的技术对于资产(包括有形资产和无形
资产)的管理(包括所有权和流通)十分关键;而去中心化或多中心化的分布式记账本技术,对于当前开放、多维化的商业模式意义重大。
区块链的思想和结构,正是实现这种分布式记账本系统的一种极具可行潜力的技术。
区块链技术现在已经脱离比特币网络自身,在金融、贸易、征信、物联网、共享经济等诸多领域崭露头角。
现在,除非特别指出是“比特币区块链”,否则当人们提到“区块链技术”时,往往所指已经与比特币没有什么必然联系了。
4潜在的商业价值
商业行为的典型模式为:
交易的多方通过协商和执行合约,完成交易过程。
区块链擅长的正是在多方之间达成合约,并确保合约的顺利执行。
根据类别和应用场景不同,区块链所体现的特点和价值也不同。
从技术角度一般认为,区块链具有如下特点:
·分布式容错性:
分布式网络极其鲁棒,能够容忍部分节点的异常状态;
·不可篡改性:
一致提交后的数据会一直存在,不可被销毁或修改;
·隐私保护性:
密码学保证了数据隐私,即便数据泄露,也无法解析。
随之带来的业务可能包括如下特性:
·可信任性:
区块链技术可以提供天然可信的分布式账本平台,不需要额外第三方中介机构参与;
·降低成本:
跟传统技术相比,区块链技术可能需要的时间、人力和维护成本更少;
·增强安全:
区块链技术将有利于安全、可靠的审计管理和账目清算,减少犯罪风险。
区块链并非凭空诞生的新技术,而更像是技术演化到一定程度突破应用阈值后的产物,因此,其商业应用场景也跟促生其出现的环境息息相关。
对于基于数字方式的交易行为,区块链技术能潜在地降低交易成本、加快交易速度,同时能提高安全性。
能否最终带来成本的降低,将是一项技术能否得到深入应用的关键。
所有跟信息、价值(包括货币、证券、专利、版权、数字商品、实际物品等)、信用等相关的交换过程,都将可能从区块链技术中得到启发或直接受益(见图1-1)。
但这个过程绝不是一蹴而就的,可能需要较长时间的探索和论证。
具体的商业应用案例可以参考本书后续的应用场景章节。
图1-1区块链影响的交换过程
目前,区块链技术已经得到了众多金融机构和商业公司的关注,包括大量金融界和信息技术界的领军性企业和团体。
典型企业组织如下(排名不分先后):
·Visa国际组织;
·美国纳斯达克证券交易所(Nasdaq);
·高盛投资银行(GoldmanSachs);
·花旗银行(CitiBank);
·美国富国银行(WellsFargo);
·中国人民银行;
·中国浦发银行;
·日本三菱日联金融集团;
·瑞士联合银行;
·德意志银行;
·美国证券集中保管结算公司(DTCC);
·全球同业银行金融电讯协会(SWIFT);
·国际商业机器公司(IBM);
·微软(Microsoft);
·英特尔(Intel);
·思科(Cisco);
·埃森哲(Accenture)。
5区块链定义与原理
1.定义公认的最早关于区块链的描述性文献是中本聪所撰写的文章《Bitcoin:
A
Peer-toPeerElectronicCachSystem》,但该文献重点在于讨论比特币系统,实际上并没有明确提出区块链的定义和概念,在其中指出,区块链是用于记录比特币交易账目历史的数据结构。
另外,Wikipedia上给出的定义中,将区块链类比为一种分布式数据库技术,通过维护数据块的链式结构,可以维持持续增长的、不可篡改的数据记录。
区块链技术最早的应用出现在比特币项目中。
作为比特币背后的分布式记账平台,在无集中式管理的情况下,比特币网络稳定运行了八年时间,支持了海量的交易记录,并且从未出现严重的漏洞,这些都与巧妙的区块链结构分不开的。
区块链技术自身仍然在飞速发展中,目前相关规范和标准还在进一步成熟中。
2.基本原理区块链的基本原理理解起来并不复杂。
首先,区块链包括三个基本概念:
·交易(transaction):
一次对账本的操作,导致账本状态的一次改变,如添加一条转账记录;
·区块(block):
记录一段时间内发生的所有交易和状态结果,是对当前账本状态的一次共识;
·链(chain):
由区块按照发生顺序串联而成,是整个账本状态变化的日志记录。
如果把区块链作为一个状态机,则每次交易就是试图改变一次状态,而每次共识生成的区块,就是参与者对于区块中交易导致状态改变的结果进行确认。
在实现上,首先假设存在一个分布式的数据记录账本,这个账本只允许添加、
不允许删除。
账本底层的基本结构是一个线性的链表,这也是其名字“区块链”的来源。
链表由一个个“区块”串联组成(如图2-1所示),后继区块记录前导区块的哈希值(prehash)。
新的数据要加入,必须放到一个新的区块中。
而这个块(以及块里的交易)是否合法,可以通过计算哈希值的方式快速检验出来。
任意维护节点都可以提议一个新的合法区块,然而必须经过一定的共识机制来对最终选择的区块达成一致。
图2-1区块链结构示例3.以比特币为例理解区块链工作过程以比特币网络为例,可以具体看其中如何使用了区块链技术。
首先,比特币客户端发起一项交易,广播到比特币网络中并等待确认。
网络中
的节点会将一些收到的等待确认的交易记录打包在一起(此外还要包括前一个区块头部的哈希值等信息),组成一个候选区块。
然后,试图找到一个nonce串(随机串)放到区块里,使得候选区块的哈希结果满足一定条件(比如小于某个值)。
这个nonce串的查找需要一定的时间去进行计算尝试。
一旦节点算出来满足条件的nonce串,这个区块在格式上就被认为是“合法”了,就可以尝试在网络中将它广播出去。
其他节点收到候选区块,进行验证,发现确实符合约定条件了,就承认这个区块是一个合法的新区块,并添加到自己维护的区块链上。
当大部分节点都将区块添加到自己维护的区块链结构上时,该区块被网络接受,区块中所包括的交易也就得到确认。
当然,在实现上还会有很多额外的细节。
这里面比较关键的步骤有两个:
一个是完成对一批交易的共识(创建区块结构);一个是新的区块添加到区块链结构上,被大家认可,确保未来无法被篡改。
比特币的这种基于算力寻找nonce串的共识机制称为工作量证明(Proofof
Work,PoW)。
目前,要让哈希结果满足一定条件,并无已知的快速启发式算法,只能进行尝试性的暴力计算。
尝试的次数越多(工作量越大),算出来的概率越大。
通过调节对哈希结果的限制,比特币网络控制平均约10分钟产生一个合法区块。
算出区块的节点将得到区块中所有交易的管理费和协议固定发放的奖励费(目前是12.5比特币,每四年减半),这个计算新区块的过程俗称为挖矿。
读者可能会关心,比特币网络是任何人都可以加入的,如果网络中存在恶意节点单,能否进行恶意操作来对区块链中的记录进行篡改,从而破坏整个比特币网络系统。
比如最简单的,故意不承认收到的别人产生的合法候选区块,或者干脆拒绝来自其他节点的交易等。
实际上,比特币网络中存在大量(据估计数千个)的维护节点,而且大部分节点都是正常工作的,默认都只承认所看到的最长的链结构。
只要网络中不存在超过一半的节点提前勾结一起采取恶意行动,则最长的链将很大概率上成为最终合法的链。
而且随着时间增加,这个概率会越来越大。
例如,经过6个区块生成后,即便有一半的节点联合起来想颠覆被确认的结果,其概率也仅为(1/2)6≈1.6%,即低于1/60的可能性。
当然,如果整个网络中大多数的节点都联合起来作恶,可以导致整个系统无法正常工作。
要做到这一点,往往意味着付出很大的代价,跟通过作恶得到的收益相比,得不偿失。
提示区块链结构与Git版本管理的有向无环图数据结构,在设计上有异曲同工之妙。
6区块链技术的演化与分类
区块链技术自比特币网络设计中被大家发掘关注,从最初服务数字货币系统,到今天在分布式账本场景下发挥着越来越大的技术潜力。
1.区块链的演化比特币区块链已经支持了简单的脚本计算,但仅限于数字货币相关的处理。
除
了支持数字货币外,还可以将区块链上执行的处理过程进一步泛化,即提供智能合
约(smartcontract)。
智能合约可以提供除了货币交易功能外更灵活的合约功能,执行更为复杂的操作。
这样,扩展之后的区块链已经超越了单纯数据记录的功能,实际上带有一点“智能计算”的意味;更进一步,还可以为区块链加入权限管理和高级编程语言支持等,实现更强大的、支持更多商用场景的分布式账本。
从计算特点上,可以看到现有区块链技术的三种典型演化场景,如表2-1所示。
表2-1区块链技术的三种典型演化场景
2.区块链与分布式记账记账技术历史悠久,古老的账本见图2-2。
图2-2古老的账本
现代复式记账系统(doubleentrybookkeeping)由意大利数学家卢卡·帕西奥利于1494年在《Summadearithmetica,geometrica,proportionietproportionalità》一书中最早制定。
复式记账法对每一笔账目同时记录来源和去向,首次将对账验证功能引入记账过程,提升了记账过程的可靠性。
从这个角度来看,区块链是首个自带对账功能的数字记账技术实现。
更广泛地看,区块链属于一种去中心化的记录技术。
参与到系统上的节点,可
能不属于同一组织,彼此无需信任;区块链数据由所有节点共同维护,每个维护节
点都能复制获得一份完整或部分记录的拷贝。
跟传统的记账技术相比,基于区块链的分布式账本应该包括如下特点:
·维护一条不断增长的链,只可能添加记录,而发生过的记录都不可篡改;
·去中心化,或者说多中心化,无需集中控制而能达成共识,实现上尽量采用分布式;
·通过密码学的机制来确保交易无法被抵赖和破坏,并尽量保护用户信息和记录的隐私性。
3.分类根据参与者的不同,可以分为公开(public)链、联盟(consortium)链和私
有(private)链。
·公有链,顾名思义,任何人都可以参与使用和维护,如比特币区块链,信息是完全公开的;
如果进一步引入许可机制,可以实现私有链和联盟链两种类型:
·私有链,由集中管理者进行管理限制,只有内部少数人可以使用,信息不公开;
·联盟链则介于两者之间,由若干组织一起合作维护一条区块链,该区块链的使用必须是带有权限的限制访问,相关信息会得到保护,如供应链机构或银行联盟。
目前来看,公有链更容易吸引市场和媒体的眼球,但更多的商业价值会在联盟链和私有链上落地。
根据使用目的和场景的不同,又可以分为以数字货币为目的的货币链,以记录产权为目的的产权链,以众筹为目的的众筹链等,也有不局限特定应用场景的通用链。
现有大部分区块链实现都至少包括了网络层、共识层、智能合约和应用层等结构,联盟链实现往往还会引入一定的权限管理机制。
7区块链关键问题和挑战
从技术角度讲,区块链所涉及的领域比较繁杂,包括分布式系统、存储、密码学、心理学、经济学、博弈论、控制论、网络协议等,这也就意味着大量工程实践上的技术挑战。
下面列出了目前业内关注较多的一些技术话题。
1.抗抵赖与隐私保护
·怎么防止交易记录被篡改?
·怎么证明交易双方的身份?
·怎么保护交易双方的隐私?
密码学的发展为解决这些问题提供了不少手段。
传统方案包括Hash算法、加解
密算法、数字证书和签名(盲签名、环签名)等。
随着区块链技术的应用,新出现的需求将刺激密码学的进一步发展,包括更高效的随机数产生、更高强度的加密、更快速的加解密处理等。
同时,量子计算等新技术的出现,也会带来更多的挑战,例如,RSA算法等目前商用的加密算法,在未来可能无法提供足够的安全性。
能否满足这些新的需求,将依赖于数学科学的进一步发展和新一代计算技术的突破。
2.分布式共识这是个经典的技术难题,学术界和业界都已有大量的研究成果(包括Paxos、拜
占庭系列算法等)。
问题的核心在于如何解决某个变更在分布式网络中得到一致的执行结果,是被参与多方都承认的,同时这个信息是被确定的,不可推翻的。
该问题在公开匿名场景下和带权限管理的场景下需求差异较大,从而导致了基
于概率的算法和确定性算法两类思想。
最初,比特币区块链考虑的是公开匿名场景下的最坏保证。
通过引入了“工作量证明”策略来规避少数人的恶意行为,并通过概率模型保证最后参与方共识到最长链。
算法在核心思想上是基于经济利益的博弈,让恶意破坏的参与者损失经济利益,从而保证大部分人的合作。
同时,确认必须经过多个区块的生成之后达成,从概率上进行保证。
这类算法的主要问题在于效率的低下。
类似算法还有以权益为抵押的PoS、DPoS和Casper等。
后来更多的区块链技术(如超级账本)在带权限管理的场景下,开始考虑支持更多的确定性的共识机制,包括经典的拜
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 区块 技术 软件 开发 实践 及其 核心技术 概览