Web3 教程 - Solidity,Hardhat,Token standard,Interoperability
This tutorial represents an educational example to use a Chainlink system, product, or service and is provided to demonstrate how to interact with Chainlink's systems, products, and services to integrate them into your own. This template is provided "AS IS" and "AS AVAILABLE" without warranties of any kind, it has not been audited, and it may be missing key checks or error handling to make the usage of the system, product or service more clear. Do not use the code in this example in a production environment without completing your own audits and application of best practices. Neither Chainlink Labs, the Chainlink Foundation, nor Chainlink node operators are responsible for unintended outputs that are generated due to errors in code.这个 repository 是初学者课程《Web3 和区块链技术》的代码部分,并且包括课程中提到过的资料。
测试网水龙头(Testnet Faucets)
Chainlink 测试网水龙头:https://faucets.chain.linkAlchemy 测试网水龙头:https://sepoliafaucet.com/
Infura 测试网水龙头:https://www.infura.io/faucet/sepolia
在哪里讨论,问题?
提课程相关的问题 提任何区块链相关的技术问题 提出任何以太坊相关的技术问题(需要英文) 提出任何技术问题(需要英文)- 其他可能会用到的技术文档
目录
教程中用到的代码
- 第一课:无
- 第二课:https://github.com/smartcontractkit/Web3_tutorial_Chinese/tree/main/lesson-2
- 第三课:https://github.com/smartcontractkit/Web3_tutorial_Chinese/tree/main/lesson-3
- 第四课:https://github.com/smartcontractkit/Web3_tutorial_Chinese/tree/main/lesson-4
- 第五课:https://github.com/smartcontractkit/Web3_tutorial_Chinese/tree/main/lesson-5
- 第六课:https://github.com/smartcontractkit/Web3_tutorial_Chinese/tree/main/lesson-6
第一课:区块链基础知识 & 操作
第一课视频教程:WIP第一课代码:本章没有代码
区块链简史
- 比特币发明人 - 中本聪(Nakamoto Satoshi) - 图灵完备是什么意思? - 以太坊发明人 - 维塔利克·布特林(Vitalik Buterin)区块链设计哲学:去中心化和共识
- PoW工作量证明 - PoS权益证明 - 女巫攻击Web3:面向资产的互联网
智能合约简介
自托管钱包Metamask
密码学基础 & Metamask配置
- Chainlist 查看测试网配置领取测试币
签名&发送交易
燃料费(gas费)介绍
:tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada:
恭喜完成第一课的学习!
:tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada:
第二课:Solidity基础:Hello World
第二课视频教程:WIP第二课代码:https://github.com/smartcontractkit/Web3_tutorial_Chinese/tree/main/lesson-2
Remix,Solidity编译器和开源协议
- EVM 版本Solidity 基础数据类型
Solidity 函数
Solidity 存储模式:memory, storage, calldata
这一节知识是底层原理,不需要完全理解也可以继续学习,这部分英文文档会更加清晰。 - storage存储方式 - memory存储方式 - calldata存储方式Solidity 基础数据结构:结构体,数组,和映射
Solidity 官方文档中,关于数据和结构体,英文文档比中文文档在定义上表述更清晰。 - 数据结构 - 数组(中文对照) - 数据结构 - 结构体(中文对照)合约间交互:工厂模式
:tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada:
恭喜完成第二课的学习!
:tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada:
第三课:Solidity进阶:FundMe
第三课视频教程:WIP第三课代码:https://github.com/smartcontractkit/Web3_tutorial_Chinese/tree/main/lesson-3
通过函数发送ETH
通过预言机设定最小额度
- Chainlink喂价文档 - Chainlink喂价合约地址列表-Solidity的数据类型没有double或者floating(小数),如果想要表示带有小数的以太币,把wei当成最小单位,它是ether的10e-18,也就是0.000000000000000001。
通过函数提取合约中的ETH
函数修饰符和时间锁
Token和Coin的区别
创建一个Token合约
继承ERC-20合约
部署和验证合约
- 注册从区块链浏览器(Etherscan)账户,并且获取API key
- 怎样通过 Etherscan 验证智能合约
:tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada:
恭喜完成第三课的学习!
:tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada:
第四课:Hardhat基础:部署交互FundMe
第四课视频教程:WIP第四课代码:https://github.com/smartcontractkit/Web3_tutorial_Chinese/tree/main/lesson-4
环境搭建:Hardhat介绍
环境搭建:安装node.js
- 如何在Windows上安装Linux
- 在MacOS安装node的5种方式
- MacOS Homebrew安装
- 面向初学者的 Linux Shell——解释 Bash、Zsh 和 Fish
- zsh的配置文件(英文)
- 如何在MacOS上卸载node
环境搭建:安装VS Code和git
创建Hardhat项目
通过Hardhat编译和部署合约
Hardhat网络&其他配置
与FundMe合约交互
创建Hardhat自定义任务
:tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada:
恭喜完成第四课的学习!
:tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada:
第五课:Hardhat进阶:测试FundMe
第五课视频教程:WIP第五课代码:https://github.com/smartcontractkit/Web3_tutorial_Chinese/tree/main/lesson-5
Hardhat 测试介绍
Hardhat deploy
使用mock合约
给FundMe写单元&集成测试
gas reporter和coverage
:tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada:
恭喜完成第五课的学习!
:tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada:
第六课:跨链应用
第六课视频教程:WIP第六课代码:https://github.com/smartcontractkit/Web3_tutorial_Chinese/tree/main/lesson-6
NFT介绍
NFT的metadata
ERC721基础合约
Chainlink CCIP (跨链互操作协议)
跨链资产池
Chainlink-local 和单元测试
跨链NFT的hardhat自定义任务
:tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada:
恭喜完成第六课的学习!
:tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada:
这个 repository 是初学者课程《Web3 和区块链技术》的代码部分,并且包括课程中提到过的资料。
English for review
Testnet Faucets
Chainlink testnet faucets:https://faucets.chain.linkAlchemy testnet faucets:https://sepoliafaucet.com/
Infura testnet faucets:https://www.infura.io/faucet/sepolia
Where to discuss?
- GitHub Discussion page
- Other technical documents that might be used
目录
Codes used in the course
- Lesson 1: NA
- Lesson 2: https://github.com/smartcontractkit/Web3_tutorial_Chinese/tree/main/lesson-2
- Lesson 3: https://github.com/smartcontractkit/Web3_tutorial_Chinese/tree/main/lesson-3
- Lesson 4: https://github.com/smartcontractkit/Web3_tutorial_Chinese/tree/main/lesson-4
- Lesson 5: https://github.com/smartcontractkit/Web3_tutorial_Chinese/tree/main/lesson-5
- Lesson 6: https://github.com/smartcontractkit/Web3_tutorial_Chinese/tree/main/lesson-6
Lesson1: blockchain basics
Video of lesson 1:WIPCodes of lesseon 1:NA
What is blockchain
- Nakamoto Satoshi - What is Turing completeness? - Vitalik ButerinPhilosophy of blockchain: Trust-minimization
- Proof of work - Proof of stake - Sybil attackWeb3: decentralized internet for asset
Introduction for smart contracts
Self Custody wallet & metamask
Crypto basics & metamask setup
- BIP-32 key generation algorithm
- BIP-39 wordlist
- How to convert mnemonics to private key
- Introduction to hierachical deterministic(HD) wallet
- Metamask installation
Claim test tokens on Sepolia testnet
Sign a transaction
Intro to gas fee
:tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada:
Congratulations! You complete the lesson 1!
:tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada:
Lesson 2: Solidity Basics: Hello World
Video of lesson 2: WIPCodes of lesson 2: https://github.com/smartcontractkit/Web3_tutorial_Chinese/tree/main/lesson-2
Remix & compiler version & license
- EVM versionsSolidity: basic data types
Solidity: function
Storage & memory & calldata
- layout in storage - layout in memory - layout in calldataSolidity: basic data structure
- Data structure - Array(Chinese) - Data structure - Struct(Chinese)HelloWorld factory: interact with other contracts
:tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada:
Congratulations! You complete the lesson 2!
:tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada:
Lesson 3: Solidity Advanced: FundMe & ERC20
Video of lesson 3: WIPCodes of lesson 3:https://github.com/smartcontractkit/Web3_tutorial_Chinese/tree/main/lesson-3
Payable function: send ETH to a contract
Set the minimum for USD with Chainlink Data feed
- Chainlink data feed doc - Chainlink data feed addressesTransfer token using function
Modifier and timelock
Token vs Coin
Create a token contract
ERC-20 token standard
Deployment & verification
- Register Etherscan and get a API key
- How to verify a smart contract on Etherscan
:tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada:
Congratulations! You complete the lesson 3!
:tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada:
Lesson 4: hardhat FundMe
Video of lesson 4: WIPCodes of lesson 4: https://github.com/smartcontractkit/Web3_tutorial_Chinese/tree/main/lesson-4
env setup: Introduction to Hardhat
env setup: Install nodejs
- How to install Linux on Windows
- 5 ways to install node on MacOS
- MacOS Homebrew
- Linux Shell for beginners- Bash, Zsh and Fish
- zsh configuration
- uninstall node on MacOS
env setup: Install vscode & git
Create hardhat project
Compile and deploy the contract through Hardhat
- Compile contract in Hardhat
- Deploy contract in Hardhat
- Hardhat ethers
- ethersjs v6 official documentation
- ethersjs migrate v5 to v6
Hardhat network & other configurations
Interact with FundMe
create custom hardhat task
:tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada:
Congratulations! You complete the lesson 4!
:tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada:
Lesson 5: Test FundMe
Video of lesson 5:WIPCodes of lesson 5: https://github.com/smartcontractkit/Web3_tutorial_Chinese/tree/main/lesson-5
Introduction to the unit tests in Hardhat
Hardhat deploy task
mock contract
write unit test for FundMe
gas Reporter & coverage
:tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada:
Congratulations! You complete the lesson 5!
:tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada:
Lesson 6: cross-chain application
Video of lesson 6: WIPCodes of lesson 6: https://github.com/smartcontractkit/Web3_tutorial_Chinese/tree/main/lesson-6
Introduction for NFT
NFT metadata
ERC-721 token standard
Chainlink CCIP (Cross-chain Interoperability Protocol)
- What is blockchain interoperability
- Chainlink CCIP official document
- Cross chain bridge vilnerabilities
- CCIP use cases
- ethereum commitment levels
- The Five Levels of Cross-Chain Security
Token pool in CCIP
Chainlink-local & unit test
hardhat custom task for cross-chain NFT
:tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada:
Congratulations! You complete the lesson 6!
:tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada:
Disclaimer: Please note, this repo contains community examples only — these are not Chainlink products or services and are not supported or maintained by Chainlink. This code represents an example of using a Chainlink product or service, and is intended for demonstration and educational purposes only. It is provided “AS IS” and “AS AVAILABLE” without warranties of any kind, may not have been audited, and may omit checks or error handling. Each party intending to use this example code does so entirely at their own risk and must perform its own audits, security and code review, key management, and testing before any production deployment and en
... (README truncated for length)