其他分享
首页 > 其他分享> > 紫霞仙子:区块链的十二连问

紫霞仙子:区块链的十二连问

作者:互联网

最近更新了八篇分布式的文章,准备写下第九篇的时候,发现跟区块链关系非常紧密,于是就先写一篇区块链的科普文章吧。

紫霞仙子:听说你最近在学区块链,给我讲讲呗~

mark

一、用大白话说下什么是区块链?

1.我是至尊宝,我爱紫霞仙子你,在这个时间,这个地点,我对紫霞你说:至尊宝爱紫霞一万年
2.现在我把这句话写在了纸上
爱情真言
3.但是如果我把这张纸交给紫霞你,你又怕我反悔。而如果我把这张纸交给月老,我又怕月老可能会修改内容,而改成只爱你一年。

月老
4.我为了防止类似事情发生,就把这些这爱情真言,告诉了师父、二师弟悟能、三师弟悟净、白龙马、牛魔王等认识的人,他们都帮我们记录了这些信息。
mark
5.目前这份信息现在是安全的,我无法抵赖,我会爱你一万年。
6.为了表达对他们帮忙记录信息的感谢,我给他们每个人发了一个红包。
红包
7.而那些帮我们记录的人就称作节点
8.而至尊宝爱紫霞一万年这句话+时间+地点这些信息,打包起来就形成了一个信息包,也就是区块链中的区块。而多个区块连在一起就是区块链
9.去中心化就是不需要月老来统一记录这些信息。
10.娶亲当天,我答应了紫霞三个条件,又需要去记录了,而师父和师弟他们很忙,不想浪费时间在记录上面,所以决定选一个人来帮助大家记录这些信息。
12.选谁来记录了,会不会不安全呢?那就来个很难的算数题吧,谁能算出来,就给谁来记录,我还会给记录的人一个大红包,也就是比特币。而做出算数题就称作工作量证明
13.而这个记录的人就被称作矿工。矿工们不断算题,争夺信息记录的权利。从而获得信息记录的奖励

二、什么是区块链?

区块链的英文是 Block Chain,它的技术的产生和发展跟比特币有着千丝万缕的联系。

三、为什么要有区块链?

区块链解决了以下两个问题:

交易确认和资金清算问题

现实社会中各种经济活动涉及资金清算的,除了直接的现金交易外,都需要当事人执行以下步骤:

但由于公民有多个开户机构的账户,甚至还有跨国账户,而当事人的交易必须通过开户机构之间的清算才能完成。严重影响了交易确认资金清算的效率和成本。

中心化问题

传统的信用建立是靠很多的中心,譬如央行、商业银行,还有法院、经济警察等。但带来的问题就是成本过高

而且我们存的钱都是银行管控的,如果银行倒闭了,那存的钱可能就没有意义了。

四、什么是比特币?

下图总结了普通货币和比特币的区别:

普通货币和比特币的区别

五、区块内包含什么?

区块链的区块由区块头和区块体两部分组成。

区块头:由上一个区块的哈希值、区块体的哈希值、4 字节的随机数、时间戳等组成。固定 80个字节。

区块体:区块包含的交易数据,其中第一笔交易是 CoinBase 交易,这个是一比激励矿工的特殊交易。

区块内包含什么

六、区块链的特性有哪些?

去中心化

区块链不依赖中央处理节点,实现了数据的分布式记录、存储和更新。

每个区块链节点都必须遵循同一个规则,而该规则基于密码算法而非信用,每次数据更新都需要网络内其他用户的批准,所以不需要一套第三方中介机构或信任机构背书。

传统中心化网络中,如果中心被攻击了,则会破坏整个系统。

透明性

读和写数据记录对全网节点是透明的。区块链使用开源的程序、开放的规则和高参与度,可被全网审查、追溯。

开放性

除了被加密的私有信息外,区块链的数据对所有人公开(特殊区块链系统除外)。

任何人都可以通过公开的接口查询记录。

自治性

整个系统可自由安全地交换数据、记录数据、更新数据。

信息不可篡改

信息一旦经过验证并添加至区块链后,就会得到永久存储,无法更改。

除非能够同时控制系统中超过 51%的节点,否则单个节点上对数据库的修改是无效的。

匿名性

交易的双方都是匿名的情况下进行,无须通过公开身份来让对方产生信任。

七、什么是挖矿?

挖矿图片

而怎么才算挖到比特币呢?这个就牵扯到工作量证明了。

八、什么是工作量证明?

工作量证明的英文是 Proof of Work,简称 PoW。

