Bitcoin Consensus Mechanism——SYSU SSE Blockchain 5th lecture(English Version)

news2024/11/27 17:55:35

目录

Part 1: What is Consensus?

Definition

Distributed Consensus

Consensus in Bitcoin

CAP Theorem

Definitions

Trade-offs ("Pick Two" Dilemma)

Part 2: Why Bitcoin needs Consensus

Types of Consensus Mechanisms

Why Bitcoin Needs Consensus

Byzantine Generals Problem

Sybil Attack

Bitcoin's Consensus Mechanism: Proof of Work (PoW)

What is Proof of Work?

PoW Mining Principle

Longest Chain Rule & 51% Attack

Summary of PoW Features

Review

Transaction model

UTXO Model

对于第一个问题:

对于第二个问题:


Part 1: What is Consensus?

Definition

  • Consensus: A process of agreement between distrusted nodes on the final state of specified data.

Distributed Consensus

  • Objective: To attain a common state/value among multiple nodes despite the presence of some failing nodes.

Consensus in Bitcoin

  • Bitcoin aims to reach an agreement on the state of its blockchain, which includes transaction history, account balances, etc.

CAP Theorem

Definitions

  • Consistency: All changes are seen by all nodes at the same time.
  • Availability: Systems return a response within an acceptable time frame.
  • Partition Tolerance: The system continues to function when network segments fail to communicate. Systems can be partitioned into sub-networks that continue to function independently.

Trade-offs ("Pick Two" Dilemma)

  • Availability ≠ Correctness: You can only achieve two out of the three CAP properties in a distributed system.
  • CA/P: Focuses on consistency and availability but lacks partition tolerance.

    • Implementation: All data is stored on a single node, and other nodes read from this main node.
    • Note: Not considered a distributed system.
  • CP/A: Focuses on consistency and partition tolerance at the cost of availability.

    • Implementation: Each node stores data, with the primary focus on ensuring consistency.
  • AP/C: Focuses on availability and partition tolerance at the cost of consistency.

    • Implementation: Each node stores data, with the primary focus on ensuring availability.

Note: Since distributed systems must have Partition Tolerance (P), they must choose between Consistency (C) and Availability (A).

Part 2: Why Bitcoin needs Consensus

Types of Consensus Mechanisms

  1. BFT-based (Byzantine Fault Tolerance)

    • Feature: Low computational requirements
    • Participants: Permissioned, limited trust
    • Applicability: Alliance/Private Chains
  2. Leader Election-based

    • Example: Proof of Work (PoW)
    • Feature: Computationally intense
    • Participants: Permissionless, anonymous, no trust
    • Applicability: Public Chains

Why Bitcoin Needs Consensus

Byzantine Generals Problem

  • Problem: Uncertain transmission of information due to possible traitors
  • Goal: To maintain consistency in a distributed system
  • Solution:
    • Simplified to a Generals and Lieutenants model
    • Loyal Lieutenants follow the same command, traitors may disrupt
  • Fault Tolerance: Malicious nodes must be less than 1/3 of the total nodes

Sybil Attack

  • Consequence: Makes Byzantine Fault Tolerance unsuitable for Bitcoin
  • Method: Creating multiple identities to cast multiple votes
  • Why Feasible:
    • Bitcoin is a decentralized, anonymous service
    • Low cost to create multiple identities
  • Example: Double-spending attack
  • Defense: Resource-based voting through Proof of Work (PoW)

Bitcoin's Consensus Mechanism: Proof of Work (PoW)

What is Proof of Work?

  • Goal: To solve the Byzantine Generals Problem
  • Voting Eligibility: Granted through computational work

PoW Mining Principle

  • Mining Process: Combines previous block's hash, Merkle root of new transactions, a nonce, and a timestamp.
  • Success Criterion: SHA(Merkle Root + Previous Block Hash + Timestamp + Nonce) < target
    • Number of leading zeros indicates difficulty level

Longest Chain Rule & 51% Attack

  • 51% Attack: Control over more than half of the computational power can result in a fake chain being accepted.
  • Prevention: Wait for 6 block confirmations before proceeding with transactions.

Summary of PoW Features

  • Challenging: Difficult to solve but easy to verify
  • Fairness: No shortcuts
  • Randomness: Ensures a decentralized and unpredictable process
  • Stability: Enables the stable operation of the blockchain with multiple-party participation

Review

Transaction model

每一个交易都省略了剩下自己的那一部分,比如第二个区块中应该还有A给自己剩下的3.5BTC。

每一个转出方的Hash Pointer都指向之前所有的收入来源,这样做可以避免双花攻击。

