15. DAPP react界面-web3.js库-Metemask调用和显示-调用合约方法

15. DAPP react界面-web3.js库-Metemask调用和显示-调用合约方法

测试Solidity ERC20合约 - web3.js结合Metemask调用合约方法

一. 系列视频
二. 系列文章

1. Remix编写、编译、部署、测试Solidity ERC20合约 - 基础篇
2. Remix编写、编译、部署、测试Solidity ERC20合约 - 进阶篇
3. Hardhat编写、编译、部署、测试Solidity ERC20合约 - 基础篇
4. JSON-RPC调用区块链方法
5. JSON-RPC调用合约方法
6. JSON-RPC给合约账户同时转以太币和代币
7. web3.js调用区块链方法
8. web3.js调用合约方法
9. web3.js给合约账户同时转以太币和代币
10. Go-Ethereum调用区块链方法
11. Go-Ethereum调用合约方法
12. sendTransaction和sendRawTransaction区别
13. Metamask导入代币,转账ETH,转账代币 - 界面操作
14. Metamask连接hardhat本地节点
15. DAPP react界面-web3.js库-Metemask调用和显示-调用合约方法
16. web3js结合sepolia测试网
17. 总结

1. 环境配置和合约代码

参考文章12. Hardhat编写、编译、部署、测试Solidity ERC20合约 - 进阶篇 - Metamask导入代币,转账ETH,转账代币

2. 编写调试代码

可连接hardhat node本地网络和sepolia测试网络
vscode创建React项目

npx create-react-app metamask 

安装web3.js

npm install web3 

导入合约编译后的abi.json

在这里插入图片描述


js代码

