A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 播妞 程序媛   /  2018-1-15 16:15  /  2556 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本文是黑马程序员区块链干货系列教程的一篇,本专题会通俗易懂的介绍区块链相关的各种技术知识, 学完本课程你可以从技术角度鉴别出来区块链风口中的猪和鹰, 也可以自己动手实现一个比特币, 更多内容请关注黑马程序员社区,我们将持续更新学习笔记.
先从拜占庭将军的问题说起,
拜占庭将军想要进攻一个强大的敌人,为此派出了10支军队去包围这个敌人。
这个强大的敌人可以抵御5支军队的同时袭击。
拜占庭将军的任一支军队单独进攻都毫无胜算,除非有至少6支军队同时袭击才能攻下敌国。
他们分散在敌国的四周,依靠通信兵相互通信来协商进攻意向及进攻时间。
困扰这些军队的问题是: 他们不确定通讯兵中是否有叛徒,叛徒可能擅自变更进攻意向或者进攻时间。
在这种状态下,拜占庭将军能否找到一种分布式的共识协议,  赢取战斗呢?
故事讲完了, 其实拜占庭将军的问题就是一个分布式系统达成共识的问题,
很多人觉得分布式系统很难,为什么难呢?
因为在分布式系统中,每个节点都可能故障, 发送错误的消息,产生错误的指令.
分布式系统数据一致性的问题难以解决.
数据一致性换一种说法就是 谁说了算的问题, 听谁的!
熟悉Java分布式系统的同学, 可能听说过zookeeper框架, 动物园管理员需要选举出来领导去管理所有的节点,  在zookeeper这种分布式系统里面, 领导说了算, 但是领导也可能会挂掉, 领导挂掉后就立刻有一个新的节点站出来, 充当新的领导.
Zookeeper是一种中心化的分布式解决方案, 领导说了算. 如果一个领导没有真的挂掉,另外一个节点站出来宣布自己是领导, 这时系统就会出现假死和脑裂.
比特币采用一种叫Pow(proof of work) 工作量证明的方法解决了去中心化的分布式系统数据一致性问题.
那么什么是工作量证明呢? 还是要先讲明白一个故事.
国家决定从千千万万的老百姓当中选举出来一个公务员, 让他来管理国家.
报考公务员必须是在学信网上能查到的学历信息才行.
学历和毕业证其实就是工作证明.
Pow:获取这个证明需要很长的时间,而验证它的真伪只需要很短的时间.
有人说高考是千军万马过独木桥,
高中毕业,再过4年就可以获得学士学位.
学士学位再学3年,就可以获得硕士学位,
硕士学位再学3年,就可以获得博士学位,
博士学位再学3年,就可以获得壮士学位,
壮士学位再学3年,就可以获得圣斗士学位…
学士à硕士à博士à壮士à圣斗士
他们像一个链表,
不考取博士绝对成不了壮士,
不获取壮士学位就当不成圣斗士
比特币采用了类似的方式, 他降低了信息传递的速率,增加了成为领导的难度, 通过区块链的短暂分叉。完美的解决了拜占庭将军的问题.
我们请出来所有的主角
给他们起名叫A B C D E F G H吧.   
这些吃瓜群众参与记账, 称为矿工.
  
关于矿工的概念可以参考上一篇(区块链学习笔记①)的内容.
故事开始了,  商务男, 小男孩 和 老爷爷斗地主.
商务男输了10块钱, 要给小男孩和老爷爷每人转账5块钱.
商务男 本应该把这个转账消息大喇叭广播给所有的记账的吃瓜群众.
然而他并没有.

他冒充矿工伪造账本单独的发给了老爷爷和小男孩,
看这是账本, 你们卡上多了5块钱.
老爷爷和小男孩看到商务男发来的账本就是这样
账本
商务男
90
老爷爷
105
小男孩
105
可是老爷爷和小男孩还收听着所有的吃瓜群众ABCDEFGH的账本
账本
商务男
100
老爷爷
100
小男孩
100
老爷爷和小男孩困惑了, 两套账本听谁的呢?这个简单, 谁学历高,听谁的,
两套账本其实就是区块链的短暂分叉.
区块链的分叉解决方案就是 永远只信任最长链, 链越长可信度越高.
我们来仔细理一下每一个过程.
比特币每10分钟产生一个新的区块, 在第一轮, 商务男获胜, 他好好学习最先取得了学士学位的工作证明, 把他虚假的账本发给了小男孩和老爷爷, 老爷爷和小男孩暂时信以为真了.
可是别的吃瓜群众(矿工)很快也有人获得了学士学位, 他们也把账本广播到了全网络.他们看到的账本商务男并没有给小男孩和老爷爷转账. 这是就出现了区块链的分叉.  
商务男要想维持他的谎言, 就要在他的版本基础上继续攻读硕士, 并且领先其他的吃瓜群众
可是最终, 商务男不敌所有的吃瓜群众.最终败落在壮士学位上. 吃瓜群众领先了.
这是小男孩和老爷爷只信任最长的链, 商务男的赖账计划挫败了….

想象一下商务男要想持续的骗下去, 他要跟全球的吃瓜群众(矿工)进行竞赛.并且一直赢下去.
所以比特币是非常安全的去中心化的货币, 除非你掌握了全球51%的计算机算力, 才可以做出商务男这样的攻击,  另外在进行比特币交易转账的时候, 我们经常能看到说6个区块确认后就认为是可靠的交易.  商务男在一次比赛中胜出是有可能的,但是连续6次都领先全球的吃瓜群众可能性就微乎其微了.
区块链学习笔记:
l 比特币通过p2p技术实现账本的同步拷贝
l 比特币通过增加发送信息的成本(pow)来增加信息传播的成本,降低信息传播的速率
l 比特币通过区块链的长度,来判断数据的可信度
l 交易中6个有效区块认为转账成功. 所以比特币的交易确认需要1小时
l Pow通过sha256哈希来完成, 后面单独介绍
l 工作证明的获取需要很长时间, 但是验证只需要很短时间.
l 比特币的Pow算法导致大家通过矿池来挖矿, 矿池算力垄断. 有潜在的中心化风险.
l 矿池挖矿只是在抢夺记账权,获得比特币,消耗大量电力,并无实际价值,我国计划取缔挖矿.

4 个回复

倒序浏览
感谢楼主
回复 使用道具 举报

不谢
回复 使用道具 举报
6666666,开了区块链,感觉好高大上
回复 使用道具 举报
6666666666666666666
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马