区块链技术入门基础

论坛 期权论坛 期权     
四电老陈   2019-10-27 11:23   2336   0
一、区块链的本质
区块链是什么?一句话,它是一种特殊的分布式数据库。


首先,区块链(Blockchain)的主要作用是储存信息。任何需要保存的信息,都可以写入区块链,也可以从里面读取,所以它是数据库。
其次,任何人都可以架设服务器,加入区块链网络,成为一个节点。区块链的世界里面,没有中心节点,每个节点都是平等的,都保存着整个数据库。你可以向任何一个节点,写入/读取数据,因为所有节点最后都会同步,保证区块链一致。


二、区块链的最大特点
分布式数据库并非新发明,市场上早有此类产品。但是,区块链有一个革命性特点。
区块链没有管理员,它是彻底无中心的。其他的数据库都有管理员,但是区块链没有。如果有人想对区块链添加审核,也实现不了,因为它的设计目标就是防止出现居于中心地位的管理当局。
正是因为无法管理,区块链才能做到无法被控制。否则一旦大公司大集团控制了管理权,他们就会控制整个平台,其他使用者就都必须听命于他们了。
但是,没有了管理员,人人都可以往里面写入数据,怎么才能保证数据是可信的呢?被坏人改了怎么办?请接着往下读,这就是区块链奇妙的地方。


三、区块
区块链由一个个区块(block)组成。区块很像数据库的记录,每次写入数据,就是创建一个区块。


每个区块包含两个部分。
区块头(Head):记录当前区块的特征值
区块体(Body):实际数据
区块头包含了当前区块的多项特征值。
生成时间
实际数据(即区块体)的哈希
上一个区块的哈希

这里,你需要理解什么叫哈希(hash),这是理解区块链必需的。


所谓”哈希”就是计算机可以对任意内容,计算出一个长度相同的特征值。区块链的 哈希长度是256位,这就是说,不管原始内容是什么,最后都会计算出一个256位的二进制数字。而且可以保证,只要原始内容不同,对应的哈希一定是不同的。
举例来说,字符串123的哈希是a8fdc205a9f19cc1c7507a60c4f01b13d11d7fd0(十六进制),转成二进制就是256位,而且只有123能得到这个哈希。(理论上,其他字符串也有可能得到这个哈希,但是概率极低,可以近似认为不可能发生。)
因此,就有两个重要的推论。
推论1:每个区块的哈希都是不一样的,可以通过哈希标识区块。
推论2:如果区块的内容变了,它的哈希一定会改变。

四、 Hash 的不可修改性
区块与哈希是一一对应的,每个区块的哈希都是针对”区块头”(Head)计算的。也就是说,把区块头的各项特征值,按照顺序连接在一起,组成一个很长的字符串,再对这个字符串计算哈希。
Hash = SHA256( 区块头 )
上面就是区块哈希的计算公式,SHA256是区块链的哈希算法。注意,这个公式里面只包含区块头,不包含区块体,也就是说,哈希由区块头唯一决定,
前面说过,区块头包含很多内容,其中有当前区块体的哈希,还有上一个区块的哈希。这意味着,如果当前区块体的内容变了,或者上一个区块的哈希变了,一定会引起当前区块的哈希改变。
这一点对区块链有重大意义。如果有人修改了一个区块,该区块的哈希就变了。为了让后面的区块还能连到它(因为下一个区块包含上一个区块的哈希),该人必须依次修改后面所有的区块,否则被改掉的区块就脱离区块链了。由于后面要提到的原因,哈希的计算很耗时,短时间内修改多个区块几乎不可能发生,除非有人掌握了全网51%以上的计算能力。
正是通过这种联动机制,区块链保证了自身的可靠性,数据一旦写入,就无法被篡改。这就像历史一样,发生了就是发生了,从此再无法改变。


每个区块都连着上一个区块,这也是”区块链”这个名字的由来。


