如何学习 Web3

news2024/9/22 9:40:40

在本文中,我将总结您可以采取的步骤来学习 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: MIT
pragmasolidity^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 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。这是打字稿版本

// 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 的道路


建立在公共

公开建造!

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

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

  • 你有观众。

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


加入社区!

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot集成WebSocket实现客户端与服务端长连接通信

场景&#xff1a; WebSocket协议是用于前后端长连接交互的技术&#xff0c;此技术多用于交互不断开的场景。特点是连接不间断、更轻量&#xff0c;只有在关闭浏览器窗口、或者关闭浏览器、或主动close&#xff0c;当前会话对象才会关闭。 这里只是简单的记录一下使用方式 一、服…

Proxy lab

CSAPP Proxy Lab 本实验需要实现一个web代理服务器&#xff0c;实现逐步从迭代到并发&#xff0c;到最终的具有缓存功能的并发代理服务器。 Web 代理是充当 Web 浏览器和终端服务器之间的中间人的程序。浏览器不是直接联系终端服务器获取网页&#xff0c;而是联系代理&#x…

关系型数据库的三大范式

一、简而言之 1、是什么&#xff1f; 三大范式是针对关系型数据库的一种数据库设计规范&#xff0c;使数据库设计符合约定的规范要求。 2、为什么要符合该规范&#xff1f; 为了建立冗余较小、结构合理的数据库。 3、三大范式内容的简单理解&#xff08;Normal Form&#…

2023美赛D题:可持续发展目标

以下内容全部来自人工翻译&#xff0c;仅供参考。 文章目录背景要求术语表文献服务背景 联合国制定了17个可持续发展目标&#xff08;SDGs&#xff09;。实现这些目标最终将改善世界上许多人的生活。这些目标并不相互独立&#xff0c;因此&#xff0c;一些目标的积极进展常常…

2023美国大学生数学建模竞赛选题建议

总的来说&#xff0c;这次算是美赛环境题元年&#xff0c;以往没有这么多环境题目&#xff0c;大部分题目都是开放度相当高的题目。C君认为的难度&#xff1a;D>C>AE>BF&#xff0c;开放度&#xff1a;DF>ABE>C。A题 遭受旱灾的植物群落这次A题为环境类题目&…

【技术分享】在RK3568上如何烧录MAC

本次我们使用的是触觉智能基于RK3568研发的IDO-EVB3568来给大家演示如何烧录MAC。 这款开发板拥有四核A55&#xff0c;主频高达2.0G&#xff0c;支持高达8GB高速LPDDR4&#xff0c;1T算力NPU &#xff0c;4K H.265硬解码&#xff0c;4K HDMI2.0显示输出&#xff0c;支持双通…

AMEPD SSD1680 调试记录

AMEPD Active Martix Electrophoretic Display&#xff0c;有源矩阵电泳显示屏。就是电纸书那种屏&#xff0c;调试效果使用感受和我的Kindle差不多。屏幕参数屏幕 IC为SSD1680122*250&#xff0c;单bit控制&#xff0c;1为白&#xff0c;0为黑逐行刷新&#xff0c;一个字节8bi…

JavaScript 浏览器中执行

本章节为大家介绍如何在浏览器上进行 JavaScript 代码的运行与调试。目前的主流浏览器有谷歌的Chrome&#xff08;使用blink内核&#xff09;&#xff0c;微软的edge&#xff08;使用chromium内核&#xff0c;这是一款谷歌提供的开源浏览器内核&#xff09;和IE&#xff08;使用…

记录锁,间隙锁,插入意向锁,临键锁兼容关系

插入意向锁是什么&#xff1f; 注意&#xff01;插入意向锁名字里虽然有意向锁这三个字&#xff0c;但是它并不是意向锁&#xff0c;它属于行级锁&#xff0c;是一种特殊的间隙锁。 在MySQL的官方文档中有以下重要描述&#xff1a; An Insert intention lock is a type of gap…

羊了个羊游戏开发教程3:卡牌拾取和消除

本文首发于微信公众号&#xff1a; 小蚂蚁教你做游戏。欢迎关注领取更多学习做游戏的原创教程资料&#xff0c;每天学点儿游戏开发知识。嗨&#xff01;大家好&#xff0c;我是小蚂蚁。终于要写第三篇教程了&#xff0c;中间拖的时间有点儿长&#xff0c;以至于我的好几位学员等…

