《区块链原理与技术》学习笔记(一)——区块链概念和区块链共识机制

2023-11-08

《区块链原理与技术》专业课学习笔记 第一部分

一、概论

1.什么是区块链

区块链:一种按照时间顺序将数据区块以顺序相连的方式组合成链式结构,并以密码学方式保证不可篡改和不可伪造的分布式账本技术。

区块链具有三个基本要素:

  • 交易(transaction):一次操作,导致账本状态的一次改变。
  • 区块(block):记录一段时间内发生的交易和状态结果,是对当前账本状态的共识。
  • (chain):由一个个区块按照发生顺序串联成,是整个状态变化的日志记录。

区块链中的每个区块保存规定时间段内的数据记录,并通过密码学的方式构建一条安全可信的链条,在节点之间通过共识算法,形成一个全员共有、不可篡改的分布式账本。

2.区块链与比特币的关系

2.1 区块链是比特币的底层技术,是比特币的核心基础与架构

比特币的核心问题:货币如何发行?交易如何记账?
如何发行——挖矿机制:通过哈希计算得到特定数值,先计算出的人获得记账权。

记账有比特币奖励和交易手续费,计算量可以证明工作量,保证账本的可靠性,也不会发生通货膨胀。

如何记账——区块链的链式哈希结构,可以做到防篡改。

2.2 区块链不止是比特币

区块链本质是一种去中心化的数字账本,在此基础上可以产生很多加密货币应用,这种技术可以扩展到很多领域。

3 区块链的特点

3.1去中心化

账本数据的维护工作由全部或部分节点承担,普通用户之间的交易不需要第三方介入。

3.2 透明性

区块链的交易和历史都是透明公开的。

3.3 不可篡改性

比特币的每次交易都会记录在区块链上,并且很难篡改。

3.4 多方共识

区块链作为多方参与维护的分布式账本,参与方要约定好共识算法,即数据校验、写入和冲突解决的规则。

4 区块链的分类

  • 公有区块链:所有人都可以参与
  • 私有区块链:对单独的个人或实体开放
  • 联盟区块链:对特定的组织、团体开放。

二、区块链共识层

解决的主要问题:如何在去中心化存在恶意节点的场景下维护区块链的全局账本。

区块链的共识机制是一种多方协作机制,用于协调多参与方达成共同接收的唯一结果,且保证此过程难以被欺骗,且持续稳定运行,是区块链的核心引擎。

1. 一致性问题

共识:不信任节点之间对指定数据的最终状态达成一致的过程。

分布式共识:在某些节点故障的情况下,在多个节点之间达成共同的状态。

1.1 共识性要求

在分布式系统中达成一致性的过程,应该满足:

  1. 可终止性:一致性的结果在有限时间内完成。
  2. 约同性:不同节点最终完成决策的结果是相同的。
  3. 合法性:决策的结果必须是某个节点提出的提案。

对应对分布式系统的要求为:

  1. 活性
  2. 安全性
  3. 正确性

1.2 共识设计的理论限制:FLP不可能原理

FLP不可能原理:在网络可靠,但允许节点失效的最小化异步模型系统中,不存在一个可以解决一致性问题的算法。

这说明我们需要在活性和安全性上进行折中。折中方向为:

  • 通过弱化安全性的异步假设为同步假设以实现活性——实用拜占庭容错算法( Pratical Byzantine Fault Tolerance, PBFT)
  • 通过弱化安全性的异步假设为同步假设以实现安全性——比特币工作量证明

1.3 CAP原理

CAP原理本质上描述了分布式系统在应用过程中三个特性的取舍,即不可能同时满足:

  1. 一致性(Consistency):每次读操作都能得到最近写的结果,或返回错误。
  2. 可用性(Availability):每次请求都能返回一个非错误结果,但结果不需要是最近写的结果。
  3. 分区容忍性(Patition tolerance):当任意节点的连接中断或者大大延迟,系统扔能工作。

1.4 区块链分叉问题

硬分叉:旧区块不兼容新区块

区块链发生了永久性分歧,在新共识规则发布后,部分没有升级的节点无法验证已经升级的节点产生的区块。

软分叉:旧的节点不会感知区块链代码发生的改变,并继续接受新节点创建的区块。新旧节点在一条链上。

当新共识规则发布后,没有升级的节点会因为不知道新共识规则下,而产生不合法的区块,导致临时性分叉产生。这会强迫老节点更新规则。

恶意的分叉:51%攻击

2. 区块链共识算法

2.1 不同区块链需要不同的共识机制

对于公有链而言,因为参与者之间不存在任何信任,所以采用算力敏感的“挖矿”共识来作为激励机制。

对于联盟链/私链,节点间有一定的信任基础,不需要算力敏感,BFT类型的共识机制比较适合。

2.2 BFT-based:拜占庭容错算法

拜占庭问题:在有叛徒的情况下,如何在不同节点之间达成正确的共识。

当节点总数为N,叛徒数量为F,则当 N≥3F+1 时,这个问题才有解。