五、采矿
由于必须保证节点之间的同步,所以新区块的添加速度不能太快。试想一下,你刚刚同步了一个区块,准备基于它生成下一个区块,但这时别的节点又有新区块生成,你不得不放弃做了一半的计算,再次去同步。因为每个区块的后面,只能跟着一个区块,你永远只能在最新区块的后面,生成下一个区块。所以,你别无选择,一听到信号,就必须立刻同步。
所以,区块链的发明者中本聪(这是假名,真实身份至今未知)故意让添加新区块,变得很困难。他的设计是,平均每10分钟,全网才能生成一个新区块,一小时也就六个。
这种产出速度不是通过命令达成的,而是故意设置了海量的计算。也就是说,只有通过极其大量的计算,才能得到当前区块的有效哈希,从而把新区块添加到区块链。由于计算量太大,所以快不起来。
这个过程就叫做采矿(mining),因为计算有效哈希的难度,好比在全世界的沙子里面,找到一粒符合条件的沙子。计算哈希的机器就叫做矿机,操作矿机的人就叫做矿工。


六、难度系数
读到这里,你可能会有一个疑问,人们都说采矿很难,可是采矿不就是用计算机算出一个哈希吗,这正是计算机的强项啊,怎么会变得很难,迟迟算不出来呢?
原来不是任意一个哈希都可以,只有满足条件的哈希才会被区块链接受。这个条件特别苛刻,使得绝大部分哈希都不满足要求,必须重算。
原来,区块头包含一个难度系数(difficulty),这个值决定了计算哈希的难度。举例来说,第100000个区块的难度系数是 14484.16236122。


区块链协议规定,使用一个常量除以难度系数,可以得到目标值(target)。显然,难度系数越大,目标值就越小。


哈希的有效性跟目标值密切相关,只有小于目标值的哈希才是有效的,否则哈希无效,必须重算。由于目标值非常小,哈希小于该值的机会极其渺茫,可能计算10亿次,才算中一次。这就是采矿如此之慢的根本原因。
前面说过,当前区块的哈希由区块头唯一决定。如果要对同一个区块反复计算哈希,就意味着,区块头必须不停地变化,否则不可能算出不一样的哈希。区块头里面所有的特征值都是固定的,为了让区块头产生变化,中本聪故意增加了一个随机项,叫做 Nonce。
Nonce 是一个随机值,矿工的作用其实就是猜出 Nonce 的值,使得区块头的哈希可以小于目标值,从而能够写入区块链。Nonce 是非常难猜的,目前只能通过穷举法一个个试错。根据协议,Nonce 是一个32位的二进制值,即最大可以到21.47亿。第 100000 个区块的 Nonce 值是274148111,可以理解成,矿工从0开始,一直计算了 2.74 亿次,才得到了一个有效的 Nonce 值,使得算出的哈希能够满足条件。
运气好的话,也许一会就找到了 Nonce。运气不好的话,可能算完了21.47亿次,都没有发现 Nonce,即当前区块体不可能算出满足条件的哈希。这时,协议允许矿工改变区块体,开始新的计算。


七、难度系数的动态调节
正如上一节所说,采矿具有随机性,没法保证正好十分钟产出一个区块,有时一分钟就算出来了,有时几个小时可能也没结果。总体来看,随着硬件设备的提升,以及矿机的数量增长,计算速度一定会越来越快。
为了将产出速率恒定在十分钟,中本聪还设计了难度系数的动态调节机制。他规定,难度系数每两周(2016个区块)调整一次。如果这两周里面,区块的平均生成速度是9分钟,就意味着比法定速度快了10%,因此接下来的难度系数就要调高10%;如果平均生成速度是11分钟,就意味着比法定速度慢了10%,因此接下来的难度系数就要调低10%。
难度系数越调越高(目标值越来越小),导致了采矿越来越难。


八、区块链的分叉
即使区块链是可靠的,现在还有一个问题没有解决:如果两个人同时向区块链写入数据,也就是说,同时有两个区块加入,因为它们都连着前一个区块,就形成了分叉。这时应该采纳哪一个区块呢?


现在的规则是,新节点总是采用最长的那条区块链。如果区块链有分叉,将看哪个分支在分叉点后面,先达到6个新区块(称为”六次确认”)。按照10分钟一个区块计算,一小时就可以确认。


由于新区块的生成速度由计算能力决定,所以这条规则就是说,拥有大多数计算能力的那条分支,就是正宗的区块链。


