比特币的共识协议

目录

前言

一、铸币交易

     1.铸币权

     2.铸币交易(coinbase tx)

3.输入和输出

二、小型的区块链

1.见下图所示

2.哈希指针

3.双花攻击

三、块头块身,全节点轻节点

1.块头(block head)

2.块身

3.全节点full node(fully validating node)

4.轻节点light(weight) node

四、共识协议

1.分布式的共识(distributed consensus)

2.hash rate

3.比特币中的共识协议Consensus in Bitcoin

4.两个等长的分叉

5.比特币铸币规则


前言

     本文为整理记录学习比特币的共识协议的笔记。图片清晰度可能不够高,希望这不影响您的观看体验。如果有任何错误,请随时指出,感谢您的阅读

一、铸币交易

     1.铸币权

          通过某种方法,用户A获得了发行货币的权利

     2.铸币交易(coinbase tx)

          A把钱转给B,需要有A的签名和B的地址 

          在比特币系统中,收款的地址是通过公钥推算(用B的公钥取哈希,然后经过转换得到)

          交易过程中,A的公钥要让B和所有节点知道

          原因:验证A的签名,A用私钥签名,B用公钥验证 交易时,A要用B的公钥加密,收到后B用自己的私钥解密

          在交易中可以避免有人故意伪造A的签名:coinbase tx(左边那个框框)的输出存有A的公钥的哈希它一定要=转账交易内的A的公钥,否则交易无法进行

以下图片是一个铸币交易

简单解释如下图

     把交易写在区块链里,然后A拿到钱后给B和C各5个比特币 该交易要有A的签名,证明是经过A同意的,同时这个交易还要说明从哪而来

3.输入和输出

     比特币系统中,每个交易都包含输入和输出两个部分

     输入部分说明币的来源,输出部分给出收款人的公钥的哈希

     比特币系统内部没有提供查询某个人的比特币地址的功能,要通过其他渠道 比如:某个电商网站它接受比特币支付,那它就会在网站上公开它的地址(公钥)

二、小型的区块链

1.见下图所示

2.哈希指针

图中有两种哈希指针

     一种是连接各个区块,串起来变成一个 。一种是指向前面某个交易(图中后面的c指向前面的c)

     这二种指针说明币的来源是有记录的,同时可以防范双花攻击

3.双花攻击

     double spend attack 简单来讲是,一笔钱被花了两次

三、块头块身,全节点轻节点

1.块头(block head)

包含宏观信息

       ①比特币的版本协议(version)

       ②区块链中指向前一个区块的指针(hash of previous block number)

       ③默克尔树的根哈希值(Merkle root hash)(保证块身里面的交易列表无法被篡改)

       ④挖矿的难度目标域值(target)

       ⑤随机数(nonce)

       ⑥H(block header)≤target中这个目标域值的编码(nBits)

2.块身

     交易列表(transaction list)

3.全节点full node(fully validating node)

     数目少,保存区块链的所有信息,验证每一个交易

4.轻节点light(weight) node

     数目多,不能独立验证交易的合法性,比如是否是双花攻击

四、共识协议

1.分布式的共识(distributed consensus)

     简单例子:分布式的哈希表(distributed hash table)

     系统里有很多机器,共同维护一个全局的哈希表。此时需要取得的共识内容是key-value pair(键值对),比如有的人在a这台机器插入value pair('a'→12345),别人在另一台机器也能读出

     拓展:CAP Theorem  

     3个性质--C:Consistency  A:Availability P:Partition tolerance  

     任何一个分布式系统,比如说分布式哈希表,三个性质最多只能满足两个

2.hash rate

     比特币中的共识是去中心化账本里的内容(内容由有记账权的节点决定)获得记账权方法:靠算力 (puzzle friendly),每秒钟可以试多少nonce,称为hash rate

     账户数量的多少不会影响hash rate,也不会受到女巫攻击的影响

     比特币争夺记账权的过程:挖矿mining

     争夺记账节点的人:矿工miner

     女巫攻击(sybil attack):在投票中,故意弄出超过总数一半的账号,操纵投票结构

3.比特币中的共识协议Consensus in Bitcoin

     存在的原因:在比特币系统中,某些节点可能是有恶意的

     存在恶意节点如何设置共识协议:按照算力来决定,每个节点都可以在本地组装出一个候选区块把它认为合法的交易放进,然后开始尝试nonce值。成功的获得记账权

