全球最大交易所币安,
国区邀请链接:https://accounts.suitechsui.us/zh-CN/register?ref=16003031 支持86手机号码,网页直接注册。
目前不清退的交易所推荐:
1、全球第二大交易所OKX欧意
国区邀请链接: https://www.nfqsloqixg.com/zh-hans/join/1837888 币种多,交易量大!
国际邀请链接:https://www.okx.com/join/1837888 注册简单,交易不需要实名,新用户能开合约,币种多,交易量大!
2、老牌交易所比特儿现改名叫芝麻开门 :https://www.gate.ac/signup/XgRDAQ8?ref_type=103 注册成功之后务必在网页端完成 手机号码绑定,大陆号码输入+086即可 ,实名认证。推荐在APP端实名认证初级+高级更方便上传。网页端也可以实名认证。
全球最大交易所币安,国区邀请链接:https://accounts.binance.com/zh-CN/register?ref=16003031 币安注册不了IP地址用香港,居住地选香港,认证照旧,邮箱推荐如gmail、outlook。支持币种多,交易安全!
买好币上KuCoin:https://www.kucoin.com/r/af/1f7w3 CoinMarketCap前五的交易所,注册友好操简单快捷!
区块链(Blockchain) 可简单形象化地可理解为很多分散在世界各地的区块(Block)以”链”(Chain)的形式串连在一起,就犹如一串铁链一样,由很多小铁环串成一条铁链。这就是区块链的形象化概念。
那么,区块链中的区块实际上是什么呢?以下以比特币(BitCoin)区块链中的区块为例:
一、区块(Block)
上述这张简化版的比特币区块链图中有三个区块Block 1, Block 2, Block 3.
每个区块都包含两个部份:
1. 区块头(Block Header)
先看看区块头的数据结构
1 2 3 4 5 6 7 8 |
struct header_structure { uint32_t nVersion; // 4 bytes - Version uint8_t hashPrevBlock[32]; // 32 bytes - Previous block header hash uint8_t hashMerkleRoot[32]; // 32 bytes - Merkle root hash uint32_t nTime; // 4 bytes - Timestamp uint32_t nBits; // 4 bytes - Difficulty Target uint32_t nNonce; // 4 bytes Nonce }; |
- 总区块大小固定为80 Bytes
2. 区块体(Block Body)
以上就是比特币区块链中区块(Block)的结构,那刚才一直说的Merkle Tree 又是怎么一回事呢?
二、Merkle Tree
Merkle Tree是一种用来表示Hash值的数据结构。它的基本结构就是Binary Tree(二元树),每一个非叶子节点(Node),都被标示一个Hash值。由于Merkle Tree的发明人是 Ralph Merkle,当然这就是这个资料结构的名称由来。
他是会把每一笔交易的TxID透过SHA256做加密
如此类推,然后两两连接(Concat)在一起,再进行加密:
直至出现Merkle Tree Root为止:
这样就得出与上图一样的Merkle Tree。
而这里Merkle Tree Root 也就是上面提到的头块头中的 Merkle Tree Root 部份,而下面的部份就是所有的交易记录。
三、创世区块Genesis Block
创世区块Genesis Block 这个名字听起来很像很了不起的样子,实际上就是区块链的第一个区块,结构上与链中其他区块都没差别。
那么区块链中的创世区块、区块、Mrekle Tree的关系是怎样的?
在创建区块链时,首先要建立创世区块Genesis Block,此时,Genesis Block 就会有属于它的Hash值,然后使用演算法运算,得出第一个区块Block #1,那么,Block #1也会有属于它的Hash值,还记得区块头结构中有个叫”前一个区块的记录”(Hash Of Previous Block Header)吗?没错,Block #1 就会把Genesis Block的值放进这个位置,这样,就相当于连结到前一个Block,即创世区块Genesis Block ,如此类推,不断产生的区块都使用这种方式连接起来,这样,就形式大家耳熟能详的区块链Blockchain了。
慢着,上面一直在说的Hash值又是什么啊?
四、Hash
Hash值比较
在工作量证明PoW时,到底是怎样比较Hash 值的大小?其实就是将Hash值先转换为big integer再比较。
Hash值对区块的影响
- 每个区块的Hash 都是不一样的,可以通过Hash 标识区块;
- 如果区块的内容变了,它的Hash 一定会改变;
Hash的不可修改性
由于区块与Hash 是一一对应的,每个区块的Hash 都是针对”区块头”(Head)计算的。
上面提到,区块头包含很多内容,其中有当前区块体的Hash(注意是”区块体”的Hash,而不是整个区块),还有上一个区块的Hash。这也意味着,如果当前区块的内容变了,或者上一个区块的Hash 变了,一定会引起当前区块的Hash 改变。
这一点对区块链有重大意义。如果有人修改了一个区块,该区块的Hash 就变了。为了让后面的区块还能连到它,该人必须同时修改后面所有的区块,否则被改掉的区块就脱离区块链了。由于Hash 的计算非常耗时,同时修改多个区块几乎不可能发生,除非有人掌握了全网51% 以上的计算能力。
正是通过这种联动机制,区块链保证了自身的可靠性,数据一旦写入,就无法被篡改。这就像历史一样,发生了就是发生了,从此再无法改变。
看到这里,如果还不清楚,可以从这里倒着向上看一次,应该就会很清楚区块到底实际上是怎么一回事了。
区块是区块链中的基本组成部份,每个区块链的数据结构、每个在结构内包含的元素(前一个区块的Hash值、加密运算方式、时间戳、签名等等)都与整个区块、甚至整个区块链息息相关,正因为这种巧妙设计,令到区块链可靠性、不可逆、无法篡改的特性更为突出。而深入地了解区块中各项的组成部份及相互之间的关系,将对接下来学习建立属于自己的区块链及应用,打下良好的基础。
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。