老K漫谈区块链的共识(1)——免信任的共识机制
老k,柏链道捷CTO、清华阿尔山区块链研究中心高级工程师,超过17年的系统软件开发经验,在操作系统、编译器、虚拟机和符号执行方面都有实战经验。主持开发多个开眼项目,目前主要从事区块链底层系统开发工作。
这个系列的文章主要谈一下我对区块链中的共识机制的理解,欢迎跟大家一起交流、探讨。
前言
当今区块链的概念和产业已经遍布神州大地,创业言必区块链,在各种咖啡厅中你都可以听到周围的人谈论区块链,大部分从业者对区块链技术的一个认识是它是一个分布式账本技术,更有些人说区块链是各种计算机技术的组合,如P2P网络,数字签名,分布式系统,虚拟机等等,区块链本身并没有任何技术上的创新,这个说法几乎是正确的,除了区块链的共识机制。
作者认为从计算机技术的角度来讲,区块链的共识机制应该是一个伟大的技术创新,填补了计算机专业领域的一个空白。如果中本聪愿意发表学术论文的话,这应该也是21世纪以来最重要的学术论文之一。毫不讳言,区块链的共识机制是区块链的核心技术,没有之一。
免信任的共识机制
被扩展了的共识概念
当前正因为区块链热闹非凡,以至于区块链中的共识机制本来是计算机学科中分布式系统的概念,已经被扩展到很多社会科学。我们可以认为关于这些共识机制中说法中有广义的社科领域的共识和计算机领域的共识之分。
在一些区块链的讲座中,很多(特别是非计算机专业的)专家在谈区块链的时候,喜欢把共识这个名词扩展到社会学,或者人类发展史比较宏观的话题。比如人们通过共识进行协作,从而产生伟大的文明。有些谈到区块链的观点认为宗教,国家也是一种共识,这些说法站的地位比较高。
区块链共识机制的价值所在
但是从作者的角度,这和区块链的共识还是有一定的区别,如果我们非要把计算机领域的专业术语套用到其他学科的话。区块链的共识本质,要在一群完全不信任甚至不认识的节点或者人群中进行协作。这是一种免信任的协作方式,因为人类建立信任的壁垒确实太高了。
网上有些观点说区块链是建立信任的协作网络,这个说法不能说错也不能说对,其实可以这么表述,正是因为区块链是一种免信任的协作网络,所以它才是可信的。由于区块链中的参与方相互之间都是免信任,所以这种协作成本很低且可扩张性非常好,这是区块链共识机制的本来面目或者说区块链共识机制的价值所在。
为什么是免信任的区块链
事实上大部分非计算机领域的共识的说法都是需要建立信任的协作网络,如国家的建立,国际组织,公司联盟的建立,都是大家对某个组织或者机构的信任。而区块链的共识机制由于是免信任的,所以协作网络中的任意节点可以在任意时刻加入和退出。
这也是所谓的广义的社科领域中的共识机制所达不到的,任何联盟组织和国家都不会让任意成员任意时刻加入或者退出的。严格意义上来说,区块链中的联盟链显然不属于这种免信任的共识网络,联盟链的准入有一定的门槛,即需要一定的信任。
如果扩展来说,智能合约和通证经济都是一种共识机制。智能合约试图通过一种不可篡改的程序代码(合同即代码)形成多方的共识,而智能合约的参与方都是可以互不信任的。而通证经济试图通过某种经济激励达到一种共识让大家去协作完成某些任务和使命。这些都可以认为是一种免信任的共识。一旦是一个需要相互信任的协作网络,人类猜忌和贪婪的本性就有可能会暴露。所以我们都信任免信任的区块链。
结论
从计算机专业的角度讲,区块链的共识机制一种工具而已,并不能承载太多的社科领域的意义。它解决了在存在拜占庭错误(即可认为网络节点中有恶意节点,或者协作的人群中有叛徒)下,协作网络或者协作人群中如何达到共识的一种具体方法。后面的文章中我们主要会在计算机专业范畴内谈区块链的共识。
老K漫谈区块链的共识(1)——免信任的共识机制的更多相关文章
- 老K漫谈区块链的共识(3)——分布式系统和区块链共识
1. 啥是分布式系统 当我们评价一个新的事物或者介绍一个新的技术的时候,我们不能架空历史和环境,新的事物不可能脱离历史和环境凭空诞生.任何新的事物和新的技术总是或多或少的,与旧的事件以及过去的技术有所 ...
- 区块链共识算法 PBFT(拜占庭容错)、PAXOS、RAFT简述
共识算法 区块链中最重要的便是共识算法,比特币使用的是POS(Proof of Work,工作量证明),以太币使用的是POS(Proof of Stake,股权证明)使得算理便的不怎么重要了,而今PO ...
- 区块链学习5:智能合约Smart contract原理及发展历程科普知识
☞ ░ 前往老猿Python博文目录 ░ 一.智能合约的定义 通俗来说,智能合约就是一种在计算机系统上,当一定条件满足的情况下可被自动执行的合约,智能合约体现为一段代码及其运行环境.例如银行信用卡的自 ...
- 以太坊开发DApp入门教程——区块链投票系统(一)
概述 对初学者,首先要了解以太坊开发相关的基本概念. 学习以太坊开发的一般前序知识要求,最好对以下技术已经有一些基本了解: 一种面向对象的开发语言,例如:Python,Ruby,Java... 前 ...
- eoLinker API-Shop 抓住区块链机遇,从这些API开始
区块链是分布式存储.点对点传输.共识机制.加密算法等计算机技术的新型应用模式.所谓共识机制是区块链系统中实现不同节点之间建立信任.获取权益的数学算法. 区块链目前分为三类: 公有区块链(PublicB ...
- 微软刚发布的区块链去中心化身份识别系统DID
https://mp.weixin.qq.com/s?__biz=MzAwMDU1MTE1OQ==&mid=2653549389&idx=1&sn=158f9feb10d76a ...
- HyperLedger Fabric 1.4 区块链技术定义(2.1)
区块链技术指使用点对点传输.共识机制.加密算法等技术,保证分布式数据库区块写入链中数据的一致性,达到去中心化和不可篡改的目的. 区块链就是一种特殊的分布式数据库,使用现有的各种成熟的技术, ...
- 以太坊(ethereum)开发DApp应用的入门区块链技术教程
概述 对初学者,首先要了解以太坊开发相关的基本概念. 学习以太坊开发的一般前序知识要求,最好对以下技术已经有一些基本了解: 一种面向对象的开发语言,例如:Python,Ruby,Java... 前 ...
- 从Go语言编码角度解释实现简易区块链
区块链技术 人们可以用许多不同的方式解释区块链技术,其中通过加密货币来看区块链一直是主流.大多数人接触区块链技术都是从比特币谈起,但比特币仅仅是众多加密货币的一种. 到底什么是区块链技术? 从金融学相 ...
随机推荐
- 【原创】驱动卸载之ControlService函数
BOOL WINAPI ControlService( _In_ SC_HANDLE hService, _In_ DWORD dwControl, _Out_ LPSERVICE_STATUS lp ...
- 使用Laya引擎开发微信小游戏(下)
本文由云+社区发表 6. 动画 6.1 创建伞兵对象 在src目录下创建一个新目录role,用来存放游戏中角色. 在role里创建一个伞兵Soldier.ts对象文件. module role{ ex ...
- SOAP报文转成JAVA对象
在今天以前我还没有用过代码解析过SOAP报文,更别提转成JAVA对象了,今天的任务中报文这个模样的,(为防止数据信息,以下数据我故意打乱了防止泄露什么信息.) <?xml version=&qu ...
- Java网络编程的Java流介绍
前言 网络程序所做的很大一部分工作都是简单的输入输出:将数据字节从一个系统移动到另一个系统.Java的I/O建立于流(stream)之上.输入流读取数据,输出流写入数据.过滤器流(filter)流可以 ...
- 《Thinking In Java》---第四版 练习题答案
百度网盘下载:https://pan.baidu.com/share/link?shareid=2111776725&uk=2869544179&app=zd 在线查看:http:// ...
- 建立多页面vue.js项目
介绍 根据需求,我们希望建立一个多页面的vue.js项目,如何改造单页面vue.js项目为多页面项目?跟着我的步伐看下去吧. 1.创建单页面vue.js项目 简单的记录一下创建步骤: --安装cnpm ...
- .net core部署在iis上
部署在Windows Server 2008 R2上,一直安装失败,网上找的资料一直无法解决问题,后来找到了官方的文档, 原来是要安装sp1,大概2g左右,同时也要安装Microsoft Visual ...
- Updatepanel 后端返回后,在 Updatepanel 内控件的前端 js 失效问题
实际情况:点击下箭头弹出列表,点击列表上的隐藏按钮隐藏列表. 背景:模块没有使用Js或者Jquery的Ajax功能,而是使用Asp.Net的Ajax控件--UpdatePanel + ScriptMa ...
- python中的eval函数
eval() 函数十分强大 -- 将字符串 当成 有效的表达式 来求值 并 返回计算结果 In [1]: eval("1 + 3") Out[1]: 4 In [2]: eval( ...
- MR程序本地调试,提交到集群运行
在本地调试,提交到集群上运行. 在本地程序中的Configuration中添加如下配置: Configuration conf = new Configuration(); conf.set(&quo ...