区块链技术与应用学习笔记(5-7节)——北大肖臻课程

2024-04-26 10:20

本文主要是介绍区块链技术与应用学习笔记(5-7节)——北大肖臻课程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

​BTC实现

基于交易的账本模式:

UTXO集合:

交易费用:

BTC网络

1.应用层:

2.网络层:

3传播层:

什么是鲁棒?

BTC挖矿:

出块奖励:

挖矿难度调整:

挖矿过程:

挖矿难度调整:

挖矿收益:


BTC实现


基于交易的账本模式:

在比特币网络中,不像传统的银行账户系统那样,系统并不会记录每个账户的余额。相反,它跟踪的是每个交易的流动。 
这意味着比特币网络上并没有账户的概念,而是通过追踪交易来确定每个地址(公钥)的余额。 

UTXO集合:


UTXO是指未被花费的比特币交易输出。每当比特币被发送到一个地址时,它们会形成一组UTXO。 
比特币全节点维护着一个UTXO集合,其中包含所有尚未被花费的交易输出。这个集合的维护对于检测双重支付非常重要。 


交易费用:


在比特币交易中,总输入必须等于总输出。如果总输入大于总输出,剩余的部分就会成为交易费用。 
交易费用是为了激励矿工处理和确认交易。矿工通过打包交易并添加到区块链中来获得奖励,其中包括交易费用。 
通常情况下,交易费用是根据交易的大小(字节数)和网络的拥堵程度来确定的。高网络拥堵时,交易费用可能会增加,以便更快地得到确认。​编辑 
通过这种基于UTXO的交易模型,比特币实现了一种去中心化的、安全的数字货币系统,同时确保了交易的可追踪性和不可篡改性。


BTC网络


比特币网络是一个分布式的系统,由应用层、网络层和传播层构成,每一层都有着特定的功能和作用。


1.应用层:


在比特币网络中,应用层主要由比特币区块链组成。这是一个持续增长的、由区块构成的公开账本,记录了所有的交易和区块信息。
区块链技术是比特币的核心,它通过去中心化的方式实现了交易的验证和记录,保证了交易的安全性和透明性。


2.网络层:


比特币网络采用P2P(Peer-to-Peer)Overlay网络结构,这意味着网络中的节点彼此平等,没有中心化的服务器或管理机构。节点之间通过TCP协议进行通信,建立连接并交换信息。
P2P网络结构使得比特币网络具有高度去中心化的特点,任何人都可以加入或退出网络,而不需要获得中央控制机构的许可。

3传播层:

信息传播是比特币网络中的关键环节,它通过种子节点和邻居节点的机制进行。种子节点是网络中的一小部分节点,它们的作用是帮助新加入的节点找到其它节点并加入网络。
邻居节点是每个节点连接的直接对等节点,它们之间通过TCP连接进行通信,交换交易和区块数据。
传播方式采用了flooding方式,即当一个节点接收到新的消息时,它会将该消息广播给它的所有邻居节点。这种方式确保了消息可以快速地传播到整个网络,增强了网络的鲁棒性和抗攻击能力。
比特币网络的设计原则是简单、鲁棒,


什么是鲁棒?


比特币网络的鲁棒性表现在几个方面:
节点自治:每个比特币节点都是自治的,它们独立地验证和转发交易,而不依赖于中心化的实体。这意味着即使部分节点受到攻击或离线,网络仍然能够运行。
去中心化的传播机制:比特币网络采用P2P Overlay网络结构,没有单一的中心节点负责传播信息。节点通过与相邻节点进行直接通信来传播交易和区块数据,这种分布式的传播方式使得网络更加鲁棒,不易受到单点故障的影响。
消息传播的弹性:比特币网络使用flooding方式进行消息传播,这意味着每个节点在接收到新消息后会将其广播给它的所有邻居节点。这种方式虽然可能导致网络中存在大量的重复消息,但它确保了消息能够迅速传播到整个网络,增强了网络对于恶意攻击和分布式拒绝服务(DDoS)攻击的抵抗能力。
区块大小限制:为了确保网络的吞吐量和稳定性,比特币协议限制了每个区块的大小。这样做可以避免网络过载和交易拥堵,同时降低了网络分叉的可能性。
总体来说BTC旨在实现高度的去中心化和安全性。每个节点都维护着邻居节点的集合,并通过简单而有效的传播方式来保证信息的传递。由于带宽是网络传播的瓶颈,比特币协议限制了区块的大小,以确保网络的稳定性和效率。通过深入理解比特币的核心机制、网络结构以及挖矿激励机制和难度调整策略,我们可以更好地理解比特币的运作原理和技术细节,从而更好地参与和贡献到这个生态系统中。

BTC挖矿:


比特币挖矿是通过解决密码学难题来验证交易并添加到区块链上的过程。挖矿的主要概念包括:


出块奖励:


挖矿者通过成功挖出新的区块来获得比特币奖励,这是挖矿的主要激励机制。出块奖励每隔21万个区块减半,平均每隔4年进行一次减半。


挖矿难度调整:


比特币网络设计了一个挖矿难度调整机制,以保持平均出块时间约为10分钟。每2016个区块后,就会根据前一段时间的挖矿情况自动调整难度。


挖矿过程:


