趁本期热点话题,来谈谈什么是区块链,财神站在一个开发者的角度解释,希望读者看完后非常清晰。
一、什么是区块链
区块链本质上是一种电子帐本,所有矿工基于数学公式达成了一种共识,各自出力维持这个大帐本,这个帐本是由一个又一个Block(区块)链接而成,在这些Block里面记录了过去一段时间的帐本流水,一量写入到Block里,便很难以更改。
因为每个矿工都具有一份完整的帐本,任何一个新的矿工加入,都会从其它的矿工那里下载帐本,因此完整的帐本存在了世界的各个角度,因此区块链也叫“分布式大帐本”。
这个帐本公开,人人可查帐,所有交易信息一目了解,且不可更改,因此解决了信任问题。
一个帐本技术,有这么大的威力吗?
当然,所谓的货币发展史,不过就是帐本技术的迭代,从原始的打绳结记帐,到用竹子记帐,用纸记帐,中央银行的电子记帐,再到去中心化的区块链式记帐。
区块链长啥样
每一个区块包括两部分:
区块头
1. 哈希ID: 就是这个区块的哈希值,就像身份证一样,唯一的
2. 前一区块哈希ID: 上一个区块的哈希值
3. 当前区块的高度: 代表这是第几个区块了
4. 默克尔树根: 将所有交易的哈希值生成一颗Merkle树,不懂没关系
5. 时间戳: 区块生成的时间,用数字表示
6. 随机数: 一个随机数,或挖矿找到的方程解
...
区块体
当前区块打包的所有交易信息
财神画一个图,看完就基本上懂了,假如还没懂,再看一遍。
为什么说区块链不可更改?
奥秘就在当前区块的哈希值的生成有关。
哈希函数是一个非常有意思的函数,任何数据经过哈希函数计算后,都会得到一个长度固定的字符串,而且这个计算是单向的,且两个输入值只要有一点点不同,出来的结果也是相差很多。
而一个区块的哈希值,是将区块头里的{ 区块高度+时间截+随机值+默克尔树根 +前一区块高度的哈希值} 为输入,再经过 哈希函数 计算得出一个新的哈希值。
试想,如果你去修改一个区块高度100的Block里的信息,比如常说的篡改交易信息,只要有一笔交易有变化,那默克尔树根 就有变化,那么区块100的哈希值就会有变化,否则矿工验证一个区块的时候就会发现不对。
而区块100的哈希值变化后,区块101的哈希值也要跟着变化,因为上面的公式里写了,哈希计算要包括前一区块高度的哈希值。
这样,如果你要修改区块高度为100里的任何信息,就必须修改100以后所有区块的哈希值,就是说你必须战胜所有矿工,连续出块,这在算力很小的情况下不可能,就和你连续中500万是一个道理。
因此,区块链变得不可篡改。不可篡改的帐本,往往具有高度的可信度。因此,我们信任区块链技术,正如「 In Math We Trust 」一样。
这仅仅是区块链里的一部分知识,别急,关注公-号 【财神下山】了解更多。原创不易,转帖请注明。
—END —