九、总结
区块链作为无人管理的分布式数据库,从2009年开始已经运行了10年,没有出现大的问题。这证明它是可行的。
但是,为了保证数据的可靠性,区块链也有自己的代价。一是效率,数据写入区块链,最少要等待十分钟,所有节点都同步数据,则需要更多的时间;二是能耗,区块的生成需要矿工进行无数无意义的计算,这是非常耗费能源的。
因此,区块链的适用场景,其实非常有限。
不存在所有成员都信任的管理当局
写入的数据不要求实时使用
挖矿的收益能够弥补本身的成本
如果无法满足上述的条件,那么传统的数据库是更好的解决方案。


目前,区块链最大的应用场景(可能也是唯一的应用场景),就是以比特币为代表的加密货币。



十、比特币
   比特币是中本聪(Satoshi Nakamoto,传说的比特币创始人,日裔美国人)于2009年提出的一种虚拟数字货币,特点是没有中心化的发行机构,总量固定,为2100万枚,而且不是一次性发行,需要由矿工挖矿产生。由于是去中心化的结构,信任就需要依靠密码学和共识机制技术来达到。
  区块链是比特币衍生出来的一种通用技术,它实现了去中心化的数据库模型,比特币可以规为区块链1.0,因为它没有智能合约的概念。区块链关键技术就包括密码学加解密和共识机制,区块链一般是用来和具体业务逻辑相结合,这就需要依赖智能合约了,智能合约提供了不受人为干扰的执行模式。
ICO首次币发行,源自股票市场的首次公开发行(IPO)概念,是区块链项目首次发行代币,募集比特币、解决以太坊等通用数字货币的行为。


十一、问题解答(非专业)
1. 问:比特币和区块链有什么区别和联系?
答:比特币是国外一个大牛(据说叫中本聪)在2008年末、2009年初发明的,用的技术就是区块链。也就是说,比特币是世界上第一种“去中心化”的数字货币,为了发明它,中本聪搞出了一种新技术,他把它命名为“区块链”。因此,区块链是伴随着比特币产生的一种新技术。
通俗地说,比特币是产品,是一种具体的数字货币,而区块链是相对通用的技术。
打个比方,瓦特发明了蒸汽机,他也发明了一整套相关的技术。但技术不是产品本身,别人用他的技术,也能做出相似的蒸汽机。


2. 问:比特币为什么那么贵?
答:因为比特币不是随意能生成的,必须满足严苛的条件,需要大量计算。当然,每个人都可以通过自己的计算,找到比特币,这就是“去中心化”。只要你能找到,就是你的,这和现在各国央行印刷纸币完全不同。
但是,这种通过计算找到比特币的门槛可不低,否则谁都可以找到比特币了。而且随着时间流逝,现在要找出新的比特币,门槛越来越高,要用大量的计算机,消耗大量电力,才能找到新的比特币。这在币圈内叫做“挖矿”,很形象。
正因为寻找新的比特币越来越难,比特币的总数量,和对它需求的人数相比,就相对稀缺了。这导致比特币的价格很高。
比特币的价格高峰出现在2017年12月17日,将近20000美元一枚。后来大幅跳水,又跌回3000多美元,目前(2019年10月底)大约8800多美元。当然,这里的“一枚”也不是真实货币,只是一个计量单位。网络上的一个比特币,就是“一枚”了。




3. 问:比特币到底值多少钱?
答:不知道。
因为这种无形的东西,说值多少钱都可以。比特币刚推出的时候,一枚连一美分都不值。因为刚开始没人知道它的优点,用户少,而比特币的生成速度却很快。诞生10分钟后,第一批50个比特币就生成了,后来每10分钟生成50个,直到总量达到1050万个。这个时候,比特币根本不值钱。
但是随着用户增多,而比特币的生成速度大幅减慢,价格就高了。从几美分涨到成千上万美元,这涨速确实惊人。现在“挖矿”消耗的电力、硬件折旧和人工成本,基本上在8500美元左右。也就是说,目前的价格,和“挖矿”成本差不多,或者稍高一点。
按常理,这样的价格应该是比特币的“底价”了,至少是底部区域。但这是因为很多人都在追捧比特币,形成了“共识”。但换个角度想想,李笑来说的话也不是没有道理哈!
追捧比特币的是傻逼吗?我不知道。
所以我也不知道比特币值多少钱。每个人自己判断吧。


