3,区块链加密(react+区块链实战)

3,区块链加密(react+区块链实战)

  • 3.1 哈希
  • 3.2 pow-pos-dpos
  • 3.3非对称加密
    • (1)对称加密AES
    • (2)非对称加密RSA
  • 3.4 拜占庭将军
  • 3.5 P2P网络
  • 3.6 区块链

3.1 哈希

密码学,区块链的技术名词

在这里插入图片描述

在这里插入图片描述

Hash woniu
将其变为hash值

数据指纹
可以将任意长度的数据转换成固定长度的数据

在这里插入图片描述

每次对woniu进行哈希得到的值是相同的
逆向困难,即下方的字符串无法逆向回到woniu

输入改变一点,整个哈希会发生非常大的变化
输入敏感

输入碰撞
要想找到某个字符的hash也是该字符否hash几乎是不可能的

3.2 pow-pos-dpos

上节课讲到了哈希

数据校验的应用,如发表一些信息或者软件,信息会被篡改,操作系统数据会被篡改,

在官网上放着哈希,看下周软件是否哈希和官网一样判断是否被篡改

共识,中心化无共识,只有中心说了算

无中心服务器时,如何让各个人达成一致

共识机制
1,POW工作量证明(全网随机出一道数学题,大家一起做,做出来,课卖100元,结果验证很很简单,比较原始,计算消耗能源大)
2,POS权益证明:不是谁干的活多谁转的多,类似公司,谁的权益大谁赚的多,如以太坊,谁的币多,谁拥有的时间越长,谁就获得
3,DPOS代理权益证明,全网广播证明太难,类似人大代表,只需要一部分代表同意即可,如EOS,定期精选EOS,可能会贿赂选节点,这个超级节点的权利

3.3非对称加密

现代科技与密码学分不开

有些人会篡改一些信息

如支付、交流、军事等

需要加密保护信息

最早字母表

(1)对称加密AES

只有一个秘钥,私钥

私钥会共享

发送逻辑,发送者私钥加密信息,发送密文, 接收方就用相同的私钥解密

此时私钥是相同的,计算效率比较高,前提是需要私钥共享

在这里插入图片描述

(2)非对称加密RSA

蜗牛 私钥加密信息(私钥签名)+公钥

小明这:收到信息+加密后的签名+公钥(公钥可以公开,只用来校验,公钥可以使用私钥计算得到) 通过公钥验证信息是否合法(只要证明信息合法,则信息明文也就无所谓了)

此时在传递需要认证的消息时,就不用事先共享私钥了,避免风险

这样信息可以证明其正确的,确实由蜗牛发出来的,第二个自己想抵赖也无法抵赖

在这里插入图片描述

在这里插入图片描述

在此里面也继承了非对称加密的代码,用来测试

公钥可以根据私钥计算得到,不可逆

私钥就是一个随机字符串

1,使用私钥计算公钥如下(getpub方法,woniu为私钥,计算的公钥如下)
在这里插入图片描述

2,对某个信息使用私钥进行签名(sign方法,信息-imoocisgood,私钥woniu,得到签名的信息如下)
在这里插入图片描述

3,发送消息将“imoocisgood”+签名的信息+公钥三个信息一起发送出去,接收方会接到这三个信息进行校验
4,Verify
在这里插入图片描述

区块链中每笔交易的模型
在这里插入图片描述

从谁转给谁,转了多少钱,会拼接成字符串,使用私钥加密,对方使用公钥验证解密,偷懒公钥直接使用adress地址,就不用再私发公钥了

本地是随机字符串生成了私钥,再使用私钥生成公钥
在这里插入图片描述

本地PUB方法得到本地的公钥,PRV得到本地的私钥

在挖矿,查询余额,转账时使用的都是pub公钥
在这里插入图片描述

Mine挖矿
Balance查询余额

3.4 拜占庭将军

当一些节点被黑,发出了错误的信息这怎么解决

拜占庭将军想要在某个时间一起进攻,这种情况就要考虑有些将军叛变,有些命令被篡改
怎么保证只要忠诚的将军收到命令后执行此命令,若有反叛,防止篡改

问题有很多解答

这有容错的机制

分布式系统肯定有的被黑,有的被挂,POW怎么保证

等等

多个将军的系统,无论叛军怎么做,都保证忠诚的将军最后发起进攻

这里就不多介绍了

3.5 P2P网络

点对点的系统

若在电脑下载一个比特币的软件,打开后就成为了一个比特币的节点,但是并没有一个公网IP,但别的网络如何和你进行通信

这就使用了P2P的网络系统

P2P、电驴等P2P的,最早出现原因,将某个电影放在服务器,如果好多成千上百人来访问服务器,服务器的带宽是扛不住的,就使用了点对点的系统,来我这告诉你别的节点文件在哪,去找其下载,这就减轻了中心服务器的压力

有启动节点

像以太坊的完全去中心化的,使用了DHT的kademlia的网络

自己实现的

在这里插入图片描述

