社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  区块链

科普 | 区块链上的区块到底是什么?

Unitimes • 7 年前 • 685 次点击  
点击上方“Unitimes” 可以订阅哦!


unitimes.io

全球视角,独到见解


比特币是基于区块链技术的,大家都知道这一点。但是,区块链是什么?更确切地说,区块链上的各个组成部分——区块——到底是什么?


区块链是一条数据区块连成的链条。每个区块可以被认为是一个账簿中的每一页。区块由几个不同的部分组成,这几个部分大体上可以被分成区块头和区块体。


区块头


区块头分为6个部分:

  1. 软件的版本数;

  2. 前一个区块的哈希值;

  3. 默克树的根哈希;

  4. 自1970-01-01 T00:00(协调世界时)以来的时间(精确到秒);

  5. 当前的难度目标;

  6. 随机数.


软件的版本数


软件版本数在大多数情况下不重要。然而,有了一个特定的版本数,矿工就可以表明他支持的是哪个协议的决定。


前一个区块的哈希值


前一个区块的哈希值可以说是区块链的链。因为前一个区块包含在新区块的哈希值内,区块链的所有区块都是构建在彼此之上的。没有这个部分,每个区块之间就没有联系,杂乱无章。


默克树的根哈希


一个区块中包含的所有交易都可以在哈希中被聚合,这就是默克树的根哈希。


自1970-01-01 T00:00(协调世界时)以来的时间(精确到秒)


这是区块本身的时间戳。以秒来计算从1970年1月1日以来的时间。


当前难度目标


这个目标表明新的哈希必须有多小才能声明有效性。换句话说,每个哈希都有一个 bits 大小。bits 的目标越低,找到匹配的哈希越难。哈希值开头有很多零的哈希币比没有零的哈希小。


随机数


随机数是由工作证明增加的变量。通过这种方式,矿工可以猜测有效的哈希,及小于目标的哈希。


这六个部分形成区块头。区块头在比特币中担任一个非常重要的角色,因为它将所有的区块连接在了一起。大家可以把它想象成一辆卡车的驾驶位。


区块体


区块体就相当于卡车的装载空间,包含所有该区块确认过的交易。


当矿工构建一个区块时,这个区块会验证交易。也就是说,矿工会检查发送者的资金是否充足。他可以很容易地从区块链中读取这些信息。例如,如果发送者想要发送10个比特币,那么该矿工就会查看他在过去的区块中是否收到过10个比特币。


区块中的这些交易不仅仅是一个列表,而在“默克树”中。


什么是默克树?


默克树的名字来自数学家拉尔夫·默克。他发现,单个哈希中可以展示大量信息。为此需要首先对数据本身进行哈希运算,得出的哈希值再次进行哈希运算并聚合。最后,将默克树聚合为一个哈希。最后一个哈希也称为根哈希,即默克树的根。它以相对较短的字符表示其“叶子”(单个交易)和“树枝”(叶子的哈希)的所有信息。


只要知道所有树枝和叶子,就可以快速轻松地创建根哈希。记住哈希函数的功能:它在一个方向上清晰快速地工作,并且不可能在另一个方向上分解。如果已知根哈希,但交易未知,那就无法猜测交易。


因此,单独一个根哈希是不够的,剩下的区块必须被保存。因此,矿工可以在任何时候将该区块中包含的信息再次进行哈希运算,从而验证根哈希。只要哈希函数是相同的,那么矿工对于一个给定的数据输入都能得到相同的哈希值。这很方便,因为他们可以只检查他们是否和该哈希值处于同一个级别。


挖矿:搜索特殊哈希值


在这种情况下,工作量证明(PoW)机制下的挖矿比较容易理解。挖矿时,区块头进行增量更改以获得特殊的哈希值。


区块头由五个常量和一个变量组成。常量是软件的版本号、上一个区块的哈希值、默克树的根哈希、时间戳和所搜索的哈希的目标大小(以字节为单位)。


变量是随机数。随机数是以1为单位不断往上增长的数字。矿工将数据进行哈希运算并检查数据是否低于搜索目标值的哈希值。如果哈希值大于目标,矿工则重复该过程,随机数增加1,并再次进行哈希运算和检查。重复此操作直到找到一个特殊哈希值,或者从另一个哈希值低于目标的网络计算机中获取另一个区块,并将其用作下一个区块的基础(使用新的哈希作为“前一个区块的哈希”)。


挖矿是一个高度重复工作的过程,其目标就是找到一个特殊的哈希值。一旦那个哈希值被找到了,那么游戏又将重新开始。找到一个特殊哈希值的可能性取决于难度。平均来说,比特币每10分钟出现一个新区块。难度一直在不断调整,所以这个平均值基本上不会变。


这个过程的特点在于特殊哈希值只能通过猜测的方式被找到。这个猜测的比率消耗算力和电力。特殊的哈希值一眼就能看出来,因为它是由多个0开头的。


下面是比特币区块链上一个特殊哈希值的例子:

000000000000000000094bfa4edb1245c347e42452e4418e9fe5a1d24e335b16


哈希值:区块链的俄罗斯套娃


区块可以被看做一个俄罗斯套娃。最小的套娃是没有进行过哈希运算的交易。第二层是这个交易的哈希形式。此后,两个经过哈希运算的交易一起再进行哈希运算。因此,越来越多的哈希值进行聚合。最后只剩下一个哈希,即根哈希,也就是最大的那个套娃。

作者:Marko Vidrih

翻译:黄非红

原文链接:

https://medium.com/datadriveninvestor/what-is-a-block-in-the-blockchain-c7a420270373



今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/Slga5yD6aG
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/28419