区块链技术与数字货币

 1.起源

➢中本聪(Satoshi Nakamoto), 2008

➢比特币:一种点对点的电子现金系统

2.分布式账本技术原理

1.两个核心技术:

➢以链式区块组织账本数据实现账本数据的不可篡改

➢分布式的可信记账机制

2.共识机制:由谁记账

目的:

⚫ 解决记账权

场景:

开放系统,动态增减,海量节点

解决方案

⚫ 工作量证明(proof of work):高强度哈希计算 (SHA256)进行算力竞争解决记账权,达成共识。

3.共识协议模型:

• 节点海量、动态增减

• 存在恶意节点

• PBFT算法要求节点集相对稳定,数量有限,不适用

• 工作量证明PoW共识

▫ 划定固定时间段(10分钟)

▫ 相同或相似输入数据(组装的区块)

▫ 算力竞争选出获胜节点,其它节点验证结果后不再发送消息

▫ 最长链原则,从短期共识扩展到长期共识

3.区块链宏观结构

区块链

⚫ 基于哈希值进行链接

                                                        

特点

⚫ 区块链中数据无法篡改或删除

⚫ 区块链越长可信度越高

4.区块链微观结构

1.区块组成

➢每个区块包括区块头和交易数据两个部分

⚫ 区块头由当前区块的元数据和前一区块的Hash值构成

⚫ Merkle树用于对交易数据列表进行快速寻址

2.区块的结构

区块头的结构

3.区块头代码

class CBlockHeader {} //这是一个“类”,或数据机构,内含下面这些字段:
] int32_t nVersion //所采用Bitcoin协议的版本号
] uint256 hashPrevBlock //上一个块的(块头)Hash值。
] uint256 hashMerkleRoot //所记载交易记录的TxID,
                         //即其Hash值所构成Merkle树的根
] uint32_t nTime //本块的发布时间
] uint32_t nBits //为挖矿过程设置的难度,Hash值中须有的前导零的位数。
] uint32_t nNonce //在挖矿过程中使Hash值达到nBits字段所
                  //要求前导零位数的试凑值。

4.区块标识符:区块头哈希值和区块高度

• 区块主标识符是它的加密哈希值,一个通过SHA256算法对区块头进行二次哈希计算而得到的数字指纹。例如 :000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f是第一个比特币区块的区块哈希值。

• 区块哈希值实际上并不包含在区块的数据结构

• 第二种识别区块的方式是通过该区块在区块链中的位置,即“区块高度(block height)”。例如:高度为0的区块就是创世区块。

• 和区块哈希值不同的是,区块高度并不是唯一的标识符,因为有可能出现区块链分叉。

5.Merkle树

• Merkle树是一种哈希二叉树,它是一种用作快速归纳和校验大规模数据完整性的数据结构。这种二叉树包含加密哈希值。

▫ 叶节点是数据块的哈希值。

▫ 非叶节点的哈希值是根据它下面子节点的值哈希计算得到。

• 在比特币网络中,Merkle树被用来归纳一个区块中的所有交易,同时生成整个交易集合的数字指纹,且提供了一种校验区块是否存在某交易的高效途径。

• Merkle树中使用两次SHA256算法计算结点的哈希值。

▫ H~A~ = SHA256(SHA256(交易A)) //两次SHA256是为了提高安全强度

• 当N个数据元素经过加密后插入Merkle树时,你至多计算log2(N)次就能检查出任意某数据元素是否在该树中,这使得该数据结构非常高效。

6.Merkle树的价值:简单支付验

有了Merkle树,一个节点能够仅下载区块头(80字节/区块),然后通过从一个满节点回溯一条Merkle路径就能认证一笔交易的存在,而不需要存储或者传输区块链中大多数内容。

这种不需要维护一条完整区块链的节点,又被称作简单支付验证(SPV)节点,它不需要下载整个区块而通过Merkle路径去验证交易的存在。

7.比特币区块链中的节点

