访问以太坊网络,需要连接Ethereum节点
可以使用Geth或Parity运行自己的Rthereum节点。但这需要从区块链下载大量数据并保持同步
比较方便的方法是使用Ganache太坊节点仿真器软件管理节点
创建Web3 实例
使用Web3.js访问以太坊网络,需要创建Web3的实例,提供一个provider
provider负责提供访问链接
let Web3 = require('web3')
web3 = new Web3(new Web3.providers.HttpProvider('HTTP://127.0.0.1:7545'))
console.log(web3)
web3中的功能模块
Eth模块,用与和以太坊网络进行交互
Net模块,用与和网络属性进行交互
Personal模块,用来与以太坊账户进行交互
Shh模块,用来与whisper协议交互
Bzz模块,用来与swarm网络交互
登录MetaMask
if (typeof window.ethereum !== "undefined") {
let addr = await ethereum.request({
method: "eth_requestAccounts",
});
} else {
alert("未安装钱包插件");
}
自定义事件
import { abi } from "@/util/NFTMarketplace.json"
const tokenABI = abi
try {
const { ethereum } = window
const provider = new ethers.providers.Web3Provider(ethereum)
const signer = provider.getSigner()
let addr = sessionStorage.getItem("addr")
const connectedContract = new ethers.Contract(
'0xaAe3647dF7e5D8353114b34314ed9f08fe742123', //合约地址
tokenABI,
signer
)
this.connectedContract = connectedContract
let price ='参数'
console.log(price)
const txn = await this.connectedContract.buyMiner(price, {
from: addr,
})
if (txn.hasError) {
//失败
} else {
//成功
}
} catch (error) {
console.log(error)
}