Web3.js 闲得无聊,瞎写的

347 阅读1分钟
访问以太坊网络,需要连接Ethereum节点
可以使用Geth或Parity运行自己的Rthereum节点。但这需要从区块链下载大量数据并保持同步


比较方便的方法是使用Ganache太坊节点仿真器软件管理节点
创建Web3 实例
使用Web3.js访问以太坊网络,需要创建Web3的实例,提供一个provider
provider负责提供访问链接

//npm i web3
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);
  
  }