大家好,我是三也,欢迎关注币小也说区块系列文章
一、区块链的本质
可以简单理解为一种特殊的分布式数据库,但是区块链不是为了存储数据,它是多种技术的集合。
其次,区块链的节点不属于任何公司,每个节点都是平等的,都保存着一份一样的完整的数据库数据。每次你写入/读取数据,如果有新的区块生成,所有节点都先进行同步,所以可以保证区块链数据是一致。
二、区块链的一些理解
在互联网界,要么是用空间换时间,这样效率和速度快,要么是时间换空间,这样节省成本。而区块链即耗空间,每个节点都要存相同的数据,又非常慢,每次读写都要同步一次,这么说是完全“违反”软件开发原则的。
互联网的所有节点都属于一个中心化的公司集团,但是区块链的节点是不全属于一个公司的,可能是个人的(即使是一些公司的服务,但是任何人都可以看到这个数据,不再是一个公司控制了),这样成本的问题就可以降低,因为被大家分摊了。至于速度方面,仍有各种解决方案来提高(比如分层设计的闪电网络、侧链技术的RSK、并发技术的EOS、还有DGA等等)。如果想达到商用的速度性能,目前是远远不能实现的,所以很多区块链项目更多的是概念和模型。至于耗费这么多的空间和时间,只是在现有技术下实现区块链不可篡改的特性所做的一个取舍!
因此区块链的最大特点是不可篡改而不是去中心化。
这里还要认识到的一点是去中心化并不等于分布式技术,而是数据对所有人公开透明,不是由一个或少数几个公司控制,是大家一起”投票“共同“治理”。
很多人盲目的追求完全去中心化,抨击pos,dpos这些共识算法不是纯粹的区块链去中心的特性(后面会详细讲共识算法)。其实任何事物都无法完全去中心化。因为这样效率太低,每次读和写都要同步全部的数据,如果数据少还好,但是数据量很大的时候,他要花相当一部分时间去做这个事情。所以为了业务需要,很多项目会部分的牺牲去中心化,来提高效率。去中心化和效率是无法完美兼得的,只有根据具体业务去协调。
技术是用来解决问题的,追求绝对是不切实际的,技术的堆砌也是无用的,是否需要用到这个技术,需要反问这个技术解决什么问题!
很多人看白皮书认为很多新的技术,看起来很完美的描述,就认为这个项目是好项目,但是80%以上是吹出来的。为什么用这个技术,这个技术具体解决什么问题,都是需要去考究的,这些是有门槛的。
回到我们的主题,区块链不可篡改到底是怎么样的呢?
比如区块链有10个节点,我们理解成有10本账本,我花出去10元,我在写入自己账本的同时,还要把这个记录同步到另外的9本账本,这样就保持了数据的一致,即使我这个账本坏了,其他账本仍然有记录,而你要更改的话,你需要把所有的账本都改了,所以这种概率是极小的,相对来说就是无法篡改的了。(具体的原理在第四大点,Hash的不可修改性里面解释)
因此在多方参与的情况下,区块链可以有效保障链上数据的难篡改,但无法解决链外数据上链的真实性(后面会专题讨论)。当然还有其他问题,比如参与积极性,参与可行性,即成本和持续发展可行性问题。
总之,数据的不可篡改不能单方面解决信任问题,必须要结合其他的东西,这点是需要谨记的。而去中心化,区块自治等只是辅助,是让整个区块链模型更加健壮。
三、区块链的基本概念
说了这么多,我们对区块链理解也只是印象中的概念。任何学科都需要使用概括语言,简明的解释概念。接下来我们来看看学术的概念含义。
区块链基本概念包括:
区块(Block):记录一段时间内发生的交易和状态结果,是对当前账本状态的一次共识;
链(Chain):由一个个区块按照发生顺序串联而成,是整个状态变化的日志记录。
交易(Transaction):一次操作,导致账本状态的一次改变,如添加一条交易或修改记录;
(一)区块
记录一段时间内发生的交易和状态结果,是对当前账本状态的一次共识。而每个区块包含区块头(Head)和区块体(Body)两个部分。区块头用来记录当前区块的特征值,区块体是实际数据。
区块头包含了当前区块的生成时间、实际数据(即区块体)的哈希、上一个区块的哈希等多项特征值。
所谓"哈希"就是计算机可以对任意内容,计算出一个长度相同的特征值(一个长串的数字字母组合)。区块链的 哈希长度是256位,这就是说,不管原始内容是什么,最后都会计算出一个256位的二进制数字。而且可以保证,只要原始内容不同,对应的哈希一定是不同的。
举例来说,字符串123的哈希是a8fdc205a9f19cc1c7507a60c4f01b13d11d7fd0(十六进制),转成二进制就是256位,而且只有123能得到这个哈希。(理论上,其他字符串也有可能得到这个哈希,但是概率极低,可以近似认为不可能发生。)
因此,就有两个重要的推论。
推论1:每个区块的哈希都是不一样的,可以通过哈希标识区块。
推论2:如果区块的内容变了,它的哈希一定会改变。
(二)区块链
每个区块都连着上一个区块,这些区块按照发生顺序串联在一起代表的整个状态变化的日志记录就是区块链。
(三)交易
交易:又称贸易、交换、互市,是买卖双方对有价值物品及服务进行互通有无的行为。可以是以、货币为交易媒介的过程,也可以是以物易物。
区块链的交易更多的是以代币的形式进行交换记录的,和银行卡转账一样简单,只需要自己的地址,对方地址,转账金额,手续费即可。那怎么说明币是自己的,只要拥有私钥,就能操作对应地址的所有代币,就代表你拥有了这个地址上的代币。所以一切需要私钥的项目绝大部分是骗子。而交易记录需要写入区块的时候,只能是获取了权益的矿工才有权利写入(这个写入权益是按照一定规则去竞争的,比如比特币是按照算力的)。
另外一个区块大小是固定大小的(比特币的是1M),能容纳交易数是有限的(比特币可以同时进行数千笔)。当前转账的人比较多,你可能要排队等你前面的交易全部完成。而矿工们会选择手续费比较高的优先进行记账。
四、 Hash 的不可修改性
区块链的不可修改性,其实也就是Hash的不可修改性,可以简单理解为,每个区块对应一个唯一的Hash值。
区块与哈希是一一对应的,每个区块的哈希都是针对"区块头"(Head)计算的。也就是说,把区块头的各项特征值,按照顺序连接在一起,组成一个很长的字符串,再对这个字符串计算哈希。
Hash = SHA256( 区块头 )
上面就是区块哈希的计算公式,SHA256
是区块链的哈希算法。注意,这个公式里面只包含区块头,不包含区块体,也就是说,哈希由区块头唯一决定,
前面说过,区块头包含很多内容,其中有当前区块体的哈希,还有上一个区块的哈希。这意味着,如果当前区块体的内容变了,或者上一个区块的哈希变了,一定会引起当前区块的哈希改变。
这一点对区块链有重大意义。如果有人修改了一个区块,该区块的哈希就变了。为了让后面的区块还能连到它(因为下一个区块包含上一个区块的哈希),该人必须依次修改后面所有的区块,否则被改掉的区块就脱离区块链了。由于后面要提到的原因,哈希的计算很耗时,短时间内修改多个区块几乎不可能发生,除非有人掌握了全网51%以上的计算能力。
正是通过这种联动机制,区块链保证了自身的可靠性,数据一旦写入,就无法被篡改。这就像历史一样,发生了就是发生了,从此再无法改变。
任何技术只有在解决了某个业务问题时才有用,区块链也不例外。区块链可以解决多个问题。
知识星球一:币小也
1、从小白到老韭菜的升级之路,详细教程帮助你打怪升级。
2、专业看K线,看白皮书课程
3、筛选海量优质国内外项目,告别矮矬穷劣币。
https://t.zsxq.com/B2juBUf
我是三也,请分享公众号任意文章到朋友圈并截图,注明需要加入的微信群,比如量化交易,或区块链项目交流,验证后拉你入群。