从零入门区块链和比特币(第二期)

欢迎来到我的区块链与比特币入门指南!如果你对区块链和比特币感兴趣,但不知道从何开始,那么你来对地方了。本博客将为你提供一个简明扼要的介绍,帮助你了解这个领域的基础知识,并引导你进一步探索这个激动人心的领域。

感兴趣的话可以看看第一期👉从零入门区块链和比特币(第一期)👈

目录

共识机制的价值

分布式环境下最大的挑战:

什么是共识机制:

主流共识算法简介

工作量证明 PoW

哈希函数的安全性:

PoW的优缺点

分叉问题1

分叉问题2

分叉问题3

分叉问题4

分叉问题5

分叉问题6

股权证明(Proof of Stake,PoS)

委托股权证明 (Delegated Proof of Stake,DPoS)

去中心化概念解读

区块链去中心化

关于比特币的去中心化:

去中心化的优点:


共识机制的价值

在中心化的软件里,再复杂的问题都可以避开使用复杂的算法逻辑(当然,如果能用算法统领,代码会更加简洁、高效),在开发设计上可以省却一定的麻烦。但在分布式软件开发中,节点间的互操作,节点行为的统一管理,没有算法理论作为支撑,根本无法实现。

分布式环境下最大的挑战:

信任 无信任环境:有人会作恶,作恶后果严重,无法挽回。 弱信任环境:有人会作恶,但是后果可以挽回校正。

什么是共识机制:

简单说就是大家达成意见一致。 区块链或分布式账本技术应用的一种无需依赖中央机构来鉴定和验证某一数值或交易的机制。共识机制是所有区块链和分布式账本应用的基础

主流共识算法简介

工作量证明 PoW

不劳动者不得食。为了获得权利你必须先付出一定的劳动,而且这个劳动成果是可以证明的。

为什么选择使用Hash(散列)函数来做工作量证明

