学习资料来源于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—集成开发软件