Scaffold-ETH 2:颠覆传统开发的区块链神器,快速构建你的去中心化应用!

目录

  • 引言
  • 一、Scaffold-eth框架
  • 二、前期准备
  • 三、搭建Scaffold-ETH 2
    • (一)使用npx create-eth@latest进行设置
    • (二)使用git clone进行设置
      • 1、克隆仓库:
      • 2、进入到此目录
      • 3、安装依赖项
  • 四、配置Scaffold ETH-2的开发环境
    • (一)初始化本地区块链
    • (二)部署智能合约
    • (三)启动 NextJS 程序
    • (四)如果是Hardhat,可以进行以下操作:
      • 1、编辑智能合约:
      • 2、编辑部署脚本
      • 3、编辑前端主页
      • 4、编辑应用程序配置
      • 5、编辑智能合约测试
    • (五)如果是Foundry,可以进行以下操作:
      • 1、编辑智能合约:
      • 2、编辑部署脚本
      • 3、编辑前端主页
      • 4、编辑应用程序配置
      • 5、编辑智能合约测试
  • 五、Scaffold-ETH 2 中的一些核心内容和功能模块的介绍
    • (一)前端部分:Nextjs+ TypeScript
    • (二)智能合约部分:Solidity + Hardhat
    • (三)钱包和认证集成
    • (四)Burner Wallet 和 Local Faucet
    • (五)Hardhat 测试网
    • (六)前端开发工具
    • (七) 脚本与部署
    • (八)多网络支持
    • (九)集成测试
    • (十)GitHub 集成
    • (十一)合约热重载(Contract Hot Reload)
  • 总结

引言

Scaffold-ETH 2 是一个开源的工具包,旨在简化去中心化应用(DAPP)的开发,特别是在以太坊区块链上的智能合约编写和前端构建。作为一个高效且灵活的开发框架,它将前端、智能合约以及区块链交互融为一体,使得开发者能够快速构建和迭代自己的应用程序。Scaffold-ETH 2 集成了多个强大的工具,如 Hardhat、Next.js、Tailwind CSS、RainbowKit 等,提供了一个完备的开发环境,帮助开发者专注于业务逻辑,而无需为基础设施或配置烦恼。

通过提供诸如合约热重载、智能合约测试、钱包集成以及本地测试网络等功能,Scaffold-ETH 2 使得开发者能够在本地环境中快速测试和调试智能合约,并且能够轻松地将其与前端进行集成。无论是构建基础的 NFT 项目,还是复杂的去中心化金融(DeFi)应用,Scaffold-ETH 2 都提供了强大的支持。
在这里插入图片描述

一、Scaffold-eth框架

官网:点击这里
官方文档:点击这里
Scaffold-ETH 是一个开源、最新的工具包,旨在帮助开发者在以太坊区块链上构建去中心化应用(DAPP)。它的设计目标是简化智能合约的创建和部署,并且让开发者能够轻松构建与这些合约交互的用户界面。
✅合约热重载:您的前端会在您编辑智能合约时自动适配更新。
🔥 燃烧钱包与本地水龙头:通过燃烧钱包和本地水龙头,快速测试您的应用程序。
🔐 与钱包提供商的集成:连接不同的钱包提供商,并与以太坊网络进行交互。

Scaffold-ETH 本身并不是一个产品,而是其他优秀工具的组合或堆栈。它允许您快速构建和迭代您的智能合约和前端。
以下是主要组件:
Hardhat或Foundry (用户选择)用于运行本地网络、部署和测试智能合约。
React Hooks 的Wagmi开始与以太坊合作。
Viem作为低级接口,提供与以太坊交互的原语。 ethers.js 和 web3.js 的替代品。
NextJS用于构建前端,使用许多有用的预制钩子。
RainbowKit用于添加钱包连接。
DaisyUI用于预构建的Tailwind CSS组件。

二、前期准备

搭建项目之前需要准备好这些工具:
Node (>= v18.17)
Yarn (v1 or v2+) 这里建议使用v2+版本
Git

下载完成后可以输入下面的三个命令进行查看版本。
在这里插入图片描述

三、搭建Scaffold-ETH 2

有两种选择:
使用 npx 命令: npx create-eth@latest直接引导项目。
使用 git clone 克隆存储库。

(一)使用npx create-eth@latest进行设置

npx create-eth@latest