我们的电脑没有公网ip,只有本地192.168的

我们访问外网的时候,网关会临时给一个公网端口,通过这个端口与外网进行交互

P2P交互逻辑,还是要UDP实现一个简单的P2P网络
在这里插入图片描述

加入节点时都会更新本地区块链

在这里插入图片描述

当加入新的节点会和所有的节点打个招呼

PEER方法,得到节点信息

机器之间通过中心服务器,网关键加入白名单,为了方便后续的交流沟通

3.6 区块链

分布式,系统在多个节点上

在这里插入图片描述

地址区块

地址就是公钥,区块包含什么信息
Detail 44查看某个区块
在这里插入图片描述

Index
Previoushash 上一个哈希值
Timestamp 时间戳
Nonce 随机数的难度值
Hash hash的前5个人是0,前面的0越多难度越大
Data 转账信息,这里是只有挖矿的信息故只有一条转账

这就是一个区块的详情

在这里插入图片描述

该内置了一个方法update可以用来篡改某个区块的信息,将某个区块的转账金额加1

这里对第40个区块进行篡改
在这里插入图片描述

输入bc方法,可以查看完整的区块链,如下找到第40个区块,数据已经被改了

在这里插入图片描述

这里的valid方法校验整个区块是否合法

每个区块都有previoushash及hash,而hash是由index,data,previoushash等等得到
在这里插入图片描述

在这里插入图片描述

使用方法mineblock 40修复第40个的区块,此处的修复是将不合法的第40个区块变为合法,但第41个就不合法了,需要一个个向后修复
在这里插入图片描述

虽然修复了第40个区块,但41就不合法了,越是前面的区块越不容易修复

篡改很难几乎不可能的任务

智能合约,现在的大部分的去中心话的应用都是部署在以太坊上的智能合约,后面会有章节专门介绍,转账信息由谁转给谁

后面也会有章节专门介绍,现在比特币只是谁转给谁几个币等,智能做币

而以太坊有图灵完毕的虚拟机,智能合约就是一定地址,一定的代码,在符合条件的时候执行此代码,代码中可以抽奖、预测、游戏等,存在链上,完全去中心化,不受人为干预的

后面会介绍实战开发

在这里插入图片描述

钱包

既然币,存储各类数字货币的钱包

所能掌握的就是私钥,会将私钥放在脑子、放在纸上、放在电脑中这些就是钱包,放到脑子记不住,就需要一个钱包来管理

数字货币就不详解了
在这里插入图片描述

比特币使用merkle树来计算hash

下一章就是nodejs区块链实战

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

四川赤橙宏海商务信息咨询有限公司抖音电商服务靠谱吗?

在数字化浪潮席卷全球的今天,电商行业蓬勃发展,各种新兴电商平台层出不穷。其中,抖音电商以其独特的社交属性和庞大的用户基础,迅速崛起为行业新星。四川赤橙宏海商务信息咨询有限公司,作为专注于抖音电商服务的佼佼者…

[Linux]五种IO模型(图文讲解+故事讲解)

目录 一、对IO的理解:等拷贝 等 拷贝 二、五种IO模型(解释其概念) 1.阻塞IO 2.非阻塞IO 3.信号驱动IO 4.IO多路复用 5.异步IO IO速度比较 三、一个故事让你了解五种IO模型 四、同步VS异步 阻塞VS非阻塞 同步VS异步 阻塞VS非阻…

2023 年 GitHub 上最受欢迎的编程语言

JavaScript 仍然是使用最多的编程语言,在 Web 开发中占据重要地位。 被广泛用于 Web 应用程序开发,框架如 React 和 Angular 促进了单页应用程序的开发。 Node.js 的出现使其在后端编程中同样重要。 Python 由于其简单性和广泛的库,Pyth…

07-7.5.1 散列表的基本概念

👋 Hi, I’m Beast Cheng 👀 I’m interested in photography, hiking, landscape… 🌱 I’m currently learning python, javascript, kotlin… 📫 How to reach me --> 458290771qq.com 喜欢《数据结构》部分笔记的小伙伴可以…

【测试开发】--安全渗透测试

1. 安全渗透 1.1 分类 web数据库安全web应用服务器安全(文件上传漏洞、文件包含漏洞)web客户端安全(XSS跨站攻击) 2. sql注入 2.1 sql注入介绍 sql注入在安全问题中排行榜首sql注入攻击是输入参数未经过滤,然后直…

MySQL的约束键多表查询

约束 概念 概念:约束是作用于表中字段上的规则,用于限制存储在表中的数据。目的:保证数据中数据的正确、有效性和完整性。 外键约束 概念 ​ 外键用来让两张表的数据之间建立连接,从而保证数据的一致性和完整性。 注意&#x…

最优化(10):牛顿类、拟牛顿类算法

4.4 牛顿类算法——介绍了经典牛顿法及其收敛性,并介绍了修正牛顿法和非精确牛顿法; 4.5 拟牛顿类算法——引入割线方程,介绍拟牛顿算法以及拟牛顿矩阵更新方式,然后给出了拟牛顿法的全局收敛性,最后介绍了有限内存BFG…

