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

第161篇 笔记-去中心化的含义

本文主要内容来自Vitalik Buterin的文章。

“去中心化”这个词是在加密经济学领域用得最多的一个词,通常也作为辨别区块链的依据。然而,这个词也可能是被定义得最不恰当的一个词。数千小时的研究和价值数十亿美元哈希算力的投入都旨在实现去中心化,并保护和提高去中心化的程度。当人们关于协议的讨论变得越发激烈时,一种非常常见的情况是,协议的支持者会声称对方的协议提案是中心化的,并以此作为最终击倒对方的论据。

下图为常见的图表:

(a)中心化 (b)分布式网络 (c)去中心化

分布式意味着交易并非都在同一个地方处理,而去中心化意味着不存在单一的个体可以对交易的处理进行控制。

一、去中心化的三种类型

三个去中性化模型含义如下:

  1. 架构上的(去)中心化。这个系统是由多少台物理计算机组成的?这个系统可以容忍多少台计算机在任意某个时间同时宕机,并且还能继续运行?

  1. 运行上的(去)中心化。有多少个人和组织能最终控制构成这个系统的计算机?

  1. 逻辑上的(去)中心化。系统呈现和维护的接口和数据库结构看起来更像是一个单一的对象,还是松散的群体?简单的启发方式是:如果你把这个系统一分为二,那么这两半还能作为完全独立的单元继续运行吗?

在某些情况下,很难把三者完全隔离开。

为了帮助理解,试举几例:

  1. 传统公司在运行上是中心化的(只有一个CEO),架构上是中心化的(只有一个总部),逻辑上也是中心化的(不能在真正意义上把这家公司连同员工分成两半)。

  1. 语言在逻辑上是去中心化的,A和B之间说的英语与C和D之间说的英语不需要保持一致。没有一种语言的存在需要依赖于中心化的基础设施,并且语法规则并不是由单一的个体创造或控制。

  1. 区块链在运行上是去中心化的(没有人能控制),在架构上也是去中心化的(没有基础设施层面的中心故障点),但其在逻辑上是中心化的(有一个受到共同认可的状态,并且系统表现得像一台单一的计算机)。

很多时候,当谈论区块链的优势时,人们描述的是拥有一个中心化数据库的便利优势。但这种中心化是逻辑上的中心化,在许多情况下,这种中心化是极有用处的。当然,也有人支持尽可能地推进逻辑上的区中心化,因为这种系统在网络分区问题中更容易存活下来,并且在世界上连通性极差的地区也能很好地运行。

架构上的中心化往往会导致运行上的中心化,但这没有必然联系——人们在一个大厅里见面并投票,但这个房间的维护者并没有获得任何决策权。在计算机化系统中,可能会发生架构而非运行上的去中心化——某个在线社区为了方便而使用了一个中心化论坛。但是,这个社区的成员当中有一条广为接受的社会契约,那就是如果论坛的拥有者作恶,那么所有人都会转移到另一个论坛。

逻辑中心化让实现架构去中心化难上加难,但并非不可能。逻辑中心化使得运行去中心化更加困难。

二、支持去中心化的三个理由

为什么去中心化有用?人们通常会提出一下几个观点。

  1. 容错性好。去中心化系统意外宕机的可能性更小,因为它们依赖大量独立的组件,而这些独立的组件不太可能同时意外崩溃。

  1. 能抵抗攻击。去中心化系统使得攻击、破坏或者操控的成本更高,因为它们缺少敏感的中心点,而中心点容易遭受比周围经济系统规模成本更低的攻击。

  1. 抵御参与者串谋。在去中心化系统中,参与者更难串谋以牺牲其他参与者为代价来使自身获利。

以上三个论点都十分重要,且十分有效。但是一旦开始做出协议决策的时候,这三个论点都会导向一些有趣和不一样的结论。不妨一个一个地展开说明。

首先是容错性,核心论证很简单。什么样的事情发生的可能性更低:是1台计算机出现故障,还是10台计算机中有5台计算机同时出现故障?这个道理是毋庸置疑的,并且在现实生活中的很多场景中也可以用得到。

