当前位置: 首页 > news >正文

老K漫谈区块链的共识(1)——免信任的共识机制

老k,柏链道捷CTO、清华阿尔山区块链研究中心高级工程师,超过17年的系统软件开发经验,在操作系统、编译器、虚拟机和符号执行方面都有实战经验。主持开发多个开眼项目,目前主要从事区块链底层系统开发工作。

这个系列的文章主要谈一下我对区块链中的共识机制的理解,欢迎跟大家一起交流、探讨。

前言

当今区块链的概念和产业已经遍布神州大地,创业言必区块链,在各种咖啡厅中你都可以听到周围的人谈论区块链,大部分从业者对区块链技术的一个认识是它是一个分布式账本技术,更有些人说区块链是各种计算机技术的组合,如P2P网络,数字签名,分布式系统,虚拟机等等,区块链本身并没有任何技术上的创新,这个说法几乎是正确的,除了区块链的共识机制。

作者认为从计算机技术的角度来讲,区块链的共识机制应该是一个伟大的技术创新,填补了计算机专业领域的一个空白。如果中本聪愿意发表学术论文的话,这应该也是21世纪以来最重要的学术论文之一。毫不讳言,区块链的共识机制是区块链的核心技术,没有之一。

免信任的共识机制

被扩展了的共识概念

当前正因为区块链热闹非凡,以至于区块链中的共识机制本来是计算机学科中分布式系统的概念,已经被扩展到很多社会科学。我们可以认为关于这些共识机制中说法中有广义的社科领域的共识和计算机领域的共识之分。

在一些区块链的讲座中,很多(特别是非计算机专业的)专家在谈区块链的时候,喜欢把共识这个名词扩展到社会学,或者人类发展史比较宏观的话题。比如人们通过共识进行协作,从而产生伟大的文明。有些谈到区块链的观点认为宗教,国家也是一种共识,这些说法站的地位比较高。

区块链共识机制的价值所在

但是从作者的角度,这和区块链的共识还是有一定的区别,如果我们非要把计算机领域的专业术语套用到其他学科的话。区块链的共识本质,要在一群完全不信任甚至不认识的节点或者人群中进行协作。这是一种免信任的协作方式,因为人类建立信任的壁垒确实太高了。

网上有些观点说区块链是建立信任的协作网络,这个说法不能说错也不能说对,其实可以这么表述,正是因为区块链是一种免信任的协作网络,所以它才是可信的。由于区块链中的参与方相互之间都是免信任,所以这种协作成本很低且可扩张性非常好,这是区块链共识机制的本来面目或者说区块链共识机制的价值所在。

为什么是免信任的区块链

事实上大部分非计算机领域的共识的说法都是需要建立信任的协作网络,如国家的建立,国际组织,公司联盟的建立,都是大家对某个组织或者机构的信任。而区块链的共识机制由于是免信任的,所以协作网络中的任意节点可以在任意时刻加入和退出。

这也是所谓的广义的社科领域中的共识机制所达不到的,任何联盟组织和国家都不会让任意成员任意时刻加入或者退出的。严格意义上来说,区块链中的联盟链显然不属于这种免信任的共识网络,联盟链的准入有一定的门槛,即需要一定的信任。

如果扩展来说,智能合约和通证经济都是一种共识机制。智能合约试图通过一种不可篡改的程序代码(合同即代码)形成多方的共识,而智能合约的参与方都是可以互不信任的。而通证经济试图通过某种经济激励达到一种共识让大家去协作完成某些任务和使命。这些都可以认为是一种免信任的共识。一旦是一个需要相互信任的协作网络,人类猜忌和贪婪的本性就有可能会暴露。所以我们都信任免信任的区块链。

结论

从计算机专业的角度讲,区块链的共识机制一种工具而已,并不能承载太多的社科领域的意义。它解决了在存在拜占庭错误(即可认为网络节点中有恶意节点,或者协作的人群中有叛徒)下,协作网络或者协作人群中如何达到共识的一种具体方法。后面的文章中我们主要会在计算机专业范畴内谈区块链的共识。

转载于:https://www.cnblogs.com/tokenpai/p/9390938.html

相关文章:

  • 【Oracle】在win10上安装Oracle客户端报错:[INS-13001]环境不满足最低要求
  • Python、Linux与我的缘分
  • NSString 字符串
  • md5sum
  • jdbc就是这么简单
  • PhotoPickerDemo【PhotoPicker0.9.8的个性化修改以及使用(内部glide版本号是3.7.0)】...
  • php中类文件名的命名的规则是什么
  • Vue组件定义
  • SQL Server删除distribution数据库
  • 数据驱动的数字化转型:从流程驱动到数据驱动
  • vuex简单总结
  • 两种方式 : VS 如何调试dll中的源码
  • 第四课:Yarn和Map/Reduce配置启动和原理讲解
  • 8.6 11.25-11.27
  • python学习之老男孩python全栈第九期_数据库day001 -- 作业
  • (三)从jvm层面了解线程的启动和停止
  • [iOS]Core Data浅析一 -- 启用Core Data
  • [rust! #004] [译] Rust 的内置 Traits, 使用场景, 方式, 和原因
  • 【MySQL经典案例分析】 Waiting for table metadata lock
  • 2017-08-04 前端日报
  • Android框架之Volley
  • Android路由框架AnnoRouter:使用Java接口来定义路由跳转
  • angular2开源库收集
  • echarts的各种常用效果展示
  • eclipse的离线汉化
  • Java|序列化异常StreamCorruptedException的解决方法
  • Javascript编码规范
  • JavaScript对象详解
  • PAT A1050
  • Redis 懒删除(lazy free)简史
  • SOFAMosn配置模型
  • WePY 在小程序性能调优上做出的探究
  • 包装类对象
  • 微信公众号开发小记——5.python微信红包
  • 小程序 setData 学问多
  • 用Node EJS写一个爬虫脚本每天定时给心爱的她发一封暖心邮件
  • 追踪解析 FutureTask 源码
  • $Django python中使用redis, django中使用(封装了),redis开启事务(管道)
  • (03)光刻——半导体电路的绘制
  • (51单片机)第五章-A/D和D/A工作原理-A/D
  • (react踩过的坑)Antd Select(设置了labelInValue)在FormItem中initialValue的问题
  • (非本人原创)我们工作到底是为了什么?​——HP大中华区总裁孙振耀退休感言(r4笔记第60天)...
  • (附源码)springboot炼糖厂地磅全自动控制系统 毕业设计 341357
  • (附源码)ssm旅游企业财务管理系统 毕业设计 102100
  • (三十五)大数据实战——Superset可视化平台搭建
  • (十三)Maven插件解析运行机制
  • (转)h264中avc和flv数据的解析
  • (转)使用VMware vSphere标准交换机设置网络连接
  • (转载)虚幻引擎3--【UnrealScript教程】章节一:20.location和rotation
  • .bat批处理出现中文乱码的情况
  • .NET 4 并行(多核)“.NET研究”编程系列之二 从Task开始
  • .NET 设计模式初探
  • .net反编译的九款神器
  • .net解析传过来的xml_DOM4J解析XML文件
  • .ui文件相关