import ABI from './abi.json'; import Web3 from 'web3'; import { useState } from 'react';functionApp(){ const [account1, setAccount1]=useState(''); const [web3, setWeb3]=useState(null); const [contract, setContract]=useState(null); const [balance1_before, setBalance1_before]=useState(0); const [balance2_before, setBalance2_before]=useState(0); const [balance1_after, setBalance1_after]=useState(0); const [balance2_after, setBalance2_after]=useState(0); const [name, setName]=useState(0); const hardhat_contractAddress ="0x5FbDB2315678afecb367f032d93F642f64180aa3"; const sepolia_contractAddress ='0x451Dc02Cee616361815253C858Df0a3028c42901'; const contractAddress = sepolia_contractAddress; const account2 ="0xE78Ff27498c9a6Fd8BC3ff8170Ecf9a13ECBE49e"; const valueMTK =100*10**18; const loadAccount = async ()=>{// metamask是否已安装if(!window.ethereum)alert("Please install MetaMask to use this dApp!");// metamsk中的账户 const accounts = await window.ethereum.request({ method:'eth_requestAccounts'});setAccount1(accounts[0]);// 连接metamask const web3 =newWeb3(window.ethereum);setWeb3(web3);// 实例化合约 const contract = await newweb3.eth.Contract(ABI, contractAddress);setContract(contract);} const Name = async ()=>{setName(await contract.methods.name().call());} const Balance_Before = async ()=>{setBalance1_before(await contract.methods.balanceOf(account1).call());setBalance2_before(await contract.methods.balanceOf(account2).call());} const Balance_After = async ()=>{setBalance1_after(await contract.methods.balanceOf(account1).call());setBalance2_after(await contract.methods.balanceOf(account2).call());} const Transfer = async ()=>{ await contract.methods.transfer(account2, valueMTK).send({ from: account1 });}return(<div><h1>Your Ethereum Account</h1><button onClick={loadAccount}>Load Account</button><p>{account1}</p><p>{account2}</p><button onClick={Name}>Name</button><p>token:{name}</p><button onClick={Balance_Before}>Balance</button><p>balance:{balance1_before}</p><p>balance:{balance2_before}</p><button onClick={Transfer}>Transfer</button><p></p><button onClick={Balance_After}>Balance</button><p>balance:{balance1_after}</p><p>balance:{balance2_after}</p></div>);} export default App;

3. 测试

3.1 MetaMask连接hardhat node

const contractAddress = hardhat_contractAddress;
在这里插入图片描述


在这里插入图片描述

可以看到Account1账户在合约中的余额是0

在这里插入图片描述

3.2 MetaMask连接sepolia

const contractAddress = sepolia_contractAddress;
在这里插入图片描述


在这里插入图片描述


点击Transfer,Metamask确认

在这里插入图片描述


在这里插入图片描述

转账100MTK.

可以看到Account1账户在合约中的余额是681,Account2是289

在这里插入图片描述


在这里插入图片描述

一. 系列视频
二. 系列文章

Read more

OpenClaw 全攻略:从入门到精通的 AI 智能体部署指南

OpenClaw 全攻略:从入门到精通的 AI 智能体部署指南

第一部分:认知篇 —— 什么是 OpenClaw? 1.1 定义与定位 OpenClaw(原名 Clawdbot / Moltbot)是一个本地优先、隐私至上、多渠道集成的自托管 AI 助手平台。它标志着人工智能从“对话式交互”迈入“自主行动”的第三阶段。 通俗理解: 传统 AI(如网页版 ChatGPT):你问一句,它答一句,像个顾问。 OpenClaw:你给它一个目标(如“帮我整理本月财报并发送给团队”),它能自己规划步骤、搜索数据、处理文件、发送邮件,像个员工。 1.2 核心架构:App、Gateway 与 CLI 要玩转 OpenClaw,必须理解它的三个核心组件: Gateway(网关)

AI风口劝退指南:为什么99%的普通人不该盲目追AI?理性入局的完整路径与实战建议(2026深度解析)

AI风口劝退指南:为什么99%的普通人不该盲目追AI?理性入局的完整路径与实战建议(2026深度解析) 摘要: 2026年,AI大模型热潮持续升温,但“全民学AI”的背后,是大量非科班、无基础、资源匮乏者陷入时间、金钱与心理的三重亏损。本文从认知偏差、能力错配、资源垄断、职业断层、教育泡沫五大维度,系统剖析为何多数人不应盲目追逐AI风口,并提供一条分阶段、可落地、高性价比的理性参与路径。全文包含技术原理详解、真实失败案例、实用代码示例、调试技巧及职业规划建议,全文约9800字,适合所有对AI感兴趣但尚未入局、或已深陷焦虑的技术爱好者阅读。 一、引言:当“AI=财富自由”成为时代幻觉 2026年3月,某技术论坛上一则帖子引发广泛共鸣: “辞职三个月,每天16小时啃《深度学习》《Attention Is All You Need》,结果连Hugging Face的Trainer都配置失败。存款耗尽,

(第四篇)Spring AI 实战进阶:Ollama+Spring AI 构建离线私有化 AI 服务(脱离 API 密钥的完整方案)

(第四篇)Spring AI 实战进阶:Ollama+Spring AI 构建离线私有化 AI 服务(脱离 API 密钥的完整方案)

前言 作为企业级开发者,我们在使用大模型时常常面临三大痛点:依赖第三方 API 密钥导致的成本不可控、外网依赖导致的合规风险、用户数据上传第三方平台导致的安全隐患。尤其是金融、政务等敏感行业,离线私有化部署几乎是硬性要求。 笔者近期基于 Ollama+Spring AI 完成了一套离线 AI 服务的落地,从模型拉取、量化优化到 RAG 知识库构建全程无外网依赖,彻底摆脱了 API 密钥的束缚。本文将从实战角度,完整拆解离线 AI 服务的开发全流程:包含 Ollama 部署、Spring AI 深度对接、模型量化优化、离线 RAG 知识库落地,所有代码均经过生产环境验证,同时结合可视化图表清晰呈现核心逻辑,希望能为企业级离线 AI 部署提供可落地的参考方案。 一、项目背景与技术选型 1.1 核心痛点与解决方案 业务痛点解决方案技术选型依赖第三方

一文读懂AI圈爆火的Skills:是什么、怎么用

一文读懂AI圈爆火的Skills:是什么、怎么用

大家好,我是jobleap.cn的小九。 最近AI圈,Skills彻底火了。Github上相关仓库动辄斩获上万星标,比如含50多个Claude技能的仓库、Superpowers工作流项目,均已突破18K星。这股热度,堪比2023-2024年的Prompt模板热潮——彼时大家疯狂分享Prompt,现在则扎堆交流Skills。 不少人疑惑:Skills到底是什么?和Prompt、MCP有啥区别?我花了两天整理,用直白的案例和方法,带你搞懂Skills的本质与用法。 一、Skills到底是什么?先看两个实战案例 Skills直译是“技能”,核心是「给AI智能体(Agent)用的技能包」。光说定义太抽象,分享两个我们公司的实战案例,帮你直观理解它的价值。 案例1:AI选题系统,把2-3小时工作缩成一句话指令 做内容的都懂,选题是个“海量信息筛精选”的耗时活。以前我们每天要刷遍推特、Reddit、Github、知乎、小红书等近10个平台,筛选热点、判断价值、找切入角度,整套流程要2-3小时,严重挤占核心工作时间。 去年12月,