202-509SF 同轴连接器

型号简介 202-509SF是Southwest Microwave的连接器。这款连接器机身和法兰由不锈钢合金 UNS-30300 制成,螺纹接头则采用 5C360 黄铜合金。接触点采用 BeCu 合金,并经过镀金处理,以提供优异的导电性和耐腐蚀性。绝缘体则由 PTFE 氟碳或 ULTEM …

Backend - C# 的日志Lognet4

目录 一、安装 log4net 插件 (一)作用 (二)操作 (三)注意 二、配置 (一)配置AssemblyInfo.cs (二)配置log4net.config 1. 创建log4net.config文件&#xff08…

3.动态规划.基础

3.动态规划.基础 基础理论背包基础理论01背包完全背包多重背包 题目1.斐波那契数2.爬楼梯3.使用最小花费爬楼梯4.不同路径5.不同路径2 基础理论 动态规划,英文:Dynamic Programming,简称DP,如果某一问题有很多重叠子问题&#xf…

【Linux】常见指令收官权限理解

tar指令 上一篇博客已经介绍了zip/unzip指令,接下来我们来看一下另一个关于压缩和解压的指令:tar指令tar指令:打包/解包,不打开它,直接看内容 关于tar的指令有太多了: tar [-cxtzjvf] 文件与目录 ...…

VSCode升级后不能打开在MacOS系统上

VSCode 在MacOS无法打开 版本 VSCode version: 1.91.0 (x64) 错误信息: MacBook-Pro ~ % /Users/mac/Downloads/FirefoxDownloads/Visual\ Studio\ Code.app/Contents/MacOS/Electron ; exit; [0710/142747.971951:ERROR:crash_report_database_mac.mm(753)] op…

RFID技术革新养猪业,构建智能化养殖场

RFID技术作为无线射频识别技术的一种,凭借着非接触、高效识别的特性,在养殖业行业中得到了广泛的应用,为构建智能化、高效化的养殖场提供了强大的技术支持,给传统养殖业带来了一场前所未有的技术变革。以下是RFID技术在养猪行业不…

Qt 网络编程 网络信息获取操作

学习目标:网络信息获取操作 前置环境 运行环境:qt creator 4.12 学习内容 一、Qt 网络编程基础 Qt 直接提供了网络编程模块,包括基于 TCP/IP 的客户端和服务器相关类,如 QTcpSocket/QTcpServer 和 QUdpSocket,以及实现 HTTP、FTP 等协议的高级类,如 QNetworkRe…

mysql判断时间段是否重合

mysql判断时间段是否重合 SELECT CASE WHEN t1.start_time < t2.end_time AND t1.end_time > t2.start_time THEN ‘重合’ ELSE ‘不重合’ END AS result FROM table_name t1, table_name t2 WHERE t1.id <> t2.id;

dolphinScheduler + hive + datax报错记录

1、参数错误 报错信息 [INFO] 2024-04-11 06:43:18.386 - [taskAppIdTASK-29-3301-84461]:[498] - after replace sql , preparing : insertoverwrite table mis_month partition (dt) select nvl(sl.slid , ) as id,--水量 IDnvl(sl.hh …

张量笔记(4):张量网络

张量分解通常是将高维张量分解成一系列较低维的张量&#xff0c;表示能力相对较低。而张量网络可以表示复杂的高维数据结构&#xff0c;通过连接多个张量形成网络结构&#xff0c;可以更灵活地表示和处理复杂的数据关系。本节主要介绍HT和TT网络。 2.5.1 HT分解——首先我们引入…

【软件测试工具】-抓包工具Fiddler使用讲解

Fiddler使用讲解 1.认识fiddler Fiddler是一个http协议调试代理工具&#xff0c;主要检查电脑和互联网之间的http通讯。&#xff08;抓包工具&#xff09; 特点&#xff1a;简单方便&#xff0c;比较灵活 工作原理&#xff1a; 当浏览器向服务器请求数据时&#xff0c;被Fiddl…

K8S 集群节点缩容

环境说明&#xff1a; 主机名IP地址CPU/内存角色K8S版本Docker版本k8s231192.168.99.2312C4Gmaster1.23.1720.10.24k8s232192.168.99.2322C4Gwoker1.23.1720.10.24k8s233&#xff08;需下线&#xff09;192.168.99.2332C4Gwoker1.23.1720.10.24 1. K8S 集群节点缩容 当集群中有…

百数教学秘籍:三步走,轻松规划你的自动化计划任务

通过设定任务计划&#xff0c;用户可以轻松安排指定的功能插件或数据助手在特定时间自动执行&#xff0c;有效提高工作效率&#xff0c;还确保了数据的及时更新和处理。任务计划在应用启动时自动启动并在后台运行&#xff0c;无需用户持续监控&#xff0c;为用户带来极大的便利…