拜占庭容错算法(Byzantine Fault Tolerance,BFT)就是面向拜占庭问题的容错算法。

实用拜占庭容错算法:

  • 预准备阶段(pre-prepare)
  • 准备阶段(prepare)
  • 提交阶段(commit)

2.3 比特币共识的思路:工作量证明

工作量证明(Proof of Work,PoW)要求用户获取服务前进行适量复杂的计算,来证明用户对服务的真实需求,需要满足以下条件:

  • 不容易完成(需要工作量)
  • 容易验证:其他节点可以快速确认工作量
  • 工作过程公平:任何节点没有完成工作的捷径
  • 具有随机性:能力越强,只保证率先完成度概率越大

在比特币的PoW中,矿工通过花费算力来竞争区块链上的记账权。挖矿可以获得比特币奖励+交易手续费,这也是比特币发行的过程。

解决链分叉问题:比特币的最长链机制——诚实的矿工会将最长的区块链认可为全局的账本,并在这条链上继续延伸。因此恶意矿工更难造出更长的链。

3. 对共识机制的攻击

3.1 双花攻击

大致过程为:

  1. 攻击者在区块N向商家发起了交易,商家承认交易。
  2. 攻击者在区块N开始分叉,这个分叉不承认交易。
  3. 当分叉链长度大于主网链,广播分叉链,分叉链成为主网链,交易不被承认,付费失败,攻击者还可以用这笔钱再次交易。

3.2 多重身份攻击/女巫攻击

攻击方法:一个攻击这节点通过网络广播多个身份信息,非法地拥有多个身份标识,进行改变交易顺序、阻止交易被确认、误导正常节点的路由表、消耗节点间资源等恶意行为。

女巫攻击可以通过伪造的多个身份进行不公平的重复投票,从而掌控网络。

对抗方法:工作量证明机制

3.3 其他攻击

  • 短距离攻击
  • 长举例攻击
  • 币领累计攻击
  • 预计算攻击
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

《区块链原理与技术》学习笔记(一)——区块链概念和区块链共识机制 的相关文章

  • pcie设备之驱动加载udev事件详解

    打卡打卡 udev 自内核2 6之后取代devfs udev配置 usr lib udev rules d etc udev rules d 如何触发udev事件 kobject uevent函数 pcie scan扫描函数 初始化pcie
  • python在linux系统下的编辑编译运行

    PYTHON在linux系统下的编辑编译 新建一个脚本文件 编写程序 运行程序 若安装了如spyder这样的编辑器 若是很简单的代码 新建一个脚本文件 gedit xxx py 新建py格式文件 编写程序 运行程序 在当前目录下 输入pyt
  • 【论文学习】FD-MonbileNet: IMPROVED MOBILENET WITH A FAST DOWNSAMPLING STRATEGY

    原文链接 https arxiv org abs 1802 03750 作者介绍了一种高效且在有限运算量限制上十分准确的网络 Fast Downsampling MobileNet FD MobileNet 其中心思想是在MobileNet
  • 中国钢铁产业产量分析与市场需求状况研究报告2022版

    中国钢铁产业产量分析与市场需求状况研究报告2022版 修订日期 2021年12月 搜索鸿晟信合研究院查看官网更多内容 第一章 产业转移的内涵及模式概述 1 1 产业转移的概念界定 1 1 1 产业转移的定义 1 1 2 产业转移的分类 1
  • mysql 连续打卡_MySQL查询连续打卡信息?

    最近多次看到用SQL查询连续打卡信息问题 自己也实践一波 抛开问题本身 也是对MySQL窗口函数和自定义变量用法的一种练习 01 建表 所用数据库为MySQL8 0 简单而不失一般性 建立一个仅有记录id 用户id 日期和打卡标记共4个字段

