Coinbase 研究:Web3 开发者堆栈指南

2023-10-26

d46843e10ad16cb8ef660df7e60c816c.gif

原文标题:《A simple guide to the web3 developer stack

撰文:Jonathan King、Connor Dempsey、Hoolie Tejwani

编译:胡韬,链捕手

尽管比特币和以太坊的兴起,以及 DeFi、NFT、GameFi 和 DAO 等新类别的出现,web3 开发人员在全球 3110 万软件开发人员中的占比不到 1%。

那么为什么如今 web3 的开发者这么少呢?一方面,web3 开发人员可用的工具和基础设施远不如 web2 强大。这只会让在 web3 中开始构建、试验和部署变得更加困难。然而,这一切都在迅速改变,因为每月活跃的 web3 开发人员的数量在 2021 年底创下历史新高。为了支持这种不断增长的意外情况,一个充满活力的团队生态系统致力于简化整个 web3 开发人员的旅程,最终将帮助开启 web3 增长和创新的下一阶段。

在本期的 Around The Block 中,我们将探索不断增长的 web3 开发者堆栈。

Web3 开发人员堆栈

79e5efad0c7289c9beb7c76111e42a7e.jpeg

在 Web2 与 Web3 中构建

软件开发是构建计算机程序的过程。给定程序包含三个主要组件:

  • 前端(用户与之交互的内容)

  • 后端(用户看不到的地方)

  • 数据库(存储关键数据的地方)

典型用户通过移动或桌面浏览器进行交互的前端在 web2 和 web3 中基本相同。像 Uniswap 这样的 web3 应用程序看起来与典型的 web2 应用程序相似,因为两个前端大部分都是使用 React 创建的——一个流行的 web 和移动应用程序开发人员框架。

0bc55818e0409530dc745d9619c6337b.jpeg

这是 web2 和 web3 不同的地方。使 web3 的定义特征(用户定义的所有权) 成为可能的后端框架和数据库类型是新颖的和独特的。

web2 应用程序在很大程度上依赖于中心化数据库,而 web3 应用程序则建立在去中心化数据库(区块链)之上。这需要全新的后端和钱包等新的原语。

由于数十年的累积开发,帮助创建、部署和维护 web2 应用程序的工具对开发人员非常友好。开箱即用的解决方案、成熟的基础设施、共享代码库和易于使用的框架在很大程度上使 web2 中的构建变得轻而易举。

另一方面,Web3 仍然需要专业知识来与复杂的基础设施进行交互,并且通常涉及许多冗余流程,因为堆栈开发程度较低,使得团队不得不重新发明轮子。也就是说,将帮助下一个 100 万 + web3 开发人员加入的工具正在迅速改进。

让我们逐层(非详尽地)看看不断发展的 Web3 开发人员堆栈(* 表示 Coinbase Ventures 投资组合公司)。

协议层

6f0422d86eeb5b85a9a1b6524428ea22.jpeg

web3 开发者必须做出的第一个决定是基于哪个区块链协议。基于比特币的构建与基于以太坊的构建完全不同,基于 Solana 与基于以太坊不同。

对于速度更快、成本更低的应用程序,开发人员可能希望基于 Optimism*、 Arbitrum* 等第二层协议。对于需要将价值从一条链转移到另一条链的应用程序而言,开发人员将希望利用 Hop* 或 Synapse* 等跨链桥。

一旦做出了这些决定,开发人员就可以开始整合构建模块,使用户应用程序成为可能。

基础设施原语

0dd080f6748a8042ef29d5166ed4e9eb.jpeg

开发人员需要弄清楚的下一件事是他们的应用程序最终将如何与底层区块链交互。这就是基础设施原语发挥作用的地方。

节点基础设施—— 节点是应用程序与区块链「发生」交互的地方。一旦用户与应用程序交互,它们是读取区块链状态并向其写入更新的计算机。Coinbase Cloud、 Infura * 和 Alchemy * 等节点基础设施提供商让开发人员可以轻松设置、管理或访问区块链节点,从而为开发人员节省大量时间和资源。

钱包和密钥管理—— 区块链钱包,如 Coinbase Wallet,允许用户管理在 web3 应用程序中执行交易所需的私钥。Web3Auth * 或 Pine Street Labs * 等钱包和密钥管理提供商使开发人员能够在区块链钱包和面向用户的应用程序之间建立安全连接。

