vb.net区块链 区块链web应用( 二 )


区块是区块链的基本单元,区块头和区块体是区块链的组成部分 。区块头里面包含的信息有上一个区块的hash,本区块的hash,时间戳等等 。区块体就是区块里的详细数据 。
15.Merkle树
Merkle树,也叫二叉树,是存储数据的一种数据结构,最底层是所有区块包含的原始数据,上一层是每个区块的hash值,这一层的hash两两组合产生新的hash值,形成新的一层,然后一层层往上,-直到产生一个hash值 。这样的结构可以用于快速比较大量的数据,不需要下载全部的数据就可以快速的查找你想要的最底层的 历史 数据 。
16什么是扩容
比特币的一个区块大小大约是1M左右,可以保存4000笔交易记录 。扩容就是想把区块变大 , 能保存更多的数据 。
17.什么是链
每个区块都会保存上一个区块的 hash , 使区块之间产生关系,这个关系就是链 。通过这个链把区块交易记录以及状态变化等的数据存储起来 。
18.区块高度
这个不是距离上说的高度 , 它指是该区块与所在链上第一个区块之间相差的区块总个数 。这个高度说明了就是第几个区块,只是标识作用 。
19.分叉
同一时间内产生了两个区块(区块里的交易信息是一样的 , 只是区块的hash值不一样),之后在这两个区块上分叉出来两条链,这两条链接下来谁先生成6个区块,谁就是主链,另外的一条链丢弃 。
20.幽灵协议
算力高的矿池很容易比算力低的矿机产生区块速度快,导致区块链上大部分区块由这些算力高的矿池产生的 。而算力低的矿机产生的区块因为慢,没有存储到链上 , 这些区块将会作废 。
幽灵协议使得本来应该作废的区块 , 也可以短暂的留在链上,而且也可以作为
工作量证明的一部分 。这样一来,小算力
的矿工,对主链的贡献比重就增大了,大型矿池就无法独家垄断对新区块的确认 。
21.孤块
之前说过分叉,孤块就是同一时间产生的区块,有一个形成了链,另一个后边没有形成链 。那么这个没形成链的块就叫
孤块 。
22.叔块
上边说的孤块,通过幽灵协议,使它成为工作量证明的一部分,那它就不会被丢弃,会保存在主链上 。这个区块就是下
23重放攻击
就是黑客把已经发送给服务器的消息,重新又发了一遍,有时候这样可以骗取服务器的多次响应 。
24.有向无环图
也叫数据集合DAG(有向非循环图),DAG是一种理想的多链数据结构 。现在说的区块链大都是单链,也就是一个区块连一个区块,DAG是多个区块相连 。好处是可以同时生成好几个区块 , 于是网络可以同时处理大量交易 , 吞吐量肯定就上升了 。但是缺点很多,目前属于研究阶段 。
25.什么是挖矿
挖矿过程就是对以上这六个字段进行一系列的转换、连接和哈希运算,并随着不断一个一个试要寻找的随机数,最后成功找到一个随机数满足条件:经过哈希运算后的值,比预设难度值的哈希值小 , 那么,就挖矿成功了,节点可以向邻近节点进行广播该区块,邻近节点收到该区块对以上六个字段进行同样的运算,验证合规,再向其它结点转播,其它结点也用同样的算法进行验证,如果全网有51%的结点都验证成功,这个区块就算真正地“挖矿”成功了,每个结点都把这个区块加在上一个区块的后面,并把区块中与自己记录相同的列表删除,再次复生上述过程 。另外要说的是,不管挖矿成不成功每个节点都预先把奖励的比特币50个、所有交易的手续费(总输入-总输出)记在交易列表的第一项了(这是“挖矿”最根本的目的,也是保证区块链能长期稳定运行的根本原因) , 输出地址就是本结点的地址,但如果挖矿不成功,这笔交易就作废了,没有任何奖励 。而且这笔叫作“生产交易”的交易不参与“挖矿”计算 。

推荐阅读