区块链+Web3学习笔记(METAMASHK、密码学知识)

学习资料来源于B站:

17小时最全Web3教程:ERC20,NFT,Hardhat,CCIP跨链_哔哩哔哩_bilibili

该课程提供的Github代码地址,相关资料详见README.md:

Web3_tutorial_Chinese/README.md at main · smartcontractkit/Web3_tutorial_Chinese · GitHub

一、区块链技术

简史

比特币提出 -> 以太坊协议(提出智能合约)  -> 

比特币协议不是图灵完备的,但是以太坊协议是图灵完备的。

比特币的设计哲学:系统简单,使用简洁的脚本语言减少了复杂性,使得系统更易于理解、维护和审计。

以太坊协议:

        DeFi(Decentralized Finance):去中心化金融,指利用区块链技术和智能合约构建的一系列金融服务和产品。

        预言机:将区块链系统外的数据以去中心化的方式写入智能合约中。

        NFT(Non-Fungible Token):非同质化通证,一项通证编程标准,用语承载业务逻辑

        跨链:不同区块链之间的智能合约进行相互操作。

区块链设计哲学:区块链是一个点对点的分布式系统,去中心化,共识,女巫攻击。

其他的共识方法:PoW、PoS、PoA、PoH、PBFT

PoS:权益证明

PoW:工作量证明

女巫攻击解决方法:

        比特币网络:

        需要解决复杂的数学难题来添加交易,这个过程需要大量计算资源和时间,确保只有具备足够计算能力的人才才能参与区块链的维护,提升不诚实节点的作恶资本。

        解决这个数学难题的过程就叫挖矿,提供计算资源的叫矿机。

        以太坊网络:

        以太坊merge,以太坊的共识方式从PoW转变为PoS,这个事件成为Merge(合并)

        PoS挖矿过程:不再进行计算数学难题进行挖矿,而是通过抵押资产进行添加交易,错误提交时,会进行罚款,正确提交则获得区块奖励。

特点:安全性高、效率低 

Web3:面向资产的互联网

Web1:只读

Web2:可读可写

Web3:可读可写可拥有

在Web3中 : 有所有权的数据 = 资产

智能合约简介

以太坊智能合约:

        以太坊的智能合约是一种自执行的合约,合同条款直接写入代码中,并在区块链网络上运行。它们自动执行和强制执行合同中的条款和条件,无需第三方干预。

        特点:

        去中心化

        数据透明

        数据安全不可篡改

        消除交易对手风险

NFT、DeFi、DAO(去中心化自治组织)

        DAO:

        通过智能合约在区块链上运行的组织。DAO的决策和管理过程是去中心化的,由所有持有通证的成员共同参与和投票决定。将代码规则融入自治管理。

二、区块链技术学习

 1、发起第一笔交易

以太坊的账户类型

对于托管账户:即第三方管理你的账户,拥有你的一切资产。

对于自托管账户:自己管理自己的账户,但是如果丢失了账户(私钥),意味着丢失了账户中的所有资产,获得你的账户就相当于获得了你的一切资产。

安装自托管钱包

安装METAMASK:网址: meatmask.io

Chrome版:

进行下载并添加到Chrome浏览器中的插件。

由于我电脑的问题,谷歌浏览器不能上网,改用Edge进行,跟Chrome一样安装插件即可。

当出现这个页面时说明安装成功。

创建钱包

选中 同意METAMASK协议,创建钱包

点击 同意 即可

接下来创建密码

(在中心化应用中需要创建账户再设置密码,但是再去中心化应用中,不需要别人同意你创建账户,只需符合数学规则就可以,创建私钥,再创建地址,就是帐号了。中心化应用符合管理规则,去中心化符合数学规则)

后面会显示你的助记词,要记好你的助记词

创建钱包成功。

Metamask功能介绍

选择网络:选择不同的网络,获得对应的通证。

以插件形式打开 

 密码学基础知识

什么时密码学?

        就是通过一些方式把大家能认识的一些明文变成密文,再通过一些方式将密文转为明文

区块链中的密码学

        哈希函数(Hash Function)

        公钥和私钥(Public key and Private Key)

哈希函数:

        将任意长度的数据转化成固定长度的数据

        特性:确定性、单向高效(原文能得到哈希值,但是哈希值不能得到原文)

公钥和私钥

        两种类型的密钥

        对称加密(单个密钥)、非对称加密(一对密钥),在区块链中,使用的是非对称加密