将看到一系列提示:
项目名称:输入您的项目名称:输入您的项目名称,例如 my-dapp-example
Solidity 框架What Solidity Framework do you Want to use?: 选择您首选的 Solidity 框架(Hardhat、Foundry)
安装软件包?:按Enter表示yes (默认选项),或输入n并按Enter表示“否”。

设置完成后,导航到项目目录:

cd project-name    #这里的 project-name 是项目目录

如果在 CLI 中选择 Foundry 作为 Solidity 框架,您还需要在计算机上安装 Foundryup。点击 在终端运行:

curl -L https://foundry.paradigm.xyz | bash

如果要使用扩展,可以添加 -e 标志,后跟扩展名称:(扩展只能在新 Scaffold-ETH 2 项目的初始设置期间安装。扩展是 Scaffold-ETH 2 的模块化附加组件,可提供附加功能或作为特定功能的示例。

npx create-eth@latest -e extension-name

要在创建新的 Scaffold-ETH 2 项目时安装扩展,请运行:

npx create-eth@latest -e {github-username}/{extension-repo-name}:{branch-name}

{branch-name}是可选的。如果未指定,则使用默认分支。
例如: npx create-eth@latest -e ChangoMan/charts-extension

安装扩展具有以下几个优点:

  • 与基础 Scaffold-ETH 2 项目无缝集成
  • 在项目创建时快速添加新功能、页面、合同或组件
  • 与 Scaffold-ETH 2核心更新和改进的兼容性

扩展是包含特定代码(例如智能合约或 UI 组件)的紧凑包,在通过 npx 初始化新项目时会自动与最新版本的 Scaffold-ETH 2 集成。它们是您项目的起点,而不是成品。

(二)使用git clone进行设置

1、克隆仓库:

git clone https://github.com/scaffold-eth/scaffold-eth-2.git

2、进入到此目录

cd scaffold-eth-2

3、安装依赖项

yarn install    #下载依赖时注意路径不能出现中文!!!

四、配置Scaffold ETH-2的开发环境

现在我们的安装已经完成了,接下来我们来配置Scaffold ETH-2的开发环境。

(一)初始化本地区块链

第一个终端中,运行本地网络:

yarn chain

在这里插入图片描述

此命令使用 Hardhat 或 Foundry 启动本地以太坊网络,具体取决于在 CLI 中选择的网络。该网络在您的本地计算机上运行,​​可用于测试和开发。可以在以下位置自定义网络配置

Hardhat:
packages/hardhat/hardhat.config.ts

Foundry:
packages/foundry/foundry.toml

(二)部署智能合约

第二个终端中,部署测试合约:

yarn deploy    #我这里之前已经部署好啦,现在不需要生成新的报告

在这里插入图片描述

此命令将测试智能合约部署到本地网络。可以修改合约以满足您的需要,合约可以在以下位置找到:

Hardhat:
packages/hardhat/contracts

Foundry:
packages/foundry/contracts

yarn deploy命令使用部署脚本将合同部署到网络。可以自定义位于以下位置的部署脚本:

Hardhat:
packages/hardhat/deploy

Foundry:
packages/foundry/script

(三)启动 NextJS 程序

第三个终端中,启动 NextJS 应用程序:

yarn start

在这里插入图片描述

http://localhost:3000上访问应用程序。可以使用合约组件或前端中的示例 ui 与智能合约进行交互。可以看到这样的页面。
在这里插入图片描述
合约调式页面
在这里插入图片描述

(四)如果是Hardhat,可以进行以下操作:

1、编辑智能合约:

packages/hardhat/contracts中的YourContract.sol

2、编辑部署脚本

packages/hardhat/deploy 目录下

3、编辑前端主页

packages/nextjs/app/page.tsx 编辑前端主页。有关路由和配置页面/布局的指南,请查看 Next.js 文档。

4、编辑应用程序配置

packages/nextjs/scaffold.config.ts

5、编辑智能合约测试

packages/hardhat/test 中,运行测试使用yarn hardhat:test

(五)如果是Foundry,可以进行以下操作:

1、编辑智能合约:

packages/foundry/contracts中的YourContract.sol

2、编辑部署脚本

packages/foundry/script 目录下

3、编辑前端主页

packages/nextjs/app/page.tsx 编辑前端主页。有关路由和配置页面/布局的指南,请查看 Next.js 文档。

4、编辑应用程序配置

packages/nextjs/scaffold.config.ts

5、编辑智能合约测试

packages/foundry/test 中,运行测试使用yarn foundry:test

五、Scaffold-ETH 2 中的一些核心内容和功能模块的介绍

(一)前端部分:Nextjs+ TypeScript

Scaffold-ETH 2 的前端是基于 NextjsTypeScript开发的,具备高可定制性和扩展性。前端部分可以与智能合约进行交互,支持动态更新并自动适应智能合约的更改。

  • Nextjs组件:Scaffold-ETH 提供了多个 Nextjs组件,如按钮、表单、NFT 视图、钱包连接器等,可以直接嵌入到你的dApp 中。
  • 自动适应智能合约:前端会自动响应智能合约的变化,当你更新合约时,前端会即时反映出最新的状态,避免了传统开发中需要手动重载页面的麻烦。

(二)智能合约部分:Solidity + Hardhat

Scaffold-ETH 2 在智能合约开发方面集成了 Hardhat,这是一个以太坊开发框架,提供了智能合约编译、测试、部署和调试等功能。

  • 智能合约模板:框架中包含了常见的合约模板,比如 NFT 合约、代币合约等。你可以根据需求直接修改或扩展这些模板。
  • 合约测试:Hardhat 集成了强大的合约测试功能,支持单元测试和集成测试。通过 Hardhat,你可以轻松启动本地测试网络,模拟交易和智能合约交互,进行智能合约调试
  • 合约部署:Scaffold-ETH 2 使用 Hardhat 的部署功能,支持将合约部署到多个以太坊网络(如主网、测试网、以及本地的Hardhat 网络)。

(三)钱包和认证集成

Scaffold-ETH 2 提供了与常见钱包(如 MetaMask、WalletConnect 等)集成的功能,使得用户能够方便地与智能合约进行交互。

  • MetaMask 集成:前端与 MetaMask 无缝集成,用户可以通过 MetaMask连接他们的以太坊账户,进行交易签名和智能合约调用。
  • 钱包连接器:Scaffold-ETH 支持通过 WalletConnect 等协议连接其他去中心化钱包,让用户有更多选择。

(四)Burner Wallet 和 Local Faucet

Scaffold-ETH 提供了一个内置的 燃烧钱包(Burner Wallet)本地水龙头(Local Faucet),方便开发者进行快速测试。

  • Burner Wallet:它允许开发者和测试人员使用虚拟的、临时的以太坊账户进行交互,不需要真实的以太坊。
  • Local Faucet:通过本地水龙头,你可以为虚拟账户提供一些测试网络的以太坊(如 Rinkeby 或 Goerli
    网络的测试币),方便进行交易测试。

(五)Hardhat 测试网

Hardhat 测试网是一个本地的以太坊网络,专门用于合约的本地开发和测试。它能模拟真实网络的环境,支持多种常见的测试工具和插件,允许开发者进行高效的调试。

  • Hardhat Network:它可以模拟一个完全的以太坊节点,支持在本地进行调试和交易测试
  • 自动化脚本:Scaffold-ETH 提供了自动化脚本,帮助开发者部署合约、执行交易、进行数据录入等,方便调试和自动化测试。

(六)前端开发工具

Scaffold-ETH 2 还集成了开发工具(如 Next.js 和 Tailwind CSS),使得前端开发更加便捷和高效。

  • Next.js:Scaffold-ETH 使用 Next.js 作为前端框架,Next.js提供了静态网站生成和服务器端渲染(SSR)等功能,提升了页面加载速度和 SEO 优化。
  • Tailwind CSS:Scaffold-ETH 集成了 Tailwind CSS,这是一种实用的 CSS框架,能够帮助开发者快速构建响应式和高度自定义的 UI 界面

(七) 脚本与部署

Scaffold-ETH 2 提供了预配置的部署脚本,你只需调整合约参数,便可以轻松将合约部署到以太坊网络上。部署脚本也支持将合约部署到不同的网络,提升了项目的灵活性。

(八)多网络支持

Scaffold-ETH 2 支持多个以太坊网络,包括主网、各种测试网(如 Rinkeby、Goerli)和本地模拟网络(Hardhat Network)。开发者可以选择适合的网络进行部署和测试。

(九)集成测试

Scaffold-ETH 2 支持集成测试,开发者可以编写和执行集成测试,确保前端和智能合约的交互没有问题。

Hardhat + Mocha:集成了 Hardhat 和 Mocha 测试框架,开发者可以轻松编写智能合约的测试用例,进行单元测试和集成测试。

(十)GitHub 集成

Scaffold-ETH 2 的源码托管在 GitHub 上,开发者可以直接克隆项目,进行修改和定制。框架本身是完全开源的,开发者可以根据需要进行二次开发

(十一)合约热重载(Contract Hot Reload)

Scaffold-ETH 2 提供了智能合约的热重载功能。当你修改合约代码并保存时,前端应用会自动更新,且不需要手动刷新页面。这使得前后端开发更加高效,减少了等待时间。

总结

Scaffold-ETH 2 是一个集成度高、功能丰富的开发框架,适合从智能合约到前端展示的全栈开发。通过预配置的开发工具和自动化的工作流程,开发者能够迅速开始项目开发,并专注于构建应用逻辑,而无需过多关注基础设施配置。它不仅支持 Solidity 和 Hardhat,还能与多个以太坊网络进行交互,并提供了多种常见功能的模板和扩展插件,使得项目启动和部署变得更加快速和简便。无论是新手还是经验丰富的开发者,Scaffold-ETH 2 都能提供所需的工具和功能,帮助开发者快速实现从合约编写、部署到前端界面交互的完整 DAPP 开发流程。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

kafka+zookeeper的搭建

kafka从2.8版本开始,就可以不用配置zookeeper了,但是也可以继续配置。我目前使用的kafka版本是kafka_2.12-3.0.0.tgz,其中前面的2.12表示是使用该版本的scala语言进行编写的,而后面的3.00才是kafka当前的版本。 通过百度网盘分享…

恢复rm -rf删除的数据

注:本文演示的是ext4文件系统格式数据恢复 系统版本:ubuntu16.04 恢复数据目录:数据盘(非根)目录 恢复工具:extundelete 0.2.4 恢复所有被删除数据 ext4magic 恢复指定目录数据 一、注意事项: …

Elasticsearch(三):Elasticvue使用及DSL执行新增、查询操作

Elasticvue使用及DSL执行CURD 1 概述2 什么是Elasticsearch DSL3 基本结构4 客户端工具介绍4.1 索引介绍4.2 创建简单索引4.3 创建相对完整的索引4.4 插入数据4.4.1 基本插入操作4.4.2 批量插入操作 5 常用的DSL查询类型5.1 match查询5.1.1 match工作原理5.1.2 operator 参数5.…

静态库、动态库、framework、xcframework、use_frameworks!的作用、关联核心SDK工程和测试(主)工程、设备CPU架构

1.1库的概念 库:程序代码的集合,编译好的二进制文件加上头文件供使用,共享程序代码的一种方式。 1.2库的分类 根据开源情况分为:开源库(能看到具体实现)、闭源库(只公开调用的的接口&#xf…

C++【string类,模拟实现string类】

🌟个人主页:落叶 🌟当前专栏: C专栏 目录 为什么学习string类 C语言中的字符串 标准库中的string类 auto和范围for auto关键字 迭代器 范围for string类的常用接口说明和使用 1. string类对象的常见构造 2.string类对象的容量操作 3…

Me-LLaMA——用于医疗领域的新型开源大规模语言模型

摘要 大规模语言模型的出现是提高病人护理质量和临床操作效率的一个重大突破。大规模语言模型拥有数百亿个参数,通过海量文本数据训练而成,能够生成类似人类的反应并执行复杂的任务。这在改进临床文档、提高诊断准确性和管理病人护理方面显示出巨大的潜…

关于在VS中使用Qt不同版本报错的问题

最开始需要配置的地方 首先看一下我的Qt有关的环境变量: Path环境变量里: 这里就是把对应Qt编译器环境下的bin目录放进来:比如你使用的是msvc2017_64或者MinGW QMAKESPEC环境变量: 这个就选择Qt对应的编译器目录下的\mkspecs\w…

Windows Server 怎么关闭IE增强安全配置(关闭IE弹窗)

首先第一步打开IE浏览器,根据下图所示,访问网页时会弹出警告窗口。 打开【控制面板】图标。查看方式改为小图标,打开【管理工具】 第五步进入【管理工具】页面后,找到并双击【服务器管理器】选项。 第六步在弹出的窗口中&#…

中肿团队提出的“免疫三明治”(放疗+化疗+免疫治疗),成功登上柳叶刀肿瘤|顶刊精析·24-11-08

小罗碎碎念 该研究首次发现在同期放化疗基础上增加特瑞普利单抗(PD-1抗体)新辅助和辅助治疗显著提高了高危局部晚期鼻咽癌患者生存率。 如果大家看完这篇推送以后,有什么好的医工交叉点子,欢迎和我一起探讨!&#xff0…

Golang--协程和管道

1、概念 程序: 是为完成特定任务、用某种语言编写的一组指令的集合,是一段静态的代码。(程序是静态) 进程: 是程序的一次执行过程。正在运行的一个程序,进程作为资源分配的单位,在内存中会为每个进程分配不同的内存区域&#xff0…

动力商城-02 环境搭建

1.父工程必须满足&#xff1a;1.1删除src目录 1.2pom 2.依赖继承 //里面的依赖&#xff0c;后代无条件继承<dependencies></dependencies>//里面的依赖&#xff0c;后代想要继承&#xff0c;得自己声明需要使用&#xff0c;可以不写版本号&#xff0c;自动继承&l…

JavaWeb开发9

ResponseBody 类型&#xff1a;方法注解、类注解 位置&#xff1a;Controller方法上/类上 作用&#xff1a;将方法返回值直接响应&#xff0c;如果返回值类型是实体对象/集合&#xff0c;将会转换为JSON格式响应 说明&#xff1a;RestControllerControllerResponseBody; 统…

夜天之书 #103 开源嘉年华纪实

上周在北京参与了开源社主办的 2024 中国开源年会。其实相比于有点明显班味的“年会”&#xff0c;我的参会体验更像是经历了一场中国开源的年度嘉年华。这也是在会场和其他参会朋友交流时共同的体验&#xff1a;在开源社的 COSCon 活动上&#xff0c;能够最大限度地一次性见到…

06 Oracle性能优化秘籍:AWR、ASH、SQL trace与实时监控的实战指南

文章目录 Oracle性能优化秘籍&#xff1a;AWR、ASH、SQL trace与实时监控的实战指南一、AWR&#xff08;Automatic Workload Repository&#xff09;1.1 理论部分1.2 实践部分1.2.1 使用方式1.2.2 分析方式 二、ASH&#xff08;Active Session History&#xff09;2.1 理论部分…

JS实现,防抖节流 + 闭包

防抖&#xff08;Debounce&#xff09; 防抖是指短时间内大量触发同一事件&#xff0c;只会在最后一次事件完成后延迟执行一次函数。 防抖的典型应用场景是输入框的搜索建议功能&#xff0c;用户输入时不需要每次输入都去查询&#xff0c;而是在用户停止输入一段时间后才进行…

1.每日SQL----2024/11/7

题目&#xff1a; 计算用户次日留存率,即用户第二天继续登录的概率 表&#xff1a; iddevice_iddate121382024-05-03232142024-05-09332142024-06-15465432024-08-13523152024-08-13623152024-08-14723152024-08-15832142024-05-09932142024-08-151065432024-08-131123152024-…

WPF中如何简单的使用MvvmLight创建一个项目并进行 增删改查

目录 第一步&#xff1a;创建项目后下载如下两个NuGet程序包&#xff0c;然后删除删掉using Microsoft.Practices.ServiceLocation; 并且引入using CommonServiceLocator; 第二步&#xff1a;删除原来的XAML文件并创建如下的包结构然后创建一个在View文件夹中创建一个Main窗体 …

网页版五子棋——匹配模块(客户端开发)

前一篇文章&#xff1a;网页版五子棋——用户模块&#xff08;客户端开发&#xff09;-CSDN博客 目录 前言 一、前后端交互接口设计 二、游戏大厅页面 1.页面代码编写 2.前后端交互代码编写 3.测试获取用户信息功能 结尾 前言 前面文章介绍完了五子棋项目用户模块的代码…

elasticSearch 7.12.1 Docker 安装ik分词

一、下载 https://github.com/infinilabs/analysis-ik/releases/tag/v7.12.1 将文件解压&#xff0c;复制到docker挂载的目录 docker ps#重启docker docker restart f7ec58e91f1f 测试 GET _analyze?pretty {"analyzer": "ik_max_word","text&qu…

在JS中, 0 == [0] 吗

在不知道答案的情况下, 你觉得这段代码的输出是什么 我当时觉得是false, 结果我错了–^^– 那为什么输出是true呢 因为的隐式类型转换, 运算符会尝试将两个操作数转换为相同的类型&#xff0c;然后再进行比较。 在这个例子中&#xff0c;0 是一个数字&#xff0c;而 [0] 是…