然而,这种有效同时也十分重要的去中心化有时还不如一个偶尔被用来进行预测的数学模型。原因是其中可能会存在共模故障。不妨考虑以下场景:

  1. 区块链的所有节点都在运行相同的客户端软件,并且这个客户端软件存在漏洞。

  1. 区块链的所有节点都在运行相同的客户端软件,这个客户端软件的开发团队和提出更新协议的研发团队都是社区腐败分子。

  1. 在区块链的工作量证明中,70%的矿工来自同一个国家,他们出于安全考虑决定取缔所有矿场。

  1. 大部分的挖矿硬件都是同一家公司生产的,这家公司开了一个后门,任何人都可以通过这个后门随意关闭硬件。

  1. 在区块链权益证明中,70%的押注币存放在同一个交易所中。

从容错去中心化的整体观点出发,不妨看看它们的影响是如何被最小化的。下述结论显而易见。

  1. 拥有多种相互竞争的实施方式至关重要。

  1. 协议升级背后的技术因素必须达成共识,这样更多的人可以更轻松地参与研究讨论和批评某些极度糟糕的协议变化。

  1. 核心开发者和研究人员应该从多家公司或组织招聘。

  1. 挖矿算法应该按照最小化中心化风险的思路去设计。

需要注意的是,初始形式的容错主要集中在实现架构去中心化,但是社区的容错能力一旦控制了协议的持续发展会发生什么,也是需要思考的。

下面讨论抵御串谋。串谋这种行为很难定义,可能有效的表达方法是:串谋是指公众都不喜欢的结合。在现实生活中,很多情况下,最理想的情况是每个人之间的协调配合都很完美,但是如果有人选择配合而其他人选择不配合,那么就很危险了。

在区块链协议的案例中,共识安全性背后的数学和经济推理通常依赖于至关重要的非协调选择模型,或者依赖于某个博弈是由众多微小但可以独立做出决策的参与者所组成的假设。如果某个参与者在工作量证明中获得了超过1/3的挖矿算力,那么他们就可以通过自私挖矿来获得巨大的利润。但是,当90%的挖矿算力协调得非常好,以至于他们能够出现在同一个会议中时,我们还可以说这种非协调选择模型具有实用意义吗?

区块链倡导者也指出,区块链更加安全,因为它们不能跟着自己的想法随意改变自身的规则。可以肯定的是,如果参与方之间协调得越糟糕,那么区块链会越安全。

这就显示了一个根本的悖论。许多的社区,包括以太坊社区,经常被称赞说有着强烈的社区精神,并且能够迅速协调实施、发布以及激活硬分叉。但是,该如何促进和提高这种积极的协调能力,同时避免恶意攻击而使他人陷入困境的不良协调?

这一问题的回答有以下三种:

  1. 不必过多考虑如何缓解不良协调的问题,相反,应该更多地尝试构建可以抵抗这类问题的协议。

  1. 尝试去寻找一个合适的中间点,在允许协议通过足够的协调进行演进和发展的同时,保证这种协调不足以发动攻击。

  1. 尝试区分什么是有利的协调,什么是不利的协调,并且尽量使有利的协调更容易,不利的协调更困难。

也许最好的解决方案是依赖于某个保证具有高度去中心化的团体,那就是协议的用户。

相关文章:

第161篇 笔记-去中心化的含义

本文主要内容来自Vitalik Buterin的文章。“去中心化”这个词是在加密经济学领域用得最多的一个词,通常也作为辨别区块链的依据。然而,这个词也可能是被定义得最不恰当的一个词。数千小时的研究和价值数十亿美元哈希算力的投入都旨在实现去中心化&#x…...

「计算机组成原理」数据的表示和运算(二)

文章目录五、奇偶校验码六、算术逻辑单元ALU6.1 电路的基本原理6.2 加法器的设计6.2.1 一位全加器6.2.2 串行加法器6.2.3 串行进位的并行加法器6.2.4 并行进位的并行加法器七、补码加减运算器八、标志位的生成九、定点数的移位运算9.1 算数移位9.2 逻辑移位9.3 循环移位五、奇偶…...

建立自己的博客

环境安装: w10系统安装 第一步:安装git Git 官网: https://git-scm.com/ 第二步:安装Node.js Node.js官网:https://nodejs.org/zh-cn/ 使用cmd检测: node -v 第三步:安装Hexo Hexo官网:htt…...