非对称加密:

        加密

        任何人都可以通过接收者的公钥对信息加密

        只有公钥对应的私钥的持有人才可以对加密信息进行解密

        验证

        用户通过私钥签名/授权交易(电子签名)

        通过公钥验证电子签名,确保是私钥持有人在发送交易

助记词和私钥是一对多的关系,助记词和私钥都不能丢失

日常开发中接触最多的是地址和子密钥

Faucet水龙头

水龙头:以太坊上的原生通称。

领取通证,发送交易。

在测试网上,交手续费的通称是 SepoliaETH ,在链上是ETH。

可以在 faucets.chain.link 上获取ETH

 进行验证,这个过程中会有Github验证。验证完成出现 获取令牌 ,点击获取令牌

点击交易哈希后面的字符串,会到交易浏览器界面,该界面记录交易信息。

该浏览器是中心化服务。

获取 原生通证之后,会改变钱包中的ETH

有了原生通证之后,点击钱包中的 send 进行下一步操作

选择你要发送的账户(这里我选择测试账户1)发送0.05ETH

发送成功后,会有该条交易的记录产生

点击该条交易,可以在浏览器上查看该条交易信息

这里的 Transaction Free 是由 Gas Price 乘以 Gas Limit 得到的

即 计算单元 乘以 单元价格

经过以上步骤,就在以太坊上发布了第一个交易

EIP1559是以太坊的升级,目的是提高以太坊的网络效率

三、智能合约编程语言—Solidity

课程提供的代码仓库:

我自己编写的代码仓库:

Solidity在线编程IDE:REMIX:Remix - Ethereum IDE

IDE—集成开发软件

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

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

相关文章

银河麒麟系统内存清理

银河麒麟系统内存清理 1、操作步骤2、注意事项 💐The Begin💐点点关注,收藏不迷路💐 当银河麒麟系统运行较长时间,内存中的缓存可能会积累过多,影响系统性能。此时,你可以通过简单的命令来清理这…

JS | 如何解决ajax无法后退的问题?

Ajax请求通常不支持浏览器的后退按钮,因为它们是异步的,不会导致页面重新加载(刷新)。但如果你想要用户能够通过浏览器的后退按钮回到之前的页面状态,你可以通过几种方法来解决这个问题: 1、使用pushState和replaceState方法 hi…

【Android】数据存储

本章介绍Android五种主要存储方式的用法,包括共享参数SharedPreferences、数据库SQLite、SD卡文件、App的全局内存,另外介绍重要组件之一的应用Application的基本概念与常见用法,以及四大组件之一的内容提供器ContentProvider的基本概念与常见…

五.海量数据实时分析-FlinkCDC+DorisConnector实现数据的全量增量同步

前言 前面四篇文字都在学习Doris的理论知识,也是比较枯燥,当然Doris的理论知识还很多,我们后面慢慢学,本篇文章我们尝试使用SpringBoot来整合Doris完成基本的CRUD。 由于 Doris 高度兼容 Mysql 协议,两者在 SQL 语法…

Redis数据库与GO(二):list,set

一、list(列表) list(列表)是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。List本质是个链表, list是一个双向链表,其元素是有序的,元…

GS-SLAM论文阅读笔记-CaRtGS

前言 这篇文章看起来有点像Photo-slam的续作,行文格式和图片类型很接近,而且貌似是出自同一所学校的,所以推测可能是Photo-slam的优化与改进方法,接下来具体看看改进了哪些地方。 文章目录 前言1.背景介绍GS-SLAM方法总结 2.关键…

uniapp+Android面向网络学习的时间管理工具软件 微信小程序

目录 项目介绍支持以下技术栈:具体实现截图HBuilderXuniappmysql数据库与主流编程语言java类核心代码部分展示登录的业务流程的顺序是:数据库设计性能分析操作可行性技术可行性系统安全性数据完整性软件测试详细视频演示源码获取方式 项目介绍 用户功能…

STM32F103C8----3-3 蜂鸣器(跟着江科大学STM32)

一,电路图 (接线图) 面包板的的使用请参考:《面包板的使用_面包板的详细使用方法-CSDN博客》 二,目的/效果 3-3 蜂鸣器 三,创建Keil项目 详细参考:《STM32F103C8----2-1 Keil5搭建STM32项目模…

Linux ssh 免密登录配置