身份 ——像 ENS * 这样的协议在应用程序中充当用户的身份。Spruce * 提供框架和工具包,开发人员可以使用这些框架和工具包来验证用户凭据以验证以太坊上的操作。例如,开发人员可以使用 Spruce ID 工具包授权用户使用其 ENS 帐户登录 dApp。此外,像 Lit Protocol 这样的公司提供开发者工具,用于授权使用其代币或 NFT 访问内容、软件和其他数据。

去中心化计算—— 计算资源提供应用程序执行计算任务所依赖的处理能力。目前,大部分网络计算由 AWS 等中心化提供商提供。去中心化计算是向社区拥有的网络的转变,其中计算资源以低成本、无需许可的方式分布。Akash Network 和 Aleph.im 等项目已经出现,提供高性能的点对点计算资源,并针对智能合约和区块链应用程序进行了优化。

去中心化存储—— 将与给定 web3 应用程序相关的每条数据直接存储在区块链节点上的成本很高。web3 开发人员无需将数据存储在中心化数据库上,而是可以对某些数据使用 IPFS、 Arweave * 和 Ceramic Network * 等点对点数据存储协议。例如,web3 博客网站 Mirror 建立在以太坊上,但将实际博客内容存储在 Arweave 上。

预言机—— 对于典型的以太坊应用程序,区块链存储交易历史和「状态」(余额、智能合约和其他变量)。然而,它不能本地存储来自外部源的数据并与之交互——即来自其他区块链的交易历史或「真实世界」数据,如旧金山的天气。这就是像 Chainlink 或 Flux * 这样的预言机出现的地方,将区块链连接到链上和链下数据源。

互操作性 ——存在许多不同的区块链,但很少有能够交换价值和利用跨链信息的能力。LayerZero * 和 Astar Network * 等互操作性协议为开发人员提供 SDK 和 API,以构建可移植且可以与不同区块链通信的 dApp。

开发者工具

60469c9faac1f02ee97a34773837503c.jpeg

在允许应用程序与区块链网络交互的基础设施原语之上,是允许开发人员与上述原语交互的工具。

框架和 IDE — 开发人员框架由其他开发人员创建的代码库组成,使开发更容易。Truffle、 Moralis *、 Tatum 和 ThirdWeb * 等 Web3 框架让开发人员可以利用现有代码进行智能合约应用程序,因此他们不必从头开始构建所有内容。它们还允许开发人员测试和部署应用程序。Foundry 和 HardHat 等集成开发环境 (IDE) 结合了通用源代码编辑器,并将自动化和调试工具构建到一个易于访问的单一界面中。

低代码 / 无代码 —— 这些平台使面向用户的应用程序能够完全通过拖放界面快速设计 / 部署。像 Settlemint 这样的公司为开发人员提供了 NFT 的智能合约模板,以防止 web3 开发人员不得不重新发明轮子。

索引和查询 —— 数据索引器帮助人们定位和访问底层数据库中的特定数据。在 Web2 中,谷歌搜索是最流行的数据索引服务,它允许用户以亚秒级的响应时间查询存储在在线数据库中的数据。在 Web3 中,去中心化索引服务正在兴起,以帮助 dApp 开发人员获取、处理和查询区块链数据。Graph Protocol *、 Covalent * 和 Coherent * 都提供 API,用于从去中心化数据存储提供商和 EVM 兼容的区块链中提取和使用数据。

测试、模拟和监控—— 在 web3 应用程序发布之前测试和模拟它们是很重要的。像 Tenderly * 和 Kurtosis * 这样的公司提供了各种工具来模拟智能合约和交易,以及调试任何问题的工具。Blocknative * 提供仪表板和工具,用于在交易提交到链上之前对其进行监控。

安全和审计 —— 鉴于智能合约利用的潜力,这些平台允许开发人员将安全和审计最佳实践应用到他们的应用程序中。OpenZeppelin *、 Certik * 和 Certora * 都为开发人员提供了各种服务、框架和监控工具,以减轻潜在的安全风险和漏洞。

消息传递 ——Web3 应用程序通常涉及向最终用户发送各种通信。例如,加密钱包可能希望向用户推送有关交易确认的警报。XMTP Labs * 和 EPNS 等公司正在构建安全的消息传递协议和去中心化通信网络,以推动用户参与并为 Web3 应用程序中的这些通知提供动力。

分析—— 有许多平台和服务可以让开发人员探索、分析、提取和可视化区块链数据。Dune *、 Nansen * 和 Messari * 均提供各种 API 和报告功能,以在 web3 应用程序中构建数据可视化功能。Flipside Crypto * 提供 SDK(软件开发工具包)和 API,以创建和共享有关各种加密项目的数据见解。

