科技一站

 找回密码
 立即注册
查看: 103|回复: 7

Web3的技术栈(入门介绍)

[复制链接]

2

主题

3

帖子

6

积分

新手上路

Rank: 1

积分
6
发表于 2022-12-1 16:54:03 | 显示全部楼层 |阅读模式

当构建一个传统的网络或移动应用程序时,我经常依赖少数几个构建模块来完成工作。

  • API/应用服务器(REST或GraphQL)
  • 认证层(管理的或手工滚动的)
  • 数据库
  • 客户端框架、平台和库
  • 文件存储
使用这些核心组件,我可以建立我想要的大多数类型的应用程序,或者至少可以达到大部分的目的。那么,这在web3中是什么样子的呢?
事实证明,这个问题的答案并不那么简单,因为一下原因:

  • web3的工具、技术和生态系统不如web2成熟
  • 对我来说,也更难理解如何启动和运行web3应用程序,因为我是以与web2世界相同的方式来处理问题的。
在过去8个月左右的时间里,经过工作、研究、实验和建设,我想和大家分享一下我的心得。
什么是web3?
在我们定义web3协议栈之前,让我们试着定义一下web3。
Web3是实现完全去中心化的应用的协议栈。
有了这个去中心化的技术栈,我们就可以开始构建去中心化的应用,这些应用有其自身的意义和特点。
web3的一些特点是。

  • 去中心化的网络基础设施
  • 拥有(数据和平台)的所有权
  • 本地数字支付
  • 自主的身份
  • 分布式的、无信任的、强大的基础设施
  • 开放、公共、可组合的后端
让我们开始深入研究web3的堆栈,并将其分为以下几类。

  • 区块链
  • 区块链开发环境
  • 文件存储
  • P2P数据库
  • API(索引和查询)
  • 身份识别
  • 客户端(框架和库)
  • 其他协议
区块链
有无数的区块链,你可以选择建立在其上。没有一个是 "最好的",相反,你应该考虑它们之间的各种权衡。
在学习新东西时,有一件事对我来说常常很重要,那就是将帕累托原则应用到我所学的东西上。也就是说,什么是最有效的方式来获得该数量的时间和精力的最大收益。遵循这个想法,我可以在最短的时间内学习新东西的同时获得最大的牵引力和动力。
在区块链领域,学习Solidity和EVM(或以太坊虚拟机)可能是作为区块链开发者起步时的最佳选择。使用这种技能(和技术栈),你不仅可以为以太坊,而且可以为其他以太坊第二层、侧链,甚至其他区块链,如Avalanche、Fantom和Celo构建。
也就是说,Rust在区块链领域开始变得越来越流行,Solana、NEAR、Polkadot等都有一流的Rust支持。你学习这两种语言可能都不会出错,但对于初学者来说,如果今天有人问我,我会说Solidity仍将是更好的选择。
除了这些建议,这里有一个不完整的区块链样本,它在技术、效用、社区、势头和未来的可行性方面有一个坚实的组合。
以太坊--原创智能合约平台
ZK roolups:ZKSync、Starknet、Hermez--高吞吐量的以太坊第2层,但不与EVM天然兼容
Optimistic rollups:Arbitrum & Optimism - 以太坊第2层,与EVM兼容(在此了解更多关于乐观和ZK滚动的区别)。
Polygon - 以太坊侧链
Solana - 吞吐量高,交易成本低,区块时间快,但比EVM(Rust)更难学习
NEAR - 第一层区块链,可以用Rust或Assemblyscript编写智能合约
Cosmos - 一个互操作的区块链的生态系统
Polkadot - 基于区块链的计算平台,使建立在其上的区块链能够在它们之间执行交易,创建一个互连的区块链互联网
Fantom - EVM兼容的第1层
Avalanche - EVM兼容的第1层
Celo - EVM兼容的第1层,旨在使任何拥有智能手机的人都能轻松发送、接收和存储加密货币
Tezos - 非EVM兼容的第1层,很多NFT项目都在使用它
区块链开发环境
对于EVM的开发,有几个很好的开发环境可用。

  • Hardhat是一个较新的选择,但它正获得越来越多的青睐。他们的文档很好,工具和开发者体验也很好,我个人一直在用它来构建dapp。
  • Truffle是一套在EVM上构建和开发应用程序的工具。它很成熟,经过战斗的测试,并且有很好的文档。它已经存在了一段时间,许多开发者都在使用它。
  • Foundry是一个来自Paradigm的新的Solidity开发环境,显示出很大的前景。它的主要特点是能够在Solidity中编写测试,支持模糊测试,以及速度(它是用Rust编写的)。我在这里写了一个关于它的单独介绍。