随机推荐

  • Python用户消费行为分析实例

    本文借鉴于知乎用户秦路的专栏https zhuanlan zhihu com p 27910430 这里只是自己理解基础上加以扩充和整理修改 丰富细节 由于手头用户消费数据的缺失我们这次采用专栏的数据进行实战 原数据在此 链接 https
  • vue判断input框不能为空_vue判断input输入内容全是空格的方法

    moduleinfo card count count phone 1 count 1 search count count phone 7 count 7 card des 支持文本 图片 视频 网站安全检测等多格式识别服务 提供色情 涉
  • 吃透MIPI接口,你必须了解它这三种PHY规范的区别

    MIPI接口及其物理层特性 MIPI 移动行业处理器接口 是专为移动设备 如智能手机 平板电脑 笔记本电脑和混合设备 设计的行业规范的标准定义 MIPI标准定义了三个通用的唯一物理 PHY 层 即MIPID PHY C PHY和M PHY
  • Stars in Your Window 【POJ - 2482】【线段树扫描线】

    题目链接 最开始的时候做成了贪心 离线求二维前缀和 然后树状数组维护二维偏序 这样的想法是存在BUG的 因为我是将每个点当成左下角 右下角 左上角 右上角来分别计算最大贡献的 但这样的做法却不是最贪心的 因为有可能该点并不作为矩形的四个顶角
  • [ESP][驱动]ST7701S RGB屏幕驱动

    ST7701SForESP ST7701S ESP系列驱动 基于ESP IDF5 0 ESP32S3编写 本库只负责SPI的配置 SPI设置屏幕信息两方面 由于RGB库和图形库的配置无法解耦 具体使用的图形库需要自行配置添加 本示例默认绑定
  • 全局异常处理Seata事务失效解决方案

    全局异常处理Seata事务失效解决方案 最近的项目用到了seata来管理全局事务 在进行测试的时候 发现当service A 调用Service B时 如果ServiceA报错 ServiceB能回滚 但是如果ServiceB报错 Serv
  • 区块链基础和底层技术

    大家好 这里是链客区块链技术问答社区 链客 有问必答 区块链基础 区块链的维基百科定义 区块链是一个基于比特币协议的不需要许可的分布式数据库 它维护了一个持续增长的不可篡改的数据记录列表 即使对于该数据库节点的运营者们也是如此 简而言之 区
  • 机器视觉图像分析领域,单目测量和双目测量有什么区别和用途?

    单目测量和双目测量在许多应用场景中都有广泛的应用 以下是一些典型的应用场景 单目测量应用场景 1 无人机定位与导航 单目摄像头可以用于无人机的视觉定位与导航 通过捕捉地面特征点 实现无人机的姿态估计和位置定位 2 机器人视觉导航 在轻量级的
  • CART回归树 GBDT XGB LGB

    CART回归树 GBDT XGB LGB 1 决策树 ID3 C4 5 CART 决策树算法原理 上 CART树 首先我们看看决策树算法的优点 1 简单直观 生成的决策树很直观 2 基本不需要预处理 不需要提前归一化 处理缺失值 3 使用决
  • Windows中使用Docker安装Redis

    1 拉取Redis 以管理员身份运行CMD 执行如下命令拉取Redis docker pull redis 2 在D盘新建目录D Net Program Net Docker Redis 在D盘新建D Net Program Net Doc
  • DataSphereStudio创建工作流时报错No FileSystem for scheme: hdfs问题

    DataSphereStudio创建工作流时报错No FileSystem for scheme hdfs问题 最近在用微众银行开发的dss工具 但是安装完之后 创建工作流报错No FileSystem for scheme hdfs 如果
  • java nio socket,Java----NioSocket的简单使用

    一 自己理解的概念 nioSocket 即new io socket 是一种同步非阻塞的I O 其使用buffer来缓存数据和channel来传输数据 使用select来分拣消息 其使用的ServerSocketChannel和Socket
  • 激光SLAM直接线性方法里程计运动模型及标定

    原创作者 W Tortoise 原创作者文章 https blog csdn net learning tortosie article details 107763626 1 里程计运动模型 1 1 两轮差分底盘的运动模型 1 2 三轮全
  • [转]换位思考多周期约束

    在开篇前先推荐两篇文档 一篇是altera的官方文档 Appling Multicycle Execptions in the TimeQuest Timing Analyzer 另一篇是riple兄很早之前推荐过的Multicycles
  • C# .NETCORE3.1 系列教程(一) 开发环境搭建与创建的一个Web项目

    TOC JXMaker NET CORE3 1系列教程 一 开发环境与创建Web项目 JXMaker NET CORE3 1系列教程 一 开发环境搭建与创建的一个Web项目 开发环境 教程中使用的开发环境为Win2010 VS 2019 安
  • BUCK型开关电源中的损耗与效率的计算

    在BUCK型开关电源中 如果没有损耗 那效率就是100 但这是不可能的 BUCK型开关电源中主要的损耗是导通损耗和交流开关损耗 导通损耗主要是指MOS管导通后的损耗和肖特基二极管导通的损耗 是指完全导通后的损耗 因为导通不是瞬间导通 有个从
  • 显示序号_合并单元格如何快速更新序号,最简单的3个函数解决你的问题

    在使用Excel表格的时候 我们经常会对数据填充一个序号 但是经常会碰到一个困难点的地方就是 当出现合并单元格的时候 自动填充序号就无法使用 今天我们就来学习3个最简单的 合并单元格中如何自动更新序号 一 案例说明 案例说明 如上图所示 我
  • Java中Path.of()使用报错

    Java中Path of方法的使用 起因 学习Java核心技术这本书的3 7 3章节时 对于书中代码的实现出现了一些问题 书中所呈现的是这样的语句 点击查看代码 Scanner in new Scanner Path of myfile S
  • Vue配置代理(解决跨域请求)

    app vue
  • 《区块链原理与技术》学习笔记(一)——区块链概念和区块链共识机制

    区块链原理与技术 专业课学习笔记 第一部分 一 概论 1 什么是区块链 2 区块链与比特币的关系 2 1 区块链是比特币的底层技术 是比特币的核心基础与架构 2 2 区块链不止是比特币 3 区块链的特点 3 1去中心化 3 2 透明性 3