4. 问:市场上现在有很多数字货币,它们和比特币有什么区别?
答:比特币是完全“去中心化”的数字货币,而且产生艰难,总量有限,新产生的比特币的成本很高,因而具有一定的信誉。而其他数字货币,我不敢说100%,但至少99%的数字货币,基本上都是骗子。


这是因为:比特币的代码是公开的,任何人都可以对它进行修改,生成自己的一套数字货币系统。因此,理论上可以产生无穷个数字货币公司,每种数字货币也可以无限量供应,更可以集中控制。
那么,其他公司“生产”的数字货币,“价值”到底有多少,可想而知。


5. 问:这么说来,还是比特币有价值了?
答:也不能这么说。我只是说:相对于其他数字货币,比特币更有价值,更值得信赖。但是比特币到底值多少钱?能不能一直做下去,我也不知道。
而且,比特币毕竟是第一种去中心化的数字货币,以后很有可能出现新的、更好的数字货币。比如一个或几个国家、大公司,全力推出新的数字货币,也有可能淘汰比特币。
打个比方,瓦特的蒸汽机很牛,但是技术在发展。别人用他的一套技术,不断进行改良,肯定越做越好。现在他发明蒸汽机已经200多年了,现在的蒸汽机,肯定比瓦特时代要好得多。


6. 问:说了半天,还没说到区块链呢,到底什么是区块链?
答:区块链是一种软件技术。说得简单点,就是“分散存储”和“档案全留”。也就是说,比特币的所有交易信息,在网上都有保留,而且是重复存储在成千上万台计算机上。
比如,A把比特币卖给了B,这条交易记录不是存储在一台计算机上,而是存储在网上尽量多的计算机上,至少几百台以上。而且,这些比特币过去所有的交易记录,也全都保留在网上。
这种分散存储和信息保留,让人极难篡改。因为如果想篡改交易记录,就得改成千上万台机器上的数据,这几乎是不可能的。迄今为止,还没有发生过篡改现象。因此,从实际应用角度来说,比特币是不可篡改和不可伪造的。加上它本身具有一定的成本和稀缺性,因此具有一定的信用。因此,比特币具有货币的特征。
正因为如此,它才受一部分人追捧。
凡是真正采用区块链技术的数字货币,也都应该有这种特征。请注意,要“真正采用”区块链技术才行噢。


7. 问:为了保证“去中心化”,区块链数据要广泛存储,这形成了“各个区块”和各个“链”。但是,这是否意味着交易效率很低呢?
答:你很聪明!是这样的。
要完成一个交易,一个比特币要从用户A转到用户B的名下,要更新网上成千上万台机器,这个速度非常非常慢。现在交易一次,动不动就需要至少十个小时,就是在更新网上无数台机器中的数据。而在整个网络上,全世界的人之间自由买卖比特币,一天的总交易笔数大约是6000笔左右。


8. 问:一天的总交易量才6000笔?这能保证大规模商业应用吗?
答:当然不能。现在成规模的商业应用,每天都是百万笔以上。一天的股票交易笔数是上千万,微信、支付宝日均交易笔数都上亿,高峰时甚至在十亿笔以上(如春节),是比特币的上万倍都不止。
而且,由于一枚比特币价格昂贵,经常拆分成更小的单位,就像一元钱可以分为十角,或者100分那样。但比特币太贵了,所以拆得更小,现在比特币的最小交易量是0.00001。如果一枚比特币是1万美元,意味着最小交易金额大约是0.1美元。用这种方式,保证尽量多的人能来投资(或投机)。
这样,比特币在网上的交易数据,更为纷乱复杂。比如一个人A,他手里有10枚比特币,另一个人B,只想买0.01枚(因为没钱啊),如果A找不到其他买家,并且觉得B的出价合适,就会卖给B 0.01枚。另一方面,B陆续从100个人手里买了5枚比特币,然后整体卖给了大款C,那么,这5枚比特币的信息是支离破碎的,因为要保留B从以前100个人手里买来的信息。
所以,比特币的交易速度越来越低,而在网上保留的信息量,却越来越庞大。每天的总成交笔数,很可能还不如一个乡镇的小型集贸市场,根本无法满足大规模商业应用。


