以太坊DApp開發腳手架:Scaffold-ETH 2 詳細介紹與搭建教程

一、什么是Scaffold-ETH 2

Scaffold-ETH 2是一個開源的最新工具包,類似于腳手架。用于在以太坊區塊鏈上構建去中心化應用程序 (DApp)。它旨在使開發人員更容易創建和部署智能合約,并構建與這些合約交互的用戶界面。

Scaffold-ETH 2 是 Scaffold-ETH 的第二代版本

二、為什么要用Scaffold-ETH 2

傳統以太坊 DApp 開發存在工具鏈碎片化問題,開發者需手動整合智能合約開發框架(如 Hardhat/Foundry)、前端框架(如 Next.js)、錢包連接組件(如 RainbowKit)、以太坊交互庫(如 Viem)及 React Hooks 工具(如 Wagmi)等獨立工具。這種碎片化開發模式導致:

  1. 配置復雜度高:需手動處理依賴沖突、環境變量同步、跨模塊通信等底層問題
  2. 開發效率低:開發者需編寫大量樣板代碼實現基礎功能
  3. 學習曲線陡峭:新手需掌握多個工具的配置方法和交互邏輯

Scaffold-ETH 2 通過預集成工具鏈和自動化工作流,徹底解決傳統開發流程中配置繁瑣、工具鏈碎片化的痛點。

三、搭建Scaffold-ETH 2開發環境

環境要求:
Node (>= v18.17)
Yarn (v1 or v2+)
Git
項目路徑不能出現中文

第一步:執行npx命令

npx create-eth@latest

在這里插入圖片描述

第二步:輸入項目名稱(my-study-demo)

在這里插入圖片描述

第三步:選擇合約開發框架(hardhat)

在這里插入圖片描述

第四步:等待依賴安裝完畢

在這里插入圖片描述

第四步:進入項目根目錄

cd my-study-demo

第五步:啟動hardhat本地開發鏈

yarn chain

在這里插入圖片描述

第六步:新建終端,并進入到項目根目錄

在這里插入圖片描述

第七步:部署智能合約

yarn deploy

在這里插入圖片描述

注意:部署好合約后,合約的abiaddress會自動生成在package/nextjs/contract/deployedContracts.ts

第八步:啟動項目

yarn start

在這里插入圖片描述

第九步:驗證項目

在這里插入圖片描述

第十步:調試智能合約

在這里插入圖片描述

第十一步:查看區塊鏈瀏覽器

在這里插入圖片描述

四、Scaffold-ETH 2 目錄介紹

在這里插入圖片描述

1.根目錄

  • .github: GitHub 相關的配置和文件目錄。
  • .husky:Git 鉤子腳本目錄。
  • .yarn:Yarn 緩存目錄。
  • node_modules:全局依賴包目錄。
  • packages:存放hardhat/foundry和nextjs的目錄。
  • .gitignore:Git 忽略文件配置。
  • .lintstagedrc.js:Lint-staged 配置文件。
  • .yarnrc.yml:Yarn 配置文件。
  • CONTRIBUTING.md:貢獻指南。
  • LICENSE:項目許可協議(MIT 協議)。
  • package.json:根目錄元數據、腳本和依賴項文件。
  • README.md:項目說明文檔。
  • yarn.lock:Yarn 依賴包版本鎖定文件。

2.hardhat目錄

  • contracts:包含項目的 Solidity 智能合約目錄。
  • deploy:包含合約部署腳本的目錄。
  • node_modules:特定于 Hardhat 環境的依賴項。
  • scripts:包含編譯合約或執行自定義任務的各種腳本的目錄。
  • test:包含智能合約測試腳本的目錄。
  • hardhat.config.ts:硬帽配置文件,用于自定義開發環境。
  • package.json:Hardhat 包的元數據、腳本和依賴項文件。
  • tsconfig.json:Hardhat 項目中 TypeScript 的配置文件。