• 全节点 full client:存储着整个区块链,承但对交易请求进行验证和执行,可以通过挖矿争取发布区块,还承担着应别的节点之请向其发送区块和相关交易信息的义务,同时也承担转发交易请求和区块的义务。

▫ 矿工节点  ▫ 非矿工节点

• 轻节点 light client :

 简单支付验证(SPV)节点 :只存储区块头,不存储区块块体,仍可以对到来的交易请求进行

验证。

②钱包 :一个连接区块链的应用软件(app),记录与所有者有关的信息:

区块链地址、私钥、账户余额、UTXO等,不存储账本。

8.SPV(钱包)验证过程

• 针对某个支付到自己比特币地址的交易建立布隆过滤器,限制只接收含有目标比特币地址的交易。

• 其他全节点探测到某个交易符合SPV节点设置的布隆过滤器条件时,以 Merkleblock消息的形式发送该区块,Merkleblock消息包含区块头和一条连接目标交易与Merkle根的Merkle路径。

• 交易的存在性验证:SPV节点通过该Merkle路径找到跟该交易相关的区

块,并验证对应区块中是否存在目标交易(Merkle Path Proof)。

• 交易是否双化验证:SPV节点检查这笔交易所在区块之后的区块个数,区块个数越多说明该区块被全网更多节点共识,一般来说,一笔交易所属区块之后的区块个数达到6个时,说明这笔交易是可信的。

5.区块链整体结构

区块头代码

class CBlockHeader {} //这是一个“类”,或数据机构,内含下面这些字段:
] int32_t nVersion //所采用Bitcoin协议的版本号
] uint256 hashPrevBlock //上一个块的(块头)Hash值。
] uint256 hashMerkleRoot //所记载交易记录的TxID,
//即其Hash值所构成Merkle树的根
] uint32_t nTime //本块的发布时间
] uint32_t nBits //为挖矿过程设置的难度,Hash值中须有的前导零的位数。
] uint32_t nNonce //在挖矿过程中使Hash值达到nBits字段所
                  //要求前导零位数的试凑值。

交易的数据结构

class CTransaction {} //一个交易请求或交易记录
] const std::vector<CTxIn> vin //本Tx的输入UTXO序列,即资金来源。
] const std::vector<CTxOut> vout //本Tx的输出UTXO序列,即资金去向。
] const int32_t nVersion // CURRENT_VERSION=2
] const uint32_t nLockTime //锁定时间,时间未到点之前本交易不入块
。
] const uint256 hash //本Tx的Hash值,只存储在内存中,
                     //不作永久存储也不发送。

6.挖矿:比特币的产生

        挖矿通常指的是通过使用计算硬件(如ASIC矿机、GPU等)来解决数学难题,以验证加密货币网络上的交易并创建新的加密货币的过程。这是区块链技术中的一个关键环节,特别是对于工作量证明(Proof of Work, PoW)的加密货币,如比特币。

        在挖矿过程中,矿工们竞争解决复杂的算法问题。当一个矿工成功找到一个区块的解决方案时,他们将这个区块添加到区块链上,并因此获得新生成的加密货币作为奖励。这个奖励机制是加密货币发行的一部分,也是维持网络安全和去中心化的一种方式。

• 挖矿节点必须有钱包功能

▫ 有自己的160位密码地址、私钥

• 打包生成区块时,区块中额外加一个交易coinbase

▫ 生成一个UTXO,包含当前奖励数量的比特币(现在是6.25)

▫ 这个UTXO的招领地址是自己的地址

▫ 如果记账成功,这个coinbase交易就生效,否则不在链上。

                   

然而,挖矿需要大量的电力和计算资源,因此它也是一个能源密集型的过程。在中国,由于对能源消耗和金融稳定的考虑,已经对加密货币挖矿进行了严格的限制。

算力竞争:

电力消耗:

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

鸿蒙开发系统基础能力:【@ohos.hiTraceMeter (性能打点)】

