社区所有版块导航
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学习  »  区块链

图解什么是区块链

不会停的蜗牛 • 5 年前 • 152 次点击  

区块链这么火,都开始影响到我的生活了,不想了解也不行了的样子,今天来看看到底什么是区块链。

本文结构:

  1. 什么是区块链?
  2. 区块链是如何工作的呢?

1. 什么是区块链?

和它的名字一样,
区块链是由一组块组成的链,
块是包含信息的信息块,组成的链也就包含了信息。

区块链技术最早是在1991年由一群研究人员研发,用来给数字化文档打时间戳,使得这些文档不能被篡改。从那之后就基本上没有再发挥其他作用,直到2009年,中本聪采用区块链技术创造了数字加密货币-比特币。

一条区块链,就是一个对所有人完全公开的分布式账本,它有一个很有趣的属性:一旦某些数据被记录到一条区块链中后,那么数据就很难再被改变。


2. 区块链是如何工作的呢?

来看一下一个区块(block)的组成:

每一个区块包含了一些数据,这个区块的哈希值,以及前一个区块的哈希值

1. 数据

区块中所保存的数据与区块链的类型有关,例如,比特币区块链中的区块保存了相关的交易信息,包括卖家,买家,以及交易比特币的数量。

2. 这个区块的哈希值

每个区块包含了一个哈希值,哈希值用来标识一个区块和它所包含的所有内容,并且它是独一无二的,就像指纹一样。一旦某个区块被创建,它的哈希值就相对应的被计算出来了。如果改变区块中的某些内容会使得哈希值改变,如果一个区块的指纹改变了,那它就再也不是之前的区块了

3. 前一个区块的哈希值

区块中包含的第三个元素是前一个区块的哈希值,这个元素使得区块之间可以形成链接,并且能够使得区块链十分的安全。

假设我们有一条区块链包含3个区块
每个区块包含了一个自己的哈希值以及前一个区块的哈希值
3号区块指向2号区块,2号区块又指向1号区块
1号区块有点特殊,它不能指向前一个区块,因为它是第一个
我们把1号区块叫做创世区块

现在假设我们篡改了第二个区块
这将导致第二个区块的哈希值改变
接下来这就会导致3号区块以及3号区块连接的所有的后续区块变得非法
因为现在它们存储的前一个区块号的都变得非法
所以单独改变一个块,将连带性地致使后面的所有内容都变成无效

4. 工作证明

但要防止篡改,只有哈希是不够的
因为现在的计算机运算速度已经足够强大,并且能够每秒计算成千上万的哈希值
这样你完全可以篡改一个区块并且重新计算其他的区块的哈希值,使得你的区块再次变得合法。

所以为了减少这种风险,区块链还采用了一种技术,叫做工作证明
这是一种减缓新区块创建过程的机制
在比特币区块链中,大概需要花费10分钟来完成所要求的工作证明,并且添加一个新的区块到区块链中
这个机制使得区块链的篡改更加困难
因为一旦篡改了一个区块,就需要重新计算所有后续的区块的工作量证明

所以区块链技术的安全性主要来自于哈希值以及工作量证明机制

5. 分布式

区块链还有一种机制来保护自身的安全性,那就是分布式
相对于用一个中心化的实体来管理区块链网络,区块链采用的是一种 peer-to-peer网络,并且所有人都可以加入
当有人加入这个网络时,他就会得到整个区块链的复制
这个人就可以以此来验证是否所有的区块还是合法未篡改的,也就是不同的节点也可以借此互相验证。

当某人创建了一个新的区块时,
这个新的区块会被发送给网络上的所有人。
每个人再验证这个区块以确保这个区块没有被篡改过
如果所有的东西都被检验正确之后,那么每个人才能把这块新的区块加到自己的区块链上
我们可以称之为,网络上的所有人达成了“共识”

区块链网络中的所有节点都达成共识
他们认同网络中哪些区块是合法的,哪些是不合法的
那些被篡改过的区块将会被网络上的其他用户拒绝
所以,要成功篡改一个区块链,你需要篡改区块链上的所有区块
重新完成每个区块的工作量证明,并且控制区块链网络中超过50%的用户
只有这样,你篡改的区块才会被所有人承认
可以说,这基本上是不可能做得到的!

智能合约

区块链技术本身也在不断地发展
例如后来的一个技术改进,叫做智能合约
智能合约是一些存放在区块链上的简单的程序
它能基于合约内所记载的条件自动执行,只要条件成立,依照合约自动完成交易
例如在特定条件下可以实现自动化比特币交易。


学习资料:
https://www.youtube.com/watch?v=SSo_EIwHSd4


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