4.两个等长的分叉

如下图

     如果两个节点同时获得记账权,会出现两个等长的分叉 。此时,该接收哪个呢?

     比特币缺省情况下,每个节点接收自己最早收到的那个节点,不同节点根据在网络中位置的不同

     接受/不接收区块 接收区块:沿着你的区块往下继续扩展。不接收则反之

     出现两个节点同时获得记账权的情况,这种等长的临时性的分叉会维持一段时间,直到某个节点胜出 胜出的是最长合法链,输掉的是orphan block,会被丢弃掉

5.比特币铸币规则

     获得记账权的节点可以决定哪些交易被写进下一个区块。但是比特币想要合法的交易都可以被写进。比特币协议中就规定获得记账权的节点在发布的区块里,可以有一个特殊的交易(铸币交易),在该交易里可以发布一定数量的比特币

     铸币交易是比特币系统中发行新的比特币的东西

     唯一方法:最初每次能造50比特币(初次奖励),但在21万比特币后,奖励减半

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

小孟再接盲盒小程序,3天开发完!

大家好,我是程序员小孟。 前面开发了很多的商业的单子,私活联盟的小伙伴慢慢的逐渐搞自己的产品。 前面的话,开发了盲盒小程序,最近又接了一款盲盒小程序。因为前面有开发过,所以我们的成本也少了很多。 盲盒小程序…

【一】【QT开发应用】QT开发环境配置,安装QT应用

下载QT软件 点击网址链接,QT下载网址 下载vsaddin插件 点击网址链接,QT下载网址 根据自己的vs版本下载对应的文件. 安装QT 用命令行打开安装程序 找到直接路径, D:\Software\QT\qt-unified-windows-x86-4.3.0-1-online.exe 利用WindowsPowe…

Docker的基本操作 及 容器与外部机互相通讯(持续更新中)

Docker入门: Docker 入门教程 - 阮一峰的网络日志 (ruanyifeng.com)docker入门,这一篇就够了。-CSDN博客Docker 容器使用 | 菜鸟教程 (runoob.com)Docker自定义网络和运行时指定IP_docker run ip-CSDN博客 基本命令 链接:docker入门&#…

鸿蒙: 基础认证

先贴鸿蒙认证 官网10个类别总结如下 https://developer.huawei.com/consumer/cn/training/dev-cert-detail/101666948302721398 10节课学习完考试 考试 90分合格 3次机会 1个小时 不能切屏 运行hello world hvigorfile.ts是工程级编译构建任务脚本 build-profile.json5是工程…

你还不会选ProfiNET和EtherCAT网线?

在现代工业自动化领域,ProfiNET和EtherCAT是两种非常流行的通信协议。选择合适的网线对于确保通信的稳定性和效率至关重要。 ProfiNET是什么? ProfiNET是一种基于以太网的通信协议,由德国西门子公司开发。它支持实时通信,广泛应用…

【启明智显方案分享】ESP32-S3与GPT AI融合的智能问答嵌入式设备应用解决方案

一、引言 随着物联网(IoT)和人工智能(AI)技术的飞速发展,嵌入式设备正逐渐变得智能化。本解决方案是启明智显通过结合ESP32-S3的低功耗、高性能特性和GPT(Generative Pre-trained Transformer)…

【第10章】如何获取免费“工作流”?(国内外网站推荐/下载/使用)ComfyUI基础入门教程

使用ComfyUI的一个重点,就是可以快速使用别人分享的工作流,来完成特定的图像生成任务,从而提升工作效率。 那么,去哪儿可以找到别人分享的工作流呢? 这节课我们了解下,比较知名的工作流网站有哪些?以及如何下载? 备注:下节课再讲如何使用。 🎆“老牌” workflow网…

基于QT5.12.7的VTK8.2下的VS2015 X64源码编译以及测试

有一段时间没更新博客了,最近在考虑使用VTK作为软件的后处理显示,相比于OSG,VTK在后处理上集成了很多优秀的算法,使用起来比较方便,而且后处理一般不需要太多的交互,所以VTK是一个不错的选择。 之前对VTK了…

数据仓库与数据挖掘(期末复习)

数据仓库与数据挖掘(期末复习) ETL的含义Extract 、 Transformation、Load。 ODS的全称Operational Data Store。 DW全称 Data Warehourse DM全称是Data Mart 数据仓库数据抽取时所用到技术是增量、全量、定时、调度 STAGE层作用是提供业务系统数据…