Docker 安装mysql Mac 环境下

已安装桌面端 Docker (Mac安装Docker) 安装方式一 打开链接 https://www.docker.com/products/docker-desktop 选择平台下载 安装方式二 安装homebrew /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/m…...

《C++代码分析》第三回:类成员函数覆盖父类函数的调用(分析this指针的变化)

一、前言 在C的学习中我们知道&#xff0c;子类是可以覆盖父类的方法&#xff0c;这里我们探讨一下子类方法调用父类方法时this指针时如何变化的。 二、示例代码 #include "windows.h" #include "windef.h" #include <iostream> #include <tch…...

Altium designer--软件简介及安装教程(Altium designer16)

一、软件介绍&#xff08;完整安装包资源见文末链接&#xff0c;含破解license&#xff09; Altium Designer 是一款简单易用、原生3D设计增强的一体化设计环境&#xff0c;结合了原理图、ECAD库、规则和限制条件、BoM、供应链管理、ECO流程和世界一流的PCB设计工具。通过原理…...

Windows系统下基于开源软件的多物理场仿真

Windows系统下基于开源软件的多物理场仿真实践技术应用随着计算机技术的发展&#xff0c;计算机仿真技术日益成为继实验和理论之后的第三种重要研究和设计手段。真实世界中遇到的问题往往是固体力学&#xff0c;流体力学&#xff0c;热&#xff0c;电磁等多种现象耦合而成&…...

【STL】list剖析及模拟实现

✍作者&#xff1a;阿润菜菜 &#x1f4d6;专栏&#xff1a;C 初识list 1. list基本概况 list是可以在常数范围内在任意位置进行插入和删除的序列式容器&#xff0c;并且该容器可以前后双向迭代。list的底层是双向链表结构&#xff0c;双向链表中每个元素存储在互不相关的独立…...

Go打包附件内容到执行文件

前言 如果我们的应用在启动的时候需要对数据库进行初始化(比如建表等), 可以通过读取.sql文件内容直接执行. 但是, 这样会带出一个问题: 在发送可执行文件的时候, 需要连带着附件文件, 并且相对路径还不能出错. 这样太麻烦了有时我们并不希望附件的内容被使用者看到 处于种种…...

Spring的配置属性

介绍 以前都是用XML来设置属性值&#xff0c;SpringBoot的自动配置可以简化Spring应用的开发。配置属性只是配置Spring应用上下文中bean的属性而已&#xff0c;可以通过多个源来配置&#xff0c;包括JVM系统属性、环境变量等。 Spring中有两种不同(但相关)的配置 bean装配&…...

132.《render-props, Hoc,自定义hooks 详解》

文章目录render-props 模式props 方式children 方式(推荐)Hoc&#xff08;高阶组件&#xff09;使用步骤示例props 丢失解决方案自定义 hook1.只执行一次2.防抖hook高阶组件与自定义hook有什么区别相同点不同点React 中代码逻辑复用有三种方式&#xff0c;render-props, Hoc&am…...

通过Session共享数据验证码进行用户登录

通过Session共享数据验证码进行用户登录 需求&#xff1a; 访问带有验证码的登录页面login.jsp。用户输入用户名&#xff0c;密码以及验证码。 ①。如果用户名和密码输入有误&#xff0c;跳转登陆页面&#xff0c;提示&#xff1a;用户名或密码错误。 ②。如果验证码输入有误…...

C++STL详解(六)——stack和queue

文章目录空间适配器stackstack的定义方式stack的使用stack的模拟实现queuequeue的定义方式queue的使用queue的模拟实现空间适配器 适配器是一种设计模式&#xff08;设计模式是一套被反复使用的&#xff0c;多数人知晓的&#xff0c;经过分类编目的&#xff0c;代码设计经验的…...

javaEE 初阶 — CSS 的 基本语法 与 引入方式

文章目录1. 基本语法规范2. 三种引入方式1. 基本语法规范 CSS 的基本语法规范是由 选择器 和 若干个声明 组成的。 选择器选中一个元素之后&#xff0c;这些属性都是针对于这个元素展开的。 先来看一个没有 CSS 的效果。 <body><p>这是一个段落</p> </bo…...