3.nextjs目錄

  • app:Next.js 前端的主應用程序邏輯和頁面。
  • components:應用程序的可重用 UI 組件。
  • contracts:包含部署后合約的地址和ABI 文件或合約交互邏輯的地方。
  • hooks:自定義 React hook,可能用于與區塊鏈數據交互或管理狀態。
  • node_modules:特定于 Next.js 環境的依賴項。
  • public:可以公開訪問的靜態資源,如圖片和字體。
  • services:外部 API 調用或業務邏輯的服務。
  • styles:應用程序的 CSS 或樣式文件。
  • types:特定于應用程序的 TypeScript 類型定義。
  • utils:應用程序中使用的工具函數或助手。
  • next-env.d.ts:Next.js 類型的 TypeScript 聲明文件。
  • next.config.js:Next.js 的配置文件,以自定義其行為。
  • package.json:Next.js 包的元數據、腳本和依賴項。
  • postcss.config.js:PostCSS 的配置文件,一個用于轉換 CSS 的工具。
  • scaffold.config.ts:scaffold-eth的配置文件,為項目特定配置。
  • tailwind.config.js:Tailwind CSS 的配置,一個優先使用工具類的 CSS 框架。
  • tsconfig.json:Next.js 項目中 TypeScript 的配置。
  • vercel.json:Vercel 平臺用于配置項目部署和運行行為的文件。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/74167.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/74167.shtml
英文地址,請注明出處:http://en.pswp.cn/web/74167.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

畢業設計:實現一個基于Python、Flask和OpenCV的人臉打卡Web系統(六)

畢業設計:實現一個基于Python、Flask和OpenCV的人臉打卡Web系統(六) Flask Flask是一個使用 Python 編寫的輕量級 Web 應用框架。其 WSGI 工具箱采用 Werkzeug ,模板引擎則使用 Jinja2 。Flask使用 BSD 授權。 Flask也被稱為 “microframework” ,因為它使用簡單的核心,…

第十一章 VGA顯示圖片(還不會)

FPGA至簡設計實例 前言 一、項目背景 1. IP核概述 IP 核(Intellectual Property core)指的是知識產權核或知識產權模塊,其是具有特定電路功能的硬件描述語言程序,在EDA技術開發中具有十分重要的地位。美國著名的Dataquest咨詢公司將 半導體產業的IP定義為“用于ASIC或FPGA…

浙江大學公開課|第二季|從大模型、智能體到復雜AI應用系統的構建——以產業大腦為例

