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

news2024/9/24 21:23:39

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.coloradmin.cn/o/1915054.html

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

相关文章

【SQL】MySQL中的字符串处理函数:concat 函数拼接字符串,COALESCE函数处理NULL字符串

MySQL中的字符串处理函数:concat 函数 一、concat ()函数1.1、基本语法1.2、示例1.3、特殊用途 二、COALESCE()函数2.1、基本语法2.2、示例2.3、用途 三、进阶练习3.1 条件和 SQL 语句3.2、解释 一、concat &#xff0…

java中stirng真的不可改变么?

目录 1. 字符数组的私有性和不可变性 2. 没有提供修改内容的方法 3. 共享字符串常量池 4.不可变性的优点 5.结论 🎈边走、边悟🎈迟早会好 Java 中的 String 对象是不可变的。不可变性意味着一旦创建了一个 String 对象,它的值就不能再被…

怎么提高音频声音大小?提高音频声音大小的四种方法

怎么提高音频声音大小?在音频处理和编辑中,增加声音的音量是一个常见的需求,尤其是在确保音频清晰度和听觉效果的同时。调整音频的音量不仅仅是简单地提高音频的响度,它也涉及到如何保持音质的高标准,确保没有失真或削…

STM32智能机器人手臂控制系统教程

目录 引言环境准备智能机器人手臂控制系统基础代码实现:实现智能机器人手臂控制系统 4.1 数据采集模块 4.2 数据处理与控制算法 4.3 通信与网络系统实现 4.4 用户界面与数据可视化应用场景:机器人手臂管理与优化问题解决方案与优化收尾与总结 1. 引言 …

计算机组成原理:408考研|王道|学习笔记II

系列目录 计算机组成原理 学习笔记I 计算机组成原理 学习笔记II 目录 系列目录第四章 指令系统4.1 指令系统4.1.1 指令格式4.1.2 扩展操作码指令格式 4.2 指令的寻址方式4.2_1 指令寻址4.2_2 数据寻址 4.3 程序的机器级代码表示4.3.1 高级语言与机器级代码之间的对应4.3.2 常用…

leetcode--从前序与中序遍历序列构造二叉树

leetcode地址:从前序与中序遍历序列构造二叉树 给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点。 示例 1: 输入: preorder [3,9,20,15,…

提升机器视觉与机器学习软件安全性的实践策略

在近几年科技爆发中,机器学习(ML)和机器视觉(MV)的结合正在改变各行各业。机器学习通过数据驱动的算法让计算机能够自我学习,而机器视觉赋予计算机识别和理解图像的能力。这种结合使得计算机可以高效地执行…

传统的springboot项目中,如何进行添加自定义静态资源访问路径实现对静态资源的访问?

如何配置可以实现在浏览器中配置路径实现对resource资源路径下的index.html个性化定制访问路径 要在Spring Boot项目中配置使特定前缀访问静态资源,可以在application.yml文件中配置路径映射。以下是一个示例配置: 打开你的application.yml文件&#xf…

【MindSpore学习打卡】应用实践-LLM原理和实践-基于MindSpore实现BERT对话情绪识别

在当今的自然语言处理(NLP)领域,情绪识别是一个非常重要的应用场景。无论是在智能客服、社交媒体分析,还是在情感计算领域,准确地识别用户的情绪都能够极大地提升用户体验和系统的智能化水平。BERT(Bidirec…

C++基础篇(1)

目录 前言 1.第一个C程序 2.命名空间 2.1概念理解 2.2namespace 的价值 2.3 namespace的定义 3.命名空间的使用 4.C的输入输出 结束语 前言 本节我们将正式进入C基础的学习,话不多说,直接上货!!! 1.第一个C程…

2024.7.10作业

完成学生管理系统 1> 使用菜单完成 2> 有学生的信息录入功能:输入学生个数,并将学生的姓名、分数录入 3> 查看学生信息:输出所有学生姓名以及对应的分数 4> 求出学习最好的学生信息:求最大值 5> 按姓名将所有…

vue学习day05-watch侦听器(监视器)、Vue生命周期和生命周期的四个阶段、、工程化开发和脚手架Vue cli

13、watch侦听器(监视器) (1)作用:监视数据变化,执行一些业务逻辑或异步操作 (2)语法: 1)简写语法——简单数据类型,直接监视 ① Watch:{ 数…

python reload找不到怎么办

Python 3.0 把 reload 内置函数移到了 imp 标准库模块中。它仍然像以前一样重载文件,但是,必须导入它才能使用。 方法一: from imp import reload reload(module) 方法二: import imp imp.reload(module)

计算机网络之广域网

广域网特点: 主要提供面向通信的服务,支持用户使用计算机进行远距离的信息交换。 覆盖范围广,通信的距离远,需要考虑的因素增多, 线路的冗余、媒体带宽的利用和差错处理问题。 由电信部门或公司负责组建、管理和维护,并向全社会…

基于Booth乘法和Wallace树的乘法器优化思想

基于Booth乘法和Wallace树的快速乘法器 为了理解Booth乘法和Wallace数如何让乘法器变得更快: 先考虑不优化的8位乘法器实现,即8个16位数字累积共进行7次加法运算,可以认为一次16位加法用到16个全加器,则共需要112个全加器件&…

创建React 项目的几种方式

①.react自带脚手架 使用步骤: 1、下载 npm i create-react-app -g 2、创建项目命令: create-react-app 项目名称 ②.Vite构建工具创建react步骤:(推荐) 方法一: 1、yarn create vite 2、后续根据提示步…

深度动态IP代理 国内动态IP软件哪个好用

想必大家都用过动态IP产品,什么是动态IP,动态IP就是非固定的静态IP地址,短 时间了频繁波动ip地址,就叫动态IP,因为工作需要用到不同的IP,这时就需要动态IP软件。 今天给大家带来一款深度动态IP软件&#xf…

MySQL安全值守常用语句

一、用户权限设置 1、Mysql中用户是如何定义的 用户名主机域 10.0.0.5110.0.0.%%10.0.0.0/255.255.255.0Db01Localhost127.0.0.1 2、用户创建 create user xinjing% identified by 123 3、用户删除 drop user username;username 是要删除的用户名:如 drop user root…

SpringBoot日常:编码规范之import *

前言 日常开发中,我们在编码过程中会经常忽略import 包的问题,我们会使用import语句中的通配符*来引入整个包中的所有类。尽管这样做能够简化代码编写和阅读,但是过度使用import *也会带来一些坏处,本文将探讨这些问题并给出相应…

在Linux下直接修改磁盘镜像文件的内容

背景 嵌入式Linux系统通常在调试稳定后,会对磁盘(SSD、NVME、SD卡、TF卡)做个镜像,通常是.img后缀的文件,以后组装新设备时,就将镜像文件烧录到新磁盘即可,非常简单。 这种方法有个不便之处&a…