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

news2024/11/26 14:59:26

目录

​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为止。

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

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

相关文章

Typescript 练习

1. 类型谓词 格式:类型谓词采用parameterName is Type格式,其中parameterName必须是当前函数的参数 interface Iuser {type: username: stringage: numberoccupation: string }interface Iadmin {type: adminname: stringage: numberrole: string }expor…

安卓备份:守护你的数据安全与记忆珍藏

手机中的数据也承载着我们的记忆和情感,成为我们生活中不可或缺的一部分。为了守护这些宝贵的数据,备份成为了我们必须要面对的问题。本文将为你详细介绍安卓备份的方法,以及备份的重要性,帮助你更好地守护自己的数据安全与记忆珍…

Python 中的递归排列

在 Python 中使用递归计算排列,适合绝对初学者 介绍 有些人发现很难理解递归算法。 这个技巧向绝对初学者展示了如何使用递归查找排列。Python 背景 这个技巧的想法来自一个问答问题:可怜的 OP 花了三天时间“翻头”,试图弄清楚一小段代码如何能够生成输入列表项的所有排列。…

从零开始利用MATLAB进行FPGA设计(五)详解双口RAM

创作于谱仪算法设计过程中的数字能谱生成模块设计。 往期回顾: 从零开始利用MATLAB进行FPGA设计(四)生成优化HDL代码 从零开始利用MATLAB进行FPGA设计(三)将Simulink模型转化为定点数据类型 目录 1.关于双口RAM …

Python | Leetcode Python题解之第46题全排列

题目: 题解: class Solution:def permute(self, nums):""":type nums: List[int]:rtype: List[List[int]]"""def backtrack(first 0):# 所有数都填完了if first n: res.append(nums[:])for i in range(first, n):# 动…

【Leetcode每日一题】 穷举vs暴搜vs深搜vs回溯vs剪枝_全排列 - 子集(难度⭐⭐)(65)

1. 题目解析 题目链接:78. 子集 这个问题的理解其实相当简单,只需看一下示例,基本就能明白其含义了。 2.算法原理 算法思路详解: 为了生成数组 nums 的所有子集,我们需要对数组中的每个元素进行“选择”或“不选择…

被删除的数字-第12届蓝桥杯省赛Python真题精选

[导读]:超平老师的Scratch蓝桥杯真题解读系列在推出之后,受到了广大老师和家长的好评,非常感谢各位的认可和厚爱。作为回馈,超平老师计划推出《Python蓝桥杯真题解析100讲》,这是解读系列的第57讲。 被删除的数字&…

Redis底层数据结构之quicklist

目录 一、概述二、quicklist结构三、quicklistNode结构四、优缺点 redis底层数据结构已完结👏👏👏: ☑️redis底层数据结构之SDS☑️redis底层数据结构之ziplist☑️redis底层数据结构之quicklist☑️redis底层数据结构之Dict☑️…

SecuPress Pro 专业级WordPress网站安全防护插件优化版

下载地址:SecuPress Pro 专业版.zip SecuPress Pro:专业的WordPress安全解决方案 如果您没有时间进行每周扫描,SecuPress Pro将是您的理想选择。SecuPress Pro提供了所有SecuPress Free的功能,同时还增加了一些高级选项&#xff…

SpringBoot War打包部署

修改打包方式 <packaging>war</packaging>修改 Servlet 容器的 scope <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId><scope>provided</scope></d…

一分钟掌握苹果语音备忘录怎么导出的3个方法!

苹果设备自带的语音备忘录功能&#xff0c;让我们能够随时随地记录生活中的点滴声音&#xff0c;无论是会议内容、学习笔记还是灵感闪现&#xff0c;都能轻松捕捉。然而&#xff0c;有时我们可能需要将这些语音文件导出到其他设备或平台&#xff0c;以便更好地整理、分享或备份…

API提取IP

API代理作为IP代理的一项重要业务&#xff0c;在绕开地域网络限制&#xff0c;提高作业效率等方面提供强大的技术支持。它能够帮助用户快速实现软件与软件间的交流&#xff0c;无障碍连通不同应用程序逻辑开发的系统应用。API代理用途范围广泛&#xff0c;如使用API提取代理IP、…

xinput1 3.dll丢失怎么办?详细解析靠谱的xinput1 3.dll修复方法

当电脑出现提示&#xff0c;显示 ​xinput1_3.dll​文件缺失时&#xff0c;这实际上是一种常见的DLL文件遗失错误&#xff0c;其修复过程通常相对简单。今天&#xff0c;我们将探讨四种不同的方法来解决 ​xinput1_3.dll​缺失的问题。 一.xinput1_3.dll文件解析 xinput1_3.d…

RabbitMQ的幂等性、优先级队列和惰性队列

文章目录 前言一、幂等性1、概念2、消息重复消费3、解决思路4、消费端的幂等性保障5、唯一 ID指纹码机制6、Redis 原子性 二、优先级队列1、使用场景2、如何添加3、实战 三、惰性队列1、使用场景2、两种模式3、内存开销对比 总结 前言 一、幂等性 1、概念 2、消息重复消费 3、…

金职在线 央企国企 跟私企都有哪些区别

一、性质不同 央企国企是国家的全资子公司&#xff0c;属于国有企业。私企就是由自然人投资设立或由自然人控股&#xff0c;以雇佣劳动为基础的营利性经济组织。 二、管理不同 央企国企有完整的审批程序和监管机制&#xff0c;而私企的决策相对简单。国企是政府管理的&#…

李彦宏:程序员将不复存在! 周鸿祎回怼!网友:先把百度程序员都开除了!

近日&#xff0c;百度创始人、董事长兼首席执行官李彦宏在央视《对话》•开年说的访谈中指出&#xff1a;“基本上说以后其实不会存在“程序员”这种职业了&#xff0c;因为只要会说话&#xff0c;人人都会具备程序员的能力”。 “未来的编程语言只会剩下两种&#xff0c;一种…

.net EntityFramework EF

创建EF 方法1 方法二 安装的 版本是 中间没有弹出让选框架的界面&#xff0c; EF三种开发方式 1》》 db first 先设计数据库→然后在代码通过EF与数据库建立映射关系&#xff0c;是EF最早的一种使用方式,使用广泛.以数据库为驱动&#xff0c;生成实体模型&#xff0c;从而驱…

------分割线之 WebSecurityConfigrerAdapter弃用问题------

WebSecurityConfigurerAdapter 被弃用的原因是 Spring Security 项目的维护者希望将项目的主要开发工作集中在新的配置方式上&#xff0c;即基于 Java 的配置&#xff08;Java Configuration&#xff09;和基于 Lambda 的表达式。这主要是因为 Spring 5.0 引入了重量级的 Java …

k8s pod 无法启动一直ContainerCreating

情况如下&#xff0c;更新 pod 时&#xff0c;一直在ContainerCreating 查看详细信息如下 Failed to create pod sandbox: rpc error: code Unknown desc [failed to set up sandbox container “334d991a478b9640c66c67b46305122d7f0eefc98b2b4e671301f1981d9b9bc6” networ…

精益思想赋能数字化转型:落地策略与实践路径

当下&#xff0c;数字化转型已不再是选择题&#xff0c;而是关乎企业生存与发展的必答题。然而&#xff0c;转型过程中如何确保效率、降低成本并快速实现价值创造&#xff0c;成为了摆在众多企业面前的难题。精益思想作为一种追求精益求精、持续改进的管理思维&#xff0c;为数…