性能打点 本模块提供了追踪进程轨迹&#xff0c;度量程序执行性能的打点能力。本模块打点的数据供hiTraceMeter工具分析使用。 说明&#xff1a; 本模块首批接口从API version 8开始支持。后续版本的新增接口&#xff0c;采用上角标单独标记接口的起始版本。 导入模块 impor…

AcWing算法基础课笔记——状态压缩DP:蒙德里安的梦想

状态压缩DP 状态是整数&#xff0c;但把它看成二进制数&#xff0c;二进制中每一位是0或1表示不同的情况。 蒙德里安的梦想 291. 蒙德里安的梦想 - AcWing题库 题目 求把 NM&#x1d441;&#x1d440; 的棋盘分割成若干个 1212 的长方形&#xff0c;有多少种方案。 例如…

Java面试题:聚簇索引和非聚簇索引

聚簇索引和非聚簇索引 聚簇索引(聚集索引) 将数据的存储和索引放在一块,索引结构的叶子节点保存了行数据 索引字段必须存在,且只能存在一个 非聚集索引(二级索引) 将数据和索引分开存储,索引结构的叶子节点关联的是对应的主键 索引字段可以存在多个 索引的选取规则 如果…

2024 年 8 款最佳建筑 3D 渲染软件

你现在使用的3D 渲染软件真得适合你吗&#xff1f; 在建筑和室内渲染当中&#xff0c;市面上有许多3D渲染软件可供选择。然而&#xff0c;并不是每款软件都适合你的需求。本指南将重点介绍2024年精选的8款最佳建筑3D渲染软件&#xff0c;帮助你了解不同的选项&#xff0c;并选…

第100+13步 ChatGPT学习:R实现决策树分类

基于R 4.2.2版本演示 一、写在前面 有不少大佬问做机器学习分类能不能用R语言&#xff0c;不想学Python咯。 答曰&#xff1a;可&#xff01;用GPT或者Kimi转一下就得了呗。 加上最近也没啥内容写了&#xff0c;就帮各位搬运一下吧。 二、R代码实现决策树分类 &#xff08;…

SSM宠物领养系统-计算机毕业设计源码08465

目 录 摘要 1 绪论 1.1课题背景及意义 1.2研究现状 1.3ssm框架介绍 1.3论文结构与章节安排 2 宠物领养系统系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1 数据流程 3.3.2 业务流程 2.3 系统功能分析 2.3.1 功能性分析 2.3.2 非功能性分析 2.4 系统用例分析 …

大模型管理平台:one-api使用指南

大模型相关目录 大模型&#xff0c;包括部署微调prompt/Agent应用开发、知识库增强、数据库增强、知识图谱增强、自然语言处理、多模态等大模型应用开发内容 从0起步&#xff0c;扬帆起航。 大模型应用向开发路径&#xff1a;AI代理工作流大模型应用开发实用开源项目汇总大模…

Go 实现SFTP连接服务

我们将SFTP连接和处理逻辑&#xff0c;以及登录账户信息封装&#xff0c;这样可以在不同的地方重用代码&#xff0c;并且可以轻松地更改登录凭据。下面我将演示如何使用Go语言中的结构体来封装这些信息&#xff0c;并实现一个简单的SFTP服务器&#xff1a; package mainimport…

信息系统项目管理师 | 新一代信息技术

关注WX&#xff1a;CodingTechWork 物联网 定义 The Internet of Things是指通过信息传感设备&#xff0c;按约定的协议&#xff0c;将任何物品与互联网连接&#xff0c;进行信息交互和通信&#xff0c;以实现智能化识别。定位、跟踪、监控和管理的一种网络。物联网主要解决…

采购OLED透明屏指南

一、引言 OLED透明屏作为一种前沿的显示技术&#xff0c;以其独特的透明度和出色的显示效果&#xff0c;受到了众多行业的青睐。在采购OLED透明屏时&#xff0c;需要综合考虑多个因素&#xff0c;以确保选择到符合需求的高质量产品。以下是一份详细的采购OLED透明屏指南&#x…

昇思25天学习打卡营第1天|基本介绍与快速入门

