1、区块链技术的调研综述报告区块链技术调研报告课 程: 老 师: 组 号: 组 员: 院 系: 计算机科学学院2018年3月22日一、区块链的起源2008年,区块链技术奠基性论文?比特币: 一种点对点电子现金系统?横空出世,该文作者中本聪首次提出了区块链的概念。中本聪认为首先,在中心化的体系内,价值分散在各中心手中,由于各中心的系统不同,各中心的互通本钱非常大;其次,由于少数中心化的机构掌握了多数的价值,因此价值的流通受制于中心化机构的体系要求,造成了一种高本钱、低效率的运作现状;最后,由于所有数据均存储于中心化机构中,更容易遭恶意破坏者的篡改。基于上述现存的问题,中本聪在区块链技术的根底上,创立
2、了比特币,也正是比特币网络使得区块链进一步完善并正式进入了公众视野。目前,以太坊、超级账本Fabric等的许多应用已经开始出现在生活中。区块链技术是构建比特币数据结构与交易信息加密传输的根底技术,该技术实现了比特币的挖矿与交易。区块链技术是指通过去中心化的方式集体维护一个可靠数据库的技术方案。该技术方案主要让区块Block通过密码学方法相关联起来,每个数据块包含了一定时间内的系统全部数据信息,并且生成数字签名以验证信息的有效性并链接到下一个数据块形成一条主链。通过区块链技术,互联网上的各个用户成为一个节点并相互连接起来,所有在此区块链架构上发布的内容都会在加密后被每一个节点接收并备份,换而言之
3、每一个节点都可以查看历史上产生的任何数据。各节点将加密数据不断打包到区块中,再将区块发布到网络中,并按照时间顺序进行连接,生成永久、不可逆向的数据链,这便形成了一个公开透明的受全部用户的监督的区块链。二、区块链的开展历程2009-2012年,经济形态以比特币及其产业生态为主;2012-2015年,区块链随着比特币进入公众视野,新生的钱包支付和汇款公司出现,区块链经济扩散到金融领域。区块链底层技术创新不断。区块链技术从比特币系统中剥离出来。2016年开始探索行业应用,出现了大量区块链创业公司。2017年ICO的炽热让区块链受到前所未有的关注。那么,产生的区块链具有什么价值呢?实际上这从区块链的特
4、性上就可以得出结论:去中心化、交易点对点、不可篡改的特性可以实现机器信任;交易不可逆、信息加密的特性可以实现价值传递;此外信息点对点、不可篡改等还可以实现智能合约。三、区块链原理 区块链Block Chain是指通过去中心化和去信任的方式集体维护一个可靠数据库的技术方案。该技术方案让参与系统中的任意多个节点(电脑),把一段时间系统内全部信息交流的数据,通过密码学算法计算和记录到一个数据块block,并且生成该数据块的指纹用于链接chain下个数据块和校验,系统所有参与节点来共同认定记录是否为真。区块链的概念首次于2008 年 11 月 1 日在论文?比特币:一种点对点的电子现金系统Bitcoi
5、n: A Peer-to-Peer Electronic Cash System?中提出,作者为自称中本聪Satoshi Nakamoto的个人或团体。上面听起来是不是很拗口?这样表达会不会好点:区块链本质上是一个去中心化的分布式账本数据库,其本身是一串使用密码学相关联所产生的数据块,具体来讲:一个随机哈希算法的结果,它唯一做的事情就是获得一些输入然后进行计算,并得到一串64位的随机数字和字母的字符串,每一个数据块中包含了屡次比特币网络交易有效确认信息,区块链就是由一连串、不重复、的数据块组成的。3.1 什么是中心化?要在淘宝上买一台电脑,交易流程是:你将钱打给支付宝支付宝收款后通知卖家发货卖
6、家发货你确认收货支付宝把钱打给卖家。在这个过程中,虽然你是在和卖家交易,但是这笔交易还牵扯到了除了你和卖家的第三方,即支付宝,你和卖家的交易都是围绕支付宝展开。因此,如果支付宝系统出了问题便会造成这笔交易的失败,因此考虑极端情况,如果支付宝跑路了或者是拿了钱不却不成认你的交易或者是支付宝所在的城市因为开G20把所有人都赶走了,那么就。在金融领域中,中心化的例子就更多了:1、银行作为中心平台嫁接借贷双方2、交易所作为中心平台嫁接投资人和上市公司3、SWIFT作为中心平台嫁接A国家的支付机构和B国家的支付机构这样不是挺好的嘛?为啥要去中心化?3.2 为什么要去中心化?1心化的处理方式就要显得简单很
7、多,就拿你在淘宝上买电脑的事情举例,你只需要和卖家交换钱和电脑,然后双方都声称完成了这笔交易,结束。其实如果只考虑两个人的交易并不能把去中心化的好处完全展示出来,设想如果有成千上万笔交易在进行,去中心化的处理方式会节约很多资源,使得整个交易自主化、简单化。2平安可靠。在区块链系统中,整个网络没有中心化的硬件或者管理机构,任意节点之间的权利和义务都是均等的,所有的节点都有能力去用计算能力投票,从而保证了得到成认的结果是过半数节点公认的结果。即使遭受严重的黑客攻击,只要黑客控制的节点数不超过全球节点总数的一半,系统就依然能正常运行,数据也不会被篡改。3去信任化,公开透明。传统的交易建立在信任的根底
8、之上,尽管信任中心平台获取了大量信息,但是从中流出的、披露的信息却极为有限,导致大量数据被浪费和隐藏。参与区块链系统的每个节点之间进行数据交换那么无需互相信任。在区块链系统中,因为整个系统的运作规那么是透明的,所有的数据内容也是公开的,因此在系统指定的规那么范围和时间范围内,节点之间不能也无法相互欺骗。4集体维护,降低本钱。在中心化网络体系下,系统的维护和经营依赖于数据中心等平台的运维和经营,本钱不可省略。区块链那么构建了一整套协议机制,系统中的数据块由整个系统中所有具有维护功能的节点来共同维护的。这些具有维护功能的节点是任何人都可以参与的,每一个节点在参与记录的同时也来验证其他节点记录结果的
9、正确性,维护效率提高,本钱降低。5排除了被中心化代理控制的风险。图23.3 谁还可以依靠?但是如果没有了中心监管平台支付宝、银行、交易所、SWIFT等权威机构,怎么能保证每笔交易的准确性和有效性呢?你付了钱收不到货怎么办?或者你借给张三钱,张三后来不成认怎么办?这就引出来一个著名的难题:拜占庭将军问题Byzantine failures,简单来讲,拜占庭帝国军队的将军们必须全体一致的决定是否攻击某一支敌军。问题是这些将军在地理上是分隔开来的,并且将军中存在叛徒。叛徒可以任意行动以到达以下目标:欺骗某些将军采取进攻行动;促成一个不是所有将军都同意的决定,如当将军们不希望进攻时促成进攻行动;或者迷
10、惑某些将军,使他们无法做出决定。如果叛徒到达了这些目的之一,那么任何攻击行动的结果都是注定要失败的,只有完全达成一致的努力才能获得胜利。 这个难题也被称为“拜占庭容错或者“两军问题,XX百科有详细解释,此处就不赘述了此问题是由莱斯利兰伯特提出的点对点通信中的根本问题,含义是在存在消息丧失的不可靠信息通道上试图通过消息传递的方式到达一致性是不可能的。因此对一致性的研究一般假设信息通道是可靠的,或不存在本问题,但实际上,信息通道往往是不可靠的, 怎么来解决这个问题呢?。简单答案就是“群众一起监管但是群众监管怎么来实现呢?举个“栗子我们先来建立一个去中心化的借贷系统:1、如果A借了B 100块钱,这
11、个时候,A在人群中大喊“我是A,我借给了B 100块钱!,B也在人群中大喊“我是B,A借给了我100块钱!,此时路人甲乙丙丁都听到了这些消息,因此所有人都在心中默默记下了“A借给了B100块钱。请注意:这个时候一个去中心化的系统就建立起来了,这个系统中不需要银行,也不需要借贷协议和收据,严格来说,甚至不需要人与人长久的信任关系比方B突然又改口说“我不欠A钱!,这个时候群众就会站出来说“不对,我的小本本上记录了你某天借了A100块钱!。2、在上述的模型中,所谓的“100块钱已经不重要了。换句话说,任何东西都可以在这个模型中交换,甚至A可以凭空创造一个东西,只要大家成认,A就可以让这个东西流通。比
12、方:A在人群中高喊一声“我创造了50个DX!,A甚至不需要知道DX是什么,也不需要关心世界上是不是真的有DX,只要大家都听到,然后在自己的小本本上记下“A有50个DX,于是A就真的有50个DX了。从此以后,A便可以声称A给了某人1个DX,只要路人甲乙丙丁都收到并且成认了这一信息,那A就算完成了这次交易,哪怕世界上没有DX。你现在脑海中是不是浮现出了三个字“比特币3、假设过了很长一段时间,A凭空创造的DX已经在这个系统中流通了起来,大家都开始认可了DX。但是这个系统中一共就只有50个DX,于是有人动了坏心思,他在人群中高呼“我有10个DX!怎么办?大家是直接在本本上记下他有10个DX么,这样不是
13、人人都可以伪造DX了么?4、为了防止这种现象发生,A决定在A创造DX的时候打上标记更准确地说,A是给A喊的那句“我创造了50个DX打上标记,比方标记为001,这样以后在每一笔交易的时候,A在高喊“A给了某某1个DX!的时候,会附加上额外的一句话:“这1个DX的来源是记为001的那条记录,A的这句话标记为002!。我们再抽象一点,某人喊话的内容的格式就变成了:“这句话编号xxx,上一句话的编号是yyy,再上句话编号是zzz.我给了某某1个DX!,这样就解决了伪造的问题。其实上述模型就变成一个简化的中本聪第一版比特币区块链协议。 也就是说在群中的监督下,交易发生并且不可被逆转。但是为什么群众愿意帮
14、助记录呢?5、为什么群众会听话记账?为了鼓励群众帮A传话和记账,A决定给第一个听到他喊话并且记录在小本本上的人奖励:1个DX,这个DX是整个系统对你幸苦记账的报酬,而你记录了这句话之后,要马上告诉其它人你已经记录好了,让别人放弃继续记录这句话,并给你自己的记录编号让别人有据可查,然后你再把A的话加上你的记录编号一起喊出来,供下一个人记账。当这个规那么定下以后,这个系统中一定会出现一批人,他们开始竖着耳朵监听周围发出的声音,以抢占第一个记账的权利。对的,你脑海中是不是又浮现出了“比特币挖矿的字眼?关于比特币挖矿,有个很形象的例子:单身汪们要找女票,国民岳母说我有好多女儿,这样吧我给你们出点题目,
15、解出一个就给其中一个姑娘的微信号。单身汪们疯狂竞争,想破脑袋去解题。只要其中一只汪解出一道题,就立马得意洋洋地昭告天下,示威全部单身汪,这个姑娘是我的啦,你们放弃吧。其他单身汪们即使不服也没有方法,惆怅懊恼也不是个事儿啊,还是麻溜地立马去解下一道题目吧。这只喜赢姑娘的幸运小汪被岳母认可后还能得到25个货币单位的彩礼,简直人生赢家。6、群众听谁的?在这个系统中,如果A和另一个人C几乎同时地喊出一句:“我看到了!。由于听众所处的位置不同,一定会有人先听到A说的那句话,而另外一些人那么先听到C的那句话,如果我们规定只能有一个人说出这句话,那到底这句话是谁说的?如果不加任何条件,那么上述的情况一定会这
16、样开展:一局部人认为这句话是A说的,在听到这句话之后开始记账,之后他们所做的所有事情都是基于这个事实,并且随着这个信息一次次的传下去,这条信息链会越来越深;而另外一群认为是C先说这句话的人,也会按照这样的趋势开展。这样,原本是一条唯一的信息链,在我们喊出“我看到了这句话之后,就分叉了!?这会导致怎样的情况呢?按照我们的设想,应该每个人的小本本上记录的东西都是一样的,都是一条可以把所有信息串联起来的链条。但是在这一刻,他们小本本上记录的东西不一样了!这还怎么玩?以后还怎么确定交易和信息的真实性!?为了解决这个问题,A又追加了新的规那么:每个人在记录小本本的时候,需要脱鞋然后用脚拿笔,在小本本上用
17、正楷体书写(即参加:工作量证明Prove of Work,一种哈希算法)!有了这个规定,由于用脚写字难度很大,每个人至少需要10分钟才能写完,而且由于每个人用脚写字的熟练度不通,写完这句话所用的时间也不同,因此一定会有人先写完然后高呼“我写完了!那句话是A喊的!,这样其它正在写这句话的人便会停笔,然后在小本本上重新开始写“那句话是A写的,上一句的编号是xxx.,然后系统继续周而复始重复此动作。下面是一个有趣的比喻:“群众听谁的中本聪破解“拜占庭将军问题的算法“在小本本上记录比特币挖矿“脱鞋用脚写字比特币挖矿难度“脱鞋写字速度算力“脱鞋子鞋子规那么工作量证明链看完这个例子,让我们再回到理论的高度
18、,无论多大的系统或者多小的网站,一般在它背后都有数据库。那么这个数据库由谁来维护?在一般情况下,谁负责运营这个网络或者系统,那么就由谁来进行维护。如果是微信数据库肯定是腾讯团队维护,淘宝的数据库就是阿里的团队在维护。大家一定认为这种方式是天经地义的,但是区块链技术却不是这样。如果我们把数据库想象成是一个账本:比方支付宝就是很典型的账本,任何数据的改变就是记账型的。数据库的维护我们可以认为是很简单的记账方式。在区块链的世界也是这样,区块链系统中的每一个人都有时机参与记账。系统会在一段时间内,可能选择十秒钟内,也可能十分钟,选出这段时间记账最快最好的人,由这个人来记账,他会把这段时间数据库的变化和
19、账本的变化记在一个区块block中,我们可以把这个区块想象成一页纸上,系统在确认记录正确后,会把过去账本的数据链接chain在这张纸上,然后把这张纸发给整个系统里面其他的所有人。然后周而复始,系统会寻找下一个记账又快又好的人,而系统中的其他所有人都会获得整个账本的副本。这也就意味着这个系统每一个人都有一模一样的账本,这种技术,我们就称之为区块链技术Blockchain,也称为分布式账本技术。由于每个人计算机都有一模一样的账本,并且每个人计算机都有着完全相等的权利,因此不会由于单个人计算机失去联系或宕机,而导致整个系统崩溃。既然有一模一样的账本,就意味着所有的数据都是公开透明的,每一个人可以看到
20、每一个账户上到底有什么数字变化。它非常有趣的特性就是,其中的数据无法篡改。因为系统会自动比拟,会认为相同数量最多的账本是真的账本,少局部和别人数量不一样的账本是虚假的账本。在这种情况下,任何人篡改自己的账本是没有任何意义的,因为除非你能够篡改整个系统里面大局部节点。如果整个系统节点只有五个、十个节点也许还容易做到,但是如果有上万个甚至上十万个,并且还分布在互联网上的任何角落,除非某个人能控制世界上大多数的电脑,否那么不太可能篡改这样大型的区块链。该局部总结因此,区块链解决的核心问题不是“数字货币,而是在信息不对称、不确定的环境下,如何建立满足经济活动赖以发生、开展的“信任生态体系。四、区块链技
21、术 技术特点 区块链是一种共享的分布式数据库技术。尽管不同报告中对区块链的一句话介绍措辞都不相同,但以下4个技术特点是共识性的。1. 去中心化Decentralized:图1的左侧描述了当今金融系统的中心化特征,右侧描述的是正在形成的去中心化金融系统,其没有中介机构,所有节点的权利和义务都相等,任一节点停止工作都会不影响系统整体的运作;图1,出自花旗报告Digital Disruption: How FinTech is Forcing Banking to a Tipping Point2. 去信任Trustless:系统中所有节点之间无需信任也可以进行交易,因为数据库和整个系统的运作是公开
22、透明的,在系统的规那么和时间范围内,节点之间无法欺骗彼此;3. 集体维护Collectively Maintain:系统是由其中所有具有维护功能的节点共同维护的,系统中所有人共同参与维护工作;4. 可靠数据库Reliable Database:系统中每一个节点都拥有最新的完整数据库拷贝,修改单个节点的数据库是无效的,因为系统会自动比拟,认为最屡次出现的相同数据记录为真。图2,出自高盛报告Blockchain: Putting Theory into Practice图2为简化起见,仅展示了6处保存数据库副本的节点;在3个交易序列中,前2个交易的数据和签名得到了所有6个节点的验证,但第三个交易的
23、位置5没有通过验证,将被其它节点的“一致意见更改。4.2 公有链、私有链、侧链区块链按照访问和管理权限可以分为公有链Public Blockchain和私有链或联盟链Private Blockchain。公有链是完全开放的区块链,全世界的人都可以参与系统维护工作,这使得公有链还具有以下2个特点。1. 开源Open Source:由于整个系统的运作规那么公开透明,这个系统是开源系统;2. 匿名Anonymity:由于节点之间无需信任彼此,所有节点也无需公开身份,系统中每一个节点的匿名和隐私都受到保护。私有链或联盟链在开放程度和去中心化程度方面有所限制,参与者需要被提前筛选,数据库的读取权限可能是
24、公开的,也可能像写入权限一样只限于系统的参与者。公有链的典型代表是比特币区块链,任何人都可以通过交易或挖矿读取和写入数据。私有链或联盟链的典型案例是Ripple和R3 CEV,前者目前为属于联盟成员的银行类金融机构提供跨境支付效劳,希望取代环球同业银行金融电讯协会SWIFT的跨境转账平台,打造全球统一的网络金融传输协议;后者旨在推动制定适合金融机构使用的区块链技术标准。侧链Sidechains是用于确认来自于其它区块链的数据的区块链,通过双向挂钩Two Way Peg机制使比特币、Ripple币等多种资产在不同区块链上以一定的汇率实现转移。侧链进一步扩展了区块链技术的应用范围和创新空间,使区块
25、链支持包括股票、债券、金融衍生品等在内的多种资产类型,以及小微支付、智能合约、平安处理机制、真实世界财产注册等;侧链还可以增强区块链的隐私保护。所谓“多种资产在不同区块链上转移其实并不会实际发生。以比特币为例,侧链的运作机制是,将比特币暂时锁定在比特币区块链上,同时将辅助区块链上的等值数字货币解锁;当辅助区块链上的数字货币被锁定时,原先的比特币就被解锁。4.3 关键技术比特币区块链的关键核心技术,包括用Hashcash演算法来进行工作量证明,且交易过程采用椭圆曲线数位签章演算法来确保交易平安,并在每笔交易与每个区块中使用屡次Hash函数以及Merkle Tree,同时也使用时间戳来确保区块序列
26、比特币区块链的关键核心技术,包括采用Hashcash演算法来进行工作量证明,让区块链中的各节点有时机参与验证,到达公正性,且交易过程采用椭圆曲线数 位签章演算法来确保交易平安,并在每笔交易与每个区块中使用屡次Hash函数以及Merkle Tree,不只是为了节省储存空间,更重要的是藉由将前一个区块的Hash值参加新区块中,让每个区块环环相扣,也因此做到所谓的可追踪且不可窜改的特性,同时也使用时间戳来确保区块序列,以下便依序解释这些关键技术。4.3.1、采用工作量证明到达去中心化及公正性首先,最关键的便其工作量证明机制(Proof of Work,POW),这是一个可以让每个参与的节点可共同参与
27、交易验证的方式,来实现一个能多方共同维护的单一系统,并共享同一份记录交易的帐本,以形成一个基于零信任根底,却能实现去中心化的P2P网路系统。工作量证明是让任一运算节点,花费时间和运算资源来计算出一组数学公式的结果,且要完成一次有效的工作量证明,需经过一连串地尝试与失败。不过,一旦这个数值被算出来后,其他参与节点也可用相关的数学公式,便能很容易去验证这个值是否有效。比特币区块链采用Hashcash演算法(杂凑现金演算法)作为工作量证明,让各节点经由POW计算来产生每一个有效的新区块,再经由其他节点验证并接受。进行POW计算的过程也被称作挖矿,很多人用解一道数学题、或是解一个数独来形容,不过,怎样
28、才是真的算出一个有效的新区块,这些节点到底在算什么?由于每个区块中Block Header会包含许多固定的值,其中只有Nonce值为一随机值,因此每个节点进行POW计算时要算的就是,藉由不断替换这个Nonce值,来让这个区块的Block Header Hash值,小于一个被设定好的难度目标值(Difficulty Target),至于为什么要小于这个目标值,那么是因为这个难度值意味着每个区块在理论上应该要被产生完成。这里提到的难度值(Difficulty)是指,节点要运算出低于困难度目标值的Hash值,平均需花多久时间,也就是平均要完成一次POW的时间。而比特币区块链目前设定为,大约每10分钟
29、会有节点成功算出新的区块,不过这10分钟只是基于理论值,实际每个新区块产生的时间,有可能只需要17秒(第407062个区块的实际产生时间),也有可能需要20分钟以上(第407068个区块的实际产生时间)。Difficulty可动态调整,目前每产生2016个区块会调整一次难度,以每10分钟产生一区块估算,大约是每两周会调整一次Difficulty。由于POW具有一定的难度,因此无法预期哪个运算节点可以最快算出新区块,藉此来确保交易验证的公正性。4.3.2 每笔交易采椭圆曲线数位签章演算法加密比特币区块链便采用椭圆曲线数位签章演算法(ECDSA),与另一种RSA演算法,都属于公开金钥加密演算法(P
30、ublic Key Cryptography),公开金钥加密技术在1970年代被创造,也称为双金钥密码平安系统,每个使用者会拥有公开金钥(Public Key)与私密金钥(Private Key)这两把钥匙,公开金钥可让其他人知道,而私密金钥那么只有本人知道。当A要传送一笔讯息或交易给B时,需使用B的公开金钥来将这份交易加密,而这个加密过的讯息或交易,只有使用B的私密金钥才能解开。在比特币区块链中,比特币区块链便采用椭圆曲线数位签章演算法,每一个比特币区块链中的节点使用者,会同时拥有这两把金钥,以及一次性使用的比特币位址(Address),公开金钥可让区块链网络中的其他人知道,而私密金钥那么须
31、自行保管,可用来接收货币、进行电子签章或是发送货币,而Address就像电子邮件一样可用来当作存取比特币的地址,使用者可重复取得新的Address,且可以在离线状态下产生,不过,每个Address只能使用一次。在比特币区块链中,每一枚电子货币被视为一串数位签章,使用者要进行比特币交易时,必须将前一笔交易以及收款方的公开金钥经由Hash产生数位签章,加到电子货币那串数位签章的前方。RSA加密演算法是一种非对称的加密演算法,利用两个质数作为加密与解密用的两把钥匙,金钥长度约在40个位元到1024位元。不过比特币所采用的ECDSA能算出更短的金钥长度,也就是能够使用相对较少的资源,做到与RSA相同的
32、平安性。在ECDSA演算法中,由私密金钥算出公开金钥很容易,但要从公开金钥推回私密金钥却很困难。4.3.3 Hashcash演算法及多种Hash函数确保资料不被窜改前面提到比特币区块链采用Hashcash演算法来进行工作量证明,Hashcash可将任意长度的资料经由Hash函数转换为一组固定长度的代码,原理是基于一种密码学上的单向杂凑函数(One Way Hash Function),这种函数很容易被验证,但是却很难破解,还回推出原本的值。先前Hashcash演算法也被用来做阻挡垃圾邮件的机制。常使用的单向杂凑函数包括MD5、SHA-1、SHA-256、SHA-384及SHA-512等,MD5的Hash值长度为128位元,虽然广为使用,但因长度不够较容易破解,SHA-1的Hash值长度有
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1