在本文中,我将总结您可以采取的步骤来学习 Web3。


从哪儿开始?

当我们想要开始新事物时,我们需要一些指导,以免在一开始就卡住。

但我们都是不同的,我们有不同的学习方式。

这篇文章基于我学习 Web3 的非常个人的经验。


路线图

我不喜欢路线图!但是至少阅读一个可以帮助我们了解我们的期望并检查我们是否遗漏了什么。

不要将路线图作为圣经来信任并 100% 盲目地遵循,但如果你走在正确的轨道上,它可以作为一个提醒。

有很多路线图,我正在制定一个。

现在我觉得推荐以下一个:

完成 Web3.0 和 Solidity 发展路线图 2022


介绍文章

第一个内容怎么样?

我不建议直接跳到代码中,而是握住我们的手一会儿,然后从大致了解什么是 Web3 开始。

Nader Dabitfreecodecamp上发表的这篇文章是一个很好的开始。


区块链基础

从基本概念开始,您就不会真的错了。

我将为它们中的每一个链接特定的资源,但不要将其作为您必须观看才能理解概念的唯一资源。慢慢来,因为所有时间都花在这里 ios 时间节省了!

请记住,基础是基础,所以不要跳过这部分。

  • Web1、Web2、Web3:关于 web1、Web2 和 Web3 之间差异的好文章

  • 什么是区块链:了解区块链基础知识的启发性视频。

  • 分布式账本:它是复制、共享和同步的数字数据的共识,这些数据在地理上分布在许多站点、国家或机构中。

  • 加密货币基础知识:介绍加密货币的介绍。

  • 智能合约:在 4 分钟的视频中简单解释了智能合约。

  • 加密钱包:加密钱包介绍,与 Web3 中的身份验证概念相关。

  • 区块浏览器:区块浏览器是一种在线工具,可让您搜索有关区块链的实时和历史信息,包括与区块、交易、地址等相关的数据。

  • Blockchain Oracles:区块链 oracle 是一种将智能合约与外部世界连接起来的服务,可以从(也可以)向世界提供信息。

  • NFT 介绍:4 分钟解释 NFT。

  • DAO 简介:DAO,即去中心化自治组织,是一家通过区块链上的代码运行的公司。

  • Dapp 简介:dApp 或去中心化应用程序是使用区块链技术运行的应用程序。


选择区块链

每个区块链都是一个生态系统,各有利弊。

选择一个区块链来理解概念并应用它们,比如决定使用 Node.js 构建一些 API。

我建议选择以太坊有很多原因,主要是网上有更多关于它的资料。


以太坊概念

选择区块链后,您就可以开始学习特定区块链的基础知识。一些概念在区块链之间重叠,但它们中的每一个都可能略有不同。

对于以太坊:

  • 账户:账户是具有以太 (ETH) 余额的实体,可以在以太坊上发送交易。帐户可以由用户控制或部署为智能合约。

  • 交易:交易是来自账户的加密签名指令。

  • :块是批量交易,其中包含链中前一个块的哈希值。

  • 以太坊虚拟机 (EVM):EVM 允许开发人员创建以太坊智能合约。

  • Gas:Gas 对以太坊网络至关重要。它是让它运行的燃料,就像汽车需要汽油才能运行一样。

  • 节点和客户端:以太坊是一个分布式计算机网络(称为节点),运行软件可以验证块和交易数据。该软件应用程序称为客户端,必须在您的计算机上运行才能将其变成以太坊节点。

  • 网络:网络是您可以为开发、测试或生产用例访问的不同以太坊环境。

  • 共识算法:共识机制允许分布式系统协同工作并保持安全。


以太坊概念(高级)