HTML初体验

可参考jd.com官网&#xff0c;ctrlu查看当前页面源代码 找到你的项目&#xff0c;在项目中创建html类型的网页文件 标准的HTML正确书写格式 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title&…

牛客热题:最长回文子串

&#x1f4df;作者主页&#xff1a;慢热的陕西人 &#x1f334;专栏链接&#xff1a;力扣刷题日记 &#x1f4e3;欢迎各位大佬&#x1f44d;点赞&#x1f525;关注&#x1f693;收藏&#xff0c;&#x1f349;留言 文章目录 牛客热题&#xff1a;最长回文子串题目链接方法一&am…

大模型Claude 3产品调研

一、公司与产品介绍 Anthropic公司&#xff0c;由前OpenAI高级成员达里奥阿莫代&#xff08;Dario Amodei&#xff09;和丹妮拉阿莫代&#xff08;Daniela Amodei&#xff09;兄妹于2021年创立&#xff0c;致力于开发先进的人工智能技术。作为公司的旗舰产品&#xff0c;Claud…

JavaEE进阶----SpringBoot快速入门

文章目录 前言一、了解Maven1.1 Maven功能- 项⽬构建- 管理依赖 1.2Maven仓库 二、第一个SpringBoot项目总结 前言 Spring Boot是一个用于构建快速、简单和可扩展的生产级应用程序的框架。它基于Spring框架&#xff0c;提供了开发微服务和独立的应用程序所需的一切。 一、了解…

学生党打工人救星,GPT一句话生成精美PPT

学生党打工人救星&#xff0c;GPT一句话生成精美PPT 介绍 在这个快节奏的现代社会&#xff0c;效率是关键。无论是工作会议、学术报告&#xff0c;还是产品展示&#xff0c;一个精美而结构合理的 PPT 都是成功的关键。然而&#xff0c;制作一个高质量的 PPT 往往需要耗费大量…

气体传感器的工作原理探究

气体传感器的工作原理主要基于其内部的感应元件与目标气体之间的相互作用。不同的气体传感器可能采用不同的工作原理&#xff0c;但其核心目的都是将气体的浓度或成分转化为可测量和处理的电信号。 PID气体传感器 以常见的电化学式气体传感器为例&#xff0c;其工作原理涉及气体…

Euro Efficiency(POJ, Open judge)

题目链接: 1252 -- Euro Efficiency 题目描述: 思路: 题面的大概意思就是给你一组基本面值的钱币&#xff0c;问你要凑出指定的面值最少需要多少个钱币的参与&#xff0c;钱币的参与可以是加法也可以是减法。 分析一下&#xff0c;由于答案与钱币参与的顺序无关&#xff0c;…

【C++入门(3)】函数重载、引用

一、函数重载 1、函数重载概念 函数重载是指在同一作用域中&#xff0c;具有不同形参列表&#xff08;参数的 个数 或 类型 或类型顺序 不同&#xff09;的同名函数。 C语言中不允许同名函数的存在&#xff0c;如果一个程序中有两个函数的函数名完全相同&#xff0c;就会报错…

轻松4步!格式工厂怎么转换mp3教会你

在数字化时代&#xff0c;音频文件格式转换变得越发重要&#xff0c;而格式工厂作为一款强大而多功能的工具&#xff0c;为我们提供了便捷的音频转换解决方案。特别是在将音频文件转换为MP3的需求上&#xff0c;格式工厂以其简便易用的特点备受欢迎。格式工厂怎么转换mp3&#…

坚持刷题|合并有序链表

文章目录 题目思考代码实现迭代递归 扩展实现k个有序链表合并方法一方法二 PriorityQueue基本操作Java示例注意事项 Hello&#xff0c;大家好&#xff0c;我是阿月。坚持刷题&#xff0c;老年痴呆追不上我&#xff0c;消失了一段时间&#xff0c;我又回来刷题啦&#xff0c;今天…

CMake从安装到精通

目录 引言 1. CMake的安装 2. CMake的原理 3. CMake入门 3.1 CMakeLists.txt与注释 3.2 版本指定与工程描述 3.3 生成可执行程序 3.4 定义变量与指定输出路径 3.5 指定C标准 3.6 搜索文件 3.7 包含头文件 4. CMake进阶 4.1 生成动静态库 4.2 链接动静态库 4.…