2023美赛C题思路数据代码分享

文章目录赛题思路2023年美国大学生数学建模竞赛选题&论文一、关于选题二、关于论文格式三、关于论文提交四、论文提交流程注意不要手滑美赛C题思路数据代码【最新】赛题思路 (赛题出来以后第一时间在CSDN分享) 最新进度在文章最下方卡片&#xff0c;加入获取一手资源 202…

【小西】同步咪咕订单给咪咕方(写接口给第三方)

同步咪咕订单给咪咕方前言思路实现1、定义请求体和响应信息MiGuOrderSyncReqMiGuOrderSyncResp2、nacos定义好咪咕相关配置信息3、同步咪咕参数配置4、MiGuOrderSyncControl5、MiGuOrderSyncService6、MiGuOrderSyncServiceImplCreateAscIISignUtil 生成参数 字典排序 签名Hmac…

数据分析:消费者数据分析

数据分析&#xff1a;消费者数据分析 作者&#xff1a;AOAIYI 创作不易&#xff0c;如果觉得文章不错或能帮助到你学习&#xff0c;记得点赞收藏评论一下哦 文章目录数据分析&#xff1a;消费者数据分析一、前言二、数据准备三、数据预处理四、个体消费者分析五、用户消费行为总…

【CMake】CMake构建C++代码(一)

在Linux开发过程中&#xff0c;难免会用到CMake来构建你的代码。本文将说明如何构建自己的代码&#xff0c;将自己的代码变为共享库&#xff0c;共其他代码使用。 文章目录在Linux开发过程中&#xff0c;难免会用到CMake来构建你的代码。本文将说明如何构建自己的代码&#xff…

R语言Ternary包绘制三元图、RGB三色空间分布图的方法

本文介绍基于R语言中的Ternary包&#xff0c;绘制三元图&#xff08;Ternary Plot&#xff09;的详细方法&#xff1b;其中&#xff0c;我们就以RGB三色分布图为例来具体介绍。 三元图可以从三个不同的角度反应数据的特征&#xff0c;因此在很多领域都得以广泛应用&#xff1b;…

2023美赛F题思路数据代码分享

文章目录赛题思路2023年美国大学生数学建模竞赛选题&论文一、关于选题二、关于论文格式三、关于论文提交四、论文提交流程注意不要手滑美赛F题思路数据代码【最新】赛题思路 (赛题出来以后第一时间在CSDN分享) 最新进度在文章最下方卡片&#xff0c;加入获取一手资源 202…

MySQL 索引 (只要能看完)(一篇就够了)

文章目录前言一、MySQL索引介绍1.1 索引的类别1.2 索引的创建原则二、索引的管理和使用2.1 制造实验数据2.2 explain 使用说明2.3 创建索引2.3.1 基于创建表时建立索引2.3.2 基于已创建好的表创建索引2.4 删除索引2.5 聚集索引和二级索引2.5.1 聚集索引2.5.2 二级索引&#xff…

【python知识】win10下如何用python将网页转成pdf文件

一、说明 本篇记录一个自己享用的简单工具。在大量阅读网上文章中&#xff0c;常常遇到一个专题对应多篇文章&#xff0c;用浏览器的收藏根本不够。能否见到一篇文章具有搜藏价值&#xff0c;就转到线下&#xff0c;以备日后慢慢消化吸收。这里终于找到一个办法&#xff0c;将在…

【IIC子系统之读取温湿度】

IIC子系统之读取温湿度IIC总线协议主机读取一个字节主机发送一个字节设备树编写IIC设备驱动层API编写程序读取温湿度应用层驱动读取温湿度函数解析头文件IIC总线协议 1.I2C总线是PHLIPS公司在八十年代初推出的一种串行的半双工同步总线&#xff0c;主要用于连接整体电路。 1&a…

面试准备知识点与总结——(基础篇)

目录Java基础Java面向对象有哪些特征ArrayList和LinkedList有什么区别高并发的集合有哪些问题迭代器的fail-fast和fail-safeArrayList底层扩容机制HashMap面试合集解答设计模式单例设计模式哪些地方体现了单例模式Java基础 Java面向对象有哪些特征 Java面向对象有三大特征&am…