大家好,我是吾鳴。 前沿回顧 吾鳴之前給大家分享過浙江大學DeepSeek系列公開課第一季,第一季一共八講,內容介紹豐富,內容之廣,看完粉絲朋友直呼浙大良心。這八講公開課名稱分別是: 第一期(上&…

Spring AOP中為所有類型通知傳遞參數的完整示例,包含詳細注釋和參數傳遞方式

以下是Spring AOP中為所有類型通知傳遞參數的完整示例,包含詳細注釋和參數傳遞方式: // 1. 目標類(被增強的類) package com.example;public class TargetService {public void doTask(String param) {System.out.println("…

【Git教程】將dev分支合并到master后,那么dev分支該如何處理

將 dev 合并到 master 后的分支狀態與操作指南 1. 合并后的分支狀態 dev 分支不會消失: Git 的 git merge 命令僅將 dev 的內容合并到 master,不會刪除 dev 分支。合并后,dev 分支仍然存在,其歷史記錄和代碼保持不變。 分支的 H…

【go】異常處理panic和recover

panic 和 recover 當然能觸發程序宕機退出的,也可以是我們自己,比如經過檢查判斷,當前環境無法達到我們程序進行的預期條件時(比如一個服務指定監聽端口被其他程序占用),可以手動觸發 panic,讓…

CSS層疊順序

介紹 在 CSS 中,元素的層疊順序決定了當多個元素重疊時(跟布局沒有完全的關系,也就是說層疊順序只會在幾個疊放元素上進行比較,而不會改變布局),哪個元素顯示在最上面,哪個元素顯示在最下面。 …

數制——FPGA

1、定點數 定點數的三種表示方式: 原碼:符號位 絕對值 表示方法 反碼:正數的反碼表示 與原碼表示一致,負數的反碼表示 除符號位,其他位全都取反 補碼:正數的補碼表示 與原碼表示一致,負數的補碼…

在用redis當中可能遇到的問題解決方案以及redis中的一些名詞解釋

在用redis當中可能遇到的問題解決方案以及redis中的一些名詞解釋 Redis篇一、緩存穿透:解決方案:緩存空數據布隆過濾器 二、緩存擊穿解決方案互斥鎖,強一致性,性能差,速度慢邏輯過期,數據不同步&#xff0c…

一文詳解QT環境搭建:Windows使用CLion配置QT開發環境

在當今的軟件開發領域,跨平臺應用的需求日益增長,Qt作為一款流行的C圖形用戶界面庫,因其強大的功能和易用性而備受開發者青睞。與此同時,CLion作為一款專為C/C打造的強大IDE,提供了豐富的特性和高效的編碼體驗。本文將…

【區塊鏈安全 | 第二十四篇】單位和全局可用變量(二)

文章目錄 單位和全局可用變量(Units and Globally Available Variables)特殊變量和函數1. 區塊和交易屬性2. ABI 編碼和解碼函數3. bytes 成員函數4. string 成員函數5. 錯誤處理6. 數學和加密函數7. 地址類型成員函數8. 與合約相關9. 類型信息 單位和全…

一種監控錄像視頻恢復的高效解決方案,從每一幀中尋找可能性

該軟件旨在恢復從監控設備中刪除或丟失的視頻。該程序經過調整以處理大多數流行供應商的閉路電視系統中使用的專有格式,并通過智能重建引擎進行了增強,能夠為監控記錄提供任何通用解決方案都無法實現的恢復結果。如果不需要持續使用該軟件,則…

網紅指路機器人是否支持環境監測功能?

嘿呀,你可知道?如今的叁仟網紅指路機器人那可太牛啦!它們可不單單局限于為行人指明方向,還紛紛兼職當起了 “環境小衛士”,為咱們的城市生活注入了前所未有的超智能便利。就拿那個依托叁仟智慧桿打造的數智指路機器人來…

Navicat導出mysql數據庫表結構說明到excel、word,單表導出方式記錄

目前只找到一張一張表導出的方式 使用information_schema傳入表名查詢 字段名根據需要自行刪減,一般保留序號、字段名、類型、說明就行 SELECT COLUMNS.ORDINAL_POSITION AS 序號, COLUMNS.COLUMN_NAME AS 字段名, COLUMNS.COLUMN_TYPE AS 類型(長度), COLUMNS.N…

MySQL主從數據庫搭建

此方案可適用于Centos 7、OpenEuler、Ubuntu操作系統。 在國產銀河麒麟V10中,虛擬機中啟動的麒麟系統使用當前方案并未遇到問題,但是在服務器上安裝時,執行到初始化時出現了找不到依賴問題(目前已解決安裝問題),后續我會繼續更新該問題解決方案。 1. 創建主、從安裝目錄…

`git commit --amend` 詳解:修改提交記錄的正確方式

文章目錄 git commit --amend 詳解:修改提交記錄的正確方式1. 修改提交信息2. 補充遺漏的文件3. 結合 --amend 進行交互式修改4. 已推送提交的修改總結 git commit --amend 詳解:修改提交記錄的正確方式 git commit --amend 用于修改最近一次的提交&…

為什么package.json里的npm和npm -v版本不一致?

這個情況出現是因為package.json里的 npm 版本和系統實際使用的 npm 版本是兩個不同的概念。讓我來解釋一下: 原因解釋 全局 npm vs 項目依賴: npm -v顯示的是系統全局安裝的 npm 版本(位于/usr/bin/npm或類似路徑)package.jso…

python系統之綜合案例:用python打造智能詩詞生成助手

不為失敗找理由,只為成功找方法。所有的不甘,因為還心存夢想,所以在你放棄之前,好好拼一把,只怕心老,不怕路長。 python系列之綜合案例 前言一、項目描述二、項目需求三、 項目實現1、開發準備2、代碼實現 …

Java常用工具算法-1--哈希算法(MD5,SHA家族,SHA-256,BLAKE2)

1、概述 哈希算法(Hash Algorithm),又稱散列算法,是一種將任意長度的輸入數據(明文)轉換為固定長度的輸出(哈希值/摘要)的數學算法。 哈希值通常被稱為摘要(Digest&…

OpenMCU(五):STM32F103時鐘樹初始化分析

概述 本文主要描述了STM32F103初始化過程系統時鐘的初始化,主要描述了系統時鐘的初始化,AHB總線時鐘,APB總線時鐘等的初始化。 硬件板卡3d圖 時鐘樹 STM32F103的時鐘樹,如下所示: 時鐘源選擇 從STM32F103的時鐘樹框圖,我們可以…