每一个转出方都要对这笔交易进行签名。

UTXO Model

  1. Alice 转给bob ,第一个PubkeyHash是谁的?
  2. 第二个<sig><PubKey>,PubkeyHash是谁的?
  3. <sig>中的内容是什么?

在比特币中,一个比较常见的脚本模式用于标准的“支付到公钥哈希”(Pay-to-PubkeyHash,或P2PKH)交易是如下的:

  1. 锁定脚本(ScriptPubKey):OP_DUP OP_HASH160 <PubkeyHash> OP_EQUALVERIFY OP_CHECKSIG

  2. 解锁脚本(ScriptSig):<Sig> <PubKey>

这里的 <PubkeyHash><Sig><PubKey> 是不同脚本中的占位符,它们在实际的交易中会被实际的数据替换。

对于第一个问题:

OP_DUP OP_HASH160 <PubkeyHash> OP_EQUALVERIFY OP_CHECKSIG 中的 <PubkeyHash> 是Bob的公钥哈希。Alice想要将比特币发送给Bob,所以这个脚本锁住了属于Bob的输出。

对于第二个问题:

在解锁脚本 <Sig> <PubKey> 中:

  • <Sig> 是Bob用他的私钥对此交易进行签名的结果。
  • <PubKey> 是Bob的公钥。
  • <PubkeyHash> 仍然是Bob的公钥哈希。

这样,当这两个脚本合并和执行时,它们会首先用 <PubKey> 计算一个公钥哈希,然后检查这个计算出来的公钥哈希是否与锁定脚本中的 <PubkeyHash> 相等。如果相等,并且 <Sig> 是一个有效的对于该交易的签名,那么这个输出就被认为是有效的,从而被解锁,可以被花费。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1042245.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

LaTex排版系统:TeX Live+Visual Studio Code的配置

配置Tex排版系统需要安装编译器编辑器&#xff0c;编译器通常安装TeX Live&#xff0c;编辑器主要有TeXworks、TexStudio、WinEdt、Visual Studio Code等&#xff0c;目前VS Code普遍评价不错。下面介绍Windows平台安装LaTex的详细步骤。 1 安装TeX Live 1.1 下载地址选择国内…

babel的配置执行顺序

babel配置文件&#xff1a; //.babelrc {"presets": ["babel/preset-env","babel/preset-react"],"plugins": ["babel/plugin-proposal-class-properties",["babel/plugin-transform-runtime",{"corejs&quo…

R | R及Rstudio安装、运行环境变量及RStudio配置

R | R及Rstudio安装、运行环境变量及RStudio配置 一、介绍1.1 R介绍1.2 RStudio介绍 二、R安装2.1 演示电脑系统2.2 R下载2.3 R安装2.4 R语言运行环境设置&#xff08;环境变量&#xff09;2.4.1 目的2.4.2 R-CMD测试2.4.3 设置环境变量 2.5 R安装测试 三、RStudio安装3.1 RStu…

Windows下conda安装pytorch GPU版

1.安装miniconda,不细讲了,自己去百度,miniconda自带python,可以通过conda创建虚拟python环境,安装Pytorch的话建议python版本大于3.8,完成后注意配置环境变量。 2.安装CUDA: 查看自己CUDA版本,Nvidia控制面板中找,不再赘述。根据查看的版本,下载 CUDA Toolkit并安装…

ChatGPT重磅升级:可以看图、听声音、说话啦!

美东时间9月25日&#xff0c;OpenAI在官网宣布&#xff0c;对ChatGPT进行重磅升级实现看图、听声音、输出语音内容三大功能。 早在今年3月OpenAI发布GPT-4模型时&#xff0c;就展示过看图的功能&#xff0c;但由于安全、功能不完善等原因一直没有开放。现在不仅开放了看图&…

《玩转smardaten | 无代码开发移动端APP需要几步?最全操作!》

看完这么多免编程、无代码APP软件开发的文章&#xff0c;还是一脸茫然&#x1f62e;...只讲能开发出什么玩意&#xff0c;不讲到底怎么开发&#xff0c;我怎么学会&#xff1f; 来了&#xff0c;无代码的移动端操作教程&#xff0c;从PC移动端一体式开发&#xff0c;到移动端单…

python+nodejs+php+springboot+vue 导师双选系统

为了直观显示系统的功能&#xff0c;运用用例图这样的工具显示分析的结果。分析的导师功能如下。导师管理导师选择信息&#xff0c;管理项目&#xff0c;管理项目提交并对学员提交的项目进行指导。 为了直观显示系统的功能&#xff0c;运用用例图这样的工具显示分析的结果。分析…