应用支持层

2466960c08c3cfc56cab85c43c2256b3.jpeg

应用支持层将上述所有层与特定的 web3 用途联系起来。NFT、DAO、DeFi 和游戏都有自己定制的开发者解决方案。

专注于 NFT 的工具为创建和管理 NFT 资产提供了基础设施。DAO 工具为 DAO 创建(Syndicate *、Samudai *)、治理(Snapshot *)和资金管理(Utopia Labs *)提供解决方案。专注于 DeFi 的工具提供 API,让开发人员可以访问各种 DeFi 原语。专注于游戏的工具(Venly *、Joyride *、 Horizon Blockchain Games *)为创建虚拟世界和基于区块链的游戏提供解决方案。

不断发展的开发堆栈

上面提到的协议、基础设施和开发人员工具构成了新生的、但不断发展的 web3 开发人员堆栈。web3 的模块化和可互操作性意味着堆栈可以以无穷无尽的方式组合以创建新的和有趣的应用程序。

虽然我们强调的框架和层可能保持不变,但我们继续看到新的开发人员工具原语出现,并预计整个堆栈在未来几年将发生巨大变化。

Coinbase Ventures 将继续投资于下一代平台和开发人员工具,最终将数百万开发人员带入 web3。如果您像我们一样致力于构建 web3 开发堆栈,我们很乐意收到您的来信。

5c6149248dc4b466f40e9dcbdb13e9b7.gif

中文推特:https://twitter.com/8BTC_OFFICIAL

英文推特:https://twitter.com/btcinchina

Discord社区:https://discord.gg/defidao

电报频道:https://t.me/Mute_8btc

电报社区:https://t.me/news_8btc