对于Solana的开发,Anchor正迅速成为新开发者的入门点。它提供了一个CLI,用于构建和测试Solana程序的脚手架,以及你可以用来构建前端的客户端库。它还包括一个DSL,可以抽象出开发人员在开始使用Solana和Rust开发时经常遇到的许多复杂问题。
文件存储
我们在web3中把图片、视频和其他文件存储在哪里?在链上存储这么大的东西通常是非常昂贵的,所以我们可能不想在那里存储它们。
相反,我们可以使用少数几个文件存储协议中的一个。
IPFS--点对点文件系统协议
优点:它很可靠,有很好的文档,有一个庞大的生态系统
缺点:如果数据没有被钉住,就会丢失。
Arweave - 允许你永久地存储数据,只需支付一笔交易费。我是Arweave的粉丝,在这里写了一篇关于它的博文。
Filecoin - 来自Protocol Labs,也是建立IPFS的团队,它是一个协议,旨在提供一个持久的数据存储系统。有一些方法可以让开发者建立在Filecoin上,包括web3.storage,这很不错。
Skynet - 我还没有在生产中使用它,但已经试过了,它似乎工作得很好。这里的API看起来很棒。我有一些问题,比如数据的持久性有多长,以及Skynet与其他协议的互操作性。
P2P数据库
除了文件存储和链上存储之外,你可能还需要在链外存储数据。你可能会使用这些类型的解决方案,类似于你在传统技术堆栈中使用数据库的方式,但相反,它们是在分散的网络上的N个节点上复制的,因此更可靠(至少在理论上)。
几个选择是。
Ceramic Network  - 一个去中心化的开源平台,用于创建、托管和分享数据。Ceramic也有一个很好的身份协议,我将在后面谈及。可能是我目前最喜欢的链外存储解决方案。这里有一个相当不错的演示。
Textile ThreadDB - 一个建立在IPFS和Libp2p上的多方数据库。如果我理解正确的话,它目前可能正在经历一个大的API变化。我试过了,它显示了一些前景,但文档和DX需要一些改进。
GunDB - 一个去中心化的、点对点的数据库。Gun已经存在了相当长的时间,一些相当有趣的应用已经用它建立。
就成熟度而言,我的看法是,链外存储解决方案的生态系统还没有达到建立一些开发者可能想要的更高级的用例所需要的程度。这里的一些挑战是实时数据、冲突检测和冲突解决、写入授权、文档和一般开发者经验。
将链外数据解决方案与区块链协议相结合,是我们在拥有能够支持任何类型应用的完全去中心化协议栈之前需要跨越的最后一个大障碍之一。
API(索引和查询)
我们与区块链互动和在区块链之上构建的方式与传统技术栈中的数据库有很多不同。对于区块链,数据不是以一种可以有效或容易地从其他应用程序或前端直接消费的格式存储的。
区块链是为写操作而优化的。你经常听到以每秒交易量、区块时间和交易成本为中心的创新发生。区块链数据在一段时间内以区块形式写入,使得除了基本的读取操作外,其他的都不可能。
在大多数应用中,你需要像关系型数据、排序、过滤、全文搜索、分页和许多其他类型的查询功能。为了做到这一点,需要对数据进行索引和组织,以便有效地进行检索。
传统上,这是数据库在集中式技术栈中所做的工作,但在web3栈中缺少索引层。
Graph是一个用于索引和查询区块链数据的协议,它使这一过程变得更加容易,并为这样做提供了一个去中心化的解决方案。任何人都可以建立和发布开放的GraphQL APIs,称为子图,使区块链数据易于查询。
要了解更多关于The Graph的信息,请查看这里的文档或我在这里的教程。
身份认证
在web3中,身份认证是一个完全不同的范式。在web2中,认证几乎总是基于用户的个人信息。这些信息通常是通过一个表单或OAuth提供者收集的,要求用户交出这些信息以换取对应用程序的访问。
在web3中,身份识别完全围绕着钱包和公钥密码学的概念。
虽然 "钱包 "这个名字有它的作用,但我发现刚接触web3的人觉得这个术语很混乱,因为它与认证和身份有关。我希望将来我们能想出一些其他的方法来表达钱包是什么,因为它不仅结合了金融的各个方面,也结合了身份和信誉。
作为一个开发者,你将需要了解如何以各种方式访问用户的钱包和地址并与之互动。
在一个非常基本的层面上(也是一个非常常见的要求),你可能想请求访问用户的钱包。要做到这一点,你通常能够在窗口环境(网络浏览器)中访问用户的钱包,或者使用像WalletConnect或Solana的钱包适配器。
例如,如果他们有一个可用的Ethereum钱包,你将能够访问window.ethereum。对于Solana(window.solana)、Arweave(window.arweaveWallet)和其他少数的钱包也是如此。WalletConnect很适合移动网络和React Native,因为它允许用户直接从设备上使用他们的移动钱包进行授权。
如果你想自己处理认证,你可以让用户签署交易,然后在某处解码以认证用户,但这通常需要一个服务器。这里是一个使用EVM钱包的例子,这里是一个使用Solana / Phantom的例子。
以去中心化的方式管理用户资料呢?Ceramic Network为管理去中心化的身份提供了最强大的协议和工具套件。他们最近发布了一篇博文,概述了他们最近的一些更新,并给出了一些关于所有工具如何协同工作的指南。我想从那里开始,然后探索他们的文档,以获得对如何开始构建的理解,并考虑在这里查看我的例子项目。
如果你想获取一个用户的ENS文本记录,ensjs库提供了一个很好的API来获取用户数据。
const ens = new ENS({ provider, ensAddress: getEnsAddress('1') })
const content = await ens.name('sha.eth').getText('avatar')
SpruceID也是一个看起来很有前途的东西,但我还没有试过。
客户端
就JavaScript框架而言,你真的可以用任何你想要的东西来构建,因为客户端的区块链SDK大多是框架无关的。也就是说,绝大多数的项目和例子都是用React构建的。还有一些像Solana Wallet Adapter这样的库,为React提供额外的工具,所以我说学习或熟悉React可能是一个明智之举。
对于以太坊的客户端SDK,有web3.js和ethers.js。对我来说,Ethers更容易接近,并且有更好的文档,尽管web3.js存在的时间更长。
在Solana,你可能会使用@solana/web3.js和/或Anchor。我发现Anchor客户端库是我构建Solana程序的首选,因为我反正也在使用Anchor框架,而且我发现它比@solana/web3.js更容易理解。
其他协议
Radicle是一个建立在Git上的去中心化的代码协作协议。它可以被认为是GitHub的一个去中心化版本。
Livepeer是一个去中心化的视频流媒体网络。它已经很成熟,并被广泛使用,网络上有超过7万个GPU的直播。
Chainlink是一个甲骨文,能够访问真实世界的数据和链外计算,同时保持区块链技术固有的安全性和可靠性保障。
总结
这篇文章随着我的学习的深入,我会继续更新我实验和收集在web3中构建中开发人员的反馈
如果你有任何反馈或想法,围绕着我在这里未提到的信息,请联系并与我分享你的想法。看到围绕web3发生的所有活动,让人兴奋不已,因为开发者们正在跃跃欲试地参与进来。虽然基础设施仍在不断发展,但建立真正的去中心化协议和应用程序的愿景是非常重要的,它允许人们协调,而不必将权力和控制权交给大公司,我们正在接近实现这一愿景。
回复

