如果10个将军中的几个同时发起消息,势必会造成系统的混乱,造成各说各的攻击时间方案,行动难以一致。

谁都可以发起进攻的信息,但由谁来发出呢?中本聪巧妙地在个系统加入了发送信息的成本,即:一段时间内只有一个节点可以传播信息。

它加入的成本就是”工作量“——节点必须完成一个计算工作才能向各城邦传播消息,当然,谁第一个完成工作,谁才能传播消息。

当某个节点发出统一进攻的消息后,各个节点收到发起者的消息必须签名盖章,确认各自的身份。中本聪在这里引用现代加密技术为这个信息签名。

这种加密技术——非对称加密完全可以解决古代难以解决的签名问题:

消息传送的私密性

能够确认身份

签名不可伪造、篡改

非对称加密算法的加密和解密使用不同的两个密钥.这两个密钥就是我们经常听到的”公开密钥”(公钥)和”私有密钥”(私钥).

公钥和私钥一般成对出现, 如果消息使用公钥加密,那么需要该公钥对应的私钥才能解密;

同样,如果消息使用私钥加密,那么需要该私钥对应的公钥才能解密.

非对称加密的作用是:保护消息内容, 并且让消息接收方确定发送方的身份.

比如,将军A想给将军B发送消息,为防止消息泄露,将军A只需要使用B的公钥对信息加密,而B的公钥是公开的,B只需要用只有他自己只的私钥解密即可。

将军B想要在信件上声明自己的身份,他可以自己写一段”签名文本“,并用私钥签名,并广播出去,所有人可以根据B的公钥来验证该签名,确定的B的身份。

由此,一个不可信的分布式网络变成了一个可信的网络,所有的参与者可以在某件事在达成一致。

写到这里,同时终于明白了工作量证明(Proof Of

Work)的意义。有人说挖矿浪费了巨大的社会资源,但建立信任的成本可不是0,挖矿是维护比特币网络可靠性的最好办法。

工作量证明,简单的理解就是一份证明,现实中的毕业证、驾驶证都属于工作量证明,它用以检验结果的方式证明你过去所做过了多少工作。

在拜占庭的系统里,加入工作量证明,其实就是简单粗暴地引入了一个条件:大家都别忙着发起消息,都来做个题,看谁最聪明,谁就有资格第一个发起消息。

这个题必须是绝对公平的,中本聪在设计比特币时,它采用了一种工作量证明机制叫哈希现金,在一个交易块这要找到一个随机数,计算机只能用穷举法来找到这个随机数,可以说,能不能找到全靠运气,所以对于各个节点来说,这个世界上,只有随机才是真正的公平,实现随机的最好办法是使用数学,所有的将军在寻找共识的过程,借助了大家都认可的数学逻辑。

如果不同的将军先后解出了题,各自先后向这个网络发布消息,于是各个节点都会收到来自不同节点发起的进攻或者不进攻的消息,那怎么办的?只有时间最早的发起者才是有效的。中本聪巧妙的设计了一个时间戳的东西,为每个将军在解好题的时间(出块时间)盖上时间印章。

将军们那又凭什么要一起做工作量证明呢?中本聪也完全可以设置一个奖励机制,比特币的奖励机制是每打包一个块,目前是奖励25个比特币,当然,拜占庭将军问题的奖励机制可以是瓜分拜占庭获得的利益。

对了,如果有出现背叛怎么办?

在这个分布式网络里:

每个将军都有一份实时与其他将军同步的消息账本。

账本里有每个将军的签名都是可以验证身份的。如果有哪些消息不一致,可以知道消息不一致的是哪些将军。

尽管有消息不一致的,只要超过半数同意进攻,少数服从多数,共识达成。

使用消息加密技术、以及公平的工作量证明机制,创建了一组所有将军都认可的协议,这套协议的出现,拜占庭将军问题也就完美的得到了解决。

区块链技术用解决拜占庭将军问题_区块链技术如何解决拜占庭将军问题?相关推荐

  1. 区块链技术用解决拜占庭将军问题_区块链是如何解决拜占庭将军问题的?

    原标题:区块链是如何解决拜占庭将军问题的? 区块链火爆后不少人认为它是继蒸汽机.电力.互联网之后第四代具有颠覆性的技术.但凡了解它,或者对比特币有一定见解的人,都多多少少听过拜占庭将军问题.现阶段区块 ...

  2. 区块链技术用解决拜占庭将军问题_区块链技术6:拜占庭将军问题

    本篇主要结合Lamport((2013年的图灵奖得主) 1982年的论文<Byzantine Generals Problem>讲一讲拜占庭将军问题(Byzantine Generals ...

  3. 区块链技术用解决拜占庭将军问题_区块链中的拜占庭将军问题解析

    今天我们要讲的内容是:"什么是拜占庭将军问题"? 我们在之前讲过,分布式账本可以说是区块链的框架,每一个人都可以自由地参与进来,共同处理区块链中的数据,基于这一点,区块链实际上就是 ...

  4. 区块链中utxo模型是什么意思_区块链世界的UTXO是什么意思?通俗解释一下

    之前听了<从0到1学透区块链>课程里面,其中在<比特币技术来源>一节中提到了UTXO. 后来在一期王大炮转发Qbao CEO陈琳的专访中提到,为什么会在QTUM上进行开发?是因 ...

  5. 区块链技术用解决拜占庭将军问题_区块链设计核心难题:拜占庭将军问题

    在前面两期中,主要对区块链的基本概念和基本设计原则进行说明,现在有了这些背景知识后,再去学习更深层的知识将会更加容易.本期我们一起研究一下拜占庭将军问题,这是区块链解决的一个核心难题,通过理解这个问题 ...

  6. 如何使用区块链币收款地址找合约地址?_区块链技术学习指引

    本文原文链接 本文为博客文章索引,小白必看.有新文章时会更新本文,建议大家加入收藏夹中,如果你觉得本站不错,欢迎你转发给朋友. 引言 给迷失在如何学习区块链技术的同学一个指引,区块链技术是随比特币诞生 ...

  7. 区块链中utxo模型是什么意思_区块链100讲:UTXO 和 Account 模型对比

    在当前区块链世界中,主要有两种记录保存方式,UTXO 模式(Unspent Transaction Output) 和 Account 模式.Bitcoin 采用的是 UTXO 模型,Ethereum ...

  8. 区块链中utxo模型是什么意思_区块链中的UTXO是什么意思?

    币圈最专业的十种挣钱办法,加微信拉你进群一起交流最佳答案: UTXO(Unspent Transaction Outputs)是未花费的交易输出,它是比特币交易生成及验证的一个核心概念.交易构成了一组 ...

  9. java技术文章在哪里看呢_谈论Java技术似乎无处不在,但究竟是什么呢?文章末尾有福利...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 谈论Java技术似乎无处不在,但究竟是什么呢? 下面的部分将解释Java技术如何既是一种编程语言,又是一种平台,并概述这种技术可以为您做些什么. Java ...

最新文章

  1. mysql server_id作用_在MySQL中设置`server-id`变量不起作用
  2. 《乐高EV3机器人搭建与编程》——2.2 颜色设计
  3. python中文件读写位置的作用-python配置文件的读写
  4. 黑马程序员Linux系统开发视频之线程共享资源与非共享资源
  5. redisTemplate进行自增操作例子
  6. 【51Nod - 1215 】数组的宽度 (单调栈 或 分治 或 单调队列,算贡献,需去重)
  7. bp神经网络预测_股指期货价格变动趋势往往反映的是股票价格的走势,因此BP神经网络对股指期货价格的准确预测就是对股票价格的准确预测。...
  8. liunx 常用操作
  9. hdu 1426(DFS+坑爹的输入输出)
  10. 在线密码管理器LastPass遭入侵 官方建议修改主密码
  11. MySQL数据库索引
  12. SuperMap 三维模型数据制作
  13. 计算机专业英语四六级,英语四级历年真题,历年四六级真题电子版?
  14. MP3stego下载(强大的隐写工具)
  15. 数据建模太难?全美一等奖得主,带你从入门到超神!
  16. (邱维声)高等代数课程笔记:数域
  17. 如何解决下载链接在微信中无法打开的问题的?
  18. 还在使用Postman吗?out了兄弟,快来解锁Apifox这款国产化API工具吧
  19. 计算机系男生横幅,男生节标语横幅
  20. netstat查看系统TIME_WAIT状态个数

热门文章

  1. java 吞吐量_JVM参数设置(吞吐量和响应时间性能调优)
  2. spark集群,kafka集群和zookeeper的docker集群快速搭建
  3. Matplotlib 最具价值的20个可视化项目
  4. 小米Note3 MIUI9可以用的XPosed框架
  5. C语言中squeeze的作用,pytorch下的unsqueeze和squeeze的用法说明
  6. 适合计算机专业打的游戏,有哪些适合打游戏的电竞电脑?2020电竞游戏电脑排行榜...
  7. 【opencv】 旋转矩形
  8. linux arp头文件,Linux下ARP头结构体的问题
  9. 操作系统 页面置换算法模拟
  10. 来聊聊双目视觉的基础知识(视察深度、标定、立体匹配)