文/韩大楠
原文首发币乎
大家好,我是大楠呀!
这是「币圈小白进阶计划」的第二篇,希望大家多多给出建议。
谢谢大家!
我们不说什么是区块链,区块链范围太大,小白说起来有困难,我们先挑简单地来说,就说那些小而泛的概念。
区块链涉及了几个比较重要的概念,我们从这些开始说。
先给大家列个目录,方便查看,如下。
目录
一、区块
二、哈希算法
三、公钥、私钥以及钱包地址
四、时间戳
五、Merkle(默克尔)树根的哈希值
一、区块
什么是区块?
区块就是数据储存的单位,而区块链,就是把无数个区块按照先后顺序链接在一起,就是区块链。
由区块相互连接形成单向链式结构,其中第一个区块被称为创世区块。
创世区块是指之前没有生成任何区块的最初的区块,也就是最原始的区块。
而区块呢,就是数据储存的单位,其中包括区块头和区块主体。
那区块头是什么?它其实就是记录库的角色,记录当前区块的元信息。
区块主体又是什么?它就是交易的实际数据。
其中,区块头包括当前的版本号、上一区块的哈希值、时间戳、随机数、Nonce(证明工作量的计算参数)、Merkle(默克尔)树根的哈希值。
区块主体包括交易数量占用的字节数、交易数量以及交易数据。
二、哈希算法
什么是哈希算法?
官话咱们就不说了,简单来说,它是一种单向密码,就是哈希算法从明文到密文以一种不可逆的方式,无论输入是什么数字格式、文件等,输出都是固定长度的散列函数。只能加密,不能解密(就是有固定的路线,一条路走到黑,不可倒推)。
就像下面的图,不论输入的字符多了还是少了,他的输出都是固定大小。
「币圈小白进阶计划」那些小而泛的概念三、公钥、私钥以及钱包地址
现在我们使用的是对称加密方式,也就是用户名和密码,但在区块链中,有公钥和私钥,它们叫做不对称加密方式。
先说公钥,为什么它叫公钥?
“公”,顾名思义,就是公开,也就是公开的密钥。它是全透明的,对整个节点开放,任何人都能看到,公开以后也没有风险。
公钥,通常用于加密会话密钥、验证数字签名,或加密可以用相应的私钥解密的数据。
说完公钥,我们说说私钥。
“私”,就是自己的,别人不能看到的,私钥只有你自己知道,私钥需要自己保管。密钥具有唯一性,如果让别人知道,那么你的币就没了,钱就没了,哭都没地哭去。
最后,我们来说说钱包地址。
钱包地址,这个很好理解吧,相当于你的银行卡号,这个也是公开的,对全节点开放,不用担心有风险,其实就是字符串而已。
那么,公钥、私钥以及钱包地址,到底有什么紧密的关系?
1)私钥和公钥关系
私钥只能自己知道,不能告诉别人,公钥是全透明的,公开的;
公钥和私钥会以成对的方式出现;
公钥加密的数据,只能有对应的私钥才能解密,同样,私钥加密的数据,只能有对应的公钥才能解密;
如果可以用公钥解密,则必然是对应的私钥加的密,同样也是,如果可以用私钥解密,则必然是对应的公钥加的密。
以上这段,可能有点绕,但确实是没错的,你可以好好推导一下,绕出来就好了。
2)公钥、私钥、钱包地址的关系
首先,私钥生成公钥和公钥生成地址是单向哈希函数。
因为用私钥可以推导出公钥,而公钥也很容易推导出钱包地址,也就是用私钥很容易推导出公钥和钱包地址。
但你想要反过来推,用公钥和钱包地址得知密钥,那是根本就不可能的。
因为是单向哈希函数,就不可能轻易让你得到私钥,要让你得到了私钥,别人的财产岂不是被你一扫而空了?
四、时间戳
时间戳是什么?
从区块一产生就盖上了时间戳,按照时间顺序,依次链接下一个区块。它记录着每一次的交易,每一个加上时间戳生成的区块都是独一无二的。
因为区块链的特性是不可篡改,所以,如果想要篡改时间戳,那么生成的哈希值就会产生变化,就会出现错误,就是一个无效的数据。
如果想要篡改成功,那么就需要改动下一个区块,与此同时要改动后面所有的区块,当然,后面的区块也是在不断增加的,想要改动区块是特别难的。
时间戳,在区块链中扮演了“公证人”的角色,它比传统的公证制度更加可信,具有更加公正、可信、全面的保护。
比如说,我发表一篇文章,还很担心遭到侵权,那我把文章保存在区块链上,文章就会盖上时间戳,就是独一无二的哈希,文章的版权也就属于我。如果将来有人抄袭我的文章,那么这个时间戳就能证明这篇文章属于我,其他人的复制都是无效的。
时间戳就这样与众不同!
五、Merkle(默克尔)树根的哈希值
什么是Merkle(默克尔)呢?
默克尔树(哈希树)是一种二叉树,由一组叶节点、一组中间节点和一个根节点构成。
「币圈小白进阶计划」那些小而泛的概念如图所示。
最下面的D0、D1、D2、D3是存储数据或哈希值,往上,N0、N1、N2、N3是D0、D1、D2和D3进行hash运算后得到的hash值;继续往上,N4和N5是中间节点,N4是N0和N1经过hash运算后得到的哈希值,N5是N2和N3经过hash运算得到的哈希值;接着往上,Root节点是N4和N5经过hash运算后得到的哈希值,这就是这颗默克尔树的根哈希。
来了这张图,配了这段介绍,那就好说话了,总结起来就是这样的:
1)默克尔树是从下往上逐层计算的,叶子节点是基础,依次往上,逐级计算,都是根据相邻的节点计算出来的。
2)底层数据(D0、D1、D2、D3)发生任何变动,都会都会影响到父节点,一直到树根。
好了,以上就是大楠今日来的学习成果,理出来了那些在我看来所谓的“那些小而泛的概念”,这是大楠的第二篇「币圈小白进阶计划」系列学习文。
感谢各位能多多给出建议,你们的意见将是我前进的动力,再次感谢大家!
我是大楠,从简书来的币圈小白;一个内向还特怂的姑娘;
绿洲群常驻活动主持人,被人称“主持一姐”;
简书有声的小主编,还会努力写文、创造价值;
也是一个刚来币乎的小白,想学习区块链,也想努力生存;
我是韩大楠,欢迎来撩。
微信:15222567477,加大楠也要备注的呢,就叫简书
扫我呀~
网友评论