您的位置:永利网站 > 区块链投资 > 一分钟读书俱乐部,看完这些

一分钟读书俱乐部,看完这些

发布时间:2020-03-15 23:09编辑:区块链投资浏览(111)

    我们回到两个人转账交易的过程中,去理解比特币区块链的数据结构。我发起一笔交易,即我向整个区块链网络广播,我和你两个人想进行这笔交易:我向你的地址中转入一笔比特币,无须你的许可。但只有当这笔交易被打包进最新的比特币区块中时,这笔交易才真正完成。通常来说,当在一笔交易所在的区块之后又增加 5 个区块,即包括它自己在内一共经过 6 次确认时,这笔交易可认为被完全确认。按比特币每个区块的确认时间 10 分钟估算,即一笔交易最终确认要经过约 1 小时。这里包括了两步:一是交易被打包进候选区块,每个节点可以按规则生成不同的候选区块;二是节点挖矿成功,候选区块被成功地加到区块链的尾部,成为最新的正式区块。那么,把一笔交易打包进区块是什么意思呢?这涉及区块链最基础的数据结构,这也是它不可篡改的基础。以下讨论可能略显枯燥,但却是认识比特币与区块链的最基础的知识,我尽量以通俗的语言来解释。区块链之所以被称为 blockchain,是因为它的数据块以链状的形式存储着。从第一个区块即所谓的创世区块开始,新增的区块不断地被连到上一个区块的后面,形成一条链条。每个区块由两个部分组成——区块头部和区块数据。其中,区块头部中有一个哈希指针指向上一个区块,这个哈希指针包含前一个数据块的哈希值。哈希值可以被看成是数据块的指纹,即在后一个区块的头部中均存储有上一个区块数据的指纹。如果上一个区块中的数据被篡改了,那么数据和指纹就对不上号,篡改行为就被发现了。要改变一个区块中的数据,对其后的每个区块都必须相应地进行修改。比特币区块链设计有一种机制让这种修改难以发生,我们稍后在谈到“工作量证明”和“比特币挖矿”时再详细讨论。一个区块中的数据是被打包进这个区块的一系列交易。这些交易按照既定的规则被打包形成特定的二叉树数据结构——梅克尔树(Merkle trees)。按目前的比特币区块的大小,一个区块中能容纳的交易数量在 2000 个左右,比如在第 526957 个区块中容纳了 1804 个交易。比特币区块链的数据结构中包括两种哈希指针,它们均是不可篡改特性的数据结构基础。一个是形成“区块 链”(block chain)的链状数据结构,另一个是哈希指针形成的梅克尔树(见图 1)。链状数据结构使得对某一区块内的数据的修改很容易被发现;梅克尔树的结构起类似作用,使得对其中的任何交易数据的修改很容易被发现。图1:比特币区块链的“区块链”与梅克尔树

    近些日子笔者阅读了一些关于区块链技术原理的书籍,在这里有几个问题需要澄清一下,也许这些问题你也困惑过,在此我们一起看一看借着这个机会豁然开朗。

    原文精选:现在,我们已经了解了单个交易是如何创建的,但是在第2章里提到,所有交易都是被打包放入区块的,为什么要这么做呢? 其实这是为了性能优化,如果每一个交易都要矿工单独去达成共识,那整个系统的交易处理速度将会变得非常慢。而如果我们把大量交易组织起来放入一个区块,得到的哈希链就更短,大大提高了验证区块链数据结构的效率。

    区块链非常聪明地把两个基于哈希值的数据结构结合起来:第一个数据结构是区块的哈希链,每一个区块都有一个区块头部,里面有一个哈希指针指向上一个区块。第二个数据结构是一个树状数据结构,也就是以树状结构把区块内所有交易的哈希值进行排列存储。

    1.目前获取比特币有哪几种方式?

    答: 目前获得比特币的方式,主要是两种,挖矿链上交易

    也叫梅克尔树,它以一种非常高效的形式把所有交易组织起来。为了证明某个交易在某个区块内,可以通过树内路径来进行搜索,而树的长度就是区块内所包含的交易数目的对数。

    图片 1

    2.我们常常听到区块链上的“节点”和“区块”,请问这两者是不是一回事?

    答: 节点所在的网络社区是一个交易社区,节点是每个交易的主体。区块链则是一个个新形成的账本,是经过反复确认被所有节点认可的记账(区块)首尾相连形成的链式数据结构。交易社区的最主要活动是数字货币的交易,因此是数字货币在执行流通手段和支付手段职能。而区块链是已经固化的信息的存储仓库,那里面只有对交易(不一定是用数字货币)的记账。节点的交易形成和区块形成,这两者的难易度有天壤之别。节点发起一个交易很容易,而一笔交易完全有效,从而被写入区块链,是一个很费工夫的过程。

    读书笔记:

    3.请问每产生一笔交易,只要这笔交易被大多数节点认为有效,就会产生一个新的区块是吗?

    答: 答案是否定的。以比特币为例,比特币网络每天会产生数以千万计的交易,而参与记账的只有那些对比特币系统给出的谜题正确破解的节点,这些节点被称为“矿工”。毫无疑问,矿工拥有最强大的算力。但如果每产生一笔交易,矿工就记一次,这么多交易交由矿工来完成,工作量太大了!所以一般是矿工每隔一段时间批量打包这些实际交易者广播到全网中的交易信息,所以一次记账(也就是一个新区块的生成)可能对应着一万次交易,或者十万次交易,或者更多。在这里,广播的交易信息的正确性,由网络节点集体负责。矿工只负责信息录入。

    1,所有交易都要被打包放入区块,为了性能优化,如果每一个交易都要矿工单独去达成共识,那整个系统的交易处理速度将会变得非常慢。

    4.新节点加入区块链交易网络有什么步骤?一个新节点如何获得全网的认可?

    答: 就像你入党需要有入党介绍人一样,你作为一个新节点加入“组织”,也需要节点的“推荐”,这个节点就是所谓的“种子节点”。种子节点可能是现实中跟你具有很强的信任度的人,并通过种子节点的“引荐”,“认识”更多的节点,当然这些节点都必须是诚实节点,种子节点肯定也是诚实节点,并且他不会将恶意节点推荐给你。你可以尝试着跟这些节点进行交易,经过几轮以后,只要你一直保持诚实节点,那么你可能链接到的节点会越来越多。这个机制充分说明了,在区块链上的“诚信”有多么地重要!所以,你可以在任何地方弄虚作假,但千万别尝试在区块链上偷奸耍滑,否则你的代价也许比你想象得更为惨重。

    2,区块链两个基于哈希值的数据结构结合起来,也就是梅克尔树形式,它以一种非常高效的形式把所有交易组织起来。

    5.矿工的收益只有系统所给的比特币奖励一项吗?

    答: 答案是否定的。矿工的工作包括拼算力获得记账权,和将新交易信息打包放入区块链,即创造新区块的过程。但是,拥有记账权是能够有权限打包这些信息的前提条件。所以,拼算力就成了至关重要的一步。比特币系统对矿工的回报一般可分两项:第一项是因为争取到了记账权(其实就是破解了比特币的谜题)而获得的一定的比特币奖励,第二项是建立新区块的努力。这两项奖励的方式都是给予一定数量的比特币。矿工2013年前每破获一个比特币谜题,都是获取25个比特币的奖励,这一奖励此后逐年下降。

    原文精选:区块头部还包含了挖矿谜题,相关的信息。还记得,区块头部的哈希函数必须以一大堆零开头才有效,此外,区块头部还要包含一个矿工可以修改的“临时随机数”、一个时间戳和一个点数(点数用来表示找到这个区块的难度)。区块头部是挖矿过程中唯一哈希值化的,所以要验证一个区块的链,只要检查区块头部即可。在区块头部唯一的交易数据是交易树的树根——“mrkl_root”。

    6.矿工挖矿的时候,比特币系统中的电商交易在同时进行吗?

    答: 这个问题很简单,因为矿工就是靠着拼算力,进行竞争性记账的一群人,那么是给谁记账呢?当然是给比特币网络中的节点的交易行为记账,很显然,这说明与记账相关联的交易是在同时进行着的。

    每个区块的梅克尔树上都有一个有意思的交易,叫作币基交易。这就类似于财奴币里的造币交易。这个交易创造新的比特币,它看上去像是一个普通的交易,但有几点不同:

    7.一个区块头由哪些内容构成?

    答: 我们知道一个区块分为区块头和区块内容两个方面,而哈希指针就是将两个区块连接在一起的“链”。区块头里面存储的主要是上一个区块内容里面数据的哈希值,借助公钥我们可以按照哈希指针的算法,随时查询到上一个区块的内容,这也是核实区块信息的关键步骤。但是小小的区块头里还存了其他的信息,还有比如挖矿谜题信息、临时随机数信息和时间戳点数信息等。

    1.它永远只有一个单一的输入与单一的输出。

    8.听说区块链也叫作“分布式数据库”,那么区块链的数据结构是什么样子的?

    答: 目前看来,区块链整个体系是由两大类数据结构相互嵌套组合而成的。第一类数据结构是“哈希链”结构,这可看做是区块链的纵向逻辑结构;第二类数据结构是“梅克尔树”结构,这可看作是区块链的横向结构,实际上是使用了哈希指针的二叉树结构。在梅克尔树结构中,所有的区块可被两两分组,指向这些区块的指针被存储在上一层的父区块中,这些父区块再次被两两分组,再指向上一层的父区块,以此类推,直达创世区块。通过哈希链和梅克尔树两套数据结构,我们可以很严格地倒推验证每笔交易的真实性。

    2.这个交易并不消费之前交易输出的比特币,因此,没有指针指向“上一交易”。

    本文由永利网站发布于区块链投资,转载请注明出处:一分钟读书俱乐部,看完这些

    关键词: 永利网站 永利网址