先贴上打卡截图 基本介绍 首先来看基本介绍&#xff0c;昇思MindSpore是华为的一个全场景深度学习框架&#xff0c;属于昇腾AI全栈的一部分。 总体架构如下图所示&#xff08;来自官方学习材料&#xff09; 从对底层多样性硬件适用的Runtime到应用层面的Model Zoo、科学计算…

首码项目对接app推广,寻找核心资源项目!

深度挖掘首码网&#xff08;www.shoumw.com&#xff09;项编码项目网站&#xff1a;帮助您轻松获取最新项目资源 在当下这个充满机会和挑战的创业氛围中&#xff0c;找到可信赖的项目资源已成为创业者们的主要任务。首码项目网是一家专注于首码项目发布和推广的平台&#xff0c…

Hi3861 OpenHarmony嵌入式应用入门--LiteOS MessageQueue

CMSIS 2.0接口中的消息&#xff08;Message&#xff09;功能主要涉及到实时操作系统&#xff08;RTOS&#xff09;中的线程间通信。在CMSIS 2.0标准中&#xff0c;消息通常是通过消息队列&#xff08;MessageQueue&#xff09;来进行处理的&#xff0c;以实现不同线程之间的信息…

Calibre - 合并电子书(EpubMerge)

这里使用 Calibre 软件和 EpubMerge 插件 EpubMerge github &#xff1a; https://github.com/JimmXinu/EpubMerge 1、安装 Merge 插件 安装后需要重启 calibre 2、查看设置 4 3、选中文件、开始合并 合并完成后&#xff0c;会弹窗窗口&#xff0c;来编辑 合辑的元信息 完成…

全网最强SpringMVC教程 | 万字长文爆肝SpringMVC(二)

SpringMVC_day02 今日内容 完成SSM的整合开发能够理解并实现统一结果封装与统一异常处理能够完成前后台功能整合开发掌握拦截器的编写 1&#xff0c;SSM整合 前面我们已经把Mybatis、Spring和SpringMVC三个框架进行了学习&#xff0c;今天主要的内容就是把这三个框架整合在一…

LED热管理

LED照明系统的热管理 本文提供了用于LED灯具的热管理系统。 包含LED轨道灯具包括照明组件、安装到照明组件上并具有多个孔的夹具壳体&#xff0c;以及将夹具壳体固定到轨道上的安装结构。 照明组件包括具有多个翅片的散热器、安装在所述散热器上的反射器、支撑在所述散热器上…

基于RabbitMQ原理的自定义消息队列实现

文章目录 1. 什么是消息队列2. 需求分析2.1. 核心概念12.2. 核心概念22.3. 核心API2.4. 交换机类型2.5. 持久化2.6. 网络通信2.7. 总结 3. 创建核心类3.1. Exchange3.2. MSGQueue3.3. Binding3.4. Message3.5. 数据库操作3.5.1. 建表操作3.5.2. 交换机操作3.5.3. 队列操作3.5.4…

树莓集团:专业运营,打造理想物业环境

树莓集团通过打造国际化基础物业体系、推进绿色环保理念、空间优化设计和运营、提供一站式服务以及数字化人才培养等措施&#xff0c;致力于提供高品质的物业环境&#xff0c;为企业的发展和创新提供有力的保障和支持。 国际化基础物业体系&#xff1a;树莓集团注重打造高品质的…

今天, 我收到一封勒索邮件, 问我要7w人民币

邮件内容: Hi.This is your last chance to prevent unpleasant consequences and save your reputation. Your operating systems on every device you use to log into your emails are infected with a Trojan virus. I use a multiplatform virus with a hidden VNC. It w…

酒店强心剂——VR智慧酒店上线,史诗级加强入住率

出门在外&#xff0c;什么才是我们最为头疼的问题呢&#xff1f;衣食住行中&#xff0c;住的问题尤其大&#xff0c;尤其是不熟悉当地情况下&#xff0c;预定酒店才是让人头疼的问题。酒店行业该如何化解这一难题呢&#xff1f;VR全景开启智能化酒店宣传获客新模式&#xff0c;…