Sepolia ETH & BSC 測試網 DApp 範例開發指南
发布于 2025-07-24 13:32:28(微信公众号导出记录)。
本文来自公众号后台的“导出文章内容”功能。博客正文由导出长图进行本地 OCR 转写,并保留原始排版图用于逐段核对。
原文链接:查看原文
OCR 转写有效文字约 16120 字;代码、流程图和版式以文末原始排版图为准。
正文(本地 OCR 转写)
original wex7ce EI V1ajero 2025年7月24日 13:32 日本
Sepolia ETH 湖试端 DApp 最例
暂地合的亚助
这份指南提供了一個基本的去中心化愿用程式(DApp)笔例,它可以在Sepolia ETH 或 BSC 测試细上與您的 MetaMask 包互動,亚讀取、寫入一個简单的智能 合约。為了確保所有功能正常逼作,本能例要求您遗退胡页伺服器(例如Python的 http.server)来防間index.htnl槽案,面非直接闻它。
一、智能合約(Smart Contract)
我仍使用一個名為SimpLeStorage 的智能合的,它能存一信數字允許您修改它。
1.合的程式碼(SimpleStorage.sol)
幅将以下程式钙檀裂到 Rcmix IDE 中。 Solidity // SPox-License-Identifier: HIT 1指定Solidity 编器的阅原可超码HIT pragna solidity ~0.B.B:// 瘤定 Solidity 版本为 9.8.0或更高 //定效一留名為 Sinmple5tarage 的合的 contract Simplestorage { uintpubLicmyNumber://宣告一需公阅的屏符劈整数曼数nylumber。用约锅存影 //建携子(constructor):合的部署會自勤快行一次 //接收一留初始数字作态参数,游其提定绍myliumber constructor(ulnt _initiaLNumber) myMunber = _initialNumber; //setNunber 函数:用於段定nyNunber 的新信 //public黑键字表示此函数可以提外部呼叫 function setNunber(uint _newNunber] public ( myNumber = _newNumber; //gctNunber 函数:用於取得myNumber 的需敬信 //pubL1cV1ev照键字表示此函数可以外部呼叫,且不鲁绿改合约的状息(只额) //returns(uint)表示此函数童回薄一留無符號整数 function getNunber() public view returns (uint) ( return nyNunber;
2.合的部署步跟
1.用敏 RenixIDE:在您的测宽券中前往https://remix.ethereun.org/-
建立新權案:在左侧的案探查器中,點型contracts调料爽旁的新案,示,命名 2. 增案為 SimpleStorage.sol。
3.贴上程式碍:上述SimpLeStorage.sol 的程式确贴入新建立的糖案中。
4.编合的:
- 贴型左倒幕航相的 SolLidity 标器图示(适常是锰像三角形的盈示)。
o确保Comp1ler;版本奥您的pragna soL1dity ~0.8.e;相符(例如0.8.x) 胎型“Compile Simplestorage.sol”按祖。硫保下方控制台有联。
1.部署合的:
贴聚左例尊航椭的部署與通行交易图示(通常是恒以太坊喆)。 在“ENVIRONMENT’下拉避甲中,还播“Injected Provider -MetaMask"。 保您的 MetaMask 包已速结到 Sepolia Test Network, 在“coNTRACT”下控逻平中,退摄 SimpleStorage。 在“Deploy*按經旁遗的翰入框中,為canstructor 参敏输入一個初始数字(例如 100 ) 。 贴攀“DepLoy”按翘。您的MetaNask錯包售弹出一储交易随视窗,随业支付 Gas 费用(需有 Sepolia ETH). 。部墨成功,Renix介面下方“DeployedContracts”%會示您的合的實例。礼 道债合的地址,我们将在前端程式码中使用它。
二、前端程式碼(Frontend Code)
這份index.htnl 案包含了终真的结(HTML)、楼式(CSS)以及 HctaMask 和智能合 約互的 Javascript 遵帽。
1.網页程式碼(index.html)
幅将以下完整的程式碼拖聚虽存為index.html噻案。 重要提示:務必JaVaScript 區境中的CoNTRACT_ADDRESS替换為您實膝部署的合的地 址1 TWIH <1D0CTYPE htnl> clueH-4z,=Buel [u14x cheads cmela charsel="UTF-8"> cncta nane=vicwport" content="width-devicc-vidth, initial-scalc= <title>Sepolia ETH 期抗响 DApp 例</title> sstyles /基础稼式:般定字體、依局、背景颜色和基本文字颜色/ body{ font- family: -apple-system, BlinkMacSystemFont, Segoe UI display: flex; justity-content:center:/水平居中/ align-llems: center; 垂直居中*/ hcight: 168vh; 店济整西视留亮度 nargin: 0; background-ralar:eef2f7:/淡整色商景*/ 容器模式:卡片式依局,包含影和盈角* ,containcr ( text-align: center; 文字居中對 padding: 48px: background-color: white; border-radius: 12px: box-shadpw:@4px 12px rgba(e,a,@,0.1); / M影效果 t/ (xdce a44pIA-xeu (x0005 :410TM-xeu 最大宽度* width: 90%: 康式宽度* 德题稼式 hl{ h1 calor:B27EEA;/以太坊蓝色/ nargin-bottom: 20px; 按扭模式1 button( background-color:#627EEA:/以太坊菌色*/ color: white; border: none; padding:12px 25px;/内遗距 font-size: 15px; font-woight: bold; border-radius: 8px: cursor: pointer; transition:background-color @3s, opacity 9.3s;/* 追游效: nargin:16px5px;/外遗距/ /按纽滑品照停效果“/ button:hover:not(:disabled) { background-calar: 4ab7de: 禁用按招裱式* hutton:disabled { opacity: B.6; cursor: not-allowed; 数字输入程槎式* } [,Jaqwnu,=adA1anduT padding: 18px: border: lpx solid #ccc; border-radius: 5px; font-size: 16px; nargin-right: 10px; width: 150px: box-sizing: border-box; 遇框和填充包含在宽度内*/ 资研和合约互数区填标式*/ info, #contrartInteraction { nargin-top: 25px; text-align: lett; 文字在数否* mord-break: break-all; 長文字自数预行*/ border top: 1px solid eee; /* 上造框*/ padding-top: 20px; 请讯盛增内的段落式“/ into p. #contractInteraction p re xdat :ur6ieu font-size: 15px; 照息提示模式*/ message ( nargin-top: 150x; font-weight: bold; .error color: #dc3545; 成功讯息费色 success { color: #28a745; 曹告讯息颜色 / .warning ( color: #ffc137; 合约盛域的特定样式*/ .contract-section { border:1px dashed #527EEA;/*虚综造框×/ Ixdst :outpped border-radius: 8px; xdez :da1-ui61en background-color: wf7faff:
1.0 2
} ≤/stylea c/heads <body> sdiv class=*container"> <h1>Sepolia ETH 测就娠 DApp 颤例</h1x 108 <p>贴翠下方按钮速能您的 MetaMask 包榆查路。</p> <hutton in="connectButton>速能到 MetaNasks/buttonx <div 1d-*info">
1. 1 ]
<p 1d=status* class=*message"s糖:未建结</p> L 1 2 <p id==chain"class="nessage">频路:未知</p> <p 1d-account>幅户:未速结</px cp 1d=*balance'>m辅: N/A</p> 1 1.5 </div> xdiv id-*contractInteraction" style-display: none;> 1 17 ch2>智能合的互数/h2 sdiv class="cantract-section"> cpxcstrong>合的地址:</strong> cspan id-"contractAddress
1. 2 ]
sbutton id=getContractNumberButton">更新含的数字</hutt(
</divx
25
cdiv class="contract-section" style='nargin-top: 15px;">
ch3>设定新数字</h3>
cinput type-nunber" id="neuNunberInput" placeholder-
<button id=setNunberButton>故定数字</button>
sp id="setNunberstatus" class=nessage"ss/p>
2
≤/divs
131
cscript src=https://unpkg-con/ctherse5.6-o/dist/ethers.und.min.j
.3 Z
<scripts
//取得页面上的HTHL 元素,以便在Java5cript中操作它罚
const connectButton = docuncnt.getElenentById['connectButton'
const statusEl = docunent.getElementById('status');
3
const balanceEl = docunent.getElenentById('balance');
139
//智能合的互動相期的HTHL元素
const contractInteractionDiv = docunent-gctElementById(*contr.
142
Const currentContractNunber = document-getElementById(curren
1 4 5
Const setNunberButton = documenl.getElenentById(setNunberBut
//Sepo(la潮试钢路的鲜寶现
146
//包含Chain ID(11155111 的十六遵别表示)、路名幂、原生贺磨和 RPC/
const scpoliaTestnet = {
//1l155ill In hexadecinal
chainId: Axaa36a7,
15 1
nativeCurrency: {
nane: 'Sepolia ETH',
154
‘HL3, :1oqus
decinals: 18
}.
rpcurls:[https://rpc.sepelia.org/], // 拉m的 RPC URL
blockExplorerurls: [https://sepolia-etherscan-io]
159
}:
//!1!請用念部署在 SepoTia上的 SinpleStorage 合的地址替换此露!!!
// 这显岗能的智能合的互融的照盘,整例增址:0xED143bc4563F9235fB4837F)
ConSt CONTRACT_A00RESS = exED143bc4B63F9235fB4837F2E8A56088D
//SinpleStorage 合的的 ABI (Application Binary Interface
11ABI接述了合的有感些函数,它们的参数和回傅值,是前端员合的互融的”就蜗通
6
"constructor{uintzss)",
//合約建子
-
function myNunber() view returns (uint256)", // myNunber
-
function setNumber(uint256 _neuNunber)",
// 设定 nyiunbe 11取得nyN
- function getNumher() view returns (uintz56)"
Let provider://ethers.js 的 Provider 物件,用於取区炼资料 let signer; 1ethers.js 的 signer 物件,代表践包账户,用於签墨交 let sinplestorageContract;// cthers.js 的 Contract 意例,用於尚 南戴人和MetaMask初始检查-- 11當00H内容完全载人後纳行此函数 docunent.addEventListener('DoMContentLoaded', () => { //检查密宽群是否安装了MetaMask(windov.ethereun 是否存在) 7 if (typeof windou.ethereum sss *undefined *){ statusEl.textContent-‘雷媛:先安装MetaMask 外排程式! statusEl.classNane = 'message error': 18 1 connectButtan.disabled =true;// 禁雨速结按钮 )else {
1.83
// 如果 MetaMask 已安装, 邵始化 ethers.js 的 Provider 和: l1道必须在任何需要使用ethers物件的地方之前就行 provider = new ethers,providers.Meb3Provider(window.e slgner = provider.getsigner(): checkInitialConnection(]:// 拾亚MetaMask 的初始速然就息 11检查合约地址是否已正碟段定 if (cONTRACT _ADDRESs === 'BxYaurDeployedContractAddressHe contractInteractionDiv,style.display = block; // 8 contractAddressDisplay.textcontent=在程式码中勘定正 6T getContractNunberButton.disabled = true; consble.errar(*请在 index.html 中最定正键的 coNTRACT ADDl )clsc { contractAddressDisplay .textContent = CONTRACT_ADRESS
1.99
//栖查MetaMask的初始速结然息 20 2 async funclion checkInitialconnection() { try ( 20 5 //宣试取得MetaMask 已授楼的物户列表 const accounts = await windou-ethereum.request(f meth: if (accounts,length > θ]{ //如果有贴户已速结 await updateAccountInfa(accounts[a]):// 更新户资 connectButton.textContent =已速’: connectButton.disabled = true; 211 statusEl.textContent =“快愿:已”; statusEl.classNanc = *nessage success′; 214 awalt checkNetwork(); //徐查钢路 await initializeContracti):// 初始化合的實例 contractInteractionniv.style.display = *block': 217 1a51a{ statusEl.textContent=“:末通”; 18 statusEt.classNane = *nessage': } } catch (error) { consple,error(“初始进输查失股:",error); statusEl.textContent-‘糖:柚音失败。'; statusEl.ctassNane = *message error': MeTaMask 速然通辑
1)鲨速结按扭被贴影时解登
connectButton.addEventListener('click', async () => { if (typeof window.ethereum === undefined'){ statusEl.textContent =‘娱:蜡先安装MetaHask 外拼程式! statusEl.classNane - 'message error'; 23 2 return: try ( 11請求用户授增速结他仍幅户,MetaMask鲁弹出视窗碾用户确 const accounts = await windou.ethereum.request(f neth /1取得第一留速结的板户 const account = accounts[θ]; aiwalt updateAccountInfo(account);// 更新概户弯据 2 4 1 statusEl.textContent=题:已速; 1, ssaaens sbessau, = auenssela' lasnie1s connectButton.disabled = true; aWait checkNetuork(): //检查烫路 await initializeContract();// 初始化合的宽例 247 contractInteractionDiv.style.display = *block; // : 248 } catch (error) { console,error(“结失脏:,error); statusEl.textContent=娱:使用晋拒了速家或瘤生辑 5 1 statusel.classNane = 'message errbr'; }1: 11更新页面上的幅户地址和解额资讯 async function updateAccountInfo(account)( try ( //使用ethers.js provider 取得户额(以Wei为單位) const balanceliel = awalt provider-getBalance(account) //使用ethers.js 將Wei 磷搬為 ETH 單位 const balanceEth = ethers.utils.formatEther(balanccwe. balanceEl.textContent = *除: s<parseFLoat(balanceEth }catch (error){ console,error(*取得额失:,crror);
//柚查蓄前通接的期器是否母Sepol1a弱试蜗 async function checkNetuork() { try ( l1使币ethers.js provider 取得蓄前剪路瘦职 const network = await pravider-getNelwork(): //等Chain I0 聘换為十六道制字串以便scpoliaTcstnct,cho if (currentChainId ↓== sepoliaTestnet.chainId) { //如果的期路不是5cpoli0 chainEL.textContent=“路:目前在 ChainID ${netwol chainEl.classNane = *message warning′: awalt switchNetwork(); //音就自敏切换蜗络 }else{
2.8 1
chainEl.textContent = *M陷: Sepolia 武 [ChainI ZR chainEl.classNane - *message success'; } catch (error) { console.error("植查路失脓:",error); chainEl.textContent=螺路:無法取得路默题。 : chainEl.classNane = 'message error' : //切换或新增 Sepolia 解路到 MetaHask async function switchNetwork(1 { 29 2 try{ /1發送請求膜MetaMask 切换到 SepoTia 细路 aWalt window.ethereum.request(( params: [{ chainId: sepoliaTestnet,chainId }], awa1tcheckNetuork()://切模成功後再次检查照路 }catch (switcherror) { //如果用户罐包撑证有5epoL1a操然(猫娱代码4902) 801 If (switchError.code === 4902) { try{ //首就引海用户新增 Sepolla纲路 await window.ethereun.request[{ method: wallet_addEthereumchain, parans: [sepoliaTestnet] , 308 ): awaitcheckNetwurk)://新增成功烫再次检查细路 }catch (adderror){ console.errort"新增 Sepolia 蚂路失收:", addErrol 311 chainEl.textContent =‘請:新增Sepolia 紫路失! chainel.classhame -nessoge error’; 313 }else { console.error(“增器失股:",switchError); B 16 chainEL.textContent=:切措路失败。; 317 chainel.classNane = *message error';
智能合的互動遥帽 323 /1初始化智能合约實例 async function initiatizecontrart() { 824 //只有在cthcrs.js 和NetaMask 都率好時才耀 If (typeof ethers =-= 'undefined ll typeof windou-ethere consnle.errar(Ethers.js 或 MetaMask 未贩入。無法初给化合 return; 11再次检重合的地址是否有效 if (CoNTRACT_ADDRESs =-= 'BxYourDeployedContractAddrcssHc console.error("合約地址未融定或無效,法初始化合的。); currentContractNumber, textContent =名的地址效 1; EEF currentContractNunber,classNanc = ‘crror'; return: 3 3 5 I1重新扔始化providcr和 signcr 以致保其是最新的默感 provider = new ethers.providers.Meb3Provider window. ether signer = provider-getSigner(): SEF [建立合的震例:使用合的地址、ABI和 signcr。 //signer 用於需要答署交易的高入损作,provider 可用於只罐操作, 341 sinpleStorageContract = mew ethers.Contrart CoNTRACT ADDR console.log{“合約言例已初始化:,sinplestoragcContract); 343 amalt getContractNumber(1://劲始化後立即取得合约中的数字 344 45 346 /1整融“更新合的数字”按超的验聚事件 getContractNumberButton.addEventListener( 'cl1ck', getcontract) //提智能合的中取得ntylunber的值或题示 4 async function getcontracthumber(){ 349 1f(!sinplestoragecontract] 35@ currentCantractNumber.textContent=音的木载入或木連 currentContractNunber.classNanc = ‘crror′; 353 return: try ( currentContractNunber.textContent -MA中...; 85 11呼叫合的的 getNuuber 方法(道是只鼠操作,不消耗Gas) .5 const number = await simpleStorageContract.getNunber{ 858 359 currentContractNunber.textContent - number.toString() currentContractNunber.classNane = success: }catch (error) { console.error(“取辑合的数字失胜:,error); currentContractNumber. textContent =*R得失歌。: currentContractNunber.classNane = ‘error′; //整融“般定数字”按超的贴影事件 setNunberButton.addEventListener(*click', async () => { 868 If(!sinplestorageContract]{ setNumberStatus.textContent=合的未飘入或未MetaMas setNumberstatus.classNane -"nessage error'; return: 72 const newNumber - parseInt(newNunberInput.value); // 取得弗 3 74 /1检查输人是否为有效且非负的整数 if (isNaN[newlumber) II newMunber < B) { 7 setNumberStatus.textContent-情入一個有效的非蔡! 78 return; setNunberStatus.textContent=“正在發送交易,請在 HetaMask 中 setMunberStatus.classNane = message warning′: try( 883 11呼叫合的的 setNumber 方法。造會建立一需交易,需要用户在Me1 const tx = await sinpleStarageContract.setNumber(newf setNumberStatus.textContent -交易已叠送!漆(Hash): setNumberStatus.classNane = nessage success"; cDnsple.lag("安易神=",tx.hash]; walt tx.walt();//等待交品被研工磁超业包含在区熄中 setNumberStatus.textContent=交易成功!新数了:${newNu 6E setNumberStatus.classkane = "nesage success; awaitgetContractNumber();// 交易成功後,别斯夏面顾示的合: 39 2 } catch (error) { consble.errar(“设定数字失败:",error); if (error.code =-- 46e1){ }else { setNunberStatus.textContent=‘定慰字失履,直看控 setNumberStatus.classkane = nessage error; 48 402 MetaMask 事件酯器 // //监融HctoMask 板户始更事件 484 If(Mindow.ethereun){ 405 Mindow.ethereum.on(*accountsChanged’, async (accounts) => if (accounts.length === θ){ //如果用户在MetaHask中断罚速结或切换到疫有标户的蜗路 408 statusEl.texLContent =“愿:末”; 1abesseu, - auensseno'1asnse15 411 balanceEl.textContent =“鲁: N/A′: connectButton.textContent =结到 MetaMask; 413 connectButton.disabled = false; chainEl.textContent =陷:末知; chainEl.classNane - *message'; 416 contractInteractionoiv.style.display = none: // 1 1 7 setNumberStatus.textContent =**; 419 }else { //幅户要更,量新初始化providcr/signer 更新资讯 provider = new ethers.providers Web3Provider(wind 2 Z signer = provider.getSigner(); swait updateAccountInfo(accounts[8]); awalt checkNetwork(): await initializeContract():// 重新初始化合的實例,以 12 ( contractInteractionniv.style.display = *block′; 428 12 9 //监MetaMask颠路更事件 window.ethereum.on(*chainchanged, async (chainId) => { 11舅路變更,重新初始化 provider/signer provider = new ethers.providers.Meb3Provider(windrw,e signer - provider.getsigner(); 434 awalt checkNetuork[):// 拾查新的照路是否為 Sepolia awalt updateAccountInfo(window.ethereum selectedA await initializeContract()://重新初始化合的宽例,因为 contractInteractionDiv,style.display - *block°; ) : 4 c/scripts </body> s/htnl>
三、開發環境举備與設置
1.HetaMask 包:硅保您的测置器已安装HctaMask 撰充功能,亚已建立或匯入帐户。
2.Sepolia ETH 测试带:请透造 htLps://sepaliafaucet.con/ 取得一些 Sepalia
测试用的ETH,以支付部署合的和發送交易所需的Gas费。
3.Renix IDE(端上整合阳聚境):https://remix.ethereun-org/,用龄编寡、编莲
及部署智能合的。
4.Python 真伺服器:
為何需要?由於测質器的安全策略(CORS限制),直接本地穆案系统開 index.htnl 可能會限制某些JavaScript 功能(特别是與 MetaMask 的互勤)。透 通一但商單的本地解真何服器访間,可以逐免道些間题。 。設置步骤:
1.打需您的命令提示字元(Windows)或端(macOs/Linux)。
2.使用cd命令切换到您储存index.htnl榴案的口绿。例如:
Bashcd path/to/your/dapp folder
3.瓶行以下Python 命令敛動一错始易的胡页伺服器:Bashpython-m
http.server 89ee如秉您没有安装 Python,也可以使用其他触易的 HTTP 何服 卷。例如: Node.js 用户:安装 http-server [npn install -g http-server), 然在目中通行http-server-p 8e8
- VS Code 用户:安装Live Server 蕴充功能,然後右键后壁1ndex.html
遇摄“open with Live Server*,
1.何服券物後,您言在端概卷到類似 Serv1ng HTTP on 8.e.0.0 port 8090
(http://9.θ.0.8:80B8/)...的息.
四、使用舆测試步骤
1.前量举借
-
完成上述「三、即發璟境准需與設置;中的所有步股。
-
保您已index.html 中的 cONTRACT_ADDRESS警换為您部署在 Sepolia上的實
限智能合的地址。
2.通行 DApp
- 在您的测暨器中,防間何服器提供的位址
通常是
http://localhost:80o9/1ndex.htnl
(如果您使用 VS Code 的 Live Server,它育自動态您打奥页面)。
3.功能测试
可以熟行的主要功能:
1.速结HetaMask 镀包:
“建结到MetaHask”按訊。
- 黏墨页面上的
MetaNask曾弹出提示,要求您授耀速结细站與您的疑包帐F。 。预期行為:页面會额示思的帐户地址、餘额和目前的细路状感。按照文字将竖為!已通 结,亚盘為禁用状感。
1.自助检查奥切换斓路:
o如果您的MetaMask 富前摘路不是SepoL1a,DApp 提示您需要切操。 预期行為:贴提示後,MetaHask鲁弹出视窗引尊您切换到 5epalia测试间。成功切 换後,真面會示「细路:Sepolia 测试细.如果MetaMask 中波有 5epolia 细路 配置,它會引遵您新增。
1.示合的地址及目前存的数字:
成功速 MetaNask亚随在 Sepalia 網路後,真面會示您在程式碼中设定的合的 地址。 预期行為:真面上的目前能存的数字(myNumber)會自勤示智能合的中myNunber 的初始值(您在部暑助设定的数字)。
1.刷新合的数字:
贴聚“更新合的數字“按钮。 。预期行為:DApP 會再次提區规链请取myNunber 的值,亚更新页面示。
1.股定新数字(寫入交易):
在“输入新数字(整數)“输入框中键入一四新的数字(例如209)。 。贴聚“設定数字”按钮。 预期行為:MetaHask鲁弹出交易确視面,题示交易详情和预估的Gas用。硅交易 後,真面會示交易發送成功的提示(包含交易继烫),等待交易被區埋致後,页面上 的“目前存的数字,會自動更新为您定的新值。
1.HetaMask 畅户或斓路更睿意:
在DApp 開敏的情况下。打開 MelaMask播件,手勤切换到另一個帐户或不同的细路 (例: Ethereun Mainnet ), 。预期行為:DApP 真面會自勤核测到盘化,亚更新显示的帐户地址、除髓和细路状感。如果 切换到非 SepoLia 蜗路,DApp 官再次提示您切换回来。 国 Sepolia ETH 湖武橘 DApp 能例 交县清求 M9T3 SE19E6S- 8938 :
智能合的烈助
Sepolia ETH 湖式编 DApp 葡例
暂款合的互助
@ Sepolle 众号 locahost8000 N ddva A H3 ejodes ElomesCansolesouses2) SepoliaETH測試網DApp例 8 0 图 2 top + | |@ Riter 1e: 1 影量下方按细理能治的 MetaMask 提包范度查病资 + cntersis: [S_SAARI folse 已建结 就感:已速感 螺路 : Seplia 比明 (ChainID: 11155111) 户;xff09700597b59947bae77d 群期: 0.8509 ETH 智能合的互動 食持批址: 0xED143bc4863F9235fB4837F2EBA 目期替存的数字 (myNumber: 1024 更新合的数字 战定新数字 What's new in DevToos 138 1024 Be einrw fostures 交县成功1新数字:1024
五、展望DApp應用潜力
我們這個簡單的DApp例然只涉及讀寫一個數字,但它展示了區塊技術與前端應用的核心互 動模式。基於這種思路,DApp的應用潜力是無限的:
1.去中心化支付系统:
。思路:智能合約可以管理用户的代餘额,處理點對點支付。取代傅統銀行,無需第三方 中介,交易直接在區塊键上完成,透明且不可篡改。 o用:跨境支付、小额支付、DApp内建的代交易功能。
1.智能物聯網(IoT)数據探集與證:
0思路:物聯網設備將感測器數據(例如温度、濕度、位置)寫入智能合約,利用區塊的不 可篡改性来確保数據的真實性和完整性。 0應用:供應溯源(農產品、藥品生產到銷售的全程數據上)、環境监測數據的防篡改 記錄、智慧城市傅感器數據共享。
1.数位身份與證:
。思路:智能合約可以存加密的身份資訊或學歷、證害等數位證的哈希值,用户有數據 控制權,可以選選性地向驗證方披露。 0應用:基於區塊的學生學歷證、專業資格證書、健康記錄管理、去中心化身份驗證 (DID)。
1.去中心化金融(DeFi):
o思路:基於智能合約實現借贷、質押、去中心化交易所(DEX)、穩定等金融服務,無需 傳統金融機構。 o鹰用:自動化做市商(AMM)、流動性挖、閃電貨。
1.版權管理與数位資產:
o思路:將數位内容(如藝術品、音樂、文章)的版權資訊或所有權記錄在區塊上,通過智 能合約實現版權的自動化交易和收益分配。 0應用:NFT(非同質化代)藝術品市場、音樂版權共享、内容創作者收益分配平台。
1.避與元宇宙:
o思路:游資產(装備、道具、角色)以NFT形式存在於區塊上,玩家真正有這些資 產,可以在不同游間流通或交易。避规则也可以由智能合約自動執行,增加公平性。 o應用:Play-to-Earn游、虚凝土地所有權、元宇宙中的数位商品交易。 這個SimpleStorage例是所有這些複雜應用的一個微縮模型。它展示了DApp最核心的能 力:讀取上数據(getNumber)和提交交易修改上状(setNumber)。透過將更複雜的業務 辑寫入智能合約,亚設計更豐富的前端介面,您可以構建出涵蓋上述各個领域的創新DApP。
原始排版图
原始导出图超过单张 WebP 的尺寸上限,以下图片按从上到下的顺序连续保存。
![]()