fd23d93e2727528f66358cf92e06c906.jpeg

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Coinbase 研究:Web3 开发者堆栈指南 的相关文章

  • 在 Spring 5 Webflux 中启用 CORS?

    如何启用CORS在 Spring 5 Webflux 项目中 我找不到任何合适的文档 我使用这个自定义过滤器取得了成功 import org springframework context annotation Bean import or
  • 使用 Python 发布 XML 文件

    我是 Python 新手 需要一些帮助 我的目标是向 URL 发送一些带有 post 请求的 XML 这将触发发送 SMS 我有一个小的 XML 文档 我想将其发布到 URL 我可以在需要发布的 python 代码中引用我的服务器上的 XM
  • 无法跳过某项活动

    我的 Android 应用程序有一个登录屏幕 用户登录到他的仪表板 但我不希望用户每次关闭应用程序并启动它时都登录 除非他们从仪表板注销 因此 我创建了一个类来检查用户是否登录 检查登录 java public class CheckLog
  • Java 中排序(内存映射?)文件中的二分搜索

    我正在努力将 Perl 程序移植到 Java 并一边学习 Java 原始程序的核心组成部分是Perl模块 http search cpan org jfreeman File SortedSeek 0 015 lib File Sorted
  • 在 Mac 上安装 python igraph

    我执行了brew install homebrew science igraph当我执行时sudo pip3 install python igraph 我收到以下错误 Cannot find the C core of igraph on
  • Android:如何按下软键盘上方的按钮

    我有一个 保存 按钮 我想将其与软键盘一起按下 因此 当用户单击布局中的 EditText 时 按钮必须保持在键盘上方 现在该按钮隐藏在键盘下方 你怎么做到这一点 提前致谢 您需要将键盘的输入模式设置为adjustResize 您可以通过将
  • org.json.JSONArray 类型的值无法转换为 JSONObject

    陷入了这个错误 3169 3190 com meisolsson app E JSON 解析器 解析数据时出错 org json JSONException Value type 0 can see custom stories true
  • JSP 通常是作为 .jsp 文件、预编译的 Java 文件还是预编译的类文件提供的?

    在为生产环境准备 WAR 时 是否有打包 JSP 的 标准 实践 它们是否包含为 jsp 文件 或者它们是否作为预编译的 Java 文件或预编译的类文件包含在内 Servelts JSP 规范没有提及预编译 JSP 来实现此功能具体到容器实
  • 如何在 Pandas 中叠加“一天”内的数据进行绘图

    我有一个数据框 里面有一些 更有意义 数据格式如下 In 67 df Out 67 latency timestamp 2016 09 15 00 00 00 000000 0 042731 2016 09 15 00 16 24 3769
  • Java 中变量可能未初始化错误

    import java util Random public class dice private int times private int roll private int side Random roller new Random p
  • 如何在matplotlib_venn中将维恩图保存为PNG图

    使用以下代码我尝试创建维恩图 然后另存为文件 import matplotlib from matplotlib venn import venn2 set1 set A B C D set2 set B C D E plt venn2 s
  • 无法将项目追加到多处理共享列表

    我正在使用多重处理来为我的应用程序创建子流程 我还在进程和子进程之间共享一个字典 我的代码示例 主要流程 from multiprocessing import Process Manager manager Manager shared
  • 安装轮子后安装后脚本

    Using from setuptools command install import install 如果我运行 我可以轻松运行自定义安装后脚本python setup py install 这是相当微不足道 https stackov
  • 运行迁移时出错:sqlalchemy.exc.CompileError:Postgresql ENUM 类型需要名称

    当我第一次尝试运行升级时遇到此错误 尽管我已经给了它一个 name 属性 但它似乎在性别类型枚举上失败了 有解决办法吗 有什么方法可以查看生成的 SQL 内容吗 这是我的 models py 这是我运行flask ext migrate u
  • 尝试在 Spring MVC 中使用 OAuth 保护资源

    我们已经在 Spring MVC 上使用 Java 编写了 REST Web 服务 我一直在努力保护它们 OAuth 服务器在另一个网站中实现 该网站处理登录和访问令牌的创建 因此 在允许用户访问网络服务之前 我需要验证访问令牌是否正确 然
  • 如何在java中定期刷新ZipOutputStream

    我正在尝试以 zip 格式存档文件列表 然后即时为用户下载 我在下载 1GB 大小的 zip 时遇到内存不足问题 请帮助我如何在不增加 jvm 堆大小的情况下解决此问题 我想定期冲洗流 我正在尝试定期冲洗 但这对我不起作用 请在下面找到我的
  • Python 正则表达式 findall

    我正在尝试使用 Python 2 7 2 中的正则表达式从字符串中提取所有出现的标记单词 或者简单地说 我想提取其中的每一段文本 p p 标签 这是我的尝试 regex ur u005B1P u005D u005B u002FP u005D
  • 在不同的任务中启动一个新的 Android Activity

    这是一个有点复杂的故事 我有一个Activity A Activity A使用意图打开浏览器来进行一些身份验证 完成此操作后 网页将重定向到 URL Activity B使用意图过滤器将其设置为可浏览 并且 URL 使得浏览器启动Activ
  • 与 IPython 内核分离而不终止它

    有人可以告诉我如何在不终止 IPython 内核的情况下分离它吗 我在文档中看到quit 有一个参数keep kernel 但不幸的是quit keep kernel True 行不通的 如果您通过 IPython 控制台客户端连接到内核并
  • Spring RestTemplate 调用读取超时

    我有一个返回 json 的 API 它的类型为 GET 方法 由于它是 GET 当我在浏览器中打开 URL 时 它工作正常并呈现 json 但是 在使用 RestTemplate 检索 json 时 它失败了 您能否提供一种阅读下面 API