9. 问:乖乖,比特币的交易居然以0.00001枚为最小单位!还得保留过去所有的交易数据,这么乱七八糟的数据保留在网上,可以想象是多么庞杂!我很奇怪,这么个庞大的去中心化系统,真能保证所有交易数据都保持一致性吗?
答:的确很难。
这倒不是因为软硬件的性能跟不上 ---- 跟不上就慢点,没关系。而是因为:比特币的系统越来越庞大,技术肯定也要不断发展。但是开发比特币技术的有很多程序员,他们基于对技术的理解不同,就会产生讨论,继而产生争论。于是,不可避免地,“分叉”产生了。
所谓“分叉”,就是一群人开始搞另一种技术。当然,基本技术都一样,只是在局部有所不同。但这点不同,也足以导致产生分叉了。这实际上是比特币的分裂。
比特币(BTC)在2017年8月发生了第一次硬分叉,产生了“比特币现金(BCH)”,后来又分裂出“比特币黄金(BTG)”、“比特币钻石(BCD)”、“超级比特币(SBTC)”……目前分叉已经越来越多,大概有几十个……


10. 问:等等!我已经晕了!这么多变种都叫比特币吗?怎么交易?对比特币的价格有没有影响?


答:严格来说,只有传统的比特币还能叫比特币,新出现的变种或分叉,不能叫比特币了。这也是2017年比特币暴跌的原因。比特币第一次分叉后,价格坚持了一段,随着以后分叉越来越多,就开始暴跌了,这就是2018年比特币一度跌至不足4000美元的重要原因。
因此,比特币的不断分叉,对价格有比较明显的负面影响。各组程序员之间,吵得非常厉害。
但这也是必然的,我说的是,既然区块链是“去中心化”技术,以它为基础的比特币,以后分叉是必然的,而且会越分越多。
打个比方,不好意思,我拿宗教打比方吧。一神教的始祖是犹太教,犹太教后来出现了正统派、改革派、保守派、重建派。当然,更有名的是它后来出现一个变种,叫基督教;后来又出现了另一个变种,叫伊斯兰教。基督教后来又出现了更细的变种:东正教和新教,因此传统的教派就叫天主教。伊斯兰教内也出现了逊尼派、什叶派,乃至派内之派。
在局外人看来,它们都是一神教,尊奉同一个上帝(或真主),最多就是简单地分为三大一神教。但在内部,教徒们知道各派的严格区分,绝不会混淆。
这个比方可能不太恰当,但或许有助于理解比特币的分叉或分裂。


11. 问:真够乱的。算了,还是回到区块链。我听宣传区块链的人说,区块链的一大优势是提高交易和计算速度。他们说,“去中心化”可以提高交易速度,因为大家可以分头交易,不用集中处理。但他们讲的术语太多,我也听不懂,感觉很高深的样子。我只是奇怪:既然区块链可以大幅提高交易速度,为什么不大幅提高比特币的交易速度呢?
答:你这个问题很尖锐啊,你怎么总是问到点儿上?
从我上面的介绍就可看出:在数据量越大、数据极度去中心化、存储量极为庞大的情况下,交易速度必然越来越慢。这是没办法的事,每做一笔交易,都要更新网上无数的数据,都需要极大的通信量。
而且,比特币从诞生到现在,虽然只有十一年时间,但由于它吸引了全世界的眼球,所以全世界最聪明的人,最有实力的公司,无不想提高比特币的交易速度。所以全世界都在研究怎么提高区块链的效率。但是到今天为止,这个问题解决不了,可见是多么困难。
比特币一天只能交易6000笔左右,而支付宝、微信每天转账上亿笔,速度还很快,这足以说明,目前的集中式管理的数据处理和交易速度,要远远高于去中心化的区块链。