在比特币网络中,矿工通过执行一系列计算任务来竞争创建新的区块。这个计算任务被称为“工作量证明”(Proof of Work,PoW),矿工们通过不断尝试计算出符合一定条件的哈希值来解决这个任务。
比特币的工作量证明机制基于SHA-256哈希算法,矿工需要找到一个符合特定难度条件的哈希值,这个条件是由比特币网络根据前一段时间内的挖矿速度自动调整的。
一旦某个矿工找到了符合条件的哈希值,他就可以创建一个新的区块,将待确认的交易打包进去,并将该区块广播到整个网络中。其他节点收到该区块后会验证其有效性,并将其添加到自己的区块链中,从而完成了一次挖矿过程。


挖矿难度调整:


比特币网络通过每2016个区块调整一次难度来确保平均出块时间约为10分钟。调整难度的目标是使当前网络中的总算力每隔约两周能够产生约2016个新区块。
调整难度的公式如下:
新难度 = 旧难度 × (实际时间 / 目标时间)
其中,实际时间是最近2016个区块所花费的时间,目标时间是2016个区块所花费的预期时间,即约为两周(10分钟 × 2016)。
例如,如果实际时间短于目标时间,说明算力增加,难度将增加,反之亦然。

挖矿收益:


成功挖出新区块的矿工将获得两种收益:
包含在新区块中的所有交易的交易费用。
新发行的比特币奖励,即出块奖励。
目前,每个新区块产生的比特币奖励为6.25个BTC。这个奖励每隔大约四年减半一次,这一过程被称为“比特币减半”,直到最终总量达到2100万个BTC为止。

这篇关于区块链技术与应用学习笔记(5-7节)——北大肖臻课程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/937326

相关文章

Python标准库之数据压缩和存档的应用详解

《Python标准库之数据压缩和存档的应用详解》在数据处理与存储领域,压缩和存档是提升效率的关键技术,Python标准库提供了一套完整的工具链,下面小编就来和大家简单介绍一下吧... 目录一、核心模块架构与设计哲学二、关键模块深度解析1.tarfile:专业级归档工具2.zipfile:跨平台归档首选3.

使用IDEA部署Docker应用指南分享

《使用IDEA部署Docker应用指南分享》本文介绍了使用IDEA部署Docker应用的四步流程:创建Dockerfile、配置IDEADocker连接、设置运行调试环境、构建运行镜像,并强调需准备本... 目录一、创建 dockerfile 配置文件二、配置 IDEA 的 Docker 连接三、配置 Do

深入浅出SpringBoot WebSocket构建实时应用全面指南

《深入浅出SpringBootWebSocket构建实时应用全面指南》WebSocket是一种在单个TCP连接上进行全双工通信的协议,这篇文章主要为大家详细介绍了SpringBoot如何集成WebS... 目录前言为什么需要 WebSocketWebSocket 是什么Spring Boot 如何简化 We

Java Stream流之GroupBy的用法及应用场景

《JavaStream流之GroupBy的用法及应用场景》本教程将详细介绍如何在Java中使用Stream流的groupby方法,包括基本用法和一些常见的实际应用场景,感兴趣的朋友一起看看吧... 目录Java Stream流之GroupBy的用法1. 前言2. 基础概念什么是 GroupBy?Stream

python中列表应用和扩展性实用详解

《python中列表应用和扩展性实用详解》文章介绍了Python列表的核心特性:有序数据集合,用[]定义,元素类型可不同,支持迭代、循环、切片,可执行增删改查、排序、推导式及嵌套操作,是常用的数据处理... 目录1、列表定义2、格式3、列表是可迭代对象4、列表的常见操作总结1、列表定义是处理一组有序项目的

C#中的Converter的具体应用

《C#中的Converter的具体应用》C#中的Converter提供了一种灵活的类型转换机制,本文详细介绍了Converter的基本概念、使用场景,具有一定的参考价值,感兴趣的可以了解一下... 目录Converter的基本概念1. Converter委托2. 使用场景布尔型转换示例示例1:简单的字符串到

springboot自定义注解RateLimiter限流注解技术文档详解

《springboot自定义注解RateLimiter限流注解技术文档详解》文章介绍了限流技术的概念、作用及实现方式,通过SpringAOP拦截方法、缓存存储计数器,结合注解、枚举、异常类等核心组件,... 目录什么是限流系统架构核心组件详解1. 限流注解 (@RateLimiter)2. 限流类型枚举 (

Spring Boot Actuator应用监控与管理的详细步骤

《SpringBootActuator应用监控与管理的详细步骤》SpringBootActuator是SpringBoot的监控工具,提供健康检查、性能指标、日志管理等核心功能,支持自定义和扩展端... 目录一、 Spring Boot Actuator 概述二、 集成 Spring Boot Actuat

PyTorch中的词嵌入层(nn.Embedding)详解与实战应用示例

《PyTorch中的词嵌入层(nn.Embedding)详解与实战应用示例》词嵌入解决NLP维度灾难,捕捉语义关系,PyTorch的nn.Embedding模块提供灵活实现,支持参数配置、预训练及变长... 目录一、词嵌入(Word Embedding)简介为什么需要词嵌入?二、PyTorch中的nn.Em

Python实现PDF按页分割的技术指南

《Python实现PDF按页分割的技术指南》PDF文件处理是日常工作中的常见需求,特别是当我们需要将大型PDF文档拆分为多个部分时,下面我们就来看看如何使用Python创建一个灵活的PDF分割工具吧... 目录需求分析技术方案工具选择安装依赖完整代码实现使用说明基本用法示例命令输出示例技术亮点实际应用场景扩