参考资料 ~/.ssh/configについて~/.ssh/configを使ってSSH接続を楽にする.ssh/configファイルでSSH接続を管理する 目录 一. 密钥生成1.1 生成工具1.1.1 OpenSSH1.1.2 Git 1.2 生成命令1.3 注意事项1.4 解决路径中的用户名乱码 二. 将公钥配置到目标服务,免密登录2…

Spring Boot集成encache快速入门Demo

1.什么是encache EhCache 是一个纯 Java 的进程内缓存框架,具有快速、精干等特点,是 Hibernate 中默认的 CacheProvider。 Ehcache 特性 优点 快速、简单支持多种缓存策略:LRU、LFU、FIFO 淘汰算法缓存数据有两级:内存和磁盘&a…

Linux bash脚本 远程开发环境配置

参考资料 太香了,VSCode远程开发插件,值得一试Visual Studio Code で Remote SSH する。Managing extensions 目录 一. 远程开发必备二. 连接远程开发服务器三. 安装远程开发插件 一. 远程开发必备 ⏹ VSCode插件 Remote - SSH 通过使用 SSH 链接虚拟…

C++之多态篇(超详细版)

1.多态概念 多态就是多种形态,表示去完成某个行为时,当不同的人去完成时会有不同的形态,举个例子在车站买票,可以分为学生票,普通票,军人票,每种票的价格是不一样的,当你是不同的身…

如何高效删除 MySQL 日志表中的历史数据?实战指南

在处理高并发的物联网平台或者其他日志密集型应用时,数据库中的日志表往往会迅速增长,数据量庞大到数百GB甚至更高,严重影响数据库性能。如何有效管理这些庞大的日志数据,特别是在不影响在线业务的情况下,成为了一项技…

使用Windows远程桌面连接Linux

要在Kali Linux上使用Windows远程桌面连接(MSTSC.exe),你可以通过配置xrdp服务来实现。以下是在Kali Linux上设置xrdp以便Windows远程桌面连接的具体步骤: 一、安装xrdp和Xfce桌面环境 更新软件包列表: 打开终端&…

Python和C++混淆矩阵地理学医学物理学视觉语言模型和算法模型评估工具

🎯要点 优化损失函数评估指标海岸线检测算法评估遥感视觉表征和文本增强乳腺癌预测模型算法液体中闪烁光和切伦科夫光分离多标签分类任务性能评估有向无环图、多路径标记和非强制叶节点预测二元分类评估特征归因可信性评估马修斯相关系数对比其他准确度 Python桑…

基于C++和Python的进程线程CPU使用率监控工具

文章目录 0. 概述1. 数据可视化示例2. 设计思路2.1 系统架构2.2 设计优势 3. 流程图3.1 C录制程序3.2 Python解析脚本 4. 数据结构说明4.1 CpuUsageData 结构体 5. C录制代码解析5.1 主要模块5.2 关键函数5.2.1 CpuUsageMonitor::Run()5.2.2 CpuUsageMonitor::ComputeCpuUsage(…

大数据技术:Hadoop、Spark与Flink的框架演进

大数据技术,特别是Hadoop、Spark与Flink的框架演进,是过去二十年中信息技术领域最引人注目的发展之一。这些技术不仅改变了数据处理的方式,而且还推动了对数据驱动决策和智能化的需求。在大数据处理领域,选择合适的大数据平台是确…

有些硬盘录像机接入视频汇聚平台EasyCVR后通道不显示/显示不全,该如何处理?

EasyCVR视频监控汇聚管理平台是一款针对大中型项目设计的跨区域网络化视频监控集中管理平台。该平台不仅具备视频资源管理、设备管理、用户管理、运维管理和安全管理等功能,还支持多种主流标准协议,如GB28181、RTSP/Onvif、RTMP、部标JT808、GA/T 1400协…

排序算法剖析

文章目录 排序算法浅谈参考资料评价指标可视化工具概览 插入排序折半插入排序希尔排序冒泡排序快速排序简单选择排序堆排序归并排序基数排序 排序算法浅谈 参考资料 数据结构与算法 评价指标 稳定性:两个相同的关键字排序过后相对位置不发生变化时间复杂度空间复…

数据挖掘-padans初步使用

目录标题 Jupyter Notebook安装启动 Pandas快速入门查看数据验证数据建立索引数据选取⚠️注意:排序分组聚合数据转换增加列绘图line 或 **(默认):绘制折线图。bar:绘制条形图。barh:绘制水平条形图。hist&…