欢迎来到天天文库
浏览记录
ID:46580737
大小:601.38 KB
页数:11页
时间:2019-11-25
《《区块链入门教程》-学习区块链从[起点区块链]开始》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、《区块链⼊⻔教程》作者:阮⼀峰区块链(blockchain)是眼下的⼤热⻔,新闻媒体⼤量报道,宣称它将创造未来。可是,简单易懂的⼊⻔⽂章却很少。区块链到底是什么,有何特别之处,很少有解释。下⾯,我就来尝试,写⼀篇最好懂的区块链教程。毕竟它也不是很难的东⻄,核⼼概念⾮常简单,⼏句话就能说清楚。我希望读完本⽂,你不仅可以理解区块链,还会明⽩什么是挖矿、为什么挖矿越来越难等问题。需要说明的是,我并⾮这⽅⾯的专家。虽然很早就关注,但是仔细地了解区块链,还是从今年初开始。⽂中的错误和不准确的地⽅,欢迎⼤家指正。⼀、区块链的本质区块链是什么?⼀句话,它是⼀种特殊的
2、分布式数据库。⾸先,区块链的主要作⽤是储存信息。任何需要保存的信息,都可以写⼊区块链,也可以从⾥⾯读取,所以它是数据库。其次,任何⼈都可以架设服务器,加⼊区块链⺴络,成为⼀个节点。区块链的世界⾥⾯,没有中⼼节点,每个节点都是平等的,都保存着整个数据库。你可以向任何⼀个节点,写⼊/读取数据,因为所有节点最后都会同步,保证区块链⼀致。⼆、区块链的最⼤特点分布式数据库并⾮新发明,市场上早有此类产品。但是,区块链有⼀个⾰命性特点。区块链没有管理员,它是彻底⽆中⼼的。其他的数据库都有管理员,但是区块链没有。如果有⼈想对区块链添加审核,也实现不了,因为它的设计⺫标
3、就是防⽌出现居于中⼼地位的管理当局。正是因为⽆法管理,区块链才能做到⽆法被控制。否则⼀旦⼤公司⼤集团控制了管理权,他们就会控制整个平台,其他使⽤者就都必须听命于他们了。但是,没有了管理员,⼈⼈都可以往⾥⾯写⼊数据,怎么才能保证数据是可信的呢?被坏⼈改了怎么办?请接着往下读,这就是区块链奇妙的地⽅。三、区块区块链由⼀个个区块(block)组成。区块很像数据库的记录,每次写⼊数据,就是创建⼀个区块。每个区块包含两个部分。•区块头(Head):记录当前区块的特征值•区块体(Body):实际数据区块头包含了当前区块的多项特征值。•⽣成时间•实际数据(即区块体)
4、的哈希•上⼀个区块的哈希这⾥,你需要理解什么叫哈希(hash),这是理解区块链必需的。所谓"哈希"就是计算机可以对任意内容,计算出⼀个⻓度相同的特征值。区块链的哈希⻓度是256位,这就是说,不管原始内容是什么,最后都会计算出⼀个256位的⼆进制数字。⽽且可以保证,只要原始内容不同,对应的哈希⼀定是不同的。举例来说,字符串123的哈希是a8fdc205a9f19cc1c7507a60c4f01b13d11d7fd0(⼗六进制),转成⼆进制就是256位,⽽且只有123能得到这个哈希。(理论上,其他字符串也有可能得到这个哈希,但是概率极低,可以近似认为不可能
5、发⽣。)因此,就有两个重要的推论。推论1:每个区块的哈希都是不⼀样的,可以通过哈希标识区块。推论2:如果区块的内容变了,它的哈希⼀定会改变。四、Hash的不可修改性区块与哈希是⼀⼀对应的,每个区块的哈希都是针对"区块头"(Head)计算的。也就是说,把区块头的各项特征值,按照顺序连接在⼀起,组成⼀个很⻓的字符串,再对这个字符串计算哈希。Hash=SHA256(区块头)上⾯就是区块哈希的计算公式,SHA256是区块链的哈希算法。注意,这个公式⾥⾯只包含区块头,不包含区块体,也就是说,哈希由区块头唯⼀决定,前⾯说过,区块头包含很多内容,其中有当前区块体的哈
6、希,还有上⼀个区块的哈希。这意味着,如果当前区块体的内容变了,或者上⼀个区块的哈希变了,⼀定会引起当前区块的哈希改变。这⼀点对区块链有重⼤意义。如果有⼈修改了⼀个区块,该区块的哈希就变了。为了让后⾯的区块还能连到它(因为下⼀个区块包含上⼀个区块的哈希),该⼈必须依次修改后⾯所有的区块,否则被改掉的区块就脱离区块链了。由于后⾯要提到的原因,哈希的计算很耗时,短时间内修改多个区块⼏乎不可能发⽣,除⾮有⼈掌握了全⺴51%以上的计算能⼒。正是通过这种联动机制,区块链保证了⾃⾝的可靠性,数据⼀旦写⼊,就⽆法被篡改。这就像历史⼀样,发⽣了就是发⽣了,从此再⽆法改变
7、。每个区块都连着上⼀个区块,这也是"区块链"这个名字的由来。五、采矿由于必须保证节点之间的同步,所以新区块的添加速度不能太快。试想⼀下,你刚刚同步了⼀个区块,准备基于它⽣成下⼀个区块,但这时别的节点⼜有新区块⽣成,你不得不放弃做了⼀半的计算,再次去同步。因为每个区块的后⾯,只能跟着⼀个区块,你永远只能在最新区块的后⾯,⽣成下⼀个区块。所以,你别⽆选择,⼀听到信号,就必须⽴刻同步。所以,区块链的发明者中本聪(这是假名,真实⾝份⾄今未知)故意让添加新区块,变得很困难。他的设计是,平均每10分钟,全⺴才能⽣成⼀个新区块,⼀⼩时也就六个。这种产出速度不是通过命
8、令达成的,⽽是故意设置了海量的计算。也就是说,只有通过极其⼤量的计算,才能得到当前区块的有效哈
此文档下载收益归作者所有