持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第1天,点击查看活动详情
前言
一直说区块链,那么到底怎么从技术方向去理解呢,可以简单的想象一个链式结构数据,但是每个数据是怎么链接起来的,得从哈希算法说起。
哈希算法
基本每个区块链网络,都离不开这个哈希算法,首先得知道什么是哈希。哈希是一个独一无二的固定长度的字符串,用来代表一段数据。推荐一个网站,可以结合来看哈希变化 andersbrownworth.com/blockchain/…
在这里我们不断变化输入的值,可以是任何长度,下面的hash值也会跟着不断变化。这里用的的SHA256哈希算法,
其中以太坊使用的Keecak256哈希算法,也是属于一种算法,不管是哪个区块链网络,哈希和哈希算法是一样的,某些算法会有一些不同,但是概念是一样的。
区块Block
区块链字面表示就一个个区块连接起来,那么区块怎么理解。我们可以理解为要解决一个问题,并且难度会不断变化的,这里是要寻找一个hash前四位为4个0的 nonce值,那么我们的计算机就会不断的进行计算,让nonce不断变化,然后计算data的hash值,寻找到符合结果的nonce值,那么就是解决了问题,矿工们就可以打包区块。
比特币网络利用的也是类似这种“难题”,nonce是答案,这也就是区块链挖矿的过程。
区块链
区块链就是将矿工们挖出来的区块链连在一起,如图每个区块都会有一个prev值,它会指向上一个区块的hash。
区块理解为将区块高度、nocne、data结合进行哈希运算。
区块链是将 区块高度、nonce、data、prev 进行哈希运算。
所以一旦其中任何一个区块又变化了,那么它后面跟着的区块都会变化,这条链就不匹配了,如果想要重新匹配那么就得重新计算,这需要很多的计算。
一般第一个区块的pre都为0 也叫创世区块,最后一个区块包含了所有信息。
区块链分叉问题
区块链是分布式的,就是拥有很多的节点,每个节点都会互相同步,一旦其中一个节点改变了数据,那么它就需要重新计算,直到解决难度,重新成为一条有效的链。
那么这时候就会有2条不同的链,他们最后一个区块的hash是不同的,表示这条链已经产生分叉,这时候可能会产生两部分矿工,一部分选择这条链,另外一部分选择另外条链,继续互相工作下去(挖矿)。
总结
区块链网络离不开哈希算法,一切基于这个哈希算法,通过复杂的方式生成密码学证明,密码学是操作其他的基础。同时怎么证明自己,那么就利用到了公私钥,通过私钥签名,公钥验证签名,可以证明自己,验证数据。