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

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

前言

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

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

免信任的共识机制

被扩展了的共识概念

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

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

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

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

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

为什么是免信任的区块链

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

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

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

结论

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

老K漫谈区块链的共识(1)——免信任的共识机制的更多相关文章

  1. 老K漫谈区块链的共识(3)——分布式系统和区块链共识

    1. 啥是分布式系统 当我们评价一个新的事物或者介绍一个新的技术的时候,我们不能架空历史和环境,新的事物不可能脱离历史和环境凭空诞生.任何新的事物和新的技术总是或多或少的,与旧的事件以及过去的技术有所 ...

  2. 区块链共识算法 PBFT(拜占庭容错)、PAXOS、RAFT简述

    共识算法 区块链中最重要的便是共识算法,比特币使用的是POS(Proof of Work,工作量证明),以太币使用的是POS(Proof of Stake,股权证明)使得算理便的不怎么重要了,而今PO ...

  3. 区块链学习5:智能合约Smart contract原理及发展历程科普知识

    ☞ ░ 前往老猿Python博文目录 ░ 一.智能合约的定义 通俗来说,智能合约就是一种在计算机系统上,当一定条件满足的情况下可被自动执行的合约,智能合约体现为一段代码及其运行环境.例如银行信用卡的自 ...

  4. 以太坊开发DApp入门教程——区块链投票系统(一)

    概述 对初学者,首先要了解以太坊开发相关的基本概念.   学习以太坊开发的一般前序知识要求,最好对以下技术已经有一些基本了解: 一种面向对象的开发语言,例如:Python,Ruby,Java... 前 ...

  5. eoLinker API-Shop 抓住区块链机遇,从这些API开始

    区块链是分布式存储.点对点传输.共识机制.加密算法等计算机技术的新型应用模式.所谓共识机制是区块链系统中实现不同节点之间建立信任.获取权益的数学算法. 区块链目前分为三类: 公有区块链(PublicB ...

  6. 微软刚发布的区块链去中心化身份识别系统DID

    https://mp.weixin.qq.com/s?__biz=MzAwMDU1MTE1OQ==&mid=2653549389&idx=1&sn=158f9feb10d76a ...

  7. HyperLedger Fabric 1.4 区块链技术定义(2.1)

    区块链技术指使用点对点传输.共识机制.加密算法等技术,保证分布式数据库区块写入链中数据的一致性,达到去中心化和不可篡改的目的.       区块链就是一种特殊的分布式数据库,使用现有的各种成熟的技术, ...

  8. 以太坊(ethereum)开发DApp应用的入门区块链技术教程

    概述 对初学者,首先要了解以太坊开发相关的基本概念.   学习以太坊开发的一般前序知识要求,最好对以下技术已经有一些基本了解: 一种面向对象的开发语言,例如:Python,Ruby,Java... 前 ...

  9. 从Go语言编码角度解释实现简易区块链

    区块链技术 人们可以用许多不同的方式解释区块链技术,其中通过加密货币来看区块链一直是主流.大多数人接触区块链技术都是从比特币谈起,但比特币仅仅是众多加密货币的一种. 到底什么是区块链技术? 从金融学相 ...

随机推荐

  1. 阿里AI设计师一秒出图,小撒连连惊呼,真相是...

    近期,央视<机智过人>的舞台上来了位“三超设计师”——设计能力超强:出图能力超快:抗压能力超强,成功迷惑嘉宾和现场观众,更让撒贝宁出错三连. 节目一开场,这位“设计师”就为现场嘉宾:主持人 ...

  2. OOP面向对象

    一:什么是面向过程 我们是怎么思考和解决上面的问题呢? 答案是:我们自己的思维一直按照步骤来处理这个问题,这是我们的常规思维,这就是所谓的面向过程POP编程   二:面向过程POP为什么转换为OOP ...

  3. 第一册:lesson thirty nine.

    原文: Don't drop it! A:What are you going to do with that vase,Penny? B:I am going to put it on the ta ...

  4. 第一册:lesson twenty five。

    原文:Mrs.smith's kitchen. Mrs.smith's kitchen is small. There is a refrigerator in the kitchen. The re ...

  5. H5 video播放视频遇到的问题

    我在别的网站上下载了一个mp4格式的视频,加到video标签里可以正常播放, 然后我用FLV自己转成mp4,却提示不支持的格式和mine类型, 后来找到一篇文章 http://jingyan.baid ...

  6. python学习笔记(二)、字符串操作

    该一系列python学习笔记都是根据<Python基础教程(第3版)>内容所记录整理的 1.字符串基本操作 所有标准序列操作(索引.切片.乘法.成员资格检查.长度.最小值和最大值)都适用于 ...

  7. (8)Jquery1.8.3快速入门_可见性选择器

    一.Jquery的可见性选择器: 可见性选择器: 1.:visable 筛选可以见的元素 2. :hidden 筛选不可见的元素 效果: 源码: <!DOCTYPE html> <h ...

  8. vue(四)-vuex与组件联合使用

    官方定义: Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.我的理解就是,vuex就是前端的数据库. 1.首先核心是store,是个仓库,包含着state,因此第一步需要新建一个sto ...

  9. elementUI vue v-model的修饰符

    v-model的修饰符 v-model.lazy 只有在input输入框发生一个blur时才触发 v-model.trim 将用户输入的前后的空格去掉 v-model.number 将用户输入的字符串 ...

  10. zTree 节点文字过多处理方法

    zTree setting.view.addDiyDom 方法可以实现自定义控件,指定节点显示内容.因此需要自己实现addDiyDom方法. 如果树节点不显示checkbox ,处理方法为: func ...