区块链技术与应用学习笔记(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

相关文章

PHP应用中处理限流和API节流的最佳实践

《PHP应用中处理限流和API节流的最佳实践》限流和API节流对于确保Web应用程序的可靠性、安全性和可扩展性至关重要,本文将详细介绍PHP应用中处理限流和API节流的最佳实践,下面就来和小编一起学习... 目录限流的重要性在 php 中实施限流的最佳实践使用集中式存储进行状态管理(如 Redis)采用滑动

深入浅出Spring中的@Autowired自动注入的工作原理及实践应用

《深入浅出Spring中的@Autowired自动注入的工作原理及实践应用》在Spring框架的学习旅程中,@Autowired无疑是一个高频出现却又让初学者头疼的注解,它看似简单,却蕴含着Sprin... 目录深入浅出Spring中的@Autowired:自动注入的奥秘什么是依赖注入?@Autowired

PostgreSQL简介及实战应用

《PostgreSQL简介及实战应用》PostgreSQL是一种功能强大的开源关系型数据库管理系统,以其稳定性、高性能、扩展性和复杂查询能力在众多项目中得到广泛应用,本文将从基础概念讲起,逐步深入到高... 目录前言1. PostgreSQL基础1.1 PostgreSQL简介1.2 基础语法1.3 数据库

Unity新手入门学习殿堂级知识详细讲解(图文)

《Unity新手入门学习殿堂级知识详细讲解(图文)》Unity是一款跨平台游戏引擎,支持2D/3D及VR/AR开发,核心功能模块包括图形、音频、物理等,通过可视化编辑器与脚本扩展实现开发,项目结构含A... 目录入门概述什么是 UnityUnity引擎基础认知编辑器核心操作Unity 编辑器项目模式分类工程

Python中的filter() 函数的工作原理及应用技巧

《Python中的filter()函数的工作原理及应用技巧》Python的filter()函数用于筛选序列元素,返回迭代器,适合函数式编程,相比列表推导式,内存更优,尤其适用于大数据集,结合lamb... 目录前言一、基本概念基本语法二、使用方式1. 使用 lambda 函数2. 使用普通函数3. 使用 N

Python中yield的用法和实际应用示例

《Python中yield的用法和实际应用示例》在Python中,yield关键字主要用于生成器函数(generatorfunctions)中,其目的是使函数能够像迭代器一样工作,即可以被遍历,但不会... 目录python中yield的用法详解一、引言二、yield的基本用法1、yield与生成器2、yi

Python多线程应用中的卡死问题优化方案指南

《Python多线程应用中的卡死问题优化方案指南》在利用Python语言开发某查询软件时,遇到了点击搜索按钮后软件卡死的问题,本文将简单分析一下出现的原因以及对应的优化方案,希望对大家有所帮助... 目录问题描述优化方案1. 网络请求优化2. 多线程架构优化3. 全局异常处理4. 配置管理优化优化效果1.

Python中高级文本模式匹配与查找技术指南

《Python中高级文本模式匹配与查找技术指南》文本处理是编程世界的永恒主题,而模式匹配则是文本处理的基石,本文将深度剖析PythonCookbook中的核心匹配技术,并结合实际工程案例展示其应用,希... 目录引言一、基础工具:字符串方法与序列匹配二、正则表达式:模式匹配的瑞士军刀2.1 re模块核心AP

从基础到高阶详解Python多态实战应用指南

《从基础到高阶详解Python多态实战应用指南》这篇文章主要从基础到高阶为大家详细介绍Python中多态的相关应用与技巧,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、多态的本质:python的“鸭子类型”哲学二、多态的三大实战场景场景1:数据处理管道——统一处理不同数据格式

Python学习笔记之getattr和hasattr用法示例详解

《Python学习笔记之getattr和hasattr用法示例详解》在Python中,hasattr()、getattr()和setattr()是一组内置函数,用于对对象的属性进行操作和查询,这篇文章... 目录1.getattr用法详解1.1 基本作用1.2 示例1.3 原理2.hasattr用法详解2.