12. 问:那还搞什么区块链?
答:话不能这么说。我们应该换个角度想想:正因为区块链有集中式管理不可比拟的优势,如果解决了它的短板,也就是数据存储和处理的低效率问题,区块链不就可以有大规模应用价值了吗?
谁能解决这个问题,谁必然执未来信息技术之牛耳。
要解决这个问题,也不是没有可能。现在量子计算机和通信的速度,要比传统计算机和网络至少快一亿倍,如果量子计算和通信的技术成熟了,区块链技术或许就可实现大规模商业应用。


13. 问:但是,量子计算机和通信很难搞吧?
答:没错,是很难搞。但我还是那句话,正因为难搞,才要去搞,而且谁搞成了,谁必然执未来信息技术之牛耳。


14. 问:据说我国在量子通信上是世界前列?潘建伟那帮人是不是很牛?
答:呵呵,别跑题,还是回来继续说区块链。


15. 问:据说国家对量子通信和区块链的支持力度很大?看来,我要去投资区块链技术了?
答:前景是光明的,但道路是极其艰难的。
我们完全支持国家对区块链技术的支持,也应该对未来抱有美好的期望,也希望人类能实现区块链技术的大突破。如果这种大突破由我国完成,更值得我们骄傲和自豪!

答:但是,这是国家和大公司的事,是极少数技术牛人的事。99.999%以上的人一定要搞清楚:对于前沿技术,自己愿意免费试用,还是真金白银地去投资支持?
比如,某公司号称开发了很牛的区块链技术,并且做出了应用。我们可以去免费试用(也鼓励这么做),也可以买入该公司的股票或数字货币,这些都是用实际行动来支持,都很好。
但是,这两种支持是不一样的。前者你不用花钱,或者只花很少的钱;后者你要花钱,可能花很多钱,而且有可能亏损。


16. 问:所以我们既要坚决支持区块链技术的发展,但脑子里一定要清楚,投资买相关股票或者数字货币,是另一回事?
答:是的。
我相信,我们所有人都衷心支持发展区块链技术,支持所有的技术创新。我们要衷心支持国家大力发展区块链技术,也要努力去尝试新技术。但要提防一些别有用心的公司或个人,比如像李笑来、徐小平这样的,高喊着比特币很好,疯狂收割韭菜。


17. 问:你讲的我居然都听懂了!果然没什么高深的术语,以前我听别人讲区块链,什么分布式账本、非对称加密、共识机制、智能合约、中央帐簿、积分奖励、创世区块……我彻底晕了,不明觉厉,只是觉得非常高深。
答:呵呵,记住,区块链的核心思想是“去中心化”交易。为了保证这一点,必须广泛地分布式存储,由此带来一大堆新问题,进而需要人们的进一步解决。
当然,区块链也不是横空出世的全新技术。在它出现前,人们已经研究分布式存储、并行计算至少三十年了,这方面的成果也不少,很多在局部都很难继续突破了。不过,“中本聪”能在前人基础上,搞出这么一套技术,也够牛的。
打个比方,就像瓦特发明蒸汽机,其实在瓦特发明蒸汽机以前,早就有蒸汽机“1.0”和“2.0”版,瓦特的发明算是“3.0”版。不过瓦特这个3.0版很牛,它是一系列发明的集合,让蒸汽机脱离玩具阶段,人类正式进入了工业革命时代。


18. 问:你这个比方,是不是说现在的区块链技术相当于当年瓦特的发明?
答:有这个意思,我这是从技术角度来说的。但目前的区块链技术是否进入实用阶段了呢?当然没有,它仍然代表了人类一种美好的理想,也就是“去中心化”,所以才需要进一步大力发展。不过我们一定要认识到技术突破的艰巨性。
再次强调一遍:国家和公司,大力发展区块链技术是完全必要的,我们也完全支持;但作为普通人,投资上一定要慎之又慎,一定要充分地意识到:国家愿意大力发展的事物,绝不代表愿意炒作。我想,这也是国家的本意。
[iframe]https://v.qq.com/iframe/preview.html?width=500&height=375&auto=0&vid=c3013hqgpha[/iframe]
区块链与数字货币
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:
帖子:
精华:
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP