每条区块链的节点,例如以太坊节点,都拥有自己存储数据的地方,节点之间索然会相互通信,担忧彼此不依赖,这就是因为互不信任.

在这种情况下,各个节点如何保互相通信的过程中维护数据的一致性,从而使链上相同区块号的区块只有一个呢?此时就诞生了区块链技术占中的另一个知识点:共识,又称共识机制.

所谓共识,通俗来讲,就是我们大家对某种事物的理解达成一致的意思,比如日常快回讨论问题,又比如判断一个动物是不是猫,我们肉眼看了后觉得像猫,那么我们就认为他是猫,这就是是共识,共识就是一种规则.

技术上诉会议的栗子,参与会议的人,通过开会的方式达到接近问题的目的.对比区块链中的参与挖矿的节点,节点中有挖矿这么一种角色,他在代码中对应某一处功能模块.节点矿工通过某种公式算法来解决该节点的账本与其他节点的账号保持一致.账本保持一致的意思是:各个节点同步的区块的信息保持一致,已维护同一条区块链.

那么为什么需要共识呢?没有共识可不可以?当然不可以,这样会出现问题,加入生活中没有了共识规则,那么一切都会乱套,区块链与此类似,没有了共识规则,各个节点各干各的,会失去一致性,区块链也不会达成统一.

上次会议和区块链的对应关系如下BTC为例:

a.参会的人=挖矿的旷工

b.开会=共识算法

c.解决讨论的问题=让自己的账本跟其他节点保持一致

有上诉所说的你可能会对上面的内容产生一些疑问:

a.区块链节点和旷工是什么关系?

b.让及诶单账本保持一致,账本的内容是什么?

c.为什么需要工时算法去保持账本一致?

首先,我们来看一些区块链和旷工的关系.旷工是区块链节点的一个角色,从编程的角度来看,就是程序中的一个功能模块.因此可见,旷工与区块链就是包含于被包含的关系.

其次,然工商本保持一致,账本的内容是什么?账本的内容就是所有节点维护的那条公链中的区块信息和区块的相关信息.要保持这条公链不会出错,块与块之间必须正常相连.

最后,为什么需要共识算法来保证账本的一致呢?因为区块会北街店中的一些功能模块生成,在众多节点且相同的时间流逝中,A节点有可能诞生一个区块1,B节点也有可能诞生一个区块1,这样他们但是也难怪的区块号就发生重复了,在一条公链中,相同的区块号最终只会挑选一个连接到链中,这时候取谁好呢?此时就需要共识算法这一条规则来做出选择了,这个选择大致上如下图:

DAPP开发-共识的作用相关推荐

  1. EOS智能合约与DApp开发入门教程

    EOS的是Block.One主导研发的一个区块链底层公链系统,它专门为支撑商业去中心化应用(Decentralized Application)而设计,其代码开源. 比特币被称为区块链1.0,因为它开 ...

  2. 区块链DAPP开发入门课程(PHP版)

    1.前言及环境部署 1.1 课程说明 为什么有这个课程? 入门区块链开发已有些时日,走过的坑实在是太多了,对于像我这种从事互联网软件开发多事的老兵来说,上手都有些吃力,可想而知对于新手来说就更难了,尤 ...

  3. 技术分享 | 基于EOS的Dapp开发

    区块链技术是当前最能挑动社会舆论神经,激起资本欲望的现象级技术.去中心化的价值互联,信用共识,新型组织构架,新的生产关系和智能合约,颠覆法币的发行流通体系和记账体系.这些新的技术都让人充满想象,充满向 ...

  4. 《区块链DAPP开发入门、代码实现、场景应用》笔记1——天外飞仙DAPP

    图1.15展示了一个DAPP的全景图,该系统架构图包含了从用户通过可视化界面发起操作到以太坊状态机发生改变的全流程.首先用户通过Web界面或者手机APP,将操作数据发送到一个传统的业务服务器,该业务服 ...

  5. 区块链与DApp开发(学习总结)

    0 区块链认知 开发区块链与Dapp所需知识 GO 语言: 联盟链.私有链的搭建,设立接口.监听 Solidity语言: 智能合约开发,区块链上的逻辑实现 Node.js : 监听.通信.RPC Ja ...

  6. 初学区块链DAPP开发的一些总结

    入门区块链开发已有些时日,走过的坑实在是太多了,对于像我这种从事互联网软件开发多事的老兵来说,上手都有些吃力,可想而知对于新手来说就更难了,尤其是完全靠自学又没有人指导的情况,可能一个坑就能让你怀疑人 ...

  7. 以太坊DApp开发环境搭建

    2019独角兽企业重金招聘Python工程师标准>>> 以太坊DApp开发环境搭建分为Ubuntu.Windows.mac下的搭建.目的为开发者提供一个以太坊开发.测试的搭建开发环境 ...

  8. 最新EOS合约教程,从系统到环境,从创建到部署,从前端到后台,Dapp开发

    最新EOS合约教程,从系统到环境,从创建到部署,从前端到后台,Dapp开发 前言 环境 重点声明: 1,安装虚拟机也好, 双系统也好, 把Linux装了 2, 安装EOSIO开发环境, 使用js4eo ...

  9. 人工智能在塑造未来移动应用开发中的作用

    随着时间的推移,人工智能在塑造移动应用发展未来中的作用越来越重要.那么人工智能在塑造未来移动应用开发中具体起到哪些作用呢? 人工智能在塑造未来移动应用开发中的作用 搜索引擎优化.传统上,移动应用程序通 ...

  10. 区块链学习(3)--以太坊Dapp开发

    DApp是Decentralized Application的缩写,译为:分散式的应用程序.App我们都知道,我们在智能手机上安装的应用程序也就是App.而DApp比App多了一个'D','D'的意思 ...

最新文章

  1. 如何起诉一辆自动驾驶汽车?
  2. nodejs笔记-异步编程
  3. 点击Ehlib列标题的快速排序方法
  4. Linux环境下c语言静态链接库和动态链接库创建和使用
  5. ORA-12516 TNS: 监听程序找不到符合协议堆栈要求的可用处理程序
  6. matlab光顺拐点,基于MATLAB的最大误差双圆弧逼近曲线的算法及实现.pdf
  7. 详细介绍MySQL/MariaDB的锁
  8. Flash动画中按钮的八个动作
  9. 一周愣降900元!这款iPhone不值了?
  10. Express-js无法获取我的静态文件,为什么?
  11. python里的拆包、引用、递归与匿名函数
  12. JavaEE学习03--Servlet
  13. visio 如何画光学器件
  14. 软件开发javascript html实现网页版日历代码_javascript技巧
  15. java tm 6 update_Java(TM) 6 Update(java运行环境) V 6.0.450.6 官方版
  16. 线性方程组解个数的判定和求解
  17. 你觉得让Android 开发所向往的高薪岗位有哪些?
  18. 大家好,我是达叔,我创建了一个做项目的星球【达叔与他的朋友们】,来吗?...
  19. 深入理解游戏中寻路算法
  20. 网页排版布局常见问题有哪些?

热门文章

  1. 我知道你在想什么:七天破解身体语言
  2. ERROR: failed to solve: failed to compute cache key: failed to calculate checksum of ref,找不到容器的目录
  3. 【北京科技大学】考研初试复试资料分享
  4. 小程序 多图片上传到服务端(图片压缩)
  5. 网页调用服务器视频代码,网页全终端视频流媒体播放器EasyPlayer之使用 nginx 和 rtmp 插件搭建视频直播和点播服务器(示例代码)...
  6. 大数据项目实战(2) | 模拟数据
  7. 曾经有个能帮我修电脑的BOY,我没有好好珍惜……
  8. 如何有效避免拍照、微信外传涉密文件?
  9. 【学习笔记】C++语言程序设计(郑莉):类与对象
  10. 网络知识高频面试题【网络知识学习之30问-第十六刊】