如何学习 Web3
大家好,我是 Francesco,我每天分享有关 Web3 的内容(主要在Twitter和YouTube上)
在本文中,我将总结学习 Web3 可以采取的步骤。
从哪里开始?
当我们想要开始做新的事情时,我们需要一些方向,以免一开始就陷入困境。
但我们每个人都是不同的,我们有不同的学习方式。
本文基于我学习 Web3 的个人经验。
路线图
我不喜欢路线图!但至少读一读路线图能让我们了解自己的预期,并检查是否遗漏了什么。
不要将路线图视为值得信赖和盲目遵循的圣经,而应将其作为您是否走在正确道路上的一个提醒。
有很多路线图,我正在研究其中一张。
现在我觉得推荐以下内容:
完整的 Web3.0 和 Solidity 开发路线图(2022)
介绍文章
那么最开始的内容呢?
我不建议直接进入代码部分,而是先让我们先了解一下什么是 Web3。
Nader Dabit在freecodecamp上发表的这篇文章是一个很好的入门文章。
区块链基础知识
从基础概念开始你就不会犯错。
我会为每篇文章链接具体的资源,但不要把这当作理解这些概念的唯一参考。慢慢来,因为在这里花的时间都可以用来节省以后的 iOS 时间!
只要记住基础知识是基础,所以不要跳过这一部分。
- Web1、Web2、Web3:一篇关于 web1、Web2 和 Web3 之间差异的好文章
- 什么是区块链:一个启发性的视频,帮助您了解区块链的基础知识。
- 分布式账本:它是地理上分布在许多站点、国家或机构的复制、共享和同步数字数据的共识。
- 加密货币基础知识:加密货币简介。
- 智能合约:4 分钟的视频简单解释智能合约。
- 加密钱包:加密钱包的介绍,与 Web3 中的身份验证概念相关。
- 区块浏览器:区块浏览器是一种在线工具,可让您搜索有关区块链的实时和历史信息,包括与区块、交易、地址等相关的数据。
- 区块链预言机:区块链预言机是一种将智能合约与外界连接起来的服务,用于从外部世界(以及向外部世界)提供信息。
- NFT 简介:4 分钟解释 NFT。
- DAO 简介:DAO,即去中心化自治组织,是一家通过区块链上的代码运行的公司。
- Dapp 简介:dApps,即去中心化应用程序,是使用区块链技术运行的应用程序。
选择区块链
每个区块链都是一个生态系统,有优点/缺点。
选择一个区块链来理解概念并应用它们,就像决定使用 Node.js 来构建一些 API 一样。
我建议选择以太坊的原因有很多,最主要的是网上有更多关于它的资料。
以太坊概念
一旦你选择了区块链,你就可以开始学习该区块链的基础知识。不同区块链之间的一些概念是重叠的,但每个区块链之间也可能略有不同。
对于以太坊:
- 账户:账户是持有以太币 (ETH) 余额的实体,可以在以太坊上进行交易。账户可以由用户控制,也可以部署为智能合约。
- 交易:交易是来自账户的加密签名指令。
- 区块:区块是带有链中前一个区块的哈希值的交易批次。
- 以太坊虚拟机(EVM):EVM 允许开发人员创建以太坊智能合约。
- Gas:Gas 对以太坊网络至关重要。它是以太坊网络运行的燃料,就像汽车需要汽油才能行驶一样。
- 节点和客户端:以太坊是一个由运行软件的计算机(称为节点)组成的分布式网络,这些软件可以验证区块和交易数据。您必须在计算机上运行一个软件应用程序(称为客户端),才能将其转换为以太坊节点。
- 网络:网络是您可以访问以进行开发、测试或生产用例的不同以太坊环境。
- 共识算法:共识机制允许分布式系统协同工作并保持安全。
以太坊概念(高级)
如果您想深入了解,可以查阅以下一些文章和概念:
- 以太坊白皮书:以太坊的介绍性论文,于 2013 年以太坊推出之前发布。
- 以太坊三难困境:
- EndGame(Vitalik Buterin):Vitalik Buterin 对以太坊可行路线图的愿景。
- 以太坊黄皮书:以太坊协议的正式定义。
- 信标链:信标链是一个管理并协调权益持有者网络的账本。
- 侧链:侧链是独立于以太坊运行的独立区块链,通过双向桥连接到以太坊主网。
- 合并:合并是以太坊历史上最重要的升级。为了确保向权益证明 (PoS) 的安全过渡,我们进行了广泛的测试和漏洞赏金计划。
这些都是可选的!
选择语言
我建议使用 Solidity,因为它是最受欢迎的。
Solidity(极速入门)
- 它是一种面向对象的、用于实现智能合约的高级语言。
- 它是静态类型的。
- 它是一种针对以太坊虚拟机设计的花括号语言。
- 它支持:继承、库和复杂的用户定义类型。
Solidity 文件(扩展名:.sol)如下所示
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;
contract HelloWorld {
string public greet = "Hello World!";
}
在接下来的部分中,您可以使用一些免费资源来学习和开始使用 solidity 编程语言。
Solidity 视频
一些不错的 YouTube 频道可以帮助您了解有关 Solidity 的更多信息:
- 学习使用 JavaScript 进行区块链、Solidity 和全栈 Web3 开发 - 32 小时课程: FreeCodecamp上的 Patrick Collins JavaScript 版本
- Solidity、区块链和智能合约课程——初学者到专家 Python 教程:Patrick Collins Python 版本
- Dapp 大学:Gregory(Dapp 大学)
- 智能合约程序员:一个很好的频道,视频直击要点。
Solidity 工具
- Remix IDE:无需设置本地环境即可轻松上手
- Solidity 文档:Solidity 官方文档
- Solidity 备忘单
- Cryptozombies:一个不错的入门在线教程。
使用框架
一旦掌握了基础知识,您就可以深入使用这些工具并在本地环境中工作。
- Metamask:MetaMask 是一个用于与以太坊区块链交互的软件加密货币钱包。
- Vs Code Solidity 扩展:VS Code 扩展与 Nethereum 代码生成器集成以创建合约集成定义。
- Truffle:Truffle 是一个用于开发智能合约的开发环境、资产管道和测试框架。
- Hardhat:Hardhat 是一个以太坊开发环境。您可以编译合约并在开发网络上运行它们。
- Brownie:Brownie是一个基于Python的智能合约开发和测试框架。
- Foundry:Foundry 是一个用 Rust 编写的用于以太坊应用程序开发的快速、可移植且模块化的工具包。
将 Dapp 连接到前端
你是前端开发人员吗?很好!
这一次,您不必学习新的框架,只需使用库即可与区块链交互!
您可以使用任何前端框架(React、Vue、Angular、Svelte……)
使用:
- Web3.js:web3.js 是一个库的集合,允许您使用 HTTP、IPC 或 WebSocket 与本地或远程以太坊节点进行交互。
- Ether.js:ethers.js 库旨在成为一个完整而紧凑的库,用于与以太坊区块链及其生态系统进行交互。
去中心化存储
以下是一些可用于将数据存储在区块链上的存储示例(类似于数据库)。
- IPFS:星际文件系统是一种协议、超媒体和文件共享对等网络,用于在分布式文件系统中存储和共享数据。
- Arweave:Arweave 是一种数据存储协议,它基于一种名为“blockweave”的技术构建。
- FileCoin:Filecoin 是一个开源的公共加密货币和数字支付系统,旨在成为一种基于区块链的协作式数字存储和数据检索方法。它建立在 IPFS 之上,允许出租未使用的硬盘空间。
他们是一个由用户运营商组成的 p2p 网络,掌握着部分整体数据。
中级工具
它们大多数并不复杂。说实话,它们简化了流程,但最好在了解基础知识之后再发现它们。
- 测试工具:华夫饼、甘纳许
- OpenZeppelin
- WalletConnect:WalletConnect 是一种开源协议,用于通过二维码扫描或深度链接将分散式应用程序连接到移动钱包。
- Chainlink:Chainlink 是一个去中心化的预言机网络,提供防篡改的输入、输出和计算,以支持任何区块链上的高级智能合约。
- TheGraph:The Graph 是一种索引协议,用于组织区块链数据并使其易于通过 GraphQL 访问。
SDK
在了解了 Dapp 是什么并举了一些例子之后,您可以决定是否需要一些支持,而不是自己编写所有内容。
您可以检查以下 3 个不错的选择:
- Alchemy SDK:将您的 Dapp 连接到区块链。
import { Alchemy } from 'alchemy-sdk';
// Using default settings - pass in a settings object to specify your API key and network
const alchemy = new Alchemy();
// Access standard Ethers.js JSON-RPC node request
alchemy.core.getBlockNumber().then(console.log);
// Access Alchemy Enhanced API requests
alchemy.core
.getTokenBalances('0x3f5CE5FBFe3E9af3971dD833D26bA9b5C936f0bE')
.then(console.log);
// Access the Alchemy NFT API
alchemy.nft.getNftsForOwner('vitalik.eth').then(console.log);
// Access WebSockets and Alchemy-specific WS methods
alchemy.ws.on(
{
method: 'alchemy_pendingTransactions'
},
res => console.log(res)
);
- thirdweb TypeScript SDK:用于编写智能合约的支持 SDK。这是 TypeScript 版本
// my_script.js
import { ThirdwebSDK } from "@thirdweb-dev/sdk";
// instantiate the SDK in read-only mode (our example is running on `polygon` here)
// all major chains and testnets are supported (e.g. `mainnet`, `rinkeby`, `goerli`, 'polygon', 'mumbai', etc.)
const sdk = new ThirdwebSDK("polygon");
// access your deployed contracts
const nftDrop = sdk.getNFTDrop("0x...");
const marketplace = sdk.getMarketplace("0x...");
// Read from your contracts
const claimedNFTs = await nftDrop.getAllClaimed();
const listings = await marketplace.getActiveListings();
- Moralis SDK:如何使用 Moralis SDK 指南连接到 Moralis 服务器。
这是初始化 Moralis SDK 的方法
import React from "react";
import ReactDOM from "react-dom";
import "./index.css";
import App from "./App";
import reportWebVitals from "./reportWebVitals";
ReactDOM.render(
<React.StrictMode>
<App />
</React.StrictMode>,
document.getElementById("root")
);
构建项目
建造项目!我留下了一些可以让你获得建造项目灵感的地方,但YouTube上还有更多。
公开建造
公开建造!
这不是 Web3 特有的东西,但如果你在公共场合构建,会给你带来一些好处:
- 您将更好地理解这些概念。
- 你就拥有了观众。
- 您可以与有相同兴趣的人建立联系。
我所做的一切都是公开的:
https://github.com/FrancescoXX/free-Web3-resources
加入社区!
最后但同样重要的一点是,加入社区会非常有用。
好的例子:
如果你是一个内容创作者,你也可以加入我创办的酷炫内容创作者社区 4C。
我们有一个专门针对 Web3 的部分。
如果您仍在阅读,请留下反馈。
谢谢你!
感谢阅读!
你可以在这里找到 Francesco