随机推荐

  • Lora配置

    文章目录 前言 一 LoRa是什么 二 使用步骤 总结 前言 随着物联网技术的发展 越来越多的应用场景需要进行数据传输和通信 而LoRa技术的出现 为长距离 低功耗 低速率的通信提供了一种可靠的解决方案 正点原子的LoRa模块 是一种基于S
  • Oracle 输出方式

    用过几次经常忘记 特此做个笔记 1 Oracle 输出没有sqlserver方便 直接print message 就行 而是需要放到 块 中输出 比如下面的匿名块 set serveroutput on declare begin dbms
  • pcm vlc 文件_VLC播放pcm

    Applications VLC app Contents MacOS VLC demux rawaud rawaud channels 1 rawaud samplerate 48000 rawaud fourcc s8 Users lz
  • 白银价格波动因素是什么?

    在白银产品的投资中 人们要更加全面的对市场进行了解 其中涉及到的范围比较广阔 只有对整个市场的发展和影响因素进行细致的分析 才可以更好的参与到白银产品的投资中 为了更好的获得实际性的利益 重点要对白银的价格进行细致的了解 这样使人们在投资时
  • 特别篇:input小结

    input 我们日常中在使用Python时都会使用input 在控制台进行输出 但是不知道大家发现没有 因为Python是一种动态语言 所以不会像Java中的Scanner类 在代码中可以控制输入的类型 所以当我们输入数字时 底层也会把我们
  • 程序流程图画法复习-三种循环语句(for,while,do while)

    程序流程图画法复习 1 程序流程图的作用 程序流程图的作用程序流程图的作用程序流程图的作用 程序流程图是人们对解决问题的方法 思路或算法的一种描述 流程图的优点 a 采用简单规范的符号 画法简单 b 结构清晰 逻辑性强 c 便于描述 容易理
  • HTTP请求行详解

    目录 一 认识URL 二 认识方法 2 1 GET方法 2 2 POST方法 2 3 其他方法 请求行也就是HTTP请求的第一行 接下来将对第一行内容进行详细解释 一 认识URL 平时我们俗称的 网址 其实就是说的 URL Uniform
  • 从0开始学PyTorch(一):线性回归、Softmax与分类模型、多层感知机

    文章目录 线性回归 模型 数据集 损失函数 优化函数 随机梯度下降 Softmax与分类感知机 softmax的基本概念 多层感知机 多层感知机的基本知识 隐藏层 表达公式 激活函数 线性回归 线性回归的基本要素 模型 为了简单起见 这里我
  • java文件下载接口,含泪整理面经

    Java如何入门 1 建立好开发环境 首先建立好开发环境非常重要 工欲善其事 必先利其器 做任何开发 首先就是要把这个环境准备好 之后就可以去做各种尝试 尝试过程中就能逐渐建立信心 初学者往往在环境配置中被各种预想不到的问题弄得很沮丧 这里
  • Python工业项目实战 04:数仓维度层DWS层构建

    知识点01 课程回顾 ODS层与DWD层的功能与区别是什么 ODS 原始数据层 存储格式 AVRO 数据内容 基本与原始数据是一致的 DWD 明细数据层 存储格式 Orc 数据内容 基于与ODS层是一致的 ODS层的需求是什么 自动化建库建
  • php怎么判断密码是否达标,php中简单的密码强中弱判断,php密码验证规则

    密码种类 1 小写字母 2 大写字母 3 数字 4 特殊符号 弱 1 中 2 强 3 或 4 长度 6 16个字符 区分大小写 1 长度判断 pwd len strlen password if pwd len gt 16 pwd len
  • 【华为OD机试】仿 LISP 运算【2023 B卷

    华为OD机试 真题 点这里 华为OD机试 真题考点分类 点这里 题目描述 LISP 语言唯一的语法就是括号要配对 形如 OP P1 P2 括号内元素由单个空格分割 其中第一个元素 OP 为操作符 后续元素均为其参数 参数个数取决于操作符类型
  • 百度语音合成精简版

    我参照文档合成的源码下载 https download csdn net download qq 31939617 10388588 下载 文档 Android TTS SDK 集成进入helloworld 项目 一 简介 本文针对遇见集成
  • io流读写文件(文件内容修改)

    package cn sos psasps import java io BufferedReader import java io BufferedWriter import java io FileReader import java
  • Git第十三讲 Git重置和回滚更改

    在使用Git时 我们有时可能会犯错或者需要撤销之前的提交或更改 Git提供了一些强大的命令来重置和回滚更改 帮助我们管理项目的版本控制 本文将介绍如何使用Git进行重置和回滚操作 重置到指定提交 重置 Reset 命令允许我们将分支的指针移
  • tar 打包压缩命令

    tar 命令用于文件的打包或压缩 是最为常用的打包压缩命令 其语法格式如下 tar 选项 文件名 tar gz 源文件 tar czvf xxx tar gz source file tar czvf 包名 tar gz 源文件 以tar
  • 【以太坊系列-005】使用solc编译solidity智能合约,并生产web3deploy格式的代码

    说明 本文主要介绍 只通过solc来进行智能合约的部署 更简单的方式是通过remix直接生成 该场景是用于用户自己修改了solc编译器 remix无法使用的情况 1 代码结构 cat counter sol pragma solidity
  • SPP连接流程

    1 SDP服务注册 Server Channel即RFCOMM Server Channel 表示上层profile的rfcomm channel Central设备会使用SDP查询SPP的Server Channel 在后面使用RFCOM
  • C++ — 类型萃取

    类型萃取 在编程中我们可能时常会听到类型萃取这个高大上的 学术名词 我们今天来探究一下这个高大上的学术名词 到底是何方神圣 先看看官方的解释类型萃取使用模板技术来萃取类型 包含自定义类型和内置类型 的某些特 性 用以判断该类型是否含有某些特
  • Coinbase 研究:Web3 开发者堆栈指南

    原文标题 A simple guide to the web3 developer stack 撰文 Jonathan King Connor Dempsey Hoolie Tejwani 编译 胡韬 链捕手 尽管比特币和以太坊的兴起 以及