QEMU启动ARM32 Linux内核

目录前言前置知识ARM Versatile Express开发板简介ARM处理器家族简介安装qemu-system-arm安装交叉编译工具交叉编译ARM32 Linux内核交叉编译ARM32 Busybox使用busybox制作initramfs使用QEMU启动ARM32 Linux内核模拟vexpress-a9开发板模拟vexpress-a15开发板参考前言 本文介绍采…...

than的用法合集

首先需要了解一下than的词性&#xff0c;其有两个词性&#xff0c;一个是介词&#xff0c;一个是连词。 介词后面一定要接上名词性的词语&#xff0c;比如 i am taller then him 我比我的老师高 连词就比较自由&#xff0c;一般用来连接两个句子&#xff1b;但是使用than连词词…...

Unet 基于TCGA颅脑肿瘤MRI分割(高阶API分割模型)

目录 1. 介绍 2. dice 指标 3. resnet34 作为 backbone 的分割 4. deeplabv3 图像分割 4.1 问题 4.2 训练 4.3 预测 5. MAnet 图像分割...

[NIPS 2017] Improved Training of Wasserstein GANs (WGAN-GP)

Contents IntroductionDifficulties with weight constraintsCapacity underuseExploding and vanishing gradientsGradient penaltyReferencesIntroduction WGAN 增加了 GAN 模型训练的稳定性,但有时仍然会有生成质量不高或难以收敛的问题。作者发现上述问题经常是由 WGAN 中…...

力扣-每天的领导和合伙人

大家好&#xff0c;我是空空star&#xff0c;本篇带大家了解一道简单的力扣sql练习题。 文章目录前言一、题目&#xff1a;1693. 每天的领导和合伙人二、解题1.正确示范①提交SQL运行结果2.正确示范②提交SQL运行结果3.正确示范③提交SQL运行结果4.正确示范④提交SQL运行结果5.…...

考虑分配与合并,用GO实现GCMarkSweep

完整源码 ≧ω≦ 希望各位爸爸们&#xff0c;给我点赞吧 kokool/GCByGo: 《垃圾回收的算法与实现》有感而发 (github.com) 书接上文 我们之前不考虑分配与合并情况下&#xff0c;用GO实现GCMarkSweep&#xff08;标记清除算法&#xff09;&#xff0c;而这次我们继续回顾书本…...

如何在看板中体现优先级变化

在看板中有效体现优先级变化的关键措施包括&#xff1a;采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中&#xff0c;设置任务排序规则尤其重要&#xff0c;因为它让看板视觉上直观地体…...

ssc377d修改flash分区大小

1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...

Module Federation 和 Native Federation 的比较

前言 Module Federation 是 Webpack 5 引入的微前端架构方案&#xff0c;允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...

AI编程--插件对比分析:CodeRider、GitHub Copilot及其他

AI编程插件对比分析&#xff1a;CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展&#xff0c;AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者&#xff0c;分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...

(转)什么是DockerCompose?它有什么作用?

一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用&#xff0c;而无需手动一个个创建和运行容器。 Compose文件是一个文本文件&#xff0c;通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...

mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包

文章目录 现象&#xff1a;mysql已经安装&#xff0c;但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时&#xff0c;可能是因为以下几个原因&#xff1a;1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...

Swagger和OpenApi的前世今生

Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章&#xff0c;二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑&#xff1a; &#x1f504; 一、起源与初创期&#xff1a;Swagger的诞生&#xff08;2010-2014&#xff09; 核心…...

ip子接口配置及删除

配置永久生效的子接口&#xff0c;2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...

Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析

Java求职者面试指南&#xff1a;Spring、Spring Boot、MyBatis框架与计算机基础问题解析 一、第一轮提问&#xff08;基础概念问题&#xff09; 1. 请解释Spring框架的核心容器是什么&#xff1f;它在Spring中起到什么作用&#xff1f; Spring框架的核心容器是IoC容器&#…...

【Go语言基础【13】】函数、闭包、方法

文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数&#xff08;函数作为参数、返回值&#xff09; 三、匿名函数与闭包1. 匿名函数&#xff08;Lambda函…...