如果您想更深入地研究,可以查看以下一些文章和概念:

  • 以太坊白皮书:以太坊的介绍性文件,于 2013 年发布之前发布。

  • 以太坊三难困境

  • EndGame (Vitalik Buterin):Vitalik Buterin 对以太坊合理路线图的愿景。

  • 以太坊黄皮书:以太坊协议的正式定义。

  • 信标链:信标链是一个账户分类账,用于管理和协调利益相关者网络。

  • 侧链:侧链是一个独立的区块链,独立于以太坊运行,并通过双向桥连接到以太坊主网。

  • 合并:合并是以太坊历史上最重要的升级。进行了广泛的测试和漏洞奖励,以确保安全过渡到股权证明。

这些是可选的!


选择语言

  • Solidity:适合 JavaScript/C++/Python 开发人员。

  • Vyper:适合 Python 开发人员。

  • Rust:如果你选择 Solana 作为区块链,这是一个不错的选择。

我建议使用 Solidity,因为它是最受欢迎的。


Solidity(快速介绍)

  • 它是一种用于实现智能合约的面向对象的高级语言。

  • 它是静态类型的。

  • 它是一种花括号语言,旨在针对以太坊虚拟机。

  • 它支持:继承、库和复杂的用户定义类型。

这就是 Solidity 文件(扩展名:.sol)的样子

// SPDX-License-Identifier: MITpragmasolidity^0.8.13;contractHelloWorld{stringpublicgreet="Hello World!";}

在接下来的部分中,您可以使用一些免费资源来学习和开始使用 solidity 编程语言。


坚固的视频

一些很好的 YouTube 频道,可以了解更多关于 Solidity 的信息:

  • 使用 JavaScript 学习区块链、Solidity 和全栈 Web3 开发——32 小时课程:Patrick Collins Javascript 版本 on freeCodecamp

  • Solidity、区块链和智能合约课程——初学者到专家 Python 教程:Patrick Collins Python 版本

  • Dapp 大学:Gregory(Dapp 大学)

  • Smart Contract Programmer:一个很好的频道,视频开门见山。


实体工具

  • Remix IDE : 一个很好的入门,无需设置本地环境)

  • Solidity Docs : Solidity 官方文档

Solidity备忘单

  • Cryptozombies:一个不错的在线入门教程。


使用框架

一旦掌握了基础知识,您就可以深入使用这些工具并在本地环境中工作。

  • Metamask:MetaMask 是一种用于与以太坊区块链交互的软件加密货币钱包。

  • Vs Code Solidity Extension: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 网络。


中级工具

他们中的大多数并不复杂。老实说,它们简化了过程,但最好在了解了基础知识后再发现它们。

  • 测试工具:WaffleGanache

  • 打开飞艇

  • 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 networkconst alchemy = new Alchemy();// Access standard Ethers.js JSON-RPC node requestalchemy.core.getBlockNumber().then(console.log);// Access Alchemy Enhanced API requestsalchemy.core.getTokenBalances('0x3f5CE5FBFe3E9af3971dD833D26bA9b5C936f0bE').then(console.log);// Access the Alchemy NFT APIalchemy.nft.getNftsForOwner('vitalik.eth').then(console.log);// Access WebSockets and Alchemy-specific WS methodsalchemy.ws.on({method: 'alchemy_pendingTransactions'},res => console.log(res));
  • thirdweb TypeScript SDK:一个支持编写智能合约的SDK。这是打字稿版本

// my_script.jsimport { 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 contractsconst nftDrop = sdk.getNFTDrop("0x...");const marketplace = sdk.getMarketplace("0x...");// Read from your contractsconst 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(,document.getElementById("root"));

构建项目

建设项目!我留下了几个地方,您可以从中获得构建项目的灵感,但在 YouTube 上还有更多

  • 道德项目

  • 炼金术 – 通往 Web3 的道路


建立在公共

公开建造!

不是 Web3 特有的东西,但如果你在公共场合构建,对你有一些好处:

  • 您可以更好地理解这些概念。

  • 你有观众。

  • 您与具有相同兴趣的人建立联系。


加入社区!

最后但同样重要的是,加入社区会非常有用。