小二(我):客官,欢迎来到区块链客栈,请问需要点餐吗?
客人:嗯,我要份招牌菜,叫区块链是吧,这是什么菜?
小二(我):哦,就让我来介绍下我们客栈招牌的区块链这道菜吧。
客人:洗耳恭听。
区块链这个名词如果不是行内人士大都比较陌生,虽然可能听过,小二我还问过我老妈子是否听过区块链,老妈子点点头嗯了一声,表示自己偶尔会在新闻看到过这个词,听说过。嘛,至少一般人多多少少都会听到过这个词,在各种地方。所以说非业内人士对这个词也比较熟悉,当然熟悉是因为听说过,陌生则是因为不清楚这究竟是个啥。
想必客官肯定听说过比特币,我相信客官您的回答是肯定的,您会告诉我比特币就是最近很火又炒得很贵的一种虚拟货币,就像炒股一样的性质。小二我帮客官您更正一下比特币,它是一种数字货币,它跟股票也不一样。我给您介绍的区块链跟比特币有着莫大的关系,如若客官您想简单了解比特币的话可以看看这里https://blog.csdn.net/qq_37860963/article/details/81946588。
区块链是实现比特币的底层技术,所以没有区块链技术,就没有比特币。区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式,本质是一个分布式账本,即一个去中心化的数据库,是一串使用密码学算法相关联产生的数据块, 而这些数据块就是组成区块链的基本结构单元,名叫区块(block),一个个区块相连从而形成了区块链(blockchain)。
小二我现在先稍微停下来,想必客官需要来个中场休息(笑),我来给您放两张图缓缓眼睛。
好了客官,让我们继续这个话题。
区块里面包含了两样原料,才能形成区块链这道菜:区块头和区块主体结构。区块主体里面包含了交易数据。而区块头包含了三样调料:
1. 用于连接前面的区块、索引自父区块哈希值的数据;
2. 挖矿难度、Nonce(随机数,用于工作量证明算法的计数器)、时间戳;
3. 能够总结并快速归纳校验区块中所有交易数据的Merkle(默克尔)树根数据。
这三样调料才是区块的精华所在。
这里小二我说一下这三个调料:
1)哈希算法:它是一种加密算法,是区块链中保证交易信息不被篡改的单向密码机制。在接收一段明文后,哈希算法以一种不可逆的方式将其转化为一段长度较短、位数固定的散列数据。而区块链一般用SHA-256算法对区块进行加密,这种算法的输入长度为256位,输出的是一串长度为32字节的随机散列数据。
区块链通过哈希算法对一个交易区块中的交易信息进行加密,并把信息压缩成由一串数字和字母组成的散列字符串。区块链的哈希值能够唯一而准确地标识一个区块,区块链中任意节点通过简单的哈希计算都可以获得这个区块的哈希值,计算出的哈希值没有变化也就意味着区块中的信息没有被篡改。
2)至于公钥和私钥等小二往后再告诉客官您。
3)时间戳:我们在生活中都会看到很多时间戳的应用的,就比如我们微信、QQ聊天的时候每发出一个信息上面都会有对应的时间显示,再或者是各种应用系统登录的时候都会记录登录的时间和地点,为了防止账号登录异常而记录的信息,再或者是调试中总会有log日志,里面记录出现bug的时间的错误内容,这都是时间戳的应用。
而在区块链中就是记录每一笔交易的时间,所以只要时光机还没发明出来,每一笔交易都是不可逆,不可攥改的,因为一旦篡改,生成的哈希值就会变化,从而变成一个无效的数据。每一个时间戳会将前一个时间戳也纳入其随机哈希值中,这一过程不断重复,依次相连,最后会生成一个完整的链条。区块链中的时间戳从区块生成的一刻起就存在于区块之中,它对应的是每一次交易记录的认证,证明交易记录的真实性。
4)Merkle树结构:区块链利用Merkle树的数据结构存放所有叶子节点的值,并以此为基础生成一个统一的哈希值。Merkle树的叶子节点存储的是数据信息的哈希值,非叶子的节点存储的是对其下面所有叶子节点的组合进行哈希计算后得出的哈希值。同样地,区块中任意一个数据的变更都会导致Merkle树结构发生变化,在交易信息验证比对的过程中,Merkle树结构能够大大减少数据的计算量,毕竟,我们只需验证Merkle树结构生成的统一哈希值就可以了。
至于客官如果想要了解更多的merkle tree结构的知识,小二我也是往后再给客官您说。
现在客官现在是否相对之前更了解区块链呢?
客官:嗯嗯,确实获益良多,现在我有点吃撑了,我得慢慢消化消化这道菜(摸摸脑瓜)。
小二(我):多谢客官的光临,我在这给您一张优惠卡《图说区块链》,我推荐给客官您看看徐明星写的一本名叫《图说区块链》的书,这本书把区块链概念的知识写得很全面,小二我很多的东西都在这本书学到的哦,另外我们客栈菜式多着呢,等您再来光临(微笑)。