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

Python AI入门:从Hello World到图像分类

Python AI入门:从Hello World到图像分类 一、Python AI的Hello World 1.1 环境搭建 首先,我们需要搭建Python AI的开发环境: # 安装PyTorch pip install torch torchvision # 安装其他依赖 pip install numpy matplotlib 1.2 第一个AI程序 让我们来编写一个最简单的AI程序 - 线性回归: import torch import torch.nn as nn import numpy as np import matplotlib.pyplot as plt # 生成训练数据 x = torch.linspace(

微信ClawBot插件支持个人微信,14亿人的AI入口打开了!附带Win踩坑解决方案!

微信ClawBot插件支持个人微信,14亿人的AI入口打开了!附带Win踩坑解决方案!

今天刷IT之家,看到一条消息直接坐起来了。 微信插件页面,悄悄上了一个新东西。 名字叫 ClawBot。 功能只有一句话:连接OpenClaw与微信。 这意味着什么? 意味着那只GitHub上32万星的"小龙虾",终于有了微信官方认证的入口。 不是第三方魔改,不是企业微信绕路,是微信自己做的插件。 老金我第一时间装了,给你们说说到底怎么回事。 先说ClawBot是什么 OpenClaw 你们应该不陌生了。 全球最火的开源AI助手,GitHub 32万星,能帮你操作电脑、跑脚本、读写文件、控制浏览器。 之前最大的问题是什么? 得坐在电脑前才能用。 出门在外想让AI帮你整理个文件? 对不起,打开电脑、连VPN、敲命令。 这跟没有AI有什么区别。 所以大家一直在想办法把OpenClaw接到手机上。 之前的方案要么走企业微信(配置复杂),要么用第三方协议直连个人微信(有封号风险)。 现在微信官方自己做了个插件,问题一下子解决了。 不需要公网服务器,不需要企业微信,不需要折腾API Key。 目前的限制: 首先,

1元能买多少AI Token?主流大模型API价格全对比

1元能买多少AI Token?主流大模型API价格全对比

1元能买多少AI Token?主流大模型API价格全对比 用AI API,绕不开一个问题:到底怎么收费?贵不贵? 很多人觉得AI API很贵,其实是没算清楚。今天这篇文章,把GPT、Claude、Gemini的价格全部摊开来讲清楚。 Token是什么?怎么算钱? AI API按Token计费。Token是AI处理文字的基本单位,可以理解为「文字碎片」。 简单换算: 1个英文单词 ≈ 1~2个Token 1个中文汉字 ≈ 1.5~2个Token 1000个汉字 ≈ 1500~2000个Token 价格通常以「元/百万Token」为单位。听起来很多,其实日常用量很小。 主流模型价格对比(2026年最新) 目前市面上主流的几个模型,价格差异非常大: 模型输入价格输出价格适合场景GPT-5.4-nano极低极低高频日常问答GPT-5.4-mini低低性价比首选Claude Haiku 4.5$1

【Vibe Coding】一口气搞懂AI黑话:Vibe Coding、Agent、提示词、MCP、Skills全解析

你是否也被AI领域的各种新名词轰炸得头晕眼花? Vibe Coding、AI Agent、提示词(Prompt)、MCP(Model Context Protocol)、Skills… 这些听起来高大上的术语到底是什么意思?它们之间有什么关系? 本文将用最通俗易懂的语言 + 生动比喻,带你一次性理清这些核心概念! 🚀 引言:AI正在改变我们“造物”的方式 随着大模型能力的飞速提升,AI不再仅仅是聊天问答工具。我们正在进入一个“AI驱动创造”的新时代: ✅ 用自然语言指挥AI写代码(Vibe Coding) ✅ 让AI像私人助理一样自主完成任务(AI Agent) ✅ 通过精准指令释放AI潜能(提示词工程) ✅ 赋予AI记忆与联网能力(MCP) ✅ 为AI安装“手脚”操作现实世界(Skills) 理解这些概念,是掌握下一代AI开发范式的关键! 🌈 一、Vibe Coding:用“感觉”写代码,告别996 大白话解释