bitcoin学习与心得---区块链 block chain

本文详细介绍了比特币区块链的基础知识,包括其去中心化的本质、Merkle Tree的作用以及工作量证明Proof Of Work的概念,阐述了区块链如何通过这些机制确保数据的不可篡改性和安全性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

区块链 Block Chain

中文翻译区块链,是bitcoin的底层技术。
区块链本质上是去中心化的分布式数据库,与传统的数据库不同,区块链的数据是以数据库的形式存在用户的电脑上,而传统的数据库是中心化的,存在服务器上。为什么说区块链是去中心化的数据库呢,它和分布式数据库又有什么区别呢?
现在很多公司的数据库都是分布式的,比如谷歌的数据库,全球都布满了谷歌的数据库,分布式数据库有很多好处,比如容灾,负载均衡等,在这里就不多做介绍。但是分布式数据库它的拥有人是谷歌公司,谷歌公司可以对数据库做任何修改,如果谷歌公司修改这些数据来作恶,这将是一场灾难。
对于区块链所对应的去中心化的分布式数据库来说,就不存在这种问题,没有人对区块链的数据拥有全部的所有权,没有人能随意修改区块链中的数据,区块链的数据属于参与区块链上的所有人,不为个人利益所修改。
对于区块链为什么会有这样的特点,就需要讲解一下区块链的原理。

区块链综述

区块链简化图
上图是比特币区块链的简化模型,整个比特币网络就是由这一个个Block链接起来的。区块2(Block2)记录了上一个区块(Block1)的一些信息(区块头的哈希值),下一个区块又记录了上一个区块的信息,这样就形成了一个类似于链条的数据链。

Merkle Tree

这里有一个概念,叫Merkle Tree,它又称Hash Tree。具体的内容和定义请查看wiki百科-Merkle_tree。在比特币网络中,它的作用是保证交易不被修改。Merkle Tree
假设有A B C D E这五笔交易,怎么保证这5笔交易没有别人修改?一般来说是计算hash值,或者说计算一下该交易的摘要,如果摘要没有改变,就可以认为交易没有被修改。摘要的概念已经被广泛用于现在网络中。这里就是先计算A B C D E这五笔交易的hash值(这个hash值也被称为该交易的transaction identifier 或称txid),然后将A和B的hash值放到一起,再做一次hash运算,得到AB,同理将C和D的hash值放到一起,再做一次hash运算,得到CD,如果现在剩下一个E,它只能和自身的hash值放一起,做hash运算,得到EE。然后将AB和CD放一起,做一次hash运算,EE与自身做hash运算。经过这轮运算后会得到ABCD和EEEE这两个hash值,然后将这两个hash值做hash运算,得到ABCDEEEE。最终只剩下一个hash值,这个值就被称为Merkle root。整个A B C D E AB CD EE ABCD EEEE ABCDEEEE所构成的,就是Merkle Tree。它记录了每笔交易的hash值,Merkle root就记录了这五笔交易的hash值,能代表这五笔交易。在区块链中,Merkle root就代表了这个区块中所有的交易,如果Merkle root是可信的,就可以认为这个区块中的交易是可信的。
将这个区块的Merkle root和上一个区块的hash值存入到这个区块的区块头中,就保证了区块信息的可信。因为如果你修改了某个区块的交易信息,那么Merkle root势必会不一样,导致该区块的区块头的hash值改变,下一个区块进行验证的时候就会出错。所以,如果要修改某一个区块的交易值,就需要修改该区块及以后所有区块的信息。如果很容易就能修改以后所有区块的信息,那么这种安全保证就没有任何作用,所以这里引入另一个概念,叫Proof of Work:POW。即修改者需要以很大的代价来修改区块链中的数据。

工作量证明 Proof Of Work

为了在创建一个区块的时候做一些额外的工作,使得创建区块并不是那么容易,防止烂用创造区块的功能,提出了Proof Of Work的机制。生成区块的时候,需要计算区块的区块头的hash值,但是比特币网络要求该hash值符合某一条件,比如说该hash值要小于2^256 -1或hash值第一位是0,如果你产生的hash值符合该条件,你就达成了目标,能建立起区块hash值的前5位都是0,则计算机需要计算16^5=1048576次hash值。如果要求该条件会根据网络上的计算量动态改变,如果网络上的算力很大,则目标越难达成,主要目的是为了保证整个区块链以一定的速度增长。

分叉Forking

在比特币里面,经常有个概念叫分叉,比如xx币将在xx高度进行分叉。一个矿工如果成功得创建了一个区块,那么他就可以向这个区块里面添加交易。因为前面说到,区块链它是一个链条式的数据结构,从第一个区块(创世区块)开始,第二个区块连接在第一个区块的后面,第二个区块的高度就是1,那么连接在第二个区块后面的区块,高度是2。所以区块的高度指的是,该区块到创世区块途中所经过的区块的个数。
如果两个区块或多个区块有相同的高度,那么这个现象就是分叉。分叉的原因有几种:
1.多个矿工同时或近乎同时创造出了区块,这样就会出现多个区块拥有相同的高度,而其他矿工会自己选择对自己而言最新的一条区块,在这个区块的基础上继续延伸,这样,就会出现有的区块被人认可度高,人们就会在这个基础上继续延伸,而认可度不高的区块就会慢慢被人丢弃,最终该高度只剩下一个区块被人维护。
2.区块链网络被攻击,区块链的攻击者为了修改交易,需要自己建立起一条区块链,攻击者一直不停扩展虚假的一条链,而诚实的矿工则在维护另外一条链,这样就会形成分叉。
3.区块链的共识机制改变,造成的分叉,这个将在后面讲到。

交易数据

可能很多人不知道,比特币的单位并不是个,而是satoshis(聪)。每个区块都需要包含1笔或多笔交易。一个区块的第一笔交易被称为coinbase交易,这笔交易是用来奖励挖出这个区块的矿工,这就是为什么矿工能挖到比特币的原因了。矿工只要创建一个新的区块,那么就能自动完成一笔coinbase交易,他就获得了一笔比特币。但是这笔比特币不能被马上花掉,而是要等到至少100个区块以后才能被花掉。主要是为了防止出现上述说的分叉现象,多个矿工同时创建了同一高度的区块,,所以他们每个人都拥有一笔比特币,但是只有区块真正被人认可的时候,那笔比特币才是有效的,其余人的比特币都是无效的,保证了比特币以一定的速率增长。
上面说到,一个区块一定会有一笔coinbase交易,但是不要求一定要包含一笔其他交易。但是矿工还是尽量会去包含其他人的交易,因为他可以从其他人的交易中获得手续费。
这样所有交易都以二进制数据的形式被存储到这个区块里面,每笔交易都会计算出一个hash值,也就是上面提到的txid,然后生成Merkle Tree。这样如果要查找一笔交易的话,只需要查找Merkle Tree中的txid,如果在Merkle Tree中找到该txid,则可以认为该区块中存储了改交易。

共识机制

一般来说,整个区块链网络使用同一套共识机制,但是在某些情况下,可能共识机制会发生改变,就出现了一个情况:有的人用新的共识机制,但是有的人用旧的共识机制,这里的情况又分两种:
1.

[注:以上图片来自于网络 ,如有侵权,告知后立即删除]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值