使用道具 举报

2

主题

13

帖子

26

积分

新手上路

Rank: 1

积分
26
发表于 2022-12-1 16:54:38 | 显示全部楼层
这么好的干货贴,竟然没赞
回复

使用道具 举报

0

主题

2

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2022-12-1 16:55:26 | 显示全部楼层
让我们开始深入研究web3的堆栈
回复

使用道具 举报

0

主题

9

帖子

16

积分

新手上路

Rank: 1

积分
16
发表于 2022-12-1 16:56:11 | 显示全部楼层
原文link可以贴一下吗
回复

使用道具 举报

2

主题

4

帖子

8

积分

新手上路

Rank: 1

积分
8
发表于 2022-12-1 16:56:47 | 显示全部楼层
收藏比赞同多[捂脸]
回复

使用道具 举报

2

主题

4

帖子

6

积分

新手上路

Rank: 1

积分
6
发表于 2022-12-1 16:57:47 | 显示全部楼层
前辈,能给点学习资料么
回复

使用道具 举报

1

主题

16

帖子

30

积分

新手上路

Rank: 1

积分
30
发表于 2022-12-1 16:58:11 | 显示全部楼层
互联网世界,搜索是最好的老师,当然建议用谷歌
回复

使用道具 举报

1

主题

9

帖子

15

积分

新手上路

Rank: 1

积分
15
发表于 2022-12-1 16:58:34 | 显示全部楼层
你好呀,是否有时间交流一下开发web3的心得,我目前在开发应用[大笑]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|科技一站

GMT+8, 2025-8-21 17:27 , Processed in 0.102163 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表