Golang 函数 不定参数

不定参数 在C语言时代大家一般都用过printf()函数&#xff0c;从那个时候开始其实已经在感受不定参数的魅力和价值。如同C语言中的printf()函数&#xff0c;Go语言标准库中的fmt.Println()等函数的实现也严重依赖于语言的不定参数功能。 我们将介绍不定参数的用法。合适地使用…

✔★ 算法基础笔记(Acwing)(五)—— 动态规划【java版本】

动态规划 一、背包问题★f[i][j] 背包容量为j&#xff0c;前i个物品的最大价值 1. 01背包问题(不需要初始化) ✔1.6 ✔1.72. ☆ 完全背包问题&#xff08;后面的 前面的某一项的最大值&#xff09;一、朴素做法&#xff08;三重循环&#xff09;二、二维数组的优化&#xff08…

OpenCV 实现 SIFT→SURF 算法关键点检测实现

1&#xff0c;SIFT算法原理 1.1&#xff0c;基本流程 1.1.1 尺度空间极值检测 1.1.2 关键点定位 1.1.3 关键点方向确定 、 1.1.4 关键点描述 1.1.5 总结 1.2 SURF原理 2 代码实现 import cv2 as cv import matplotlib.pyplot as plt import numpy as np from pylab i…

open ai chartgpt 安装插件 txyz.ai

1 chatgpt 页面 左下角 用户 -> setting 2 3

RK3568驱动指南|第五期-中断-第44章 共享工作队列实验

瑞芯微RK3568芯片是一款定位中高端的通用型SOC&#xff0c;采用22nm制程工艺&#xff0c;搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码&#xff0c;支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU&#xff0c;可用于轻量级人工…

2023年深圳等保测评机构名称以及地址汇总

你知道深圳等保测评机构有哪些&#xff1f;知道在哪里吗&#xff1f;今天我们小编就给大家汇总一下。 2023年深圳等保测评机构名称以及地址汇总 序号&#xff1a;1 名称&#xff1a;深圳市信息安全管理中心 地址&#xff1a;深圳市福田区莲花街道福中路城市数字资源中心 序…

CMake 官方完整版

CMake 官方完整版 一些概念TargetSignature 1. A Basic Starting Point(Step 1)Adding a Version Number and Configured Header FileSpecify the C StandardBuild and Test 2. Adding a Library(Step 2)-添加一个库Adding an Option 3. Adding Usage Requirements for Library…

【Verilog 教程】4.8Verilog 过程连续赋值

关键词&#xff1a;deassign&#xff0c;force&#xff0c;release 过程连续赋值是过程赋值的一种。这种赋值语句能够替换其他所有 wire 或 reg 的赋值&#xff0c;改写了 wire 或 reg 型变量的当前值。 与过程赋值不同的是&#xff0c;过程连续赋值的表达式能被连续的驱动到 …

pinyin-match选择器拼音快速检索目标

npm地址&#xff1a;https://www.npmjs.com/package/pinyin-match 选择器拼音快速检索目标&#xff08;pinyin-match&#xff09; 一. 使用方法二. 使用实例三. 实现效果 一. 使用方法 安装 pinyin-match 包 yarn add pinyin-match 或 npm install pinyin-match --save 引入 …

3分钟,免费制作一个炫酷实用的数据可视化大屏!

在当前大数据时代背景下&#xff0c;数据已成为在工业革命中如同煤炭、石油一般宝贵的资源。但是由于数据越来越庞大、越来越复杂&#xff0c;导致数据的可读性也越来越低。因此&#xff0c;对数据可视化的需求也越来越高&#xff0c;需要解决的问题也越来越复杂&#xff0c;而…

测试工程师高效编写API测试

1、自动化测试流程 我一直有编写自动化测试的习惯&#xff0c;但之前一直没有达到最理想的效果&#xff0c;也在反思问题出现的原因&#xff0c;最近终于有了一些思路。其主要的原因是之前写测试都是靠感觉&#xff0c;感觉哪些需要测试了&#xff0c;就写一个测试&#xff0c…

【面试必刷TOP101】二分查找-I 二维数组中的查找

目录 题目&#xff1a;二分查找-I_牛客题霸_牛客网 (nowcoder.com) 题目的接口&#xff1a; 解题思路&#xff1a; 代码&#xff1a; 过啦&#xff01;&#xff01;&#xff01; 题目&#xff1a;二维数组中的查找_牛客题霸_牛客网 (nowcoder.com) 题目的接口&#xff1…