在现实生活中,也有工作量证明这一说法:比如大学的学位证、毕业证,就是证明大学期间通过 4 年的努力完成了相关课程的学习,别说你没努力就拿到了证书,汗。

也就是说工作量证明就是通过指定的结果,来证明自己做过了一定量的工作。而在区块链中,这个工作就是哈希运算。

区块链中节点通过哈希运算得到符合条件的哈希值,来证明工作量。而这个过程一个随机数的查找过程,俗称挖矿

找到符合条件的随机数的方法是不停地随机试探,直到搜索到一个有效的数。而这个随机数是由 N 个前导零构成,零的个数取决于网络的难度值。比如以下的随机数由四个前导零构成。

0000ec5927ba10ea45a6822dcc205050ae74ae1ad2d9d41e978e1ec9762dc404

工作量证明的三要素如图所示:

工作量证明的三要素

输入:拥有 80 字节固定长度的区块头。

算法:双重 SHA 256 哈希运算。也就是对 SHA256 哈希运算的结果,再执行一次哈希运算。

条件:计算出的哈希值,只有小于目标值,才是有效的,否则无效,必须重算。

九、区块链的工作原理?

计算出符合条件的哈希值后,然后怎么处理呢?

矿工就把这个哈希值的信息广播给集群中的所有其他节点,其他节点就进行验证,验证通过后,就会把之前那个矿工的区块加入到自己的区块链中,最终形成一串区块链。详细步骤如下:

区块链工作原理

1.节点将新的数据记录向全网进行广播。

2.接收节点对收到的数据记录信息进行合法性校验,如果有效,则将数据记录纳入一个区块中。

3.接收节点对区块执行共识算法。

4.共识达成后,区块被纳入节点的区块中进行延长。

最后形成的区块链就是如下图所示:

区块链长什么样

十、怎么攻击区块链?

计算哈希值完全依赖硬件的算力,算力越强,算出哈希值的概率越高,时间越短。

也就是说如果有坏人掌握了 51 % 的算力,就可以发起 51 % 的攻击,比如双花攻击(Double Spending)。也就是同一份钱花了 2 次。

如果攻击者掌握了较多的算力,就能挖掘出一条原链更长的攻击链。然后又将攻击链向全网广播。而节点按照约定会接受更长的链,也就是会接受攻击链,丢弃原链。如下图所示:

攻击区块链

攻击链是红色那一条,比原链分支多一个区块,被系统接受,称为有效的链,而原链就被废弃了。

十一、区块链的缺点

区块链体积过大

区块链不断地发展,节点存储的区块链数据体积会越来越大,存储和计算负担将会越来越重。比如现在的比特币区块链,完整数据已经超过 60 GB,如果用比特币客户端进行数据同步的话,至少三天三夜。

数据确认时间过长

比特币交易的一次确认时间大约是 10 分钟,而完成 6 次确认的时间是 1 小时。需要等待 1 个小时才能完成确认。

交易频率过低

比特币每秒最高处理 6.67 笔交易。怎么算的呢?

每条交易大约 250 个字节,区块大小假定限制在 1 MB,可以容纳的交易数据量为 4000 条。每 10 分钟产生一个区块,每天可以产生 144 个区块,可以交易 144 * 4000 = 576000 条交易,然后除以每天的总秒数 86400,也就是 576000 / 864400 ≈ 6.67。

目前需要解决扩容问题才能突破这个瓶颈。

受到现行制度的制约

目前监管部门对这项新技术缺乏充分的认识和预期,法律和制度建立可能会滞后,也缺乏必要的制度规范和法律保护,加大了时长主题的风险。

十二、区块链的应用

总结

本文用一个故事开头,大白话讲解了区块链的概念,然后用 11 个核心问题来理清区块链中大家常关心的问题。
本文既是一篇科普文章,也是一篇原理性文章,对于原理性的问题,我都用图解的方式来讲解,相信会较容易理解一点。
区块链跟分布式联系紧密,比如区块链中用到 PoW 算法,拜占庭容错,都是充分利用分布式特性。学习区块链的过程也是学习分布式的过程。


作者简介:悟空,8年一线互联网开发和架构经验,用故事讲解分布式、架构设计。《JVM性能优化实战》专栏作者,开源了《Spring Cloud 实战 PassJava》项目,自主开发了一个 PMP 刷题小程序。关注可免费刷题。

我是悟空,努力变强,变身超级赛亚人!

标签:连问,记录,比特,节点,哈希,区块,紫霞,挖矿
来源: https://www.cnblogs.com/jackson0714/p/blockchain1.html