什么是Hash函数:简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。 特点 扛碰撞能力 抗篡改能力( https://www.zhihu.com/question/26762707 ) PoW的出现使得攻击者必须仔细计算他的成本

哈希函数的安全性:

1.抗碰撞性(Collision Resistance): 哈希函数应该能够抵抗碰撞攻击,即找到两个不同的输入,但它们的哈希值相同的情况。一个好的哈希函数应该使得碰撞攻击的难度非常大。
2.单向性(One-way Property): 好的哈希函数应该是单向的,即给定一个哈希值,很难找到对应的原始输入。这意味着无法从哈希值反推出原始数据。
3.快速性(Speed): 哈希函数应该能够快速计算出哈希值。在实际应用中,效率很重要,因为哈希函数可能需要在大量数据上进行操作。
4.抗碰撞性与单向性的结合: 现代哈希函数如SHA-256和SHA-3等具有良好的抗碰撞性和单向性。它们被广泛用于密码学应用,包括数字签名、消息认证码(MAC)等。
5.安全性分析: 哈希函数的安全性通常通过数学分析和实际测试来评估。密码学家会对哈希函数进行严格的数学分析,以确保其安全性。同时,也会对其进行实际测试,验证其在实际应用中的表现。

总的来说,现代哈希函数通常被认为是安全的,但在使用时仍应谨慎,避免出现意外情况。

PoW的优缺点

优点:

完全去去中心化,节点自有进出,比特币经过了进十年的发展中间经过了黑客攻击、政策限制等不利因素,仍然自我正常运行证明了该工作机制的伟大之处。

缺点:

POW依赖计算机通过数学运算获取记账权,造成了电力和计算机硬件资源消耗巨大,每次达成共识需要全网所有节点共同参与运算,运行效率低。 总的来说,把PoW与直接民主投票选取是不恰当的,虽然有全网所有的节点参与,但本质上是短跑比赛,跑得最快的赢得选举。但是Hash算法的不确定性,导致每次赛跑每个选手会受到不确定的buff或debuff,结果有很大的不确定性,所以每个选手都有机会。

分叉问题1

当有两个候选区块同时想要延长最长区块链时,分叉事件就会发生。 正常情况下,分叉发生在两名矿工在较短的时间内,各自都算得了工作量证明解的时候。两个矿工在各自的候选区块一发现解,便立即传播自己的“获胜”区块到网络中,先是传播给邻近的节点而后传播到整个网络。每个收到有效区块的节点都会将其并入并延长区块链。 如果该节点在随后又收到了另一个候选区块,而这个区块又拥有同样父区块,那么节点会将这个区块连接到候选链上。其结果是,一些节点收到了一个候选区块,而另一些节点收到了另一个候选区块,这时两个不同版本的区块链就出现了。

分叉问题2

我们看到两个矿工几乎同时挖到了两个不同的区块。为了便于跟踪这个分叉事件,我们设定有一个被标记为红色的、来自加拿大的区块,还有一个被标记为绿色的、来自澳大利亚的区块。 假设有这样一种情况,一个在加拿大的矿工发现了“红色”区块的工作量证明解,在“蓝色”的父区块上延长了块链。几乎同一时刻,一个澳大利亚的矿工找到了“绿色”区块的解,也延长了“蓝色”区块。那么现在我们就有了两个区块:一个是源于加拿大的“红色”区块;另一个是源于澳大利亚的“绿色”。这两个区块都是有效的,均包含有效的工作量证明解并延长同一个父区块。这个两个区块可能包含了几乎相同的交易,只是在交易的排序上有些许不同。

分叉问题3

比特币网络中邻近(网络拓扑上的邻近,而非地理上的)加拿大的节点会首先收到“红色”区块,并建立一个最大累计难度的区块,“红色”区块为这个链的最后一个区块(蓝色-红色),同时忽略晚一些到达的“绿色”区块。 相比之下,离澳大利亚更近的节点会判定“绿色”区块胜出,并以它为最后一个区块来延长区块链(蓝色-绿色),忽略晚几秒到达的“红色”区块。 那些首先收到“红色”区块的节点,会即刻以这个区块为父区块来产生新的候选区块,并尝试寻找这个候选区块的工作量证明解。同样地,接受“绿色”区块的节点会以这个区块为链的顶点开始生成新块,延长这个链。

分叉问题4

分叉问题几乎总是在一个区块内就被解决了 (Why?)。 网络中的一部分算力专注于“红色”区块为父区块,在其之上建立新的区块;另一部分算力则专注在“绿色”区块上。即便算力在这两个阵营中平均分配,也总有一个阵营抢在另一个阵营前发现工作量证明解并将其传播出去。 在这个例子中我们可以打个比方,假如工作在“绿色”区块上的矿工找到了一个“粉色”区块延长了区块链(蓝色-绿色-粉色),他们会立刻传播这个新区块,整个网络会都会认为这个区块是有效的,如上图所示。

分叉问题5

所有在上一轮选择“绿色”区块为胜出者的节点会直接将这条链延长一个区块。 然而,那些选择“红色”区块为胜出者的节点现在会看到两个链:“蓝色-绿色-粉色”和“蓝色-红色”。如上图所示,这些节点会根据结果将“蓝色-绿色-粉色”这条链设置为主链,将“蓝色-红色”这条链设置为备用链。这些节点接纳了新的更长的链,被迫改变了原有对区块链的观点,这就叫做链的重新共识。 因为“”区块做为父区块已经不在最长链上,导致了他们的候选区块已经成为了“孤块”,所以现在任何原本想要在“蓝色-红色”链上延长区块链的矿工都会停下来。

分叉问题6

全网将“蓝色-绿色-粉色”这条链识别为主链,“粉色”区块为这条链的最后一个区块。全部矿工立刻将他们产生的候选区块的父区块切换为“粉色”,来延长“蓝色-绿色-粉色”这条链。 从理论上来说,两个区块的分叉是有可能的,这种情况发生在因先前分叉而相互对立起来的矿工,又几乎同时发现了两个不同区块的解。然而,这种情况发生的几率是很低的。单区块分叉每周都会发生,而双块分叉则非常罕见。 比特币将区块间隔设计为10分钟,是在更快速的交易确认和更低的分叉概率间作出的妥协。更短的区块产生间隔会让交易清算更快地完成,也会导致更加频繁地区块链分叉。与之相对地,更长的间隔会减少分叉数量,却会导致更长的清算时间。

股权证明(Proof of Stake,PoS)

确实是一种不同于比特币的共识机制,其核心理念是通过持有代币来获取记账权,而不是依赖算力。在PoS中,节点的记账权重与其持有的代币数量成正比。
PoS的确有一些优点,例如节能、减少中心化风险等。然而,也存在一些批评和争议,其中包括“资本主义”的指责。一些人认为,PoS可能会导致富人更富,因为他们能够通过持有更多的代币来获得更多的记账权,从而获取更多的奖励。这可能导致权力和财富集中在少数几个大型持有者手中,加剧了财富分配不均的问题。
这种批评的程度和影响因具体的PoS系统而异,而且也有一些针对这些问题的改进和调整。例如,一些PoS系统采取了随机性或轮换机制,以降低富人攫取所有权益的风险。此外,一些PoS系统还采取了治理机制,以确保更广泛的社区参与和决策权。尽管如此,这些问题仍然是PoS系统面临的挑战之一,需要持续的关注和改进。

委托股权证明 (Delegated Proof of Stake,DPoS)

先了解一下美国的选举人制度 所有持币者先选出受托人负责签署区块:选举过程比较类似由股东会选举出董事会(101人代表),代替股东会做出日常营运决策。授权董事会后,决策会更有效率 (相较于PoW每10分钟产生一个区块,DPoS每3秒钟即可产生一个区块。) 册成为候选受托人需要支付一笔保证金(约10 XTS),就像是参与民意代表选举前缴纳的保证金一样,一般来说担任受托人约两周后才可达到损益平衡,这促进了受托人的稳定性,确保至少会挖满两周的矿。

惩罚机制为:不按排程产生区块的节点将在下一轮被投票剔除,也会被没收之前缴纳的保证金。 缺点: 虽然恶意的节点将在下一轮投票被踢出,但单个恶意区块在短期仍有可能是有效的状态。

去中心化概念解读

区块链去中心化

V神认为区块链去中心化,有3个维度:

架构去中心化(Architectural (de)centralization):系统由多少机器组成,能承受多少机器不在线服务依然维持。

政治去中心化(Political (de)centralization):组成系统的集群由多少人控制

逻辑去中心化(Logical (de)centralization): 从这个系统所设计的接口和数据结构来看,它更像一台完整的单一设备,还是更像一个由无数单位组成的集群?

传统的去中心化理解

关于比特币的去中心化:

架构去中心化:不存在单点故障

政治去中心化:算力面前人人平等

逻辑中心化: 每个区块链网络都存在自己的一个普遍性的共识,同时系统的行为更像一台单独的计算机。

去中心化的优点:

容错性:去中心化系统不太可能因为某一个局部的意外故障而停止工作,因为它依赖于许多独立工作的组件,它的容错能力更强。

抗攻击性:对去中心化系统进行攻击破坏的成本相比中心化系统更高。从经济效益上来说,这是抢劫一个房子和抢劫一片村庄的差别。

抗勾结性: 去中心化系统的参与者们,很难相互勾结。而传统企业和政府的领导层,往往会为了自身的利益,以损害客户、员工和公众利益的方式,相互勾结。(说中文的矿场 vs 说英文的开发者)

结语:看我这么努力的份上,麻烦点赞收藏加关注,有问题在评论区call爆我,我一定会改的。谢谢!

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

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

相关文章

Java Web 网页设计(3)

3.servlet JavaWeb——Servlet(全网最详细教程包括Servlet源码分析)-CSDN博客 servlet java不支持 只有Tomcat支持 使用时添加一下 servlet中最常用的两个(固定)方法: 下面我们创建一个servlet类 package com.oracle…

[极客大挑战 2019]Upload、[ACTF2020 新生赛]Upload、[MRCTF2020]你传你呢

[极客大挑战 2019]Upload 打开环境&#xff0c;是上传一句话木马的题 先上传1.php试试&#xff0c;发现不可以 试试改后缀为phtml&#xff0c;提示语句中不能包含<?&#xff0c;只能改木马&#xff1a; <script language"php">eval($_POST[line]);</sc…

[C++][算法基础]欧拉函数(常规求质数)

给定 n 个正整数 &#xff0c;请你求出每个数的欧拉函数。 欧拉函数的定义 1∼N 中与 N 互质的数的个数被称为欧拉函数&#xff0c;记为 ϕ(N)。 若在算数基本定理中&#xff0c;N…&#xff0c;则&#xff1a; ϕ(N) N… 输入格式 第一行包含整数 n。 接下来 n 行&#xf…

通信原理(2)--随机过程

通信原理(2)–随机过程 3.1随机过程的基本概念 随机过程{x(t)}由一族时间函数 x i ( t ) x_i(t) xi​(t)&#xff0c;i1,2.3…组成&#xff0c;每一个时间函数 x i ( t ) x_i(t) xi​(t)称为随机过程{x(t)}的一个样本函数&#xff08;一个实现&#xff09; 每个样本函数在时间…

使用composer开发自己的扩展包

前言 日常的开发中我们经常用到composer去安装其他人封装好的扩展包&#xff0c;如果你有好的功能代码想分享给其他人使用&#xff0c;就可以使用composer打包成扩展包。其他人用composer安装后就可以使用你的扩展包了。这篇文章教你如何打包自己的composer扩展包。 1.新建仓…

d10(104-112)-勇敢开始Java,咖啡拯救人生

目录 多态[面向对象的三大特征&#xff1a;封装 继承 多态]polymorphism 多态的好处 多态下的类型转换问题 注意事项 final关键字 注意事项 常量 抽象类abstract 好处 运用场景 接口interface 好处 接口中新增的三种方法&#xff1a; 接口的多继承 内部类[类中五…

江苏开放大学2024年春《机电设备安装与调试 050095》第三次形成性考核作业参考答案

电大搜题 多的用不完的题库&#xff0c;支持文字、图片搜题&#xff0c;包含国家开放大学、广东开放大学、超星等等多个平台题库&#xff0c;考试作业必备神器。 公众号 答案&#xff1a;更多答案&#xff0c;请关注【电大搜题】微信公众号 答案&#xff1a;更多答案&#…

boot2docker实践@FreeBSD

boot2docker是专为Docker而设计的轻量极Linux发型包&#xff0c;解决Windows、OS X、FreeBSD不能安装Docker的问题。Boot2Docker完全运行于内存中&#xff0c;24M大小&#xff0c;启动仅5-6秒。Boot2Docker需要运行在VirtualBox中&#xff0c;同时意味着有VirtualBox就能运行Bo…

万业企业发布23年年报、24年一季报,集成电路业务同比大增近七成 转型成效显著

4月26日晚间&#xff0c;万业企业&#xff08;600641&#xff09;发布2023年年度报告及2024年一季度报告。2023年&#xff0c;公司实现营业收入9.65亿元&#xff0c;归母净利润1.51亿元。其中&#xff0c;公司集成电路设备制造业务收入较上年同期大幅增长67.53%&#xff0c;公司…

CYCLE:学习自我完善代码生成

目录 IntriductionOverview of the Approach 预训练的代码语言模型在代码生成方面取得了可喜的性能&#xff0c;并提高了人类开发人员的编程效率。然而&#xff0c;现有的代码 LM 评估通常忽略了它们的 自我求精能力&#xff0c;这些评估仅关注一次性预测的准确性。对于代码 L…

Leetcode - 周赛394

目录 一&#xff0c;3120. 统计特殊字母的数量 I 二&#xff0c;3121. 统计特殊字母的数量 II 三&#xff0c;3122. 使矩阵满足条件的最少操作次数 四&#xff0c;3123. 最短路径中的边 一&#xff0c;3120. 统计特殊字母的数量 I 本题就是统计有多少个字母的大小写同时出现…

AIGC学习步骤

目录 AIGC学习步骤 步骤一&#xff1a;理解基本概念 步骤二&#xff1a;学习资源 步骤三&#xff1a;深入研究 步骤四&#xff1a;联系专家 步骤五&#xff1a;实践应用 步骤六&#xff1a;持续学习 AIGC学习步骤 我们先来说说什么是AIGC&#xff1f; 生成式人工智能—…

第二篇:Python环境搭建:从初学者到专家

Python环境搭建&#xff1a;从初学者到专家 在编程的世界里&#xff0c;准备好一个高效而舒适的开发环境是走向成功的第一步。在这篇博客文章中&#xff0c;我们将一起探索如何为Python编程搭建一个理想的环境。无论你是完全的新手还是希望提升现有的技能&#xff0c;本文都会…

IDEA快速入门

目录 1. 概述 2. 安装 3. 激活 4. 关闭自动更新 5. 创建Java项目 5.1 配置JRE 5.2 创建项目 6. 配置设置 6.1 主题 6.2 设置字体默认大小 6.3 鼠标滚轮改变字体大小 6.4 设置自动导入 6.5 项目选择 7. lombok插件 7.1 安装插件 7.2 启用注解 8. 安装包及插件…

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

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

优维全新力作:统一采控平台

在本月&#xff0c;优维新一代核心系统「EasyOps」7.0大版本重磅上线&#xff0c;为广大用户带来了“更核心、更智能、更开放、更客制”的产品能力。&#xff08;点击回看&#xff1a;重磅&#xff01;优维科技发布EasyOps7.0大版本&#xff09;在本次版本能力分享上&#xff0…

VBA技术资料MF145:清空回收站

我给VBA的定义&#xff1a;VBA是个人小型自动化处理的有效工具。利用好了&#xff0c;可以大大提高自己的工作效率&#xff0c;而且可以提高数据的准确度。“VBA语言専攻”提供的教程一共九套&#xff0c;分为初级、中级、高级三大部分&#xff0c;教程是对VBA的系统讲解&#…

各种CSS导航代码集合!CV即可!水平导航,垂直导航,jd粘性导航…

你好&#xff0c;我是云桃桃。 一个希望帮助更多朋友快速入门 WEB 前端的程序媛。 云桃桃-大专生&#xff0c;一枚程序媛&#xff0c;感谢关注。回复 “前端基础题”&#xff0c;可免费获得前端基础 100 题汇总&#xff0c;回复 “前端工具”&#xff0c;可获取 Web 开发工具合…

mysql的多表查询和子查询

多表查询&#xff1a;查询数据时&#xff0c;需要使用多张表来查询 多表查询分类&#xff1a; 1.内连接查询 2.外连接查询 3.子查询 笛卡尔积&#xff1a; create table class (id int primary key auto_increment,name varchar(10) ); create table student (id int primar…

【TCP:可靠数据传输,快速重传,流量控制,TCP流量控制】

文章目录 可靠数据传输TCP&#xff1a;可靠数据传输TCP发送方事件快速重传流量控制TCP流量控制 可靠数据传输 TCP&#xff1a;可靠数据传输 TCP在IP不可靠服务的基础上建立了rdt 管道化的报文段 GBN or SR 累计确认&#xff08;像GBN